首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >遗传算法问题

遗传算法问题
EN

Stack Overflow用户
提问于 2013-02-19 13:37:04
回答 3查看 659关注 0票数 2

我正在实施NSGA遗传算法,为我的学院制定一套时间表。我在解决方案的变化上有问题。

我的算法在初始化、变异和交叉方面都很好,但是在最后一代之后,当回顾我的解决方案时,它们都是一样的,例如,我每一代有200个,其中可能有64个是相同的,54个是相同的,等等。

我的问题是是什么导致了这一切?交叉和变异的最佳形式是什么?

另外,在世代大小、世代数、突变率和交叉率方面也有规范吗?

目前,它是这样运行的:

  1. 随机生成300个解
  2. 计算适应度和排名
  3. 挑选200个最好的解决方案
  4. 变异5%,产生80名儿童
  5. 再计算和排名
  6. 挑选最优秀的300人进入下一代
  7. 重复
EN

回答 3

Stack Overflow用户

发布于 2013-03-15 11:43:47

我相信你的阿尔法可能没有错。这对于GA来说是一个众所周知的问题。如果你想要有各种各样的解决方案,你应该实施一些利基方法。它的想法是惩罚你的人口中类似的个体。你可以找出一些启发的个人相似性,并排除相似的个人从你的人口或消除个人的健康。这将保持您的人口更加多样化,并将不允许您的变异运算符选择和进化相同的个人。通过Samir W. Mahfoud的“遗传算法的小生境方法”是很有用的。

票数 1
EN

Stack Overflow用户

发布于 2013-02-19 23:06:26

这个结果不一定是坏的。它可能只是集中在“附近”没有任何其他可行解决方案的几个解决方案上。你所寻求的解决方案是不是很糟糕?

我注意到的一件事是,虽然你提到了交叉,但你并没有把它列为你的7个步骤之一。如果你实际上只是做变异,这将使遗传算法更难爬出局部最优。

票数 0
EN

Stack Overflow用户

发布于 2013-02-20 12:22:57

G.A的工作就像收敛到一个点,选择一组最小的等位基因(解决方案)作为最佳。在一些罕见的情况下,经过像几千代人这样的长期运行,它可能带来一个单一的最佳解决方案。

但在某些情况下,它可能带来收敛的解决方案,在最少的运行次数,例如100。但它有可能陷入局部最优状态,无法达到全局最优状态。

我不确定是哪一代人,你试过了。我建议你花1000代时间来比较一下结果。另外,在几代人之后,就像你可以看到一套全新的解决方案一样,情节也可能发生变化。

对于不同的表示,存在不同的交叉和变异。也许你可以说出你所用的表示法,结果与世代数成正比。

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

https://stackoverflow.com/questions/14958902

复制
相关文章

相似问题

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