純粋戦略ナッシュ均衡

One-to-Oneマッチングにおける純粋戦略ナッシュ均衡を求める。


In [1]:
from __future__ import division
import matchfuncs as mf

In [2]:
prop_prefs = [[0, 1, 2],
                         [0, 2, 1],
                         [2, 0, 1]]
resp_prefs = [[2, 0, 1],
                         [2, 0, 1],
                         [1, 2, 0]]

In [3]:
# DAによるマッチング生成
mf.DA(prop_prefs, resp_prefs)


Out[3]:
(array([1, 2, 0]), array([2, 0, 1]))

In [4]:
# BOSによるマッチング生成
mf.BOS(prop_prefs, resp_prefs)


Out[4]:
(array([0, 1, 2]), array([0, 1, 2]))

In [5]:
# DAにおけるNash均衡
nash, behavior = mf.Nash('DA', prop_prefs, resp_prefs)
len(nash)


Out[5]:
54

In [6]:
# 54個中0番目のNash均衡における提出リスト
mf.SubmitList(nash[0], behavior)


Out[6]:
array([[0, 1, 2],
       [1, 2, 0],
       [1, 0, 2]])

In [7]:
# BOSにおけるNash均衡
nash, behavior = mf.Nash('BOS', prop_prefs, resp_prefs)
len(nash)


Out[7]:
36

In [8]:
# 36個中0番目のNash均衡における提出リスト
mf.SubmitList(nash[0], behavior)


Out[8]:
array([[0, 1, 2],
       [2, 0, 1],
       [1, 0, 2]])