这是程序
model:
sets:
supply/1..3/:s;
demand/1..4/:d;
quota1/1..2/:u1,c1,p1;
quota2/1..2/:u2,c2,p2;
quota3/1..2/:u3,c3,p3;
link0(supply,demand):t;
link1(supply,demand,quota1):x1;
link2(supply,demand,quota2):x2;
link3(supply,demand,quota3):x3;
ear1(demand,quota1):v1,n1;
ear2(demand,quota2):v2,n2;
ear3(demand,quota1):v3,n3;
endsets
data:
s=5000,5000,6000;
t=35,25,20
30,50,28
45,30,56
30,40,30;
u1=5,8;
u2=6,5;
u3=9,7;
c1=200,120;
c2=240,160;
c3=160,100;
p1=10,8;
p2=10,8;
p3=10,8;
v1=400,500
300,400
200,300
800,800;
v2=300,300
1000,100
800,500
100,100;
v3=300,200
100,600
400,400
100,400;
n1=1500,2000
1200,1500
600,800
2000,2500;
n2=1200,1200
2500,500
2400,2000
500,300;
n3=1200,800
400,2400
1800,1800
300,1800;
enddata
!目标函数;
max=0.5*(@sum(link1(i,j,l):(x1(i,j,l)*u1(j))/t(i,j))+@sum(link2(i,j,l):(x2(i,j,l)*u2(j))/t(i,j))+@sum(link3(i,j,l):(x3(i,j,l)*u3(j))/t(i,j)))
-0.5*(@sum(link1(i,j,l):(x1(i,j,l)*c1(i)+x1(i,j,l)*p1(i))+@sum(link2(i,j,l):(x2(i,j,l)*c2(i)+x2(i,j,l)*p2(i))+@sum(link3(i,j,l):(x3(i,j,l)*c3(i)+x3(i,j,l)*p3(i)));!目标函数
!空间约束;
@for(link1(i):@sum(link1(i,j,l):x1(i,j,l))<=s(i));
这里出的问题:
@for(link2(i):@sum(link2(i,j,l):x2(i,j,l))<=s(i));
@for(link3(i):@sum(link3(i,j,l):x3(i,j,l))<=s(i));
!最小体积约束;
@for(link1(j,l):@sum(link1(i,j,l):x(j,i,l))>=v1(j,l));
@for(link2(j,l):@sum(link2(i,j,l):x(j,i,l))>=v2(j,l));
@for(link3(j,l):@sum(link3(i,j,l):x(j,i,l))>=v3(j,l));
!费用约束
@sum(link1(i,j,l):(x1(i,j,l)*c1(i)+x1(i,j,l)*p1(i))+@sum(link2(i,j,l):(x2(i,j,l)*c2(i)+x2(i,j,l)*p2(i))+@sum(link3(i,j,l):(x3(i,j,l)*c3(i)+x3(i,j,l)*p3(i))<=3500000;
!需求点资源约束;
@for(link1(j,l):@sum(link1(i,j,l):x1(j,j,l))<=n1(j,l));
@for(link2(j,l):@sum(link2(i,j,l):x2(j,j,l))<=n2(j,l));
@for(link3(j,l):@sum(link3(i,j,l):x3(j,j,l))<=n3(j,l));
model:
sets:
supply/1..3/:s;
demand/1..4/:d;
quota1/1..2/:u1,c1,p1;
quota2/1..2/:u2,c2,p2;
quota3/1..2/:u3,c3,p3;
link0(supply,demand):t;
link1(supply,demand,quota1):x1;
link2(supply,demand,quota2):x2;
link3(supply,demand,quota3):x3;
ear1(demand,quota1):v1,n1;
ear2(demand,quota2):v2,n2;
ear3(demand,quota1):v3,n3;
endsets
data:
s=5000,5000,6000;
t=35,25,20
30,50,28
45,30,56
30,40,30;
u1=5,8;
u2=6,5;
u3=9,7;
c1=200,120;
c2=240,160;
c3=160,100;
p1=10,8;
p2=10,8;
p3=10,8;
v1=400,500
300,400
200,300
800,800;
v2=300,300
1000,100
800,500
100,100;
v3=300,200
100,600
400,400
100,400;
n1=1500,2000
1200,1500
600,800
2000,2500;
n2=1200,1200
2500,500
2400,2000
500,300;
n3=1200,800
400,2400
1800,1800
300,1800;
enddata
!目标函数;
max=0.5*(@sum(link1(i,j,l):(x1(i,j,l)*u1(j))/t(i,j))+@sum(link2(i,j,l):(x2(i,j,l)*u2(j))/t(i,j))+@sum(link3(i,j,l):(x3(i,j,l)*u3(j))/t(i,j)))
-0.5*(@sum(link1(i,j,l):(x1(i,j,l)*c1(i)+x1(i,j,l)*p1(i))+@sum(link2(i,j,l):(x2(i,j,l)*c2(i)+x2(i,j,l)*p2(i))+@sum(link3(i,j,l):(x3(i,j,l)*c3(i)+x3(i,j,l)*p3(i)));!目标函数
!空间约束;
@for(link1(i):@sum(link1(i,j,l):x1(i,j,l))<=s(i));
这里出的问题:
@for(link2(i):@sum(link2(i,j,l):x2(i,j,l))<=s(i));
@for(link3(i):@sum(link3(i,j,l):x3(i,j,l))<=s(i));
!最小体积约束;
@for(link1(j,l):@sum(link1(i,j,l):x(j,i,l))>=v1(j,l));
@for(link2(j,l):@sum(link2(i,j,l):x(j,i,l))>=v2(j,l));
@for(link3(j,l):@sum(link3(i,j,l):x(j,i,l))>=v3(j,l));
!费用约束
@sum(link1(i,j,l):(x1(i,j,l)*c1(i)+x1(i,j,l)*p1(i))+@sum(link2(i,j,l):(x2(i,j,l)*c2(i)+x2(i,j,l)*p2(i))+@sum(link3(i,j,l):(x3(i,j,l)*c3(i)+x3(i,j,l)*p3(i))<=3500000;
!需求点资源约束;
@for(link1(j,l):@sum(link1(i,j,l):x1(j,j,l))<=n1(j,l));
@for(link2(j,l):@sum(link2(i,j,l):x2(j,j,l))<=n2(j,l));
@for(link3(j,l):@sum(link3(i,j,l):x3(j,j,l))<=n3(j,l));