Lingo 指派问题

分配甲、乙、丙、丁、戊完成A,B,C,D,E五项任务,每人完成一项,每项任务只能由一个人完成,五个人完成任务所需时间如下表,做出合理安排,使总时间最少.

人 A B C D E
甲 8 6 10 9 12
乙 9 12 7 11 9
丙 7 4 3 5 8
丁 9 5 8 11 8
戊 4 6 7 5 11
这题我已经做出来了。
min=8*x11+6*x12+10*x13+9*x14+12*x15+9*x21+12*x22+7*x23+11*x24+9*x25+7*x31+4*x32+3*x33+5*x34+8*x35+9*x41+5*x42+8*x43+11*x44+8*x45+4*x51+6*x52+7*x53+5*x54+11*x55;
x11+x21+x31+x41+x51=1;
x12+x22+x32+x42+x52=1;
x13+x23+x33+x43+x53=1;
x14+x24+x34+x44+x54=1;
x15+x25+x35+x45+x51+x55=1;
x11+x12+x13+x14+x15=1;
x21+x22+x23+x24+x25=1;
x31+x32+x33+x34+x35=1;
x41+x42+x43+x44+x45=1;
x51+x52+x53+x54+x55=1;
@bin(x11);
@bin(x12);
@bin(x13);
@bin(x14);
@bin(x15);
@bin(x21);
@bin(x22);
@bin(x23);
@bin(x24);
@bin(x25);
@bin(x31);
@bin(x32);
@bin(x33);
@bin(x34);
@bin(x35);
@bin(x41);
@bin(x42);
@bin(x43);
@bin(x44);
@bin(x45);
@bin(x51);
@bin(x52);
@bin(x53);
@bin(x54);
@bin(x55);

可是这个太麻烦了,我想问下 用循环语句怎么写?

非常感谢知识达人们给予的帮助,非常感谢!非常

第1个回答  2010-06-06
model:
sets:
a/1..5/;
time(a,a):t,n;!n(i,j)=1则意味i去做j任务;
endsets
data:
t=8 6 10 9 12
9 12 7 11 9
7 4 3 5 8
9 5 8 11 8
4 6 7 5 11;
enddata
[OBJ]min=@sum(time:t*n);
@for(a(i):@sum(a(j):n(i,j))=1);!每个任务只给一个人做;
@for(a(j):@sum(a(i):n(i,j))=1);!每个人只能做一件任务;
end
运行结果:
Global optimal solution found.
Objective value: 30.00000
Total solver iterations: 6

Variable Value Reduced Cost
T( 1, 1) 8.000000 0.000000
T( 1, 2) 6.000000 0.000000
T( 1, 3) 10.00000 0.000000
T( 1, 4) 9.000000 0.000000
T( 1, 5) 12.00000 0.000000
T( 2, 1) 9.000000 0.000000
T( 2, 2) 12.00000 0.000000
T( 2, 3) 7.000000 0.000000
T( 2, 4) 11.00000 0.000000
T( 2, 5) 9.000000 0.000000
T( 3, 1) 7.000000 0.000000
T( 3, 2) 4.000000 0.000000
T( 3, 3) 3.000000 0.000000
T( 3, 4) 5.000000 0.000000
T( 3, 5) 8.000000 0.000000
T( 4, 1) 9.000000 0.000000
T( 4, 2) 5.000000 0.000000
T( 4, 3) 8.000000 0.000000
T( 4, 4) 11.00000 0.000000
T( 4, 5) 8.000000 0.000000
T( 5, 1) 4.000000 0.000000
T( 5, 2) 6.000000 0.000000
T( 5, 3) 7.000000 0.000000
T( 5, 4) 5.000000 0.000000
T( 5, 5) 11.00000 0.000000
N( 1, 1) 0.000000 0.000000
N( 1, 2) 0.000000 0.000000
N( 1, 3) 0.000000 3.000000
N( 1, 4) 1.000000 0.000000
N( 1, 5) 0.000000 3.000000
N( 2, 1) 0.000000 1.000000
N( 2, 2) 0.000000 6.000000
N( 2, 3) 0.000000 0.000000
N( 2, 4) 0.000000 2.000000
N( 2, 5) 1.000000 0.000000
N( 3, 1) 0.000000 3.000000
N( 3, 2) 0.000000 2.000000
N( 3, 3) 1.000000 0.000000
N( 3, 4) 0.000000 0.000000
N( 3, 5) 0.000000 3.000000
N( 4, 1) 0.000000 2.000000
N( 4, 2) 1.000000 0.000000
N( 4, 3) 0.000000 2.000000
N( 4, 4) 0.000000 3.000000
N( 4, 5) 0.000000 0.000000
N( 5, 1) 1.000000 0.000000
N( 5, 2) 0.000000 4.000000
N( 5, 3) 0.000000 4.000000
N( 5, 4) 0.000000 0.000000
N( 5, 5) 0.000000 6.000000
N(i,j)=1的地方就是安排i去干j任务。
第2个回答  2015-01-20
model:
sets:
r/1..5/:;
c/1..5/:;
link(r,c):time,x;
endsets
data:
time= 8 6 10 9 2
9 12 7 11 9
7 4 3 5 8
9 5 8 11 8
4 6 7 5 11;
enddata
min=@sum(link:x*time);
@for(link:@bin(x));
@for(r(i):@sum(c(j):x(i,j))=1);
@for(c(j):@sum(r(i):x(i,j))=1);
end

