Skip to content

Commit cd6c200

Browse files
committed
Merge branch 'fix/mutation' into 'main'
Fix/mutation See merge request es/ai/hannah/hannah!420
2 parents 30dfea9 + 46b0e0c commit cd6c200

File tree

1 file changed

+8
-5
lines changed

1 file changed

+8
-5
lines changed

hannah/nas/search/sampler/mutator.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)