2011-07-17 34 views
3

我试图设计一个非线性适应度函数,其中我最大化变量A并最小化变量B.问题是最大化A对于单个数字值几乎是对数更重要。 B需要最小化,与A相比,当小(小于1)时,它变得不那么重要,当它变大(> 1)时变得更重要,所以指数衰减。适应度函数和遗传算法的选择

主要目标是优化A,所以我想模拟为A =利润,B =成本

我的目标应该是把一切都正使得我可以用一个轮盘赌选择,或者将它更好地使用排名/系统类型?我的算法的目的是形状优化。

感谢

+0

您的健身功能描述看起来不完整。你有没有推导出它的数学公式? – ThomasMcLeod

+0

看看这个主题http://stackoverflow.com/questions/6589146/need-help-on-like-dislike-voting-system - 也许它可以帮助你构建正确的健身功能。 – stemm

+0

您是否担心当地最低和最高?否则,我会考虑实施一个更简单的爬山搜索:http://en.wikipedia.org/wiki/Hill_climbing – Patrick

回答

0

的描述很模糊,但假设你确实有功能应该是什么样的想法和你只是想知道你是否需要修改它,这样的比例选择可以很容易地使用, 那就不要。无论健身功能如何,您应该默认使用锦标赛选择等。控制选择压力是你必须做的最重要的事情之一,以获得一致的好结果,轮盘选择不允许你控制。你通常很早就会受到巨大的压力,这会导致过早收敛。在少数情况下这可能更可取,但这不是我开始调查的地方。

4

在考虑多目标的问题,目标是通常来识别躺在帕累托曲线上的所有解决方案 - 帕累托最优集。有look here for a 2-dimensional visual example。算法完成后,您需要一组不受任何其他解决方案支配的解决方案。 因此,您需要定义一个帕累托排名机制,既考虑到目标 - 在深入的解释,以及链接到更读记一多,go here

这样,才能有效地探索一切沿着pareto前端的解决方案你不想要一个鼓励早熟的实现,否则你的算法将只探索帕累托曲线的一个特定区域的搜索空间。我将实现一个选择算子,该算子保持每个迭代的最优解集的所有成员,即所有解决方案不受另一个+的支配,并加上参数控制的其他解决方案的百分比。这样您就可以鼓励沿着帕累托曲线进行探索。

您还需要确保您的突变和交叉操作符也能正确调整。有了任何新颖的演化算法应用,部分问题就是试图为问题领域确定最佳参数集......这就是它变得非常有趣的地方!

+0

我现在的健身功能就像(x + 1)/ sqrt(1 + y^2/2^2)o y的值为1.3和.8无关紧要,但值为3.0。 我对pareto排名的理解是,我需要大约100人的大小,这是我选择健身功能的主要原因。尽管如此,我也应该可以尝试实施帕累托排名。 – randomafk