model:
sets:
h/1..10/:a;!i:受灾点;
f/1..6/:;!j:储备库;
l/1..6/:b,d,p,s,z;!z:物资种类;
sj(h,f):t,yscb;
scw(h,f,l):n;!n:不同受灾点获得的不同储备库的不同物资;
sw(h,l):x,q,g,bgpd,cfcb;
endsets
data:
!总人数;
c=21623;
!各受灾点人数a(i);
a=3418,3521,2212,98,1655,2122,1352,986,4109,2150;
!各物资总量b(z);
b=68885000,68710000,2511,2283,3012,2851;
!不同物资单位运输成本z(z);
z=0.0075,0.00075,0.268,0.25,0.000125,0.00025;
!未满足需求的单位惩罚成本d(z);
d=0.1045,0.0105,3.736,3.485,0.00175,0.0035;
!不同受灾点间未满足需求差值的单位惩罚成本(千元)p(z);
p=0.5225,0.0525,18.68,17.425,0.00875,0.0175;
!各受灾点到储备库的时间t(i,j);
t=0.64,0.47,0.24,0.27,0.63,0.14
0.9,0.71,1.04,1.05,0.96,0.05
0.1,0.48,0.8,0.98,0.61,1.23
1.08,1.45,0.8,0.49,0.16,0.92
1.17,0.64,0.14,0.4,0.23,0.42
0.66,0.79,0.69,1.31,0.78,1.4
20.96,1.44,0.36,1.01,0.43,1.01
1.04,0.1,0.38,0.34,1,1.27
0.52,1.17,1.01,0.01,0.9,0.58
1.37,0,0.69,0.64,0.69,1.16;
!各受灾点的不同物资需求q(i,k);
q=10254,10254,128,513,103,103
10563,10563,132,528,106,106
6636,6636,83,332,66,66
294,294,4,15,3,3
4965,4965,62,248,50,50
6366,6366,80,318,64,64
4056,4056,51,203,41,41
2958,2958,37,148,30,30
12327,12327,154,616,123,123
6450,6450,81,323,65,65;
enddata
@for(l(k):@sum(h(i):x(i,k))=s(k));!分配到的不同物资量;
@sum(h(i):@abs(c/s(k)-a(i)/x(i,k)))=bgpd(i,k);!受灾点关于物资的不公平度;
@sum(l(k):t(i,j)*n(i,j,k)*z(k))=yscb(i,j);!储备库到受灾点的运输成本;
@for(l(k):@for(h(i):q(i,k)-x(i,k)=g(i,k))):!受灾点关于物资的未满足量;
@sum(h(i):@for(h(m)|i#ne#m:@abs(g(i,k)-g(m,k))*p(k)/2)+g(i,k)*d(k)))=cfcb(i,k);!受灾点之间未满足量的惩罚成本;
min=@sum(l(k):bgpd(i,k)+yscb(i,j)+cfcb(i,k));!目标函数;
@for(h(i):@for(l(k):@sum(f(j):n(i,k,j))=x(i,k)));!不同储备库到不同受灾点的不同物资量;
@for(l(k):@sum(h(i):x(i,k))<=b(k));!受灾点分配到的某物资总量小于等于储备库中某物资总量;
@for(l(k):@sum(h(i):x(i,k))<=q(i,k));!受灾点分配到的某物资量小于等于受灾点某物资的需求量;
@for(sw:@gin(x));
@for(l(k):@gin(s));
@for(sw:@gin(bgpd));
@for(sw:@gin(cfcb));
@for(sj:@gin(yscb));
@for(scw:@gin(n));
end