Global optimal solution found.
Objective value: 23.00000
Objective bound: 23.00000
Infeasibilities: 0.000000
Extended solver steps: 0
Total solver iterations: 0

Variable Value Reduced Cost
TIME( 1, 1) 8.000000 0.000000
TIME( 1, 2) 6.000000 0.000000
TIME( 1, 3) 10.00000 0.000000
TIME( 1, 4) 9.000000 0.000000
TIME( 1, 5) 2.000000 0.000000
TIME( 2, 1) 9.000000 0.000000
TIME( 2, 2) 12.00000 0.000000
TIME( 2, 3) 7.000000 0.000000
TIME( 2, 4) 11.00000 0.000000
TIME( 2, 5) 9.000000 0.000000
TIME( 3, 1) 7.000000 0.000000
TIME( 3, 2) 4.000000 0.000000
TIME( 3, 3) 3.000000 0.000000
TIME( 3, 4) 5.000000 0.000000
TIME( 3, 5) 8.000000 0.000000
TIME( 4, 1) 9.000000 0.000000
TIME( 4, 2) 5.000000 0.000000
TIME( 4, 3) 8.000000 0.000000
TIME( 4, 4) 11.00000 0.000000
TIME( 4, 5) 8.000000 0.000000
TIME( 5, 1) 4.000000 0.000000
TIME( 5, 2) 6.000000 0.000000
TIME( 5, 3) 7.000000 0.000000
TIME( 5, 4) 5.000000 0.000000
TIME( 5, 5) 11.00000 0.000000
X( 1, 1) 0.000000 8.000000
X( 1, 2) 0.000000 6.000000
X( 1, 3) 0.000000 10.00000
X( 1, 4) 0.000000 9.000000
X( 1, 5) 1.000000 2.000000
X( 2, 1) 0.000000 9.000000
X( 2, 2) 0.000000 12.00000
X( 2, 3) 1.000000 7.000000
X( 2, 4) 0.000000 11.00000
X( 2, 5) 0.000000 9.000000
X( 3, 1) 0.000000 7.000000
X( 3, 2) 0.000000 4.000000
X( 3, 3) 0.000000 3.000000
X( 3, 4) 1.000000 5.000000
X( 3, 5) 0.000000 8.000000
X( 4, 1) 0.000000 9.000000
X( 4, 2) 1.000000 5.000000
X( 4, 3) 0.000000 8.000000
X( 4, 4) 0.000000 11.00000
X( 4, 5) 0.000000 8.000000
X( 5, 1) 1.000000 4.000000
X( 5, 2) 0.000000 6.000000
X( 5, 3) 0.000000 7.000000
X( 5, 4) 0.000000 5.000000
X( 5, 5) 0.000000 11.00000
相似回答