@@ -34,7 +34,7 @@ def generate_player(strategy: Strategy, player_class: str, play_window: int, mig
34
34
strategy_obj = CHAMPION ()
35
35
else :
36
36
assert False , "Unkown strategy type"
37
-
37
+
38
38
return {
39
39
"class" : player_class ,
40
40
"play_window" : play_window ,
@@ -45,51 +45,58 @@ def generate_player(strategy: Strategy, player_class: str, play_window: int, mig
45
45
"omega" : omega
46
46
}
47
47
48
+
48
49
def generate_simple_players (strategies : List [str ], amount : List [int ], play_window : int , migrate_window : int , imit_prob : float , migrate_prob : float , omega : float ):
49
50
player_cfgs = []
50
51
assert len (strategies ) == len (amount )
51
52
for amount , strategy in zip (amount , strategies ):
52
53
for i in range (amount ):
53
- player_cfgs .append (generate_player (strategy , strategy , play_window , migrate_window , imit_prob , migrate_prob , omega ))
54
+ player_cfgs .append (generate_player (
55
+ strategy , strategy , play_window , migrate_window , imit_prob , migrate_prob , omega ))
54
56
55
57
return player_cfgs
56
58
59
+
57
60
if __name__ == "__main__" :
58
-
61
+
59
62
# T > R > P > S
60
63
T = 1.5
61
64
R = 1
62
65
S = 0.5
63
66
P = 0.8
64
- grid_x = 10
65
- grid_y = 10
66
- num_players = 100
67
- play_window = 1
68
- migrate_window = 3
69
- imit_prob = 0.8
70
- migrate_prob = 0.8
71
- epochs = 100
72
- omega = 0.5
73
-
74
-
75
- # player_cfgs = generate_players(["GTFT","ImpTFT","TTFT","EARTHERLY","CHAMPION"],
67
+ grid_x = 10
68
+ grid_y = 10
69
+ num_players = 100
70
+ play_window = 1
71
+ migrate_window = 3
72
+ imit_prob = 0.8
73
+ migrate_prob = 0.8
74
+ epochs = 100
75
+ omega = 0.5
76
+
77
+ # player_cfgs = generate_players(["GTFT","ImpTFT","TTFT","EARTHERLY","CHAMPION"],
76
78
# [40, 10, 10, 20, 20], play_window, migrate_window, imit_prob, migrate_prob, omega)
77
-
78
- player_cfgs = generate_simple_players (["RANDOM" ,"DEFECT" ,"COOPERATE" ,"GT" ,"TFT" ,"TFTD" ,"TF2T" ],
79
- [30 , 10 , 10 , 10 , 10 , 10 , 10 ], play_window , migrate_window , imit_prob , migrate_prob , omega )
80
79
81
- sim = Simulator (grid_x , grid_y , num_players , play_window , migrate_window , player_cfgs , T , R , S , P )
80
+ player_cfgs = generate_simple_players (["RANDOM" , "DEFECT" , "COOPERATE" , "GT" , "TFT" , "TFTD" , "TF2T" ],
81
+ [30 , 10 , 10 , 10 , 10 , 10 , 10 ], play_window , migrate_window , imit_prob , migrate_prob , omega )
82
+
83
+ sim = Simulator (grid_x , grid_y , num_players , play_window ,
84
+ migrate_window , player_cfgs , T , R , S , P )
82
85
83
-
84
86
for i in range (10 ):
85
87
start_time = time .time ()
86
88
sim .simulate (epochs , visualize = False )
87
- t = defection_per_class_over_time (sim .get_state (), ["RANDOM" ,"DEFECT" ,"COOPERATE" ,"GT" ,"TFT" ,"TFTD" ,"TF2T" ] )
88
- t3 = class_vs_class_over_time (sim .get_state (), ["RANDOM" ,"DEFECT" ,"COOPERATE" ,"GT" ,"TFT" ,"TFTD" ,"TF2T" ] )
89
- t4 = payoff_per_class_over_time (sim .get_state (), ["RANDOM" ,"DEFECT" ,"COOPERATE" ,"GT" ,"TFT" ,"TFTD" ,"TF2T" ] )
90
- t5 = percentage_of_optimum (sim .get_state (), ["RANDOM" ,"DEFECT" ,"COOPERATE" ,"GT" ,"TFT" ,"TFTD" ,"TF2T" ] )
89
+ t = defection_per_class_over_time (
90
+ sim .get_state (), ["RANDOM" , "DEFECT" , "COOPERATE" , "GT" , "TFT" , "TFTD" , "TF2T" ])
91
+ t3 = class_vs_class_over_time (
92
+ sim .get_state (), ["RANDOM" , "DEFECT" , "COOPERATE" , "GT" , "TFT" , "TFTD" , "TF2T" ])
93
+ t4 = payoff_per_class_over_time (
94
+ sim .get_state (), ["RANDOM" , "DEFECT" , "COOPERATE" , "GT" , "TFT" , "TFTD" , "TF2T" ])
95
+ t5 = percentage_of_optimum (
96
+ sim .get_state (), ["RANDOM" , "DEFECT" , "COOPERATE" , "GT" , "TFT" , "TFTD" , "TF2T" ])
91
97
#t2 = class_distribution_over_time(sim.get_flat_mapped_grid(), ["RANDOM","DEFECT","COOPERATE","GT","TFT","TFTD","TF2T"] )
92
98
#t6 = class_change_over_time
93
99
print (f"Time: { (time .time () - start_time )} " )
94
100
95
- print (f"Total Time for { epochs } epochs, { num_players } players and grid-size { grid_x } x { grid_y } : { (time .time () - start_time )} " )
101
+ print (
102
+ f"Total Time for { epochs } epochs, { num_players } players and grid-size { grid_x } x { grid_y } : { (time .time () - start_time )} " )
0 commit comments