动态规划问题
有四个工人,要指派他们分别完成4项工作,每人做各项工作所消耗的时间如表1所示。问指派哪个人去完成哪项工作,可使总的消耗时间为最小?试对此问题用动态规划方法求解。
MATLAB代码
Data=[15,18,21,24;
19,23,22,18;
26,17,16,19;
19,21,23,17];
c=Data(:);
aeq=zeros(8,16);
for i=1:4
aeq(i,[1:4]+(i-1)*4)=1; %约束条件
aeq(i+4,i:4:16)=1; %约束条件
end
beq=ones(8,1);
intcon=1:16; %16个变量均为整数
lb=zeros(16,1); %变量最小值为0
ub=ones(16,1); %变量最大值为1
[x fval]=intlinprog(c,intcon,[],[],aeq,beq,lb,ub);
reshape(x,4,4)
ans =
0 1 0 0
1 0 0 0
0 0 1 0
0 0 0 1
甲工人完成B工作,乙工人完成A工作,丙工人完成C工作,丁工人完成D工作。总的消耗时间为最小为70。