07. 对策论
定义
对策论亦称竞赛论或博弈论,是研究具有斗争或竞争性质现象的数学理论和方法。
基本要素:
-
局中人:在一个对策行为中,有权决定自己行动方案的对策参加者,通常用 I I I 表示局中人集合;
-
策略集:一局对策中,可供局中人选择的一个实际可行的完整行动方案称一个策略,每个局中人 i , i ∈ I i,i\in I i,i∈I 都有自己的策略集 S i S_i Si;
-
赢得函数 (支付函数):一局对策中,各局中人所选定的策略形成的策略组称一个局势,即若 s i s_i si 是第 i i i 个局中人的一个策略,则策略组
s = ( s 1 , s 2 , … , s n ) , s=(s_1,s_2,\dots,s_n), s=(s1,s2,…,sn),
就是一个局势。全体局势的集合可用各局中人策略集的笛卡尔积表示,即
S = S 1 × S 2 × ⋯ × S n , S=S_1\times S_2\times\dots\times S_n, S=S1×S2×⋯×Sn,
对任意局势 s ∈ S s\in S s∈S,局中人 i i i 可以得到一个赢得 H i ( s ) H_i(s) Hi(s),称赢得函数。
零和对策 (矩阵对策)
零和对策是一类特殊的对策问题,只有两名局中人,每个局中人都只有有限个策略可供选择。在任一纯局势下,两个局中人的赢得之和总是等于 0。
设局中人 1、2 的策略集
S
1
=
{
α
1
,
…
,
α
m
}
,
S
2
=
{
β
1
,
…
,
β
n
}
.
S_1=\{\alpha_1,\dots,\alpha_m\},S2=\{\beta_1,\dots,\beta_n\}.
S1={α1,…,αm},S2={β1,…,βn}.
当局中人 1 选定策略
α
i
\alpha_i
αi,局中人 2 选定策略
β
j
\beta_j
βj 后,就形成局势
(
α
i
,
β
j
)
(\alpha_i,\beta_j)
(αi,βj)。对任一局势
(
α
i
,
β
j
)
(\alpha_i,\beta_j)
(αi,βj),记局中人 1 的赢得为
a
i
j
a_{ij}
aij,称
A
=
(
a
11
a
12
…
a
1
n
a
21
a
22
…
a
2
n
⋮
⋮
⋱
⋮
a
m
1
a
m
2
…
a
m
n
)
A=\begin{pmatrix} a_{11}&a_{12}&\dots&a_{1n} \\ a_{21}&a_{22}&\dots&a_{2n} \\ \vdots&\vdots&\ddots&\vdots \\ a_{m1}&a_{m2}&\dots&a_{mn} \\ \end{pmatrix}
A=⎝⎜⎜⎜⎛a11a21⋮am1a12a22⋮am2……⋱…a1na2n⋮amn⎠⎟⎟⎟⎞
为局中人 1 的赢得矩阵,由于对策零和,因此局中人 2 的赢得矩阵就是
−
A
-A
−A。
因此记零和对策为
G
=
{
S
1
,
S
2
;
A
}
.
G=\{S_1,S_2;A\}.
G={S1,S2;A}.
稳定解和最优纯策略
设
G
=
{
S
1
,
S
2
;
A
}
G=\{S_1,S_2;A\}
G={S1,S2;A} 为矩阵对策,其中
S
1
=
{
α
1
,
…
,
α
m
}
,
S
2
=
{
β
1
,
…
,
β
n
}
S_1=\{\alpha_1,\dots,\alpha_m\},S2=\{\beta_1,\dots,\beta_n\}
S1={α1,…,αm},S2={β1,…,βn},
A
=
(
a
i
j
)
m
×
n
A=(a_{ij})_{m\times n}
A=(aij)m×n,若等式
max
i
min
j
a
i
j
=
min
j
max
i
a
i
j
=
a
i
∗
j
∗
\max_i\min_ja_{ij}=\min_j\max_ia_{ij}=a_{i^*j^*}
imaxjminaij=jminimaxaij=ai∗j∗
成立,则称
(
α
i
∗
,
β
j
∗
)
(\alpha_{i^*},\beta_{j^*})
(αi∗,βj∗) 为
G
G
G 的稳定解,
a
i
∗
,
b
j
∗
a_{i^*},b_{j^*}
ai∗,bj∗ 分别为局中人 1、2 的最优纯策略。
如何理解上述定理?
对于前者 max i min j a i j \max_i\min_ja_{ij} maximinjaij,表示局中人 1 在策略中坏中取优,即计算所有策略的最坏结果,再从中挑选最好的一个策略。
对于后者
min
j
max
i
a
i
j
\min_j\max_ia_{ij}
minjmaxiaij,表示局中人 2 同样坏中取优,只不过局中人 2 的赢得矩阵为
−
A
-A
−A,因此先取大再取小,原式可以化为
max
j
min
i
−
a
i
j
.
\max_j\min_i-a_{ij}.
jmaximin−aij.
如果两者相等,说明存在一个形势,当局中人 1 取其最优纯策略时,局中人 2 取其他策略都比取其最优纯策略时收益小 (同样,局中人 1 的收益大);反之亦然。即对于任意
i
,
j
i,j
i,j,有
a
i
j
∗
≤
a
i
∗
j
∗
≤
a
i
∗
j
.
a_{ij^*}\le a_{i^*j^*}\le a_{i^*j}.
aij∗≤ai∗j∗≤ai∗j.
混合策略
然而很多时候,等式
max
i
min
j
a
i
j
=
min
j
max
i
a
i
j
\max_i\min_ja_{ij}=\min_j\max_ia_{ij}
imaxjminaij=jminimaxaij
并不成立,此时不存在稳定解和最优纯策略。引入混合策略。
设局中人 1 选用策略
α
i
\alpha_i
αi 的概率为
x
i
x_i
xi,局中人 2 选用策略
β
i
\beta_i
βi 的概率为
y
i
y_i
yi,记
x
=
(
x
1
,
…
,
x
m
)
T
,
y
=
(
y
1
,
…
,
y
n
)
T
x=(x_1,\dots,x_m)^T,y=(y_1,\dots,y_n)^T
x=(x1,…,xm)T,y=(y1,…,yn)T
则局中人 1 的期望赢得为
E
(
x
,
y
)
=
x
T
A
y
.
E(x,y)=x^TAy.
E(x,y)=xTAy.
则有向量
x
‾
,
y
‾
\overline{x},\overline{y}
x,y 使得等式
x
‾
T
A
y
‾
=
max
x
min
y
x
T
A
y
=
min
y
max
x
x
T
A
y
\overline{x}^TA\overline{y}=\max_x\min_y x^TAy=\min_y\max_xx^TAy
xTAy=xmaxyminxTAy=yminxmaxxTAy
成立,此时
(
x
‾
,
y
‾
)
(\overline{x},\overline{y})
(x,y) 即为稳定解。
线性规划求稳定解
对于
max
x
min
y
x
T
A
y
,
\max_x\min_y x^TAy,
xmaxyminxTAy,
将混合策略
y
y
y 看作纯策略
j
j
j,可以化为
max
x
min
j
∑
i
=
1
m
a
i
j
x
i
.
\max_x\min_j\sum_{i=1}^ma_{ij}x_i.
xmaxjmini=1∑maijxi.
记
u
=
min
j
∑
i
=
1
m
a
i
j
x
i
u=\min_j\sum_{i=1}^ma_{ij}x_i
u=minj∑i=1maijxi,则
x
‾
\overline{x}
x 即为线性规划问题
max
u
,
\max u,
maxu,
s . t . { ∑ i = 1 m a i j x i ≥ u , j = 1 , 2 , … , n , ∑ i = 1 m x i = 1 , x i ≥ 0 , i = 1 , 2 , … , m . s.t.\left\{\begin{aligned} &\sum_{i=1}^ma_{ij}x_i\ge u,j=1,2,\dots,n,\\ &\sum_{i=1}^m x_i=1,\\ &x_i\ge 0,i=1,2,\dots,m. \end{aligned}\right. s.t.⎩⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎧i=1∑maijxi≥u,j=1,2,…,n,i=1∑mxi=1,xi≥0,i=1,2,…,m.
的解,同理
y
‾
\overline{y}
y 即为线性规划问题
min
v
,
\min v,
minv,
s . t . { ∑ j = 1 n a i j y j ≤ v , i = 1 , 2 , … , m , ∑ j = 1 n y j = 1 , y j ≥ 0 , j = 1 , 2 , … , n . s.t.\left\{\begin{aligned} &\sum_{j=1}^na_{ij}y_j\le v,i=1,2,\dots,m,\\ &\sum_{j=1}^n y_j=1,\\ &y_j\ge 0,j=1,2,\dots,n. \end{aligned}\right. s.t.⎩⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎧j=1∑naijyj≤v,i=1,2,…,m,j=1∑nyj=1,yj≥0,j=1,2,…,n.
的解。
例子与 Python 代码
对赢得矩阵
A
=
(
3
0
2
0
0
2
1
5
1
2
3
4
)
A=\begin{pmatrix} 3&0&2&0\\ 0&2&1&5\\ 1&2&3&4 \end{pmatrix}
A=⎝⎛301022213054⎠⎞
求局中人 1、2 的混合策略。
选取局中人 1,化为线性规划问题
max
u
,
\max u,
maxu,
s . t . { 3 x 1 + x 3 ≤ u , 2 x 2 + 2 x 3 ≤ u , 2 x 1 + x 2 + 3 x 3 ≤ u , 5 x 2 + 4 x 3 ≤ u , x 1 + x 2 + x 3 = 1 , x i ≥ 0 , i = 1 , 2 , 3. s.t.\left\{\begin{aligned} &3x_1+x_3\le u,\\ &2x_2+2x_3\le u,\\ &2x_1+x_2+3x_3\le u,\\ &5x_2+4x_3\le u,\\ &x_1+x_2+x_3=1,\\ &x_i\ge 0,i=1,2,3. \end{aligned}\right. s.t.⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧3x1+x3≤u,2x2+2x3≤u,2x1+x2+3x3≤u,5x2+4x3≤u,x1+x2+x3=1,xi≥0,i=1,2,3.
选取局中人 2,化为线性规划问题
min
v
,
\min v,
minv,
s . t . { 3 y 1 + 2 y 3 ≤ v , 2 y 2 + y 3 + 5 y 4 ≤ v , y 1 + 2 y 2 + 3 y 3 + 4 y 4 ≤ v , y 1 + y 2 + y 3 + y 4 = 1 , y i ≥ 0 , i = 1 , 2 , 3 , 4. s.t.\left\{\begin{aligned} &3y_1+2y_3\le v,\\ &2y_2+y_3+5y_4\le v,\\ &y_1+2y_2+3y_3+4y_4\le v,\\ &y_1+y_2+y_3+y_4=1,\\ &y_i\ge0,i=1,2,3,4. \end{aligned}\right. s.t.⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧3y1+2y3≤v,2y2+y3+5y4≤v,y1+2y2+3y3+4y4≤v,y1+y2+y3+y4=1,yi≥0,i=1,2,3,4.
使用 Python 求解上述问题,代码如下:
#! /usr/bin/env python
# -*- coding: utf-8 -*-
# @ author: Koorye
# @ date: 2021-7-25
# @ function: 使用 cvxpy 包进行矩阵对策混合策略求解
# %%
import numpy as np
import cvxpy as cp
# %%
# 赢得矩阵
A = np.array([[3, 0, 2, 0],
[0, 2, 1, 5],
[1, 2, 3, 4]])
# %%
# 不等式约束形如 A * x <= b
A1 = A.copy().T
A2 = A.copy()
# 决策变量
x = cp.Variable(A1.shape[1]+1)
y = cp.Variable(A2.shape[1]+1)
# 约束条件
con1 = [
A1 @ x[:-1] >= x[-1],
sum(x[:-1]) == 1,
x[:-1] >= 0,
]
con2 = [
A2 @ y[:-1] <= y[-1],
sum(y[:-1]) == 1,
y[:-1] >= 0,
]
# 目标函数
obj1 = cp.Maximize(x[-1])
obj2 = cp.Minimize(y[-1])
# %%
p1 = cp.Problem(obj1, con1)
p2 = cp.Problem(obj2, con2)
p1.solve(solver='GLPK_MI', verbose=True)
p2.solve(solver='GLPK_MI', verbose=True)
# %%
print('x =', x.value[:-1])
print('y =', y.value[:-1])
print('x exp =', x.value[-1])
print('y exp =', y.value[-1])
输出如下:
x = [ 0.25 -0. 0.75]
y = [ 0.5 0.5 -0. -0. ]
x exp = 1.5
y exp = 1.5
于是有
x
‾
=
(
0.25
,
0
,
0.75
)
,
y
‾
=
(
0.5
,
0.5
,
0
,
0
)
,
E
(
x
‾
,
y
‾
)
=
1.5.
\overline{x}=(0.25,0,0.75),\overline{y}=(0.5,0.5,0,0),E(\overline{x},\overline{y})=1.5.
x=(0.25,0,0.75),y=(0.5,0.5,0,0),E(x,y)=1.5.