我有一个人口的遗传算法。
在我运行这个基因并得到每个基因的结果之后,我对这些基因做一些加权乘法(这样排名越好的基因就能得到最多的倍数)。
我得到x*2或x*2+(x*100/10)基因。这10%是随机的新基因,它可能触发,也可能不触发,取决于突变率。
问题是,我不知道怎样才能使人口再次减少到X。
如果基因是一个列表,我应该只使用list::2
在交叉基因时,什么是常见的做法?
编辑:
我的遗传算法的例子,人口为100;
我想知道的是:我应该怎么做最后一步?目前,我有一个包含5778个条目的列表,每'58‘就取一个,或者表示为len( list )/ every 1。
或者,我应该在random.delete中使用“while”,直到len(list) == 100?
新的随机基因应该在杂交前后添加吗?
有没有办法使最高到最低等级的项目进行一个标准乘数?
例如:最高的等级乘以n,第二最好的乘以(n-1),第三的乘以(n-2) .,最差的乘以(n-n)。
发布于 2014-06-23 09:18:46
我真的不知道你为什么要那样表演GA,你能给我一些参考吗?
在任何情况下,这里都是实现函数GA方法的典型解决方案:
注意:你总是想保持最好的基因不变,因为你总是在每次迭代中得到一个更好的解决方案。
祝好运!
https://stackoverflow.com/questions/24356455
复制相似问题