LINGO 编程问题

来源:百度知道 编辑:UC知道 时间:2024/05/28 14:51:53
题目:分配六个人去完成6个任务,每人完成一项,每项任务只能由一个人去完成,六个人分别完成各项任务的效益如下表所示,试作出任务分配使利益最大。
各人完成各项任务的利益
任务 A B C D E F
人员
1 20 15 16 5 4 7
2 17 15 33 12 8 6
3 9 12 18 16 30 13
4 12 8 11 27 19 14
5 - 7 10 21 10 32
6 - - - 6 11 13
注:表中“-”代表某人无法完成某项任务
=============我的程序:
model:
sets:
worker/w1..w6/:w;
job/j1..j6/:j;
links(worker,job):c,x;
endsets
data:
c=20,15,16,5,4,7,
17,15,33,12,8,6,
9,12,18,16,30,13,
12,8,11,27,19,14,
0,7,10,21,10,32,
0,0,0,6,11,13,
enddata
min=@sum(links:c*x);
@for(worker(i):@sum(job(j):x(i,j))=

把data里c的数据最后一个逗号改成分号就行了 。
从意义上讲应该是可以的,不能完成任务就是利益为0啦。 你改成正无穷或者负无穷试试,看意义应该是负无穷,实际操作改成一个很大的负数就行了。另外既然求任务分配使利益最大,是不是应该把min改成max?