1、实验目的;2、问题;3、数学模型;4、Lingo求解程序; 5、计算结果;6、结论;7、心得体会。
实验四、利用数学软件求解对策论模型 一、实验目的
通过此实验,复习、巩固矩阵对策的线性规划解法,能对策论的基本知识,建立实际问题的数学模型,并利用LINGO求解。 二、实验原理及方法
(一)二人有限零和对策问题
方法(1)由课本第14章定理4和定理11,对于任一矩阵对策G={S1,S2;A}的求解可转化于一对互为对偶的线性规划问题:
?min z? 和
?i? (P)??aijx'i?1, j?1,?,n?i?x'i?0??max w??y'j?j?(D)??aijy'j?1, i?1,?,m?j?y'?0, j?1,?,n?j?x'i(14?49)(14?52)方法(2):
或者利用定理5,直接求解如下的两个线性规划问题 max w??aijxi?w, j?1,?,n ?i?(P)??xi?1
?i?xi?0, i?1,?,m?
min v??aijyj?v, i?1,?,m ?j?(D)??yj?1?j?y?0, j?1,?,n?j
对于上述线性规划问题,可用Matlab、Lingo等数学软件求解。此处用Lingo软件求解。 例题4-1 利用线性规划方法求解赢得矩阵为A的矩阵对策:
30
?7?A??2?9?2909??0? 11??解:求解问题可化为下列两个互为对偶的线性规划问题
minx1?x2?x3may(y1?y2?y3)?7x1?2x2?9x3?1?7y1?2y2?9y3?1??1 (D) ?1 (P)??2x1?9x2?2y1?9y2s.t.?s.t.?11x3?111y3?1?9x1??9y1??x?0,x?0,x?0?y?0,y?0,y?02323?1?1编写LINGO计算程序为:
(1)局中人Ⅰ的最优策略计算程序为
model: sets:
player1/1..3/:x; player2/1..3/:y;
game(player1,player2):A; endsets data: A=7 2 9 2 9 0 9 0 11; enddata
min=@sum(player1(i):x(i));
@for(player2(j):@sum(player1(i):A(i,j)*x(i))>=1;); end
求解结果为:
Global optimal solution found at iteration: 8 Objective value: 0.2000000
Variable Value Reduced Cost X( 1) 0.5000000E-01 0.000000 X( 2) 0.1000000 0.000000 X( 3) 0.5000000E-01 0.000000 Y( 1) 0.000000 0.000000 Y( 2) 0.000000 0.000000 Y( 3) 0.000000 0.000000 A( 1, 1) 7.000000 0.000000 A( 1, 2) 2.000000 0.000000 A( 1, 3) 9.000000 0.000000 A( 2, 1) 2.000000 0.000000 A( 2, 2) 9.000000 0.000000 A( 2, 3) 0.000000 0.000000 A( 3, 1) 9.000000 0.000000
31
A( 3, 2) 0.000000 0.000000 A( 3, 3) 11.00000 0.000000
即x1=0.05.x2=0.1,x3=0.05,最优值为0.2,从而局中人Ⅰ的赢得期望值为
VG?1/0.2?5,最优策略为x*?VG*(0.05,0.1,0.05)?(0.25,0.5,0.25)。
下面利用方法(2)求解,计算程序为:
model: sets:
player1/1..3/:x; player2/1..3/;
game(player1,player2):A; endsets data: A=7 2 9 2 9 0 9 0 11; enddata max=w; @free(w);
@for(player2(j):@sum(player1(i):A(i,j)*x(i))>=w;); @sum(player1(i):x(i))=1; end
计算结果为:
Global optimal solution found at iteration: 3 Objective value: 5.000000
Variable Value Reduced Cost W 5.000000 0.000000 X( 1) 0.2500000 0.000000 X( 2) 0.5000000 0.000000 X( 3) 0.2500000 0.000000 A( 1, 1) 7.000000 0.000000 A( 1, 2) 2.000000 0.000000 A( 1, 3) 9.000000 0.000000 A( 2, 1) 2.000000 0.000000 A( 2, 2) 9.000000 0.000000 A( 2, 3) 0.000000 0.000000 A( 3, 1) 9.000000 0.000000 A( 3, 2) 0.000000 0.000000 A( 3, 3) 11.00000 0.000000
结果和上面相同。
(2)局中人Ⅱ的最优策略计算程序(按方法2)为:
model:
32
sets:
player1/1..3/; player2/1..3/:y;
game(player1,player2):A; endsets data: A=7 2 9 2 9 0 9 0 11; enddata min=v; @free(v);
@for(player2(i):@sum(player1(j):A(i,j)*y(j))<=v;); @sum(player1(i):y(i))=1; end
计算结果为:
Global optimal solution found at iteration: 5 Objective value: 5.000000
Variable Value Reduced Cost V 5.000000 0.000000 Y( 1) 0.2500000 0.000000 Y( 2) 0.5000000 0.000000 Y( 3) 0.2500000 0.000000 A( 1, 1) 7.000000 0.000000 A( 1, 2) 2.000000 0.000000 A( 1, 3) 9.000000 0.000000 A( 2, 1) 2.000000 0.000000 A( 2, 2) 9.000000 0.000000 A( 2, 3) 0.000000 0.000000 A( 3, 1) 9.000000 0.000000 A( 3, 2) 0.000000 0.000000 A( 3, 3) 11.00000 0.000000
局中人Ⅱ的最优策略为y*?(0.25,0.5,0.25)。
(二) 二人有限非零和混合对策问题(双矩阵对策问题)
二人非零和对策也称为双矩阵对策问题,均包含两种情况,纯对策和混合对策。对于纯对策的解不存在的情况下,需要给出混合对策。
S2???1,?2,...,?n? 定义:设G={S1,S2;A,B}为一个双矩阵对策,其中S1???1,?2,...,?m?,
A?aij**??m?n,B?bij*??n?m分别为局中人Ⅰ和局中人Ⅱ的赢得矩阵,若存在
x?S1,y?S2,使得
*33
其中S(x)Ay(x)By*T*T**?xAy,?x?S1,?(x)Ay,?y?S,*T*2T**(14?63)(14?64)
。
*1nm????*nm??x?Rxi?0,i?1,2,...,m,?xi?1?, S2??y?Ryi?0,i?1,2,...,n,?yi?1?i?1i?1????*则称x*?S1*,y*?S2为G的一个非合作平衡点。VA?(x*)TAy*,VB?(x*)TBy*分别称为局中人Ⅰ和局中人Ⅱ的赢得值。
易知(14-63)、(14-64)等价于下列不等式:
n(x)Ay*T*T*??aj?1mijyj,i?1,2,...,mxi,j?1,2,...,n**(14?63)?
ij(x)By*??bi?1(14?64)?由定理15, G的非合作平衡点 一定存在。
例题4-2 有甲、乙两支游泳队举行包括三个项目的对抗赛。这两支游泳队各有一名健将级运动员(甲队为李,乙队为王),在三个项目中成绩突出。但规则规定准许他们每个人分别只能参加两项比赛,而每队的其他两名队员则可以参加全部三项比赛。各运动员的成绩见下表:
100m蝶泳 100m仰泳 100m蛙泳 赵 54.7 62.2 69.1 甲队 钱 58.2 63.4 70.5 李 52.1 58.2 65.3 王 53.6 56.5 67.8 乙队 张 56.4 59.7 68.4 孙 59.8 61.5 71.3 解:比赛采用计分制的方式计算两队的得分,每次比赛的前三名得分分别为5、3、1
分别用甲1、甲2、甲3表示甲队中李健将不参加蝶泳、仰泳、蛙泳比赛的策略; 分别用乙1、乙2、乙3表示乙队中王健将不参加蝶泳、仰泳、蛙泳比赛的策略; 当甲队用策略甲1,乙队用策略乙1时,在100m蝶泳中,甲队赵获第一、钱第三获6分,乙队张第二获3分;在100m仰泳中,甲队中李获第二得3分,乙队中王第一、张第三得6分;在100m蛙泳中,甲队李获第一得5分,乙队中王、张分获第二、第三得4分,从对应于策略(甲1,乙1),甲、乙两队分别得分为(14,13).下表给出了在全部策略下两队的得分:
甲1 甲2 甲3 乙1 乙2 乙3 (14,13) (13,14) (12,15) (13,14) (12,15) (12,15) (12,15) (12,15) (13,14) 按照(14-63)、(14-64)式,给出计算两队最优策略的程序如下:
sets:
player1/1..3/: x;
34