我正在玩一种遗传算法,我想在其中进化图形。
当染色体是图形时,您知道一种应用交叉和变异的方法吗?
或者我是否缺少让我对位串应用“常规”交叉和变异的图形编码?
多谢!
任何帮助,即使它与我的问题没有直接关系,也非常感谢!
曼努埃尔
最佳答案
我喜欢 Sandor's suggestion使用 Ken Stanley 的 NEAT algorithm .
NEAT 旨在进化具有任意拓扑结构的神经网络,但那些基本上只是有向图。在 NEAT 之前有很多进化神经网络的方法,但 NEAT 最重要的贡献之一是它提供了一种方法来 在具有不同拓扑的两个网络之间执行有意义的交叉 .
为了实现这一点,NEAT 使用 historical markings连接到每个基因以在交叉过程中“排列”两个基因组的基因(生物学家称之为 synapsis 的过程)。例如:
(来源:natekohl.net)
(在这个例子中,每个基因是一个盒子,代表两个节点之间的连接。每个基因顶部的数字是该基因的历史标记。)
总结 :根据历史标记排列基因是在两个网络之间进行交叉的一种原则性方法,无需昂贵的拓扑分析。
关于graph - 对图应用交叉和变异(遗传算法),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3160619/