我目前正在用 C 语言实现类似 HyperNEAT 的算法,但我面临着算法的两个关键方面,我无法正确实现。我一直在研究 NEAT 和 HyperNEAT 算法的原始源代码,但没有成功。由于内部反馈循环,这些问题与 NEAT/CPPN 重复有关。
首要问题
带有反馈回路的 NEAT/CPPN 中正确的计算顺序是什么?我在下图中提供了拓扑中的递归示例:
在最初的计算中,反馈链接不包含以前计算的任何结果。我应该使用空链接执行第一次计算吗?
第二期
想象一下,我想通过将像素坐标作为输入传递给 NEAT 来生成图像。据我所知,NEAT 模型每个像素应该接收一个输入样本。我应该保留拓扑的中间结果与以前的像素吗?如果 NEAT 是前馈的,则此问题没有影响,但如果它呈现反馈循环,则结果会发生变化。(当间接编码基板时,同样的问题适用于 HyperNEAT 中的 CPPN)。
我知道这些问题也与图论有关,但我想知道它们是如何在 NEAT 算法中执行的。
谢谢!