现有的五个人可以分别完成五项任务: a、b、c、d和e,但每次完成任务所需的时间各不相同。 现在让这五个人做a、b、c、d、e五个任务,怎么分配才能使五个人完成所有任务的总时间最短?
ABCDE甲23157乙34612丙13524丁47421戊56351设25个变量,分别代表第I人教第j科目,I和j=1:5,目标函数取z=c*x(I,j ),x只能取0或1;
没有不等式约束,只有等式约束
约束条件:
(1)一个人只能选择一门课) x(I,1 ) x ) I,2 ) x ) I,3 ) x ) I,4 ) x ) I,5 )=1,i=1:5。
对应的系数矩阵为:
1111100 00000000000000000000000,i=1时,其余变量系数均为0。
0 0 000 1 1 1 11 0 0 000 0 0 000 0 0 000,i=2时,其余变量系数均为0。
0 0 000 0 0 000 1 1 1 11 0 0 000 0 0 000,i=3时,其馀变量系数均为0。
000000000000011100000,i=4时,其余变量系数均为0。
0 0 000 0 0 000 0 0 000 0 0 000 1 1 1 11,i=5时,其馀变量系数均为0。
)2)只选一门课) x(1,j ) x ) 2,j ) x ) 3,j ) x ) 4,j ) x ) 5,j )=1,j=1:5。
对应的系数矩阵为:
1000010001000100001000000000000000000000,j=1时,其余变量系数均为0。
000001000100001000000000000000000000000000000000000000000000000,其馀变量系数均为0。
01000100010001000100000000000000100,j=3时,其余变量系数均为0。
当00010001000100010001000010000100000010,j=4时,其余变量系数均为0。
当0001000100010001000100000000000100001,j=5时,其余变量系数均为0。
data=[ 2,3,1,5,7; 3、4、6、1、2; 一、三、五、二、四; 4、7、4、2、1; 五、六、三、五、一; c=data(3360; aeq=zeros (10,25; forI=1:5aeq(I,[1:5](I-1 ) *5)=1; %约束条件(1) AEQ ) I5、i:5:25 )=1; %约束条件(2) endbeq=Ones ) 10,1 ); intcon=1:25; %个变量均为整数lb=zeros (25,1 ); %变量的最小值为0ub=ones (25,1 ); %变量的最大值为1[xfval]=intlinprog(c,intcon,[],[],Aeq,beq,lb,ub ); reshape(x、5、5 )的执行结果:
0 1 0 0 0
0 0 0 1 0
1 0 0 0 0
0 0 0 0 1
0 0 1 0 0