Artificial intelligence 遗传规划中交叉的实现

Artificial intelligence 遗传规划中交叉的实现,artificial-intelligence,genetic-algorithm,evolutionary-algorithm,genetic-programming,crossover,Artificial Intelligence,Genetic Algorithm,Evolutionary Algorithm,Genetic Programming,Crossover,我正在编写一个遗传编程(GP)系统(用C语言编写,但这只是一个小细节)。我读过很多文献(Koza、Poli、Langdon、Banzhaf、Brameier等),但有些实现细节我从未见过解释。例如: 我使用的是稳定状态的总体,而不是分代的方法,主要是使用计算机的所有内存,而不是为临时总体保留一半 问题1。在GP中,与GA相反,当您执行交叉时,您选择了两个父项,但您是否创建了一个或两个子项,或者这是您的自由选择 问题2。在稳定状态下,相对于代际制度,交叉创造的儿童会取代哪些人口成员?这是我没见过的

我正在编写一个遗传编程(GP)系统(用C语言编写,但这只是一个小细节)。我读过很多文献(Koza、Poli、Langdon、Banzhaf、Brameier等),但有些实现细节我从未见过解释。例如:

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

问题1。在GP中,与GA相反,当您执行交叉时,您选择了两个父项,但您是否创建了一个或两个子项,或者这是您的自由选择

问题2。在稳定状态下,相对于代际制度,交叉创造的儿童会取代哪些人口成员?这是我没见过的。是两位家长,还是另外两位随机挑选的成员?如果是后者,我可以理解,您可能会使用负面锦标赛选择来选择要替换的成员,但这不会导致过早收敛吗?(在交叉事件后,群体包含两个原始父母加上这些父母的两个孩子,另外两个随机成员被删除。精英主义是固有的。)

第三季度。是否有关注GP的网络论坛或邮件列表?奇怪的是,我还没有找到。雅虎的GP组几乎只用于发布消息,Poli/Langdon Field Guide论坛几乎没有任何声音,而在gamedev.net等普通/游戏编程网站上的GP讨论非常基本

谢谢你能提供的任何帮助

首先,放松

GP中没有“正确”的方法。GP更像是艺术而不是科学。尝试许多方案,选择最有效的方案

问题1:1、2或多个。你选择

问题2:替换,1,2,全部。或者试试精英主义

问题3:你可能找不到讨论这些问题的论坛b/c没有正确/最佳答案。对不起

在我的研究中,交叉从未真正表现得很好

  • 正如Ray所说,这主要取决于你,但通常在稳定状态下,你只会产生一个后代

  • 同样,你也有选择。我不会取代父母。如果他们是根据自己的健康状况被选为父母,那么你可能会淘汰人口中一些最健康的成员。最简单的方法就是随机挑选一个被替换的人。或者,您可以替换最不合适的个体,但这可能导致过早收敛。另一种选择是使用与选择父母相同的选择策略,但使用反向适应度,以便更适合不太合适的个体

  • 你可以在USENET上尝试comp.ai.genetic(和)


  • 如果您能阅读Python,您可能想看看。我主要参与GA方面的工作,但它也支持GP。也许你能从那里得到一些提示

    听起来你的一些问题不一定是针对基因编程的;如果这是真的,你可能会有一些运气,请那些人过来

    他们主要讨论增广拓扑(或NEAT)算法的神经进化,这是一种用于进化神经网络的遗传算法。但是像精英主义和交叉策略这样的主题是相当普遍的,并且可以应用于GA和GP算法


    否则,正如Dan和Ray所说,很多决策都是在对特定软件和领域进行实验后做出的。试着将你的算法应用到不同的问题上,并注意它的表现——过一段时间,你可能会对什么有效什么无效形成直觉。

    Q1是你的选择,但独生子女可能更常见。每次你为父母选择彩票时,你都在施加选择压力,这正是你想要的

    问题2:消极的比赛选择正是正确的方法。是的,失去群体中的低适应性成员最初会导致快速收敛,但一旦你的群体进入解决方案空间中难以搜索的部分,就不会像那些输掉锦标赛/彩票的人那样一成不变。你必须小心的是基因库的停滞;我建议监测基因组的熵来追踪其异质性。“精英主义是与生俱来的”——好吧,是的,这就是问题所在!;-)

    问题3:comp.ai.genetic可能是你最好的选择。有时,这个话题会在游戏开发论坛上被提及,比如在Gamasutra上


    C语言中的遗传编程?!?你如何保证后代的生存能力?用非同源语言进行基因编程是一个真正的挑战。

    看看你的stacky需求。

    我会创造无限数量的后代,但只能在成功的基础上,让人口中的老年人死去。缺乏健康也会导致早死。这似乎是自然规律

    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...