graph - 对图应用交叉和变异(遗传算法)

标签 graph artificial-intelligence genetic-algorithm mutation

我正在玩一种遗传算法,我想在其中进化图形。
当染色体是图形时,您知道一种应用交叉和变异的方法吗?

或者我是否缺少让我对位串应用“常规”交叉和变异的图形编码?

多谢!
任何帮助,即使它与我的问题没有直接关系,也非常感谢!

曼努埃尔

最佳答案

我喜欢 Sandor's suggestion使用 Ken Stanley 的 NEAT algorithm .

NEAT 旨在进化具有任意拓扑结构的神经网络,但那些基本上只是有向图。在 NEAT 之前有很多进化神经网络的方法,但 NEAT 最重要的贡献之一是它提供了一种方法来 在具有不同拓扑的两个网络之间执行有意义的交叉 .

为了实现这一点,NEAT 使用 historical markings连接到每个基因以在交叉过程中“排列”两个基因组的基因(生物学家称之为 synapsis 的过程)。例如:

crossover with different topologies in NEAT
(来源:natekohl.net)

(在这个例子中,每个基因是一个盒子,代表两个节点之间的连接。每个基因顶部的数字是该基因的历史标记。)

总结 :根据历史标记排列基因是在两个网络之间进行交叉的一种原则性方法,无需昂贵的拓扑分析。

关于graph - 对图应用交叉和变异(遗传算法),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3160619/

相关文章:

c++ - 使用 boost 库从文件创建图形

java - 优先队列与链表java

java - 使用 Java Robots 类在屏幕上定位事物

artificial-intelligence - 遗传算法与专家系统

artificial-intelligence - 尝试启用 Dialogflow Messenger 时出现错误

algorithm - 逆概率选择(进化算法的逆适应度选择)

genetic-algorithm - 与更现代的蜜蜂/蚁群和 PSO 算法相比,遗传算法有什么优势吗?

python - networkx shortest_path(G[, source, target, weight]) 函数的源算法

algorithm - 我应该为 "genetic AI improvement"使用什么算法

java - 找到尽可能多的对