lingo编程程序求解选址-运输问题
- 格式:docx
- 大小:15.51 KB
- 文档页数:3
sets:
factory/1..3/:s1,s2,s3,s4;
!工厂四种产品供应量;
warhouse/1..13/:lwar,fd,eva,yun,war1,war2,war3,war4,wq1,wq2,wq3,wq4;
!配送中心最大仓储量、评价值、固定运营成本、库存成本以及库存量;
customer/1..24/:d1,d2,d3,d4;
!客户四种产品的需求量;
tr/1..13/:z;
link1(factory,warhouse):d,x1,x2,x3,x4;
!工厂到客户的运输距离,四种产品的运输量;
link2(warhouse,customer):dd,xx1,xx2,xx3,xx4,xxx1,xxx2,xxx3,xxx4;
!物流中心到客户运输距离、运输量,未超出安全距离的运输量;
endsets
data:
!供用量;
s1=;
s2=;
s3=;
s4=;
!最大库存;
lwar=;
!安全距离;
fd=;
!需求量;
d1=;
d2=;
d3=;
d4=;
!运输成本;
tc=;
ttc=;
yun=;!运营成本;
u=;!超出最佳半径的惩罚成本;
w1=;w2=;w3=;
!单位库存成本;
war1=;
war2=;
war3=;
war4=;
d=;!各钢厂到备选配送中心距离;
dd=;!备选配送中心到需求点的距离;
enddata
f1=@sum(link1(i,j):x1(i,j)*tc*d(i,j))+@sum(link1(i,j):x2(i,j)*tc*d(i,j) )+@sum(link1(i,j):x3(i,j)*tc*d(i,j))+@sum(link1(i,j):x4(i,j)*tc*d(i,j)) +@sum(link2(j,k):xx1(j,k)*ttc*dd(j,k))+@sum(link2(j,k):xx2(j,k)*ttc*dd( j,k))+@sum(link2(j,k):xx3(j,k)*ttc*dd(j,k))+@sum(link2(j,k):xx4(j,k)*tt c*dd(j,k))+@sum(warhouse(j):z(j)*yun)+
@sum(link2(j,k):@smax(dd(j,k)-600,0)*(xx1+xx2+xx3+xx4-xxx1-xxx2-xxx3-xx x4)*u)+@sum(warhouse(j):wq1(j)*war1+wq2(j)*war2+war3*wq3(j)+wq4(j)*war4 );
f2=@sum(link2(j,k):xxx1+xxx2+xxx3+xxx4);
max=(7731050000-f1)/6485240000+f2/1125;
!每种产品的安全距离运输量;
@for(link2:xxx1=@if(dd#gt#600,0,xx1));
@for(link2:xxx2=@if(dd#gt#600,0,xx2));
@for(link2:xxx3=@if(dd#gt#600,0,xx3));
@for(link2:xxx4=@if(dd#gt#600,0,xx4));
!超过安全距离的惩罚成本;
tt=@sum(link2(j,k):@smax(dd-600,0)*(xx1-xxx1)*u)+@sum(link2(j,k):@smax( dd-600,0)*(xx2-xxx2)*u)
+@sum(link2(j,k):@smax(dd-600,0)*(xx3-xxx3)*u)+@sum(link2(j,k):@smax(dd -600,0)*(xx4-xxx4)*u);
!工厂供应约束;
@for(factory(i):
@sum(warhouse(j):x1(i,j))<=s1(i));
@for(factory(i):
@sum(warhouse(j):x2(i,j))<=s2(i));
@for(factory(i):
@sum(warhouse(j):x3(i,j))<=s3(i));
@for(factory(i):
@sum(warhouse(j):x4(i,j))<=s4(i));
!配送中心库存量;
@for(warhouse(j):
wq1=-@sum(customer(k):xx1(j,k))+@sum(factory(i):x1(i,j)));
@for(warhouse(j):
wq2=-@sum(customer(k):xx2(j,k))+@sum(factory(i):x2(i,j)));
@for(warhouse(j):
wq3=-@sum(customer(k):xx3(j,k))+@sum(factory(i):x3(i,j)));
@for(warhouse(j):
wq4=-@sum(customer(k):xx4(j,k))+@sum(factory(i):x4(i,j)));
!配送中心流出量小于流入量;
@for(warhouse(j):
@sum(customer(k):xx1(j,k))<=@sum(factory(i):x1(i,j)));
@for(warhouse(j):
@sum(customer(k):xx2(j,k))<=@sum(factory(i):x2(i,j))); @for(warhouse(j):
@sum(customer(k):xx3(j,k))<=@sum(factory(i):x3(i,j))); @for(warhouse(j):
@sum(customer(k):xx4(j,k))<=@sum(factory(i):x4(i,j))); !满足顾客需求;
@for(customer(k):
@sum(warhouse(j):xx1(j,k)*z(j))=d1(k));
@for(customer(k):
@sum(warhouse(j):xx2(j,k)*z(j))=d2(k));
@for(customer(k):
@sum(warhouse(j):xx3(j,k)*z(j))=d3(k));
@for(customer(k):
@sum(warhouse(j):xx4(j,k)*z(j))=d4(k));
@sum(tr(j):z(j))<=13;!限制选择配送中心数量;
@for(tr(j):@bin(z(j)));!z是0-1变量;
end。