- 积分
- 32
- 注册时间
- 2004-9-29
- 仿真币
-
- 最后登录
- 1970-1-1
|
本问题来自Matlab版:http://simwe.com/forum/thread-789653-1-4.html
问题描述如下:
比尔与杰克如何交换手中的商品,使两人效用乘积最大,且交换后两人效用都提高。
比尔 bill效用 jack效用
1 2 4
2 5 2
3 2 7
4 2 2
5 4 1
杰克
6 10 1
7 1 1
8 6 3
9 2 2
一件物品换一件物品
1stOpt代码:
Constant n = 9, n1 = 6;
Constant Bill_Profit(1:n)=[2,5,2,2,4,10,1,6,2],
Jack_Profit(1:n)=[4,2,7,2,1,1,1,3,2];
Parameter p(1:n)=[1,n];
Exclusive = True;
PassParameter BillSum, JackSum;
Maximum;
StartProgram [Pascal];
Procedure MainModel;
var k: integer;
bill_sum, jack_sum: double;
Begin
bill_sum := 0;
jack_sum := 0;
for k := 1 to n do begin
if k < n1 then
bill_sum := bill_sum + Bill_Profit[p[k]]
else
jack_sum := jack_sum + jack_Profit[p[k]];
end;
BillSum := bill_sum;
JackSum := jack_sum;
FunctionResult := bill_sum*jack_sum;
End;
EndProgram;
结果如下:
目标函数值(最大): 390
p1: 2
p2: 5
p3: 7
p4: 8
p5: 6
p6: 1
p7: 3
p8: 4
p9: 9
传递参数(PassParameter):
billsum: 26
jacksum: 15
Jack的6、7、8与Bill的1、3、4互换,得最大效应26*15=390。 |
评分
-
1
查看全部评分
-
|