# 「相手の」シグナルが協調か攻撃かを(ノイズ付きで)返す def private_signal(actions, random_state): pattern = [[0, 0], [0, 1], [1, 0], [1, 1]] # 例えば実際の行動が(0, 1)なら、シグナルは(1, 0)である可能性が最も高い signal_probs = [[.9, .02, .02, .06], [.02, .06, .9, .02], [.02, .9, .06, .02], [.06, .02, .02, .9]] p = random_state.uniform() if actions[0] == 0 and actions[1] == 0: return [0, 0] if p < 0.9 else [0, 1] if p < 0.92 else [1, 0] if p < 0.94 else [1, 1] elif actions[0] == 0 and actions[1] == 1: return [1, 0] if p < 0.9 else [0, 0] if p < 0.92 else [1, 1] if p < 0.94 else [0, 1] elif actions[0] == 1 and actions[1] == 0: return [0, 1] if p < 0.9 else [1, 1] if p < 0.92 else [0, 0] if p < 0.94 else [1, 0] elif actions[0] == 1 and actions[1] == 1: return [1, 1] if p < 0.9 else [1, 0] if p < 0.92 else [0, 1] if p < 0.94 else [0, 0] else: raise ValueError strategies = [Strategy1, Strategy2, Strategy3, Strategy4, Strategy5, Strategy6, Strategy7, Strategy8, Strategy9, Strategy10, Strategy11, Strategy12, Strategy13, Strategy14, Strategy15, Strategy16, Strategy17, Strategy18, Strategy19, Strategy20, Strategy21, Strategy22, Strategy23, Strategy24] game = pl.RepeatedMatrixGame(payoff, strategies, signal=private_signal, ts_length=ts_length, repeat=1000) game.play(mtype="private", random_seed=seed, record=True)
import sys from sample import * import play as pl sys.path.append('./user_strategies') import ikegami import tsuyoshi import bocchan import oyama import ymagishi_pd import ogawa_prison import beelab import kato import oyataku np.set_printoptions(precision=3) if __name__ == '__main__': payoff = np.array([[2, 0], [3, 1]]) seed = 1005 discount_v = 0.9999 playtimes = np.random.RandomState(seed).geometric(p=1 - discount_v) strategies = [ ikegami.ikegami, tsuyoshi.allD, bocchan.Iida_tit, oyama.oyama, ymagishi_pd.yamagishi_pd, ogawa_prison.ogaway, beelab.ohno, kato.tit_for_tat, oyataku.random_strategy ] game = pl.RepeatedMatrixGame(payoff, strategies, playtimes) game.play()
import play as pl from Iida_perfect_monitoring import Iida_pm from kato import KatoStrategy from ikegami_perfect import Self_Centered_perfect from mhanami_Public_Strategy import PubStrategy from tsuyoshi import GrimTrigger from gistfile1 import MyStrategy from beeleb_Strategy import beeleb from oyama import OyamaPerfectMonitoring from ogawa import ogawa from yamagishi_impd import yamagishi np.set_printoptions(precision=3) if __name__ == '__main__': payoff = np.array([[4, 0], [5, 2]]) seed = 282 rs = np.random.RandomState(seed) # 第1期は確率1で来るものとする discount_v = 0.97 ts_length = rs.geometric(p=1-discount_v, size=1000) strategies = [Iida_pm, PubStrategy, KatoStrategy, Self_Centered_perfect, GrimTrigger, MyStrategy, beeleb, OyamaPerfectMonitoring, ogawa, yamagishi] game = pl.RepeatedMatrixGame(payoff, strategies, ts_length=ts_length, repeat=1000) game.play(mtype="perfect", random_seed=seed, record=True)