Эволюционный алгоритм, похоже, не добился никакого прогресса

Я пытаюсь эволюционировать значения, чтобы настроить их, но я чувствую, что мой код недостаточно хорош. Моя самая большая проблема заключается в том, что значения находятся в диапазоне от -.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

То, что я получаю, когда я пытаюсь это полный провал.

0 ответов

Другие вопросы по тегам