指派问题
指派问题的标准形式
指派问题的数学模型
非标准形式的指派问题
指派问题的匈牙利解法的一般步骤
以上步骤并不好理解下面进行一些实例展示方便理解
匈牙利解法的实例
这是一个比较友好的例子,一切按照步骤来就可以了
再举一个有点绕的例子
指派问题的计算机解法
整数规划问题的求解可以使用Lingo等专用软件。对于一般的整数规划问题,无法直接利用Matlab的函数,必须利用Matlab编程实现分枝定界解法和割平面解法。但对于指派问题等特殊的整数规划问题有时可以直接利用Matlab的函数linprog。
利用MATLAB求解下列指派矩阵
c=[3 8 2 10 3;8 7 2 9 7;6 4 2 7 5; 8 4 2 3 5;9 10 6 9 10];
c=c(:);
%把矩阵c转化为25维列向量
a=zeros(10,25);
%10表示有5行5列的共10个约束(行列xij的和=1)25表示有25种xij类型
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);
[x,y]=linprog(c,[],[],a,b,zeros(25,1),ones(25,1));
%zeros(25,1),ones(25,1)指的是取值要么是0要么去1
X=reshape(x,5,5)
%把x变成5*5的矩阵
opt=y
运行结果
为了更好的理解代码给出矩阵a的具体元素分布