33import numpy .random as random
44from axelrod .action import Action
55from axelrod .load_data_ import load_weights
6- from axelrod .evolvable_player import EvolvablePlayer , InsufficientParametersError , crossover_lists
6+ from axelrod .evolvable_player import (
7+ EvolvablePlayer ,
8+ InsufficientParametersError ,
9+ crossover_lists ,
10+ )
711from axelrod .player import Player
812
913
@@ -191,8 +195,7 @@ class ANN(Player):
191195 }
192196
193197 def __init__ (
194- self , num_features : int , num_hidden : int ,
195- weights : List [float ] = None
198+ self , num_features : int , num_hidden : int , weights : List [float ] = None
196199 ) -> None :
197200 super ().__init__ ()
198201 self .num_features = num_features
@@ -222,43 +225,57 @@ def strategy(self, opponent: Player) -> Action:
222225
223226class EvolvableANN (ANN , EvolvablePlayer ):
224227 """Evolvable version of ANN."""
228+
225229 name = "EvolvableANN"
226230
227231 def __init__ (
228- self , num_features : int , num_hidden : int ,
232+ self ,
233+ num_features : int ,
234+ num_hidden : int ,
229235 weights : List [float ] = None ,
230236 mutation_probability : float = None ,
231237 mutation_distance : int = 5 ,
232238 ) -> None :
233- num_features , num_hidden , weights , mutation_probability = self ._normalize_parameters (
234- num_features , num_hidden , weights , mutation_probability )
235- ANN .__init__ (self ,
236- num_features = num_features ,
237- num_hidden = num_hidden ,
238- weights = weights )
239+ (
240+ num_features ,
241+ num_hidden ,
242+ weights ,
243+ mutation_probability ,
244+ ) = self ._normalize_parameters (
245+ num_features , num_hidden , weights , mutation_probability
246+ )
247+ ANN .__init__ (
248+ self , num_features = num_features , num_hidden = num_hidden , weights = weights
249+ )
239250 EvolvablePlayer .__init__ (self )
240251 self .mutation_probability = mutation_probability
241252 self .mutation_distance = mutation_distance
242253 self .overwrite_init_kwargs (
243254 num_features = num_features ,
244255 num_hidden = num_hidden ,
245256 weights = weights ,
246- mutation_probability = mutation_probability )
257+ mutation_probability = mutation_probability ,
258+ )
247259
248260 @classmethod
249- def _normalize_parameters (cls , num_features = None , num_hidden = None , weights = None , mutation_probability = None ):
261+ def _normalize_parameters (
262+ cls , num_features = None , num_hidden = None , weights = None , mutation_probability = None
263+ ):
250264 if not (num_features and num_hidden ):
251- raise InsufficientParametersError ("Insufficient Parameters to instantiate EvolvableANN" )
265+ raise InsufficientParametersError (
266+ "Insufficient Parameters to instantiate EvolvableANN"
267+ )
252268 size = num_weights (num_features , num_hidden )
253269 if not weights :
254270 weights = [random .uniform (- 1 , 1 ) for _ in range (size )]
255271 if mutation_probability is None :
256- mutation_probability = 10. / size
272+ mutation_probability = 10.0 / size
257273 return num_features , num_hidden , weights , mutation_probability
258274
259275 @staticmethod
260- def mutate_weights (weights , num_features , num_hidden , mutation_probability ,
261- mutation_distance ):
276+ def mutate_weights (
277+ weights , num_features , num_hidden , mutation_probability , mutation_distance
278+ ):
262279 size = num_weights (num_features , num_hidden )
263280 randoms = random .random (size )
264281 for i , r in enumerate (randoms ):
@@ -269,8 +286,12 @@ def mutate_weights(weights, num_features, num_hidden, mutation_probability,
269286
270287 def mutate (self ):
271288 weights = self .mutate_weights (
272- self .weights , self .num_features , self .num_hidden ,
273- self .mutation_probability , self .mutation_distance )
289+ self .weights ,
290+ self .num_features ,
291+ self .num_hidden ,
292+ self .mutation_probability ,
293+ self .mutation_distance ,
294+ )
274295 return self .create_new (weights = weights )
275296
276297 def crossover (self , other ):
@@ -298,9 +319,8 @@ class EvolvedANN(ANN):
298319 def __init__ (self ) -> None :
299320 num_features , num_hidden , weights = nn_weights ["Evolved ANN" ]
300321 super ().__init__ (
301- num_features = num_features ,
302- num_hidden = num_hidden ,
303- weights = weights )
322+ num_features = num_features , num_hidden = num_hidden , weights = weights
323+ )
304324
305325
306326class EvolvedANN5 (ANN ):
@@ -321,9 +341,8 @@ class EvolvedANN5(ANN):
321341 def __init__ (self ) -> None :
322342 num_features , num_hidden , weights = nn_weights ["Evolved ANN 5" ]
323343 super ().__init__ (
324- num_features = num_features ,
325- num_hidden = num_hidden ,
326- weights = weights )
344+ num_features = num_features , num_hidden = num_hidden , weights = weights
345+ )
327346
328347
329348class EvolvedANNNoise05 (ANN ):
@@ -344,7 +363,5 @@ class EvolvedANNNoise05(ANN):
344363 def __init__ (self ) -> None :
345364 num_features , num_hidden , weights = nn_weights ["Evolved ANN 5 Noise 05" ]
346365 super ().__init__ (
347- num_features = num_features ,
348- num_hidden = num_hidden ,
349- weights = weights )
350-
366+ num_features = num_features , num_hidden = num_hidden , weights = weights
367+ )
0 commit comments