求助,这个lingo程序的错误,如何改正,谢谢!

来源:百度知道 编辑:UC知道 时间:2024/05/16 22:03:45
model:
!人员排班问题;
sets:
nurses/n1..n12/:da,db,dc,de,df,dda,ddb,ddc,dde,ddf;
day/day1..day14/:b,c,e,f;
dayneed/d1..d14/:dn;
pnneed/p1..p14/:pn;
anneed/a1..a14/:an;
links_dn(day,nurses):se_dn;
links_pn(day,nurses):se_pn;
links_an(day,nurses):se_an;
links_rn(day,nurses):se_rn;
weight/p1..p5/:p;
endsets
!目标函数;
min=p1*@sum(nurses:dda;@bnd(7,k,12)+p2*@sum(nurses:ddb)+p3*@sum(nurses:ddc)+p4*@sum(nurses:dde)+p5*@sum(nurses:ddf;@bnd(7,k,12));
!满足每天白班护士需求的约束;
@for(day(n):
@sum(nurses(k):se_dn(n,k))>=dn(n));
!满足每天小夜班护士需求的约束;
@for(day(n):
@sum(nurses(k):se_pn(n,k))>=pn(n));
!满足每天大夜班护士需求的约束;
@for(day(n):
@sum(nurses(k):se_an(n,k))>=an(n));
!每个护士每天只能上一个班;
@for(day(n):
@for(nurses(k):
se_dn(n,k)+se_pn(n,k)+se_an(n,k)+se_rn(n,k)=1);
);
!护士不可以连续上班;
@for(nurses(k):
@for(day(n):
se_pn(n,k)+se_an(n,k)+se_an(n+1,k)<=1;@bnd(1,n,11));

自学的lingo,没正真学过,实在看不懂你的写法!!

day/day1..day14/:b,c,e,f;
dayneed/d1..d14/:dn;
pnneed/p1..p14/:pn;
anneed/a1..a14/:an;
这些都是14个数
我写的话直接是
aa/1..14/:b,c,e,f,dn,pn,an;

min=p1*@sum(nurses:dda;@bnd(7,k,12)+p2*@sum(nurses:ddb)+p3*@sum(nurses:ddc)+p4*@sum(nurses:dde)+p5*@sum(nurses:ddf;@bnd(7,k,12));
为什么要把@bnd(7,k,12)和目标函数写在一起

不如把题目贴上