C++ NEAT基因何时发生突变?

C++ NEAT基因何时发生突变?,c++,neural-network,evolutionary-algorithm,C++,Neural Network,Evolutionary Algorithm,我通读了NEAT,现在我理解了算法 但有一件事我还不清楚。突变什么时候发生,如何发生?如何选择是添加节点还是添加连接?此外,如何选择网络中发生突变的位置(哪些连接之间)?首先:整洁的纸张非常广泛。它没有给出很多具体的实施。但在大多数GA实现中,突变发生在从父基因组创建新基因组之后 在你进入NEAT之前,确保首先研究遗传算法是如何工作的 在大多数情况下,某个突变发生的几率在突变方法中是均匀分布的。例如,如果您有3种突变方法(添加节点、添加连接和修改权重)和mutationRate=0.3,那么这些

我通读了NEAT,现在我理解了算法


但有一件事我还不清楚。突变什么时候发生,如何发生?如何选择是添加节点还是添加连接?此外,如何选择网络中发生突变的位置(哪些连接之间)?

首先:整洁的纸张非常广泛。它没有给出很多具体的实施。但在大多数GA实现中,突变发生在从父基因组创建新基因组之后

在你进入NEAT之前,确保首先研究遗传算法是如何工作的

在大多数情况下,某个突变发生的几率在突变方法中是均匀分布的。例如,如果您有3种突变方法(添加节点、添加连接和修改权重)和
mutationRate=0.3
,那么这些方法中的每一种都有
0.1
在基因组上执行的机会

有时添加连接是不可能的,因此添加节点可能有更高的执行机会

变异在网络中的位置也是随机的。突变总体上是随机的

但你提出的问题非常广泛。您引用的论文仅说明了如何实现网络拓扑的有效神经进化。它为您自己的项目奠定了基础。如何实施它完全取决于您(以及什么最适合网络!)