13

我正在编写一个遗传编程(GP)系统(在C中,但这是一个小细节)。我读过文献(Koza,Poli,Langdon,Banzhaf,Brameier等)的lot,但有一些实现细节我从未见过。例如:在遗传编程中实现交叉

我使用的是稳定状态人口而不是代际方法,主要是使用计算机的所有内存,而不是为临时人口保留一半。

Q1。在GP中,与GA相比,当你进行交叉时,你选择了两个父母,但你是否创建了一个或两个孩子,还是你有自由选择? Q2302。在稳态GP中,与分代系统相反,通过交叉替换创建的孩子是什么人?这是我没有见过的。这是两个父母,还是两个随机选择的成员?我可以理解,如果是后者,并且你可能使用否定比赛选择来选择要替换的成员,但是这不会造成早熟收敛吗? (交叉事件后,人口包含两个原始父母加上这些父母的两个孩子,另外两个随机成员被删除,精英主义是固有的。)

Q3。有关于GP的Web论坛或邮件列表吗?奇怪的是我没有找到一个。雅虎的GP团队几乎专门用于公告,Poli/Langdon实地指南论坛几乎没有声音,而GP就像gamedev.net这样的一般/游戏编程网站进行的讨论非常基础。

感谢您提供任何帮助!

+1

我强烈建议看一下[Metaheuristics基础](http://cs.gmu.edu/~sean/book/metaheuristics/)。它是免费的(如果你填写表格),它包含了广泛的元启发式技术概述,包括遗传编程,交叉算子,稳态模型等。 – zegkljan 2014-09-23 11:32:19

回答

8

首先,放松一下。

GP中没有“正确”的方法。 GP比科学更艺术。尝试很多方案并选择最适合的方案。

Q1:1,2或许多。你选。

Q2:替换,1,2,全部。或者尝试一些精英主义。

Q3:你可能不会找论坛讨论这些问题B/C没有正确/最好的答案。抱歉。

PS。在我的研究中,交叉从未真正执行好...

0
  1. 正如雷说,它主要是由你,但通常在一个稳定状态的设置,你只会创建一个单一的后代。

  2. 同样你有选择。我不会取代父母。如果他们根据自己的健康状况被选为父母,那么你可能会淘汰一些最适合的人群。最简单的就是随机选择一个人来替换。或者,您可以替换最不合适的个人,但这可能会导致过早融合。另一种选择是使用与选择父母时使用的相同的选择策略,但使用逆适应性,以使其偏向不适合的个体。

  3. 你可以试试USENET上的comp.ai.genetic(和Google Groups)。

1

如果你可以阅读Python,你可能想看看Pyevolve。我主要在GA方面参与其中,但它也支持GP。也许你可以在那里得到一些提示。

0

这听起来像你的一些问题不一定是特定于遗传编程;如果那是真的,你可能有一些运气在NEAT Users Group询问人们。

他们主要讨论Augmenting Topologies(或NEAT)算法的神经元演化,这是一种用于演化神经网络的遗传算法。但精英主义和交叉策略等主题相当普遍,可以应用于GA和GP算法。

否则,正如Dan和Ray所说的,许多这些决定是在对特定软件和领域进行实验之后做出的。尝试将你的算法应用于不同的问题,并注意它的行为 - 一段时间后,你可能会发现什么有效,什么不可行的直觉。

1

Q1是你的选择,但单身孩子可能会更常见。每次你选择父母的彩票时,你都在施加选择压力,这是你想要的。第二季度:负面比赛的选择是正确的方法。是的,失去低健身成员的人群最初会导致快速收敛,但是一旦你的人群进入了难以搜索的解决方案空间部分,它就不会像那些失去锦标赛/彩票。你要做什么要提防的是基因库的停滞;我建议监测基因组的熵以追踪其异质性。 “精英主义是固有的” - 好吧,是的,这就是重点! ;-)

Q3:comp.ai.genetic可能是你最好的选择。有时候这个话题会在游戏开发论坛中找到,就像Gamasutra一样。

P.S.遗传编程 in C?!?你如何确保后代的生存能力?以非同心圆语言进行遗传编程是一个真正的挑战。

0

我会创造无限数量的后代,但只有在成功的基础上,让老年人死亡。缺乏健身也会导致早逝。这似乎遵循自然顺序。

0
Q1. In GP, as opposed to GA, when you perform crossover you select two parents but 
do you create one child or two, or is that a free choice you have? 

是它的你的选择;但通常情况下,创建许多具有相同父母的人是不可取的,因为由同一父母创造的个人趋势之间的差异将非常有限,并且可能花费处理速度和记忆,这可能花费在表现出不同趋势的其他个人以及需要分析的行为(但如果进化过程接近达到其终点,则创造更多个体不会成为问题)。

Q2. In steady state GP... 

建议根据您采用的健身功能提供的排名替换个人。