@@ -76,8 +76,10 @@ def get_float_mutations(self):
7676 ####################################
7777 # The individual mutations
7878 def random_choice (self , parameter ):
79- idx = int (parameter .rng .choice (range (len (parameter .choices ))))
80- return parameter .choices [idx ]
79+ current_idx = parameter .choices .index (parameter .current_value )
80+ available_indices = [i for i in range (len (parameter .choices )) if i != current_idx ]
81+ selected_idx = parameter .rng .choice (available_indices )
82+ return parameter .choices [selected_idx ]
8183
8284 def increase_choice (self , parameter ):
8385 index = parameter .choices .index (parameter .current_value )
@@ -92,16 +94,17 @@ def decrease_choice(self, parameter):
9294 return parameter .choices [index - 1 ]
9395
9496 def random_int_scalar (self , parameter ):
95- return int (parameter .rng .choice (range (parameter .min , parameter .max + 1 , parameter .step_size )))
97+ possible_values = [v for v in range (parameter .min , parameter .max + 1 , parameter .step_size ) if v != parameter .current_value ]
98+ return int (parameter .rng .choice (possible_values ))
9699
97100 def increase_int_scalar (self , parameter ):
98- if parameter .current_value + parameter .step_size < parameter .max :
101+ if parameter .current_value + parameter .step_size <= parameter .max :
99102 return parameter .current_value + parameter .step_size
100103 else :
101104 return parameter .current_value
102105
103106 def decrease_int_scalar (self , parameter ):
104- if parameter .current_value - parameter .step_size > parameter .min :
107+ if parameter .current_value - parameter .step_size >= parameter .min :
105108 return parameter .current_value - parameter .step_size
106109 else :
107110 return parameter .current_value
0 commit comments