l刘书伶 发表于 2013-8-24 11:16

matlab程序方面

在指派问题中:
c=;
c=c(:);
a=zeros(10,25);
(这一步为什么要创造一个10*25矩阵呀)
for i=1:5
   a(i,(i-1)*5+1:5*i)=1;(此处看不懂)
  a(5+i,i:5:25)=1;(此处看不懂)
end
b=ones(10,1);
=bintprog(c,[],[],a,b);
x=reshape(x,),y
这个程序有几处看不懂,希望高手解答,谢谢!

kong1234 发表于 2013-8-24 12:10

楼主,问题背景呢?bintprog函数是解决整数规划的,,你可以在matlab中doc bintprog 学习一下

l刘书伶 发表于 2013-8-24 12:24

kong1234 发表于 2013-8-24 12:10 static/image/common/back.gif
楼主,问题背景呢?bintprog函数是解决整数规划的,,你可以在matlab中doc bintprog 学习一下

就是指派5个人去干5项工作,每人干且仅干一项工作,若分配弟i个人去干弟j项工作,需要花费c(i,j)单位时间,问如何分配工作才能使得工人花费的总时间最少。。。。

l刘书伶 发表于 2013-8-24 12:29

kong1234 发表于 2013-8-24 12:10 static/image/common/back.gif
楼主,问题背景呢?bintprog函数是解决整数规划的,,你可以在matlab中doc bintprog 学习一下

问题背景:就是指派5个人去做5项工作,每人干且仅干一项工作,若分配第i人去干第j项工作,需要花费才(i,j)单位时间,问应该如何分配工作才能使得总的时间最少。。。。谢谢了

l刘书伶 发表于 2013-8-24 12:42

kong1234 发表于 2013-8-24 12:10 static/image/common/back.gif
楼主,问题背景呢?bintprog函数是解决整数规划的,,你可以在matlab中doc bintprog 学习一下

问题背景:就是分配5个人去干5项工作,每人干且仅干一项工作,若分配第i个人去干第j项工作,需要花费c(i,j)单位时间,问如何分配工作能使得工人花费时间最少。。。谢谢了。。

l刘书伶 发表于 2013-8-24 12:42

问题背景:就是分配5个人去干5项工作,每人干且仅干一项工作,若分配第i个人去干第j项工作,需要花费c(i,j)单位时间,问如何分配工作能使得工人花费时间最少。。。谢谢了。。

magic2728 发表于 2013-8-24 14:18

这是指派问题的matlab线性规划解法。由于matlab的函数格式只能是x为列向量,所以必须把指派矩阵拉成一列,而对应的限定条件也就变成了a(10,25)。10是10个限定条件决定的,25是25个xij值,你看不懂的for循环里的两句话是指的行和,列和分别为0的意思。

l刘书伶 发表于 2013-8-24 18:34

magic2728 发表于 2013-8-24 14:18 static/image/common/back.gif
这是指派问题的matlab线性规划解法。由于matlab的函数格式只能是x为列向量,所以必须把指派矩阵拉成一列,而 ...

恩恩,搞懂了,谢谢!

小黑主 发表于 2013-8-25 11:27

指派问题中包含了几种算法,其中最常见的算法就是匈牙利算法,在此种算法中需要构建矩阵,那个循环你把值带进去就知道了
页: [1]
查看完整版本: matlab程序方面