我正在实施NSGA遗传算法,为我的学院制定一套时间表。我在解决方案的变化上有问题。
我的算法在初始化、变异和交叉方面都很好,但是在最后一代之后,当回顾我的解决方案时,它们都是一样的,例如,我每一代有200个,其中可能有64个是相同的,54个是相同的,等等。
我的问题是是什么导致了这一切?交叉和变异的最佳形式是什么?
另外,在世代大小、世代数、突变率和交叉率方面也有规范吗?
目前,它是这样运行的:
发布于 2013-03-15 11:43:47
我相信你的阿尔法可能没有错。这对于GA来说是一个众所周知的问题。如果你想要有各种各样的解决方案,你应该实施一些利基方法。它的想法是惩罚你的人口中类似的个体。你可以找出一些启发的个人相似性,并排除相似的个人从你的人口或消除个人的健康。这将保持您的人口更加多样化,并将不允许您的变异运算符选择和进化相同的个人。通过Samir W. Mahfoud的“遗传算法的小生境方法”是很有用的。
发布于 2013-02-19 23:06:26
这个结果不一定是坏的。它可能只是集中在“附近”没有任何其他可行解决方案的几个解决方案上。你所寻求的解决方案是不是很糟糕?
我注意到的一件事是,虽然你提到了交叉,但你并没有把它列为你的7个步骤之一。如果你实际上只是做变异,这将使遗传算法更难爬出局部最优。
发布于 2013-02-20 12:22:57
G.A的工作就像收敛到一个点,选择一组最小的等位基因(解决方案)作为最佳。在一些罕见的情况下,经过像几千代人这样的长期运行,它可能带来一个单一的最佳解决方案。
但在某些情况下,它可能带来收敛的解决方案,在最少的运行次数,例如100。但它有可能陷入局部最优状态,无法达到全局最优状态。
我不确定是哪一代人,你试过了。我建议你花1000代时间来比较一下结果。另外,在几代人之后,就像你可以看到一套全新的解决方案一样,情节也可能发生变化。
对于不同的表示,存在不同的交叉和变异。也许你可以说出你所用的表示法,结果与世代数成正比。
https://stackoverflow.com/questions/14958902
复制相似问题