找回密码
 注册
Simdroid-非首页
查看: 149|回复: 1

[1stOpt] 动态规划的1stOpt与Lingo解法

[复制链接]
发表于 2007-6-15 10:24:56 | 显示全部楼层 |阅读模式 来自 北京西城
问题描述:可分配水资源量为7个单位,供给3个用户,各用户得到不同水量的经济效益如下表,求效益最高的水资源量分配方案。
水量01234567
用户
用户1051540809095100
用户205154060707375
用户304264045505153


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描述语言有点生涩。
发表于 2009-8-29 16:41:16 | 显示全部楼层 来自 重庆南岸区
Simdroid开发平台
上面两个程序都看得不是很明白,能不能用matlab代码贴出来啊!
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-9-25 12:22 , Processed in 0.030052 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表