4.零和对策的线性规划解法
当且时,通常采用线性规划方法求解零和对策问题。
局中人Ⅰ选择混合策略的目的是使得:
其中为只有第个分量为1而其余分量的单位向量,。记,由于在时到达最小值,故应为线性规划问题:
s.t.
的解。
同理,应为线性规划。
s.t.
的解。由线性规划知识,上述两个线性规划问题互为对偶线性规划,他们具有相同的最优目标函数。
不妨设,做变换
则线性变换问题化为:
s.t.
同理,做变换:
则想爱你性规划问题(3)化为:
s.t.
例1 在一场敌对的军事行动中,甲方拥有三种进攻性武器,可分别用与摧毁乙方工事;而乙方有三种防御性武器来对付甲方。据平时演习得到的数据,各种武器间对抗时,甲方的赢得矩阵如下:
编写成分如下:
clear
a=[1/3,1/2,-1/3;-2/5,1/5,-1/2;1/2,-3/5,1/3];b=10;
a=a+b*ones(3); %把赢得矩阵的每个元素变成大于0的数
[x0,u]=linprog(ones(3,1),-a',-ones(3,1),[],[],zeros(3,1));
x=x0/u,u=1/u-b
[y0,v]=linprog(-ones(3,1),a,ones(3,1),[],[],zeros(3,1));
y=y0/(-v),v=1/(-v)-b
解得,故乙方有利。
下面我们使用式和分别作为模型主题用Lingo编程。
model:
sets:
player1/1..3/:x;
player2/1..3/:y;
game(player1,player2):c;
endsets
data:
ctrl=?; !ctrl取1求局中人1的策略,ctrl取0求局中人2的策略;
c=0.3333333 0.5 -0.3333333
-0.4 0.2 -0.5
0.5 -0.6 0.3333333;
enddata
max=u*ctrl-v*(1-ctrl);
@free(u);@free(v);
@for(player2(j):@sum(player1(i):c(i,j)*x(i))>u);
@for(player1(i):@sum(player2(j):c(i,j)*y(j))<v);
@sum(player1:x)=1;
@sum(player2:y)=1;
end
网友评论