まず quantecon.game_theory を読み込む:
In [1]:
import quantecon.game_theory as gt
授業での例
$ \begin{bmatrix} 3, 3 & 3, 2 \\ 2, 2 & 5, 6 \\ 0, 3 & 6, 1 \end{bmatrix} $
NormalFormGame を作る:
In [2]:
g = gt.NormalFormGame(
[[(3, 3), (3, 2)],
[(2, 2), (5, 6)],
[(0, 3), (6, 1)]]
)
利得表を表示してみる:
In [3]:
print(g)
support_enumeration でナッシュ均衡を列挙する:
In [4]:
gt.support_enumeration(g)
Out[4]:
結果を NEs という変数に格納してみる:
In [5]:
NEs = gt.support_enumeration(g)
NEs の要素の数 = ナッシュ均衡の数
In [6]:
len(NEs)
Out[6]:
1つ目のナッシュ均衡:
In [7]:
NEs[0]
Out[7]:
2つ目のナッシュ均衡:
In [8]:
NEs[1]
Out[8]:
3つ目のナッシュ均衡:
In [9]:
NEs[2]
Out[9]:
それぞれ確かにナッシュ均衡になっている:
In [10]:
for NE in NEs:
print(g.is_nash(NE))
グレーヴァ『非協力ゲーム理論』第3章練習問題3.3を解かせてみる.
(a)
In [11]:
g_a = gt.NormalFormGame(
[[(0, 1), (3, 3)],
[(5, 2), (0, 0)],
[(1, 8), (1, 7)]]
)
In [12]:
gt.support_enumeration(g_a)
Out[12]:
1番目のプレイヤー (Python では0始まりなので,プレイヤー0) の3番目の戦略 (戦略2) は被支配戦略になっている:
In [13]:
g_a.players[0].is_dominated(2)
Out[13]:
(b)
In [14]:
g_b = gt.NormalFormGame(
[[(0, 1), (3, 3)],
[(5, 2), (0, 0)],
[(2, 8), (2, 7)]]
)
In [15]:
gt.support_enumeration(g_b)
Out[15]:
(c)
In [16]:
g_c = gt.NormalFormGame(
[[(0, 3), (3, 2)],
[(5, 0), (0, 4)],
[(1, 1), (1, 1)]]
)
In [17]:
gt.support_enumeration(g_c)
Out[17]:
In [18]:
gt.vertex_enumeration(g_a)
Out[18]:
In [19]:
gt.vertex_enumeration(g_b)
Out[19]:
In [20]:
gt.vertex_enumeration(g_c)
Out[20]:
In [21]:
gt.lemke_howson(g_c)
Out[21]:
戦略数200の2人ゲームをランダムに発生させる:
In [22]:
g_200 = gt.random_game((200, 200))
In [23]:
g_200
Out[23]:
In [24]:
gt.lemke_howson(g_200)
Out[24]:
In [ ]: