利得表から混合戦略ナッシュ均衡を求めて、pの値を算出する関数を設けました。
ナッシュ均衡を求めるためにGambitを使っているのでインストールする必要があります。
In [1]:
%matplotlib inline
import kmr
import numpy as np
In [2]:
# 初期設定
payoff = np.array([[[4, 4], [0, 3]],
[[3, 0], [2, 2]]])
N = 10
epsilon = 0.01
initials = [0, 2, 4, 6, 8, 10]
T=10**6
In [3]:
# 混合戦略ナッシュ均衡算出
nash = kmr.compute_nash_equilibrium(payoff)
p = nash[1][1]
nash
Out[3]:
In [4]:
# KMRクラス
k = kmr.KMR_2x2(p, N, epsilon)
In [5]:
# 推移の一例( initial は ランダムで決定)
k.simulate(T)
k.plot_sample_path()
In [6]:
# 定常分布
k.plot_stationary_distribution()
In [7]:
# 頻度分布
k.plot_empirical_distribution()
初期状態を変化させて比べる。
In [8]:
for initial in initials:
k.simulate(T, initial)
k.plot_sample_path()
In [9]:
# スピード測定(T=10**6)
%timeit k.simulate(T)
In [10]:
# 初期設定
payoff = np.array([[[4, 4], [0, 3]],
[[3, 0], [2, 2]]])
N = 10
epsilon = 0.01
T=10**6
In [11]:
# KMRクラス
k = kmr.KMR_2x2(p, N, epsilon, True)
k.simulate(T)
In [12]:
# 推移の一例
k.simulate(T)
k.plot_sample_path()
In [13]:
# 定常分布
k.plot_stationary_distribution()
In [14]:
# 頻度分布
k.plot_empirical_distribution()
初期状態を変化せて比べる。
In [15]:
for initial in initials:
k.simulate(T, initial)
k.plot_sample_path()
In [16]:
# スピード測定(T=10**6)
%timeit k.simulate(T)
In [17]:
# 初期設定
payoff = np.array([[6, 0, 0],
[5, 7, 5],
[0, 5, 8]])
N = 10
epsilon = 0.1
initials = [[8, 1, 1], [1, 8, 1], [1, 1, 8], [3, 3, 4]]
T=10**4
In [18]:
# 混合戦略ナッシュ均衡算出
nash = kmr.compute_nash_equilibrium(payoff, same_payoff=True)
nash
Out[18]:
In [19]:
k = kmr.KMR_3x3(payoff, N, epsilon)
初期状態をaction0多め、action1多め、action2多め、action0~2同じくらいの人数のパターンで比べてみる。
In [20]:
for initial in initials:
k.simulate(T, initial)
k.plot_sample_path()
In [21]:
# スピード測定(T=10**4)
%timeit k.simulate(10**4)