进化算法:最佳种群细分 [英] Evolutionary Algorithms: Optimal Repopulation Breakdowns

本文介绍了进化算法:最佳种群细分的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

实际上是标题中的全部内容,但这是对进化算法感兴趣的任何人的细分:

It's really all in the title, but here's a breakdown for anyone who is interested in Evolutionary Algorithms:

在EA中,基本前提是您随机生成一定数量的生物(实际上只是一组参数),使其针对问题运行,然后让表现最好的生物生存.

In an EA, the basic premise is that you randomly generate a certain number of organisms (which are really just sets of parameters), run them against a problem, and then let the top performers survive.

然后,您将幸存者的杂交,幸存者的突变以及一定数量的新随机有机体组合起来.

You then repopulate with a combination of crossbreeds of the survivors, mutations of the survivors, and also a certain number of new random organisms.

这样做数千次,就会产生有效的生物.

Do that several thousand times, and efficient organisms arise.

有些人还做一些事情,例如引入生物的多个岛",这些岛是独立的种群,允许不时杂交.

Some people also do things like introduce multiple "islands" of organisms, which are seperate populations that are allowed to crossbreed once in awhile.

所以,我的问题是:最佳的人口百分比是多少?

So, my question is: what are the optimal repopulation percentages?

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

I have been keeping the top 10% performers, and repopulating with 30% crossbreeds and 30% mutations. The remaining 30% is for new organisms.

我也尝试了多岛理论,我也对您在此上的研究结果感兴趣.

I have also tried out the multiple island theory, and I'm interested in your results on that as well.

这确实是EA可以解决的问题类型,这并没有让我迷失.您知道有人尝试过吗?

It is not lost on me that this is exactly the type of problem an EA could solve. Are you aware of anyone trying that?

提前谢谢!

推荐答案

我最初尝试对我认为有机系统的模型进行建模.最终认为这不好,并且变得更具侵略性,保留了10%,变异了20%,杂交的占60%,随机的占10%.

I initially tried to model what I thought organic systems were like. Ultimately decided that was no good, and went more aggressive, with 10% kept, 20% mutated, 60% crossbred, and 10% random.

然后,我注意到我的前10%的人大致相同.因此我将随机性增加到30%.那帮助了一些,但没有太大作用.

Then I noticed my top 10% were all roughly identical. So I increased the random to 30%. That helped some, but not much.

我确实尝试了多个孤岛,并进行了代跳过和重新播种,这虽然提供了更好的结果,但是仍然非常不令人满意,前10%的极少变化(疯狂的世代数)几乎没有得到任何结果.大多数情况下,代码学习了如何破解我的健康评估.

I did try multiple island, and generation-skipping, and reseeding, which gave better results, but still highly unsatisfactory, very little variation in the top 10%, crazy-long numbers of generations to get any results. Mostly the code learned how to hack my fitness evaluation.

要获得顶尖的表演者确实很容易,所以不必担心会吸引太多的表演者.杂种有助于减少正面和负面特征,因此很有用,但真正想要得到的是大量优良的随机育种.着眼于突变和新的随机性以引入特征,让杂种和表现最佳的人只是跟踪最好的,然后慢慢地完善它们. IE:基于上一代的东西只是找到了更好的局部最大值,随机变量则找到了更好的全局最大值.

It's really easy to get top performers, so don't worry about keeping too many of them around. Crossbreeds help to pare down positive and negative traits, so they're useful, but really what you want to get is a lot of good random bred in. Focus on mutations and new randoms to bring in features, and let the crossbreeds and top performers just keep track of the best and refine them more slowly. IE: stuff based on the last generation is just finding a better local maxima, randoms find better global maxima.

我仍然相信,通过观察自然现象可以找到对您问题的最佳答案,例如在最近有关果蝇飞行路线随机性的文章中,这样可能会有所收获.

I still believe optimal answers to your question can be found by observing natural phenomena, such as in a recent article regarding randomness of fruit-fly flight paths, so that may pan out.

最好的答案可能就是运行它并对其进行调整,不要害怕对其进行相当大的调整,人口众多.确保实现一种保存并继续的方法.

Probably the best answer is to just run it and tweak it, don't be afraid to tweak it pretty heavily, the populations are robust. Make sure you implement a way to save and continue.

这篇关于进化算法:最佳种群细分的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