马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
问题描述:可分配水资源量为7个单位,供给3个用户,各用户得到不同水量的经济效益如下表,求效益最高的水资源量分配方案。
| 水量 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 用户 |
|
|
|
|
|
|
|
|
| 用户1 |
| 0 | 5 | 15 | 40 | 80 | 90 | 95 | 100 | 用户2 |
| 0 | 5 | 15 | 40 | 60 | 70 | 73 | 75 | 用户3 |
| 0 | 4 | 26 | 40 | 45 | 50 | 51 | 53 |
1stOpt:p0,p1,p2代表分给3用户的水量,整数型,目标函数效益最大,约束p0+p1+p2=7
代码:
- Constant Benefit(0:2, 0:7)=[0,5,15,40,80,90,95,100,
- 0,5,15,40,60,70,73,75,
- 0,4,26,40,45,50,51,53];
- Parameter p(0:2)=[0,7,0];
- Maximum;
- StartProgram [Pascal];
- Procedure MainModel;
- Begin
- FunctionResult := Benefit[0,p[0]] + Benefit[1,p[1]] +Benefit[2,p[2]];
- ConstrainedResult := p[0]+p[1]+p[2] = 7;
- End;
- EndProgram;
复制代码
结果:最大效益=120,p1=4, p2=3, p3=0或p1=4, p2=0, p3=3
Lingo:
代码:
- Sets:
- User/1..3/;
- Water_Amount/1..8/;
- Arcs(User,Water_Amount):Benefit,Selection,Status;
- EndSets
- Data:
- Benefit=0 5 15 40 80 90 95 100
- 0 5 15 40 60 70 73 75
- 0 4 26 40 45 50 51 53;
- Status=0 1 2 3 4 5 6 7
- 0 1 2 3 4 5 6 7
- 0 1 2 3 4 5 6 7;
- EndData
- Max = @Sum(Arcs(i,j):Benefit(i,j)*Selection(i,j));
- @For(Arcs: @Bin(Selection));
- @For(User(i): @Sum(Arcs(i,k):Selection(i,k))=1);
- @Sum(Arcs(i,j):Status(i,j)*Selection(i,j))=7;
复制代码
得相同结果。
感受:复杂点的问题,Lingo描述语言有点生涩。
来自:simwe-shamohu |