我又开始研究一种遗传算法,我尝试了很多运算符和选择方法。当我选择比赛的时候,我注意到总是让最优秀的人被选中很容易,而小的人被选中的机会更少。我看到了一些变通的方法,比如对赢得锦标赛的个人实施一些“选择概率”,这样如果他不通过这个概率,就会给其他输掉的人机会。
我读过的另一种方法是给每个人一个选择次数的限制,但是在这个文档上并没有创造这个“限制”的任何方法。所以我开始考虑用每个人所代表的%来表示他的健康。例如:
ind 1: 10%‘直到100%消失10倍
ind 2: 40%到100%在2到3x之间
ind 3:8‘直到100%在10到12倍之间
ind 4: 30%到100%在3到4倍之间
或者使用逆%
ind 1可以被选择90%的比赛次数(或回合)
6 0%.
ind 3的选择率为92% .
ind 4的选择率为70% .
这只是简单的想法,没有什么复杂的。我想知道的是,是否有显示某种方法的文档创建了这个限制,或者您是否知道或有任何想法/意见可以改进这一点。
发布于 2015-01-23 00:14:51
首先,在实现遗传算法时要记住以下几点:
几乎所有的气体都是武断的。您的解决方案将取决于:
所有这些都是您的实现的参数。通常,使用GAs,您将实现一个解决方案,在几次运行中测试它,然后您将对它进行多次调整。
还请考虑您的搜索空间是什么,以及它可能是什么样子:
现在,如果你担心某些人会太快地接管人口,那么你可以重新审视你的健身功能,以减轻健康个体的重要性。(你的适应度函数可能是线性的,也可能是线性的,有最大值,对数,或者其他什么.)。此外,你也可以增加突变率。此外,正如您所建议的,您可以限制单个解决方案繁殖的次数。你也可以尝试不同的选择机制,看看它是如何进行的(健身比例,比赛,等等)
只是一次又一次地调整、测试和迭代。通常情况下,这就是如何改进GA程序。
如果您更详细地说明您已经实现了什么,我很乐意给您进一步的思考。
祝好运。
https://softwareengineering.stackexchange.com/questions/270851
复制相似问题