44
55class RandomLocalSearch :
66 def __init__ (
7- self ,
8- objective : Callable ,
9- seed : int ,
10- n_steps : int = 10 , # todo: should this be dependent on the number of parameters?
11- permissible_values : np .ndarray = np .logspace (start = 0 , stop = 7 , num = 8 , base = 2 , dtype = int ),
7+ self ,
8+ objective : Callable ,
9+ seed : int ,
10+ n_steps : int = 10 , # todo: should this be dependent on the number of parameters?
11+ permissible_values : np .ndarray = np .logspace (start = 0 , stop = 7 , num = 8 , base = 2 , dtype = int ),
1212 ) -> None :
1313 self .objective = objective
1414 self .seed = seed
@@ -23,15 +23,21 @@ def __call__(self, ind) -> None:
2323 if len (params_values ) > 0 :
2424 for _ in range (self .n_steps ):
2525 # sample a new set of parameter values randomly
26- params_sampled = [rng .choice (self .permissible_values ) for param_value in params_values ]
26+ params_sampled = [
27+ rng .choice (self .permissible_values ) for param_value in params_values
28+ ]
2729 # write the parameters into a clone of individual
2830 new_ind = ind .clone ()
29- new_ind .update_parameters_from_numpy_array (params = params_sampled , params_names = params_names )
31+ new_ind .update_parameters_from_numpy_array (
32+ params = params_sampled , params_names = params_names
33+ )
3034 # evaluate fitness
3135 self .objective (new_ind )
3236 # if fitness improved: replace parameter values and fitness
3337 if new_ind .fitness >= ind .fitness : # todo: should this be >= or > ??
34- ind .update_parameters_from_numpy_array (params = params_sampled , params_names = params_names )
38+ ind .update_parameters_from_numpy_array (
39+ params = params_sampled , params_names = params_names
40+ )
3541 ind .fitness = new_ind .fitness
3642
3743
@@ -49,8 +55,12 @@ def objective(ind):
4955 ind = cgp .IndividualSingleGenome (genome = genome )
5056
5157 objective (ind )
52- print (f'Node parameters before local search { ind .parameters_to_numpy_array (only_active_nodes = True )} \n ' )
58+ print (
59+ f"Node parameters before local search { ind .parameters_to_numpy_array (only_active_nodes = True )} \n "
60+ )
5361
5462 rls = RandomLocalSearch (objective = objective , seed = seed , n_steps = 1000 )
5563 rls (ind )
56- print (f'Node parameters after local search { ind .parameters_to_numpy_array (only_active_nodes = True )} \n ' )
64+ print (
65+ f"Node parameters after local search { ind .parameters_to_numpy_array (only_active_nodes = True )} \n "
66+ )
0 commit comments