4.零和對策的線性規(guī)劃解法
當(dāng)且
時(shí),通常采用線性規(guī)劃方法求解零和對策問題。
局中人Ⅰ選擇混合策略的目的是使得:
其中為只有第
個(gè)分量為1而其余分量的單位向量,
。記
,由于
在
時(shí)到達(dá)最小值
,故
應(yīng)為線性規(guī)劃問題:
s.t.
的解。
同理,應(yīng)為線性規(guī)劃。
s.t.
的解。由線性規(guī)劃知識(shí),上述兩個(gè)線性規(guī)劃問題互為對偶線性規(guī)劃,他們具有相同的最優(yōu)目標(biāo)函數(shù)。
不妨設(shè),做變換
則線性變換問題化為:
s.t.
同理,做變換:
則想愛你性規(guī)劃問題(3)化為:
s.t.
例1 在一場敵對的軍事行動(dòng)中,甲方擁有三種進(jìn)攻性武器
,可分別用與摧毀乙方工事;而乙方有三種防御性武器
來對付甲方。據(jù)平時(shí)演習(xí)得到的數(shù)據(jù),各種武器間對抗時(shí),甲方的贏得矩陣如下:
編寫成分如下:
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); %把贏得矩陣的每個(gè)元素變成大于0的數(shù)
[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