Эволюционный алгоритм, похоже, не добился никакого прогресса
Я пытаюсь эволюционировать значения, чтобы настроить их, но я чувствую, что мой код недостаточно хорош. Моя самая большая проблема заключается в том, что значения находятся в диапазоне от -.5 до.5, что делает очень трудным следить за тем, что пришло от какого из родителей. (Кстати, что я эволюционирую, так это вес в нейронной сети)
def mutate_array(self, inher1, inher2):
shape = inher1.shape
random_values = 2 * np.random.rand(*shape) - 1
mutatings = np.random.rand(*shape) < self.entropy
one_chance = (np.random.rand(*shape) <= 0.5)
new_values = np.array(inher2)
new_values[one_chance] = np.array(inher1[one_chance])
new_values[mutatings] += random_values[mutatings]
return new_values
Где атрибуты "1" и "2" - это 2 массива от родителей, а "собственная энтропия" - это вариация, изменяющаяся (также эволюционно) между 0,05–0,2
То, что я получаю, когда я пытаюсь это полный провал.