-
Notifications
You must be signed in to change notification settings - Fork 0
/
RunOpponentValue.py
47 lines (37 loc) · 1.98 KB
/
RunOpponentValue.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#from Opponents.Uniform import Uniform_Opponent
from open_spiel.python import policy
from OpponentEV import compute_EV
import pandas as pd
import pyspiel
import StoreTabularPolicy
FL_game = 'leduc_poker'
FL_iterations = 2
FL_players = 2
game = pyspiel.load_game(FL_game, {"players": FL_players})
random_strategy = policy.UniformRandomPolicy(game)
cfr_strategy = StoreTabularPolicy.load_tabular_policy("Policy/Informed_Action.csv", game)
bps_strategy = StoreTabularPolicy.load_tabular_policy("Policy/Blind_PS.csv", game)
efr_strategies = ['Blind_Action', "Blind_CF", "Blind_PS", "Informed_Action", "Informed_CF", "Informed_CFPS", "CSPS", "TIPS"]
opponent_strategies = []
opponent_names = [ "MCCFR_low", "MCCFR_med", "MCCFR_med2", "MCCFR_med3", "MCCFR_high", "MCCFR_high2", "MCCFR_high3", "MCCFR_higher", "MCCFR_higher2", "MCCFR_higher3"]
#Load MCCFR strategies
for strat in opponent_names:
opponent_strategies.append(StoreTabularPolicy.load_tabular_policy("Policy/"+strat+".csv", game))
opponent_strategies.append(random_strategy)
opponent_names.append('Random')
#Add EFR opponents
for strat in efr_strategies:
opponent_strategies.append(StoreTabularPolicy.load_tabular_policy("Policy/"+strat+".csv", game))
opponent_names.append(strat)
print(len(opponent_strategies))
header = ['EFR Strategy', 'Opponent Strategy', 'EFR PLayer', "Expected Game Value"]
ev_data = []
for opponentIndex in range(len(opponent_strategies)):
for strategy in efr_strategies:
for player_num in range(2):
data = [strategy, opponent_names[opponentIndex], str(player_num)]
print(compute_EV(game,opponent_strategies[opponentIndex],player_num, "Policy/"+strategy+".csv")[player_num])
data.append(compute_EV(game,opponent_strategies[opponentIndex],player_num, "Policy/"+strategy+".csv")[player_num])
ev_data.append(data)
complete_data = pd.DataFrame(ev_data, columns=header)
complete_data.to_csv('Opponent_EV2.csv', index=False)