用lingo软件做模型 请给为达人帮助啊

某大学计算机机房聘用三名大学生(代号1,2,3)和三名研究生(代号4,5,6)值班。已知每人从周一至周五每天最多可安排的值班时间及每人每小时的报酬见表10。
表10 值班时间及每人每时的报酬
学生代号 报酬
(元/h) 每天最多可安排的值班时间(h)
周一 周二 周三 周四 周五
1 10 6 0 6 0 7
2 10 0 6 0 6 0
3 11 4 8 3 0 5
4 12 5 5 6 0 4
5 14 3 0 4 8 0
6 13 0 6 0 6 3

该实验室开放时间为上午9:00至晚上10:00,开放时间内须有且仅须一名学生值班,规定大学生每周值班不少于7小时,研究生每周不少于8小时,每名学生每周值班不超过4次,每次值班不少于2小时,每天安排值班的学生不超过4人,且其中必须有一名研究生。
试为该实验室安排一张人员的值班表,使总支付的报酬为最少。
用lingo软件做 请求给为给力之人以帮助 我的邮箱是gmhstriving@sina.com 谢谢啦

第1个回答  2010-11-14
这里x表示某学生在某天工作x小时 c表示是否工作
model:
sets:
student/1..6/:pay;
day/1..5/:;
link(student,day):t,x,c;
endsets
data:
pay=10 10 11 12 14 13;
t=
6 0 6 0 7
0 6 0 6 0
4 8 3 0 5
5 5 6 0 4
3 0 4 8 0
0 6 0 6 3;
enddata
min=@sum(student(i):pay(i)*@sum(day(j):x(i,j)));
@for(link:x<=t);
@for(link:c=@if(x#gt#0,1,0));
@for(day(j):@sum(student(i):x(i,j))=13);
@for(student(i)|i#le#3:@sum(day(j):x(i,j))>=7);
@for(student(i)|i#gt#3:@sum(day(j):x(i,j))>=8);
@for(student(i):@sum(day(j):c(i,j))<=4);
@for(day(j):@sum(student(i):c(i,j))<=4);
@for(day(j):@sum(student(i)|i#gt#3:c(i,j))>=1);
@for(link:x#ge#2 #or# x#eq#0=1);
end本回答被网友采纳
第2个回答  2010-11-16
我原来没看清楚
相似回答