Pythonを使用して、囚人のジレンマとして知られるゲーム理論のシナリオを簡単に実装する。
目次
はじめに
・本記事では、nashpyライブラリを使用して、囚人のジレンマとして知られるゲーム理論のシナリオについてナッシュ均衡を求める方法を説明していきます。手順1: ゲームのセットアップ
・まず、プレイヤーの行動に対する報酬を定義することでゲームをセットアップする必要があります。囚人のジレンマでは、プレイヤーは「黙秘」または「自白」の2つの選択肢を持ちます。報酬は、プレイヤーの選択に基づく収益として、懲役年数を表します。 ・まず、必要なライブラリをインポートします。!pip install nashpy
import nashpy as nash
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
payoff_matrix = [
["2 or 2", "10 or 0"],
["10 or 0", "5 or 5"]
]
index = ['Aの黙秘', 'Aの自白']
columns = ['Bの黙秘', 'Bの自白']
df = pd.DataFrame(payoff_matrix, index=index, columns=columns)
print(df)
Bの黙秘 Bの自白
Aの黙秘 2 or 2 10 or 0
Aの自白 10 or 0 5 or 5
手順2: ナッシュ均衡の求め方
・ゲームのセットアップが完了したら、nashpyライブラリを使用してナッシュ均衡を求めることができます。まず、プレイヤーAとプレイヤーBの報酬行列を使ってGameオブジェクトを作成します。payoffs_a = np.array([[2, 0], [10, 5]]) # プレイヤーAの選択肢
payoffs_b = np.array([[2, 10], [0, 5]]) # プレイヤーBの選択肢
prisoners_dilemma = nash.Game(payoffs_a, payoffs_b)
prisoners_dilemma
・Gameオブジェクトを作成したら、support_enumeration()メソッドを使用してすべてのナッシュ均衡を求めることができます。
equilibria = prisoners_dilemma.support_enumeration()
for eq in equilibria:
print(equilibrium)
(array([1., 0.]), array([1., 0.]))

