当前位置:  开发笔记 > 编程语言 > 正文

进化算法:最佳的重新种群分解

如何解决《进化算法:最佳的重新种群分解》经验,为你挑选了2个好方法。

这一切都在标题中,但对于任何对进化算法感兴趣的人来说,这是一个细分:

在EA中,基本前提是你随机生成一定数量的生物(实际上只是参数集),针对问题运行它们,然后让最佳表现者生存.

然后,你将幸存者的杂交组合,幸存者的突变以及一定数量的新随机生物重新组合起来.

做了几千次,有效的生物出现了.

有些人也会做一些事情,比如引入多个生物群的"岛屿",这些生物群是一段时间允许杂交的单独种群.

所以,我的问题是:什么是最佳的再增殖百分比?

我一直保持前10%的表现,并重新种植30%的杂交和30%的突变.剩余的30%用于新生物.

我也尝试了多岛理论,我也对你的结果感兴趣.

对我来说,这绝不是EA可以解决的问题类型.你知道有人在尝试吗?

提前致谢!



1> Kyle Burton..:

我在GA和EA中遇到的最好的资源是John Koza关于遗传编程的书籍.他深入讨论了这个主题 - 编码基因组的技术,随机变异,育种,调整适应度函数.

就个人而言,我只为教学目的编写了一小部分模拟器.我发现,我如何调整这些百分比与我正在使用的适应度函数的细节,我引入了多少随机突变以及我如何"聪明"地尝试进行突变和繁殖有关 - 我发现'聪明'我试图制作变异器和交叉逻辑,人口提高其健康得分的速度越快 - 我也发现我在变异的概率上过于保守 - 我的初始运行达到局部最大值并且有一个很难摆脱他们.

这些都没有给出具体的答案,但我认为没有具体的答案,GA的性质无法预测,调整这些参数可能仍然是一种艺术.当然,你总是可以尝试使用这些参数作为染色体的meta-GA,搜索能够在你运行的基础GA中产生更快速适应性的设置.

取决于你想要的'meta'.



2> davenpcj..:

我最初试图模拟我认为有机系统的样子.最终决定不好,并且更具侵略性,保持10%,变异20%,杂交60%,随机10%.

然后我注意到我的前10%大致相同.所以我将随机数增加到30%.这对一些人有所帮助,但并不多.

我确实尝试了多个岛屿,一代跳绳和再播种,这给出了更好的结果,但仍然非常不令人满意,前10%的几乎没有变化,为了获得任何结果.大部分代码都学会了如何破解我的健康评估.

获得最佳表现者真的很容易,所以不要担心会留下太多的表现.杂交种有助于减少积极和消极的特性,因此它们很有用,但实际上你想得到的是很多好的随机繁殖.专注于突变和新的randoms来引入特征,并让杂交和表现最好的只需跟踪最佳状态并更慢地完善它们.IE:基于上一代的东西只是找到一个更好的局部最大值,randoms找到更好的全局最大值.

我仍然相信你的问题的最佳答案可以通过观察自然现象来找到,例如最近一篇关于果蝇飞行路径随机性的文章,这样就可以解决.

可能最好的答案就是运行它并调整它,不要害怕相当大的调整,人口很强大.确保您实现了一种保存和继续的方法.

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有