首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >(μ,λ)进化策略算法中的复制处理是如何实现的?

(μ,λ)进化策略算法中的复制处理是如何实现的?
EN

Stack Overflow用户
提问于 2018-01-22 15:07:06
回答 1查看 78关注 0票数 0

在(μ,λ)自适应类型进化策略算法中,在我的实现过程是:

  1. 我有μ个体,并从这些群体中产生λ后代
  2. 在λ个体中,对突变强度进行突变,然后对候选方案进行突变。突变后,评估所有λ个体的适应度。
  3. 选择:根据适合度对所有λ个体进行排名,选择最好的μ个体作为下一代的群体。返回到1,如果没有达到标准。

在1.中,我产生了μ个体的后代。当我看到报纸

http://www.cs.bham.ac.uk/~pxt/NIL/es.pdf

http://ieeexplore.ieee.org/document/5596676/

如果看上去我可以通过克隆μ个体来获得后代,并创造后代。

但我怎么能详细地做到这一点呢?我是否应该用一个常数克隆μ个体,然后用λ= proportion *μ获得后代?

但是这样的话,在突变阶段,我不会得到几个相同的结果吗?在选择阶段,我想我可以得到相同的个体,以同样的健康值。

我如何才能准确地创造出λ的后代?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-22 21:58:17

我是否应该用一个常数克隆μ个体,然后用λ= proportion *μ获得后代?

是的,从比例== 2开始,你会得到几次相似的个人。确保只复制n优于(n < μ / (3 * proportion) )个人。因为你将不得不忘记/摧毁n崇拜者个人。

在突变阶段,我会不会得到几个相同的结果?

可能您的错误在克隆步骤中。您必须执行一个完全复制,而不仅仅是一个克隆;一个每个位的真实副本,而不仅仅是一个指针的副本。因此,许多克隆函数都不复制内部引用的对象.在这里,克隆人()这个词只是与生物界的比较。

如果您的个人是整数数组,那么您应该有一个整数数组。然后,将索引i的个体克隆为另一个索引j的个体,必须以类似的方式进行如下操作:

代码语言:javascript
复制
for(k = 0; k < individuals[i].length; k++)
    individuals[j][k] = individuals[i][k];

算法的第二步将迫使个体以随机的方式进化。因此,如果一个组合被多个个体编码,那么它将有更大的进化机会。因此,个人不能分享记忆,以确保多样性将占上风。

ieee文件不能打开,它要求支付费用。

我如何才能准确地创造出λ的后代?

代码语言:javascript
复制
sort individuals by fitness from best to worst.
for( i = 0 ; i < n ; i++) // **n** best
     copy data of individuals[i] into individuals[individuals.length-i] // replace a worst one, by the copy of a good one.

此步骤应在常量内存中完成。没有释放(删除),没有错位(新)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48384608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档