我正在写一个遗传编程(GP)系统(在C中,但这是一个小细节).我已经阅读了很多文献(Koza,Poli,Langdon,Banzhaf,Brameier等),但有一些我从未见过的实现细节.例如:
我使用稳定状态而不是代际方法,主要是使用计算机的所有内存,而不是为临时人口预留一半.
Q1.在GP中,与GA相反,当您执行交叉时,您选择两个父母,但是您创建了一个或两个孩子,或者您是自由选择吗?
Q2.在稳定的GP中,与世代系统相反,人口中的哪些成员通过交叉创建的孩子取而代之?这是我没有见过的.是两个父母,还是其他两个随机选择的成员?我可以理解,如果是后者,并且您可以使用负面锦标赛选择来选择要替换的成员,但是这不会产生过早收敛吗?(在交叉事件发生后,人口中包含两个原始父母和两个父母的子女,另外两个随机成员被移除.精英主义是固有的.)
Q3.是否有专注于GP的网络论坛或邮件列表?奇怪的是我没有找到一个.雅虎的GP小组几乎专门用于公告,Poli/Langdon Field Guide论坛几乎是无声的,而对于像gamedev.net这样的通用/游戏编程网站的GP讨论非常基础.
感谢您的任何帮助,您可以提供!
artificial-intelligence genetic-programming genetic-algorithm evolutionary-algorithm crossover
我试图在我的排列上解决遗传算法中的交叉问题.假设我有两个20个整数的排列.我想交叉他们让两个孩子.父母内部有相同的整数,但顺序不同.
例:
Parent1:
5 12 60 50 42 21 530 999 112 234 15 152 601 750 442 221 30 969 113 134
Parent2:
12 750 42 113 530 112 5 23415 60 152 601 999 442 221 50 30 969 134 21
Run Code Online (Sandbox Code Playgroud)
就这样 - 我怎样才能让这两个孩子成为孩子?
我目前正在实施Kenneth Stanley开发的NEAT算法,并以原始论文为参考。
在描述交叉方法的部分中,有一件事使我感到困惑。
因此,上图说明了NEAT的交叉方法。为了确定一个基因是从哪个父母那里继承的,论文说:
匹配的基因是随机继承的,而不相交的基因(中间不匹配的基因)和多余的基因(最后不匹配的基因)则是从更合适的父母那里继承的。
对于匹配的基因(1-5),很容易理解。您只是从Parent1或Parent2中随机继承(两者都有50%的机会)。但是,对于不相交的(6-8)和多余的(9-10)基因,您不能从更适合的父母那里继承,因为您只能在Parent1或Parent2中拥有那些基因。
例如:
Parent1的适应度高于Parent2的适应度。不相交的基因6仅存在于Parent2中(当然,因为不相交和多余的基因仅在一个亲代中发生),因此,您不能决定从更适合的亲本继承该基因。所有其他不相交和多余的基因也是如此。您只能从它们所在的父级继承它们。
所以我的问题是:您是否可能从更合适的父母那里继承所有匹配的基因,然后接管不相交和多余的基因?还是我在这里误会了什么?
提前致谢。
neural-network genetic-algorithm evolutionary-algorithm crossover
我一直在为我ai班上的一个项目做遗传算法研究,但我对传统算法看起来有点困惑.
基本上,我想知道为什么他们使用不同的选择,如轮盘赌选择父母重现.为什么不选择健康评分最高的父母并称之为一天?
交叉也让我感到困惑.它每次随机选择点来拼接父信息.但是,基于以前的信息,交叉变换似乎更有意义.如果已知染色体串达到某一点,则交叉仍然可以是随机的,但不在字符串中良好部分的范围内.
有什么想法吗?
algorithm artificial-intelligence selection genetic-algorithm crossover
我有两个随机代表
1 6 8 9 0 3 4 7 5
和
3 6 5 7 8 5
交叉他们的方法是什么?
在每个基因型的末尾添加一些空数字(或操作或某些操作),以便它们具有相同的大小?
3 6 5 7 8 5 -1 -1 -1
-1表示什么都没有?
或者从第一个基因型复制少数数字,从第二个基因型复制一些?
你用的方式是什么?