Перейти к содержанию

Crossover

4.3 Crossover (скрещивание)

Union crossover crossover_parents(A, B):

  1. Родители A и B должны иметь одинаковую геометрию: \((H_\text{in}, W_\text{in})\), \((H_\text{out}, W_\text{out})\), num_input_views.
  2. Входы \(\{0,\ldots,V-1\}\) и выход \(o = V\)общие (без сдвига).
  3. Скрытые вершины B сдвигаются: \(\text{id}' = \text{id} + (\max V_A + 1)\).
  4. Innovation IDs B сдвигаются аналогично.
  5. Ребро B пропускается, если ключ \((u,w)\) уже занят в A.
\[ E_\text{child} = E_A \cup \{(u, w') : (u,w) \in E_B,\; w' = w + \Delta\}, \quad \Delta = \max V_A + 1 \]

Ограничение: crossover реализует union без учёта вклада каждого родителя в fitness. В оригинальном NEAT [1] совпадающие гены наследуются от более приспособленного родителя — это ключевое отличие данной реализации.