- 积分
- 32
- 注册时间
- 2004-9-29
- 仿真币
-
- 最后登录
- 1970-1-1
|
问题描述:可分配水资源量为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描述语言有点生涩。 |
|