首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >生成下一代遗传算法

生成下一代遗传算法
EN

Stack Overflow用户
提问于 2014-12-17 14:35:34
回答 1查看 858关注 0票数 0

几个月前,我发明了一种遗传算法,但在解决任何问题的过程中,我都是一个星期。我最初的目标是在游戏应用中使用遗传算法。

现在,我重新创建了整个过程,并试图从另一个角度看问题。

现在,我将定义下一代的设置步骤。

我的最后一个想法是:

  • 从当前一代中获取最高等级的基因,并在下一代复制它们(数量由精英决定)。
  • 取两个随机基因进行交叉(被挑选的机会与基因等级相关),我做了几种交叉方法(1点,2点,三父母,平均,均匀.)
  • 用上述方法用基因填充新一代
  • 将一些突变应用于基因(被选择的机会取决于突变率),它只会改变DNA的一部分(顶级基因被排除在外)。

事实证明,这是非常低效的(我不知道为什么),而且计算要求也很高,因为交叉过程已经在所有的基因上循环了好几次。

现在我在想一种新的方法。

基本上,我的目标是维护这些基因,删除“坏”基因,用交叉基因填充基因库。

在一个有1.000个人的基因库里,我会:

  • 丢弃排名最低的500位。
  • 复制最高等级( 10%的精英主义,它是100)
  • 利用交叉产生400个新基因。
  • 应用突变

我把“世世代代”的概念说得太当真了,让他们都死掉了(期望排名最高的),现在我会让他们都活下去,让他们都死掉。并根据需要重新定居。

我有遗漏什么吗?这个新方法会更好吗?

EN

回答 1

Stack Overflow用户

发布于 2014-12-24 16:23:56

垂直基因转移(传统的世代概念)有一种替代方法,即横向基因转移(参见本论文)。随着基因水平转移,种群规模在整个模拟过程中保持不变。

此外,当你培育基因型(无论你选择哪种方法),你绝对不应该只保留最适合的候选人在整个世代。如果这样做,您发现的解决方案很可能是一个局部最优。每一个基因型都应该有一些机会,使它到下一代,适者生存有一个更好的机会(参见这个答案关于线性等级选择)。

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

https://stackoverflow.com/questions/27527971

复制
相关文章

相似问题

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