遗传算法的适应度函数和选择
我正在尝试设计一个非线性适应度函数,其中我最大化变量 A 并最小化变量 B。问题是最大化 A 在个位数值(几乎对数)下更为重要。 B 需要最小化,与 A 相比,当 B 较小(小于 1)时,它变得不那么重要,而当 B 较大(> 1)时,它变得更重要,因此呈指数衰减。
主要目标是优化 A,所以我猜类比是 A=利润,B=成本
我是否应该致力于保持一切积极,以便我可以使用轮盘赌选择,或者使用排名/锦标赛会更好什么样的系统?我的算法的目的是形状优化。
谢谢
I'm trying to design a nonlinear fitness function where I maximize variable A and minimize the variable B. The issue is that maximizing A is much more important at single digit values, almost logarithmic. B needs to be minimized and in contrast to A, it becomes less important when small (less than one) and more important when it's larger (>1), so exponential decay.
The main goal is to optimize A, so I guess an analog is A=profits, B=costs
Should I aim to keep everything positive so that the I can use a roulette wheel selection, or would it be better to use a rank/torunament kind of system? The purpose of my algorithm is shape optimization.
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
在考虑多目标问题时,目标通常是确定位于帕累托曲线(帕累托最优集)上的所有解决方案。 在这里查看二维视觉示例。当算法完成时,您需要一组不受任何其他解决方案支配的解决方案。 因此,您需要定义一个帕累托排名机制来考虑这两个目标 - 要获得更深入的解释,以及更多阅读的链接,转到此处
考虑到这一点,为了有效地探索帕累托前沿的所有解决方案,您不希望实现鼓励过早收敛,否则您的算法将仅探索帕累托曲线某一特定区域的搜索空间。我将实现一个选择运算符,它保留每次迭代的最佳解决方案集的所有成员,即所有不受另一个 + 支配的解决方案加上其他解决方案的参数控制百分比。通过这种方式,您可以鼓励沿着帕累托曲线进行探索。
您还需要确保您的突变和交叉运算符也得到正确调整。对于进化算法的任何新颖应用,问题的一部分是试图确定问题域的最佳参数集......这就是它真正有趣的地方!
When considering a multi-objective problem the goal is usually to identify all solutions that lie on the Pareto curve - the Pareto optimal set. Have a look here for a 2-dimensional visual example. When the algorithm completes you want a set of solutions that are not dominated by any other solution. You therefore need to define a pareto ranking mechanism to take into account both objectives - for a more in depth explanation, as well as links to even more reading, go here
With this in mind, in order to effectively explore all solutions along the pareto front you do not want an implementation that encourages premature convergence, otherwise your algorithm will only explore the search space in one specific area of the Pareto curve. I would implement a selection operator that keeps all members of each iteration's optimal set of solutions, that is all solutions which are not dominated by another + plus a parameter controlled percentage of other solutions. This way you encourage exploration all along the Pareto curve.
You also need to ensure your mutation and crossover operators are tuned correctly too. With any novel application of Evolutionary Algorithms, part of the problem is trying to identify an optimal parameter set for the problem domain... this is where it gets really interesting!!
描述非常模糊,但假设您实际上知道该函数应该是什么样子,并且您只是想知道是否需要修改它以便可以轻松使用比例选择,那么不需要。无论健身功能如何,您可能应该默认使用锦标赛选择之类的功能。为了获得始终如一的良好结果,控制选择压力是您必须做的最重要的事情之一,而轮盘赌选择不允许您进行这种控制。通常你很早就会受到巨大的压力,这会导致过早收敛。在某些情况下这可能更好,但这不是我开始调查的地方。
The description is very vague, but assuming that you actually have an idea of what the function should look like and you're just wondering whether you need to modify it so that proportional selection can be used easily, then no. Regardless of fitness function, you should probably default to using something like tournament selection. Controlling selection pressure is one of the most important things you have to do in order to get consistently good results, and roulette wheel selection doesn't allow you that control. You typically get enormous pressure very early, which drives premature convergence. That might be preferable in a few cases, but it's not where I'd start my investigations.