3
3
num_generations = 100
4
4
5
5
def number_lifecycle_callback_functions_calls (stop_criteria = None ,
6
- on_generation_stop = None ):
6
+ on_generation_stop = None ,
7
+ crossover_type = "single_point" ,
8
+ mutation_type = "random" ):
7
9
actual_num_callbacks_calls = 0
8
10
9
11
def fitness_func (ga_instanse , solution , solution_idx ):
@@ -46,6 +48,8 @@ def on_stop(ga_instance, last_population_fitness):
46
48
fitness_func = fitness_func ,
47
49
sol_per_pop = 10 ,
48
50
num_genes = 5 ,
51
+ crossover_type = crossover_type ,
52
+ mutation_type = mutation_type ,
49
53
on_start = on_start ,
50
54
on_fitness = on_fitness ,
51
55
on_parents = on_parents ,
@@ -71,12 +75,14 @@ def on_stop(ga_instance, last_population_fitness):
71
75
# Use 'generations_completed' instead of 'num_generations' because the evolution may stops in the on_generation() callback.
72
76
expected_num_callbacks_calls = 1 + ga_instance .generations_completed * 5 + 1
73
77
74
- print ("Expected number of callbacks calls is {expected_num_callbacks_calls}." .format (expected_num_callbacks_calls = expected_num_callbacks_calls ))
75
- print ("Actual number of callbacks calls is {actual_num_callbacks_calls}." .format (actual_num_callbacks_calls = actual_num_callbacks_calls ))
78
+ print ("Expected {expected_num_callbacks_calls}." .format (expected_num_callbacks_calls = expected_num_callbacks_calls ))
79
+ print ("Actual {actual_num_callbacks_calls}." .format (actual_num_callbacks_calls = actual_num_callbacks_calls ))
76
80
return actual_num_callbacks_calls , expected_num_callbacks_calls
77
81
78
82
def number_lifecycle_callback_methods_calls (stop_criteria = None ,
79
- on_generation_stop = None ):
83
+ on_generation_stop = None ,
84
+ crossover_type = "single_point" ,
85
+ mutation_type = "random" ):
80
86
actual_num_callbacks_calls = 0
81
87
82
88
class Callbacks :
@@ -121,6 +127,8 @@ def on_stop(self, ga_instance, last_population_fitness):
121
127
fitness_func = Callbacks_obj .fitness_func ,
122
128
sol_per_pop = 10 ,
123
129
num_genes = 5 ,
130
+ crossover_type = crossover_type ,
131
+ mutation_type = mutation_type ,
124
132
on_start = Callbacks_obj .on_start ,
125
133
on_fitness = Callbacks_obj .on_fitness ,
126
134
on_parents = Callbacks_obj .on_parents ,
@@ -146,8 +154,8 @@ def on_stop(self, ga_instance, last_population_fitness):
146
154
# Use 'generations_completed' instead of 'num_generations' because the evolution may stops in the on_generation() callback.
147
155
expected_num_callbacks_calls = 1 + ga_instance .generations_completed * 5 + 1
148
156
149
- print ("Expected number of callbacks calls is {expected_num_callbacks_calls}." .format (expected_num_callbacks_calls = expected_num_callbacks_calls ))
150
- print ("Actual number of callbacks calls is {actual_num_callbacks_calls}." .format (actual_num_callbacks_calls = actual_num_callbacks_calls ))
157
+ print ("Expected {expected_num_callbacks_calls}." .format (expected_num_callbacks_calls = expected_num_callbacks_calls ))
158
+ print ("Actual {actual_num_callbacks_calls}." .format (actual_num_callbacks_calls = actual_num_callbacks_calls ))
151
159
return actual_num_callbacks_calls , expected_num_callbacks_calls
152
160
153
161
def test_number_lifecycle_callback_functions_calls ():
@@ -170,13 +178,69 @@ def test_number_lifecycle_callback_methods_calls_stop_criteria():
170
178
171
179
assert actual == expected
172
180
181
+ def test_number_lifecycle_callback_functions_calls_no_crossover ():
182
+ actual , expected = number_lifecycle_callback_functions_calls (crossover_type = None )
183
+
184
+ assert actual == expected
185
+
186
+ def test_number_lifecycle_callback_functions_calls_no_mutation ():
187
+ actual , expected = number_lifecycle_callback_functions_calls (mutation_type = None )
188
+
189
+ assert actual == expected
190
+
191
+ def test_number_lifecycle_callback_functions_calls_no_crossover_no_mutation ():
192
+ actual , expected = number_lifecycle_callback_functions_calls (crossover_type = None ,
193
+ mutation_type = None )
194
+
195
+ assert actual == expected
196
+
197
+ def test_number_lifecycle_callback_methods_calls_no_crossover ():
198
+ actual , expected = number_lifecycle_callback_methods_calls (crossover_type = None )
199
+
200
+ assert actual == expected
201
+
202
+ def test_number_lifecycle_callback_methods_calls_no_mutation ():
203
+ actual , expected = number_lifecycle_callback_methods_calls (mutation_type = None )
204
+
205
+ assert actual == expected
206
+
207
+ def test_number_lifecycle_callback_methods_calls_no_crossover_no_mutation ():
208
+ actual , expected = number_lifecycle_callback_methods_calls (crossover_type = None ,
209
+ mutation_type = None )
210
+
211
+ assert actual == expected
212
+
173
213
if __name__ == "__main__" :
174
214
print ()
175
215
test_number_lifecycle_callback_functions_calls ()
176
216
print ()
217
+
177
218
test_number_lifecycle_callback_functions_calls_stop_criteria ()
178
219
print ()
220
+
179
221
test_number_lifecycle_callback_methods_calls ()
180
222
print ()
223
+
181
224
test_number_lifecycle_callback_methods_calls_stop_criteria ()
182
225
print ()
226
+
227
+ test_number_lifecycle_callback_functions_calls_no_crossover ()
228
+ print ()
229
+
230
+ test_number_lifecycle_callback_functions_calls_no_crossover ()
231
+ print ()
232
+
233
+ test_number_lifecycle_callback_functions_calls_no_mutation ()
234
+ print ()
235
+
236
+ test_number_lifecycle_callback_functions_calls_no_crossover_no_mutation ()
237
+ print ()
238
+
239
+ test_number_lifecycle_callback_methods_calls_no_crossover ()
240
+ print ()
241
+
242
+ test_number_lifecycle_callback_methods_calls_no_mutation ()
243
+ print ()
244
+
245
+ test_number_lifecycle_callback_methods_calls_no_crossover_no_mutation ()
246
+ print ()
0 commit comments