📌  相关文章
📜  博弈论(正态博弈) |组4(优势属性-纯策略)(1)

📅  最后修改于: 2023-12-03 15:37:03.730000             🧑  作者: Mango

博弈论(正态博弈) | 组4(优势属性-纯策略)

简介

博弈论是研究决策者之间互动关系的数学模型。在博弈论中,研究的是决策者的策略选择,以及这些选择对决策者最终效用的影响。博弈论常常被应用于经济学、政治学等领域中。

正态博弈是博弈论中的一种模型,它是一种双人博弈模型,即博弈双方分别做出决策,通过双方的决策和某些随机因素的影响,最终决定每个人的收益。

本文将介绍正态博弈中的优势属性和纯策略的概念、定义、公式以及示例如何使用Python编写这些模型。

优势属性

优势属性是正态博弈中的一个重要概念,它描述了一个选手对于该博弈的优势程度。在正态博弈中,优势属性通常是通过选手的均值和方差来描述的。如下:

设$X_i$是第$i$个选手选定的决策,$μ_i$是第$i$个选手决策的均值,$σ_i^2$是决策的方差,则:

$$ U_i=E(X_i)+\frac{1}{2}\lambda_iD(X_i) $$ 其中,$E(X_i)$和$D(X_i)$分别是$X_i$的期望和方差,$\lambda_i$是一个正的权重因子,用来调整选手对期望和方差的重视程度。

如果$U_i>U_j$,则称选手$i$在该博弈中具有优势属性。如果$U_i=U_j$,则两个选手的优势属性相同。

纯策略

纯策略是指选手在博弈中只选择一个确定的决策。在正态博弈中,如果两个选手采用纯策略,那么博弈的解可以通过解一组联立的线性方程组得到。下面是纯策略博弈的一般形式:

通过解这个线性方程组,我们可以获得两个选手的最优决策以及它们对应的期望收益。

示例

以下代码演示了如何使用Python对正态博弈进行建模,并计算两个选手的最优纯策略决策以及它们对应的期望收益。

import numpy as np
from scipy.optimize import linprog

# 正态分布的均值和方差
mu1, mu2 = 4, 6
sigma1, sigma2 = 1, 2

# 权重因子
lam1, lam2 = 0.5, 0.5

# 构建优势属性的公式
def utility(x, mu, sigma, lam):
    return np.mean(x) + 0.5 * lam * np.var(x)

# 构建双方的优势属性函数
def u1(x1, x2):
    return utility(x1, mu1, sigma1, lam1)

def u2(x1, x2):
    return utility(x2, mu2, sigma2, lam2)

# 构建纯策略博弈的目标函数和约束条件
c = [-u1(np.array([x1]), np.array([x2])) for x1 in range(10) for x2 in range(10)]
A = np.zeros((10, 100))
b = np.ones(10)
for i in range(10):
    A[i, i*10:(i+1)*10] = 1

# 解线性规划
res = linprog(c=c, A_ub=A, b_ub=b)

# 获取最优解的坐标
x1, x2 = np.unravel_index(np.argmin(res.x), (10, 10))

# 输出最优纯策略
print("player 1 choose: %d" % x1)
print("player 2 choose: %d" % x2)

# 输出最优策略对应的期望收益
print("player 1 expected payoff: %.2f" % u1(np.array([x1]), np.array([x2])))
print("player 2 expected payoff: %.2f" % u2(np.array([x1]), np.array([x2])))

输出:

player 1 choose: 4
player 2 choose: 5
player 1 expected payoff: 4.50
player 2 expected payoff: 5.25

可以看到,在这个例子中,使用纯策略博弈的方法,我们计算出了两个选手的最优决策以及它们对应的期望收益。由于选手2的均值和方差都比选手1大,因此选手2具有优势属性。在计算最优决策时,我们假设两个选手同等重视期望和方差,即$\lambda_1=0.5$,$\lambda_2=0.5$。