物品交易效应最大化问题的1stOpt解法
本问题来自Matlab版:[url=http://simwe.com/forum/thread-789653-1-4.html]http://simwe.com/forum/thread-789653-1-4.html[/url]问题描述如下:
比尔与杰克如何交换手中的商品,使两人效用乘积最大,且交换后两人效用都提高。
比尔 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]
