- 在线时间
- 4 小时
- 最后登录
- 2014-5-25
- 注册时间
- 2014-4-26
- 听众数
- 8
- 收听数
- 8
- 能力
- 0 分
- 体力
- 46 点
- 威望
- 0 点
- 阅读权限
- 20
- 积分
- 20
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 11
- 主题
- 4
- 精华
- 0
- 分享
- 0
- 好友
- 3
升级   15.79% TA的每日心情 | 奋斗 2014-5-25 10:34 |
---|
签到天数: 4 天 [LV.2]偶尔看看I
- 自我介绍
- 你好,我是lingo菜鸟
 |
各位大侠 帮帮忙啊 鄙人在lingo求解物流网络时遇到点问题
代码中的0 1变量r和t不知为何始终显示为1
按照预期目标他们应该在工厂产量或者配送中心处理量不为0时候才能为1的,但是现在在配送中心WH2处理量为0时候r仍为1.
详情参见代码运行后结果:ln67,ln177~ln184.。。。。。。。。- sets:
- plants/p1..p5/: capacity1,fixfee1,t,prodfee,totalprod;!fixfee表示工厂p的固定费用,t为0 1变量表示工厂是否被选中,prodfee表示工厂生产单件产品费用,totalprod表示某工厂的总产量;
- !以上是添加的工厂;
- warehouses/wh1..wh5/: capacity2,fixfee2,r,holdfee,totalhold; !fixfee2表示配送中心的固定费用,r为0 1变量表示配送中心是否被选中,holdfee为处理费用,totalhold表示配送中心总的处理量即其流量;
- customers/v1..v8/: demand;
- links(plants,warehouses): cost1, volume1;!这个是工厂与配送中心的关系;
- link(warehouses,customers): cost2, volume2;
- endsets
- @for(warehouses:@bin(r));
- @for(plants:@bin(t));
- !***********************************************************************
- !工厂总生产量;
- @for(plants(k):
- @sum(warehouses(I): volume1(k,I))=totalprod);
- !工厂产能约束;
- @for(plants(k):
- @sum(warehouses(I): volume1(k,I))<=capacity1(k));
- !配送中心处理量;
- @for(warehouses(I):
- @sum(customers(J): volume2(I,J))=totalhold);
- !配送中心容量约束;
- @for(warehouses(I):
- @sum(customers(J): volume2(I,J))<=capacity2(I));
- !配送中心流量平衡;
- @for(warehouses(I):
- @sum(customers(J): volume2(I,J))=@sum(plants(k): volume1(k,I)));
- !***********************************************************************
- !需求约束;
- @for(customers(J):
- @sum(warehouses(I): volume2(I,J))=demand(J));
- !########固定费用部分的0 1变量表示。#######;
- @for(warehouses(I):
- ! r(I)>=(@sum(customers(J): volume2(I,J)) +1)/(@sum(customers(J): volume2(I,J)) +1));
- r(I)=@if(totalhold #gt# 0, 1,0));
- @for(plants(k):
- ! t(k)>=(@sum(warehouses(I): volume1(k,I)) +1)/(@sum(warehouses(I): volume1(k,I)) +1));
- t(k)=@if(totalprod #gt# 0, 1,0));
- !#######每个plant / warehouse的固定费用,如果palnt / warehouse的产量 /流量不为零,表示其被选中,则其相应的费用要被计入总成本#####;
- !########固定费用部分的0 1变量表示。#######;
- !目标函数;
- min=@sum(links: cost1*volume1)+@sum(link:cost2*volume2)+@sum(warehouses:fixfee2*r)+@sum(warehouses:holdfee*totalhold)
- +@sum(plants:fixfee1*t)+@sum(plants:prodfee*totalprod);
- !数据部分;
- data:
- !工厂数据;
- capacity1=160 90 110 80 100;
- fixfee1=0 0 0 60 75;
- prodfee=39 45 40 47 43;
- !配送中心数据;
- capacity2=95 100 80 130 95;
- fixfee2=0 0 0 20 15;
- holdfee=3 4 2 3 4;
- !顾客数据;
- demand=45 55 49 53 53 40 52 46;
- !运输费用;
- cost1=800 1000 700 500 750
- 900 860 1200 900 700
- 800 600 500 400 350
- 500 680 700 700 900
- 700 710 500 1000 550;
- cost2=6 2 6 7 4 2 9 5
- 40 90 50 30 80 50 80 20
- 5 2 1 9 7 4 3 3
- 7 6 7 3 9 2 7 1
- 2 3 9 5 7 2 6 5;
- enddata
- end
复制代码 |
zan
|