我在Matlab中进行多目标优化,并在优化工具箱中使用fiminimax。我想知道fminimax是否应用Pareto优化,如果没有,为什么?另外,你能建议一个在Matlab或Python中使用Pareto的多目标优化包吗?
发布于 2013-11-04 20:09:07
对于fminimax和fgoalattain,它看起来像答案是否定的。然而,遗传算法求解器gamultiobj是基于Pareto集的,尽管我不确定它是否是您想要使用的那种多目标优化函数。gamultiobj实现了NGSA-II进化算法。还有一个这个包裹,它用Matlab mex接口在C中实现了增强的Pareto进化算法2(SPEA)。它有点老了,所以您可能想重新编译它(如果您不在Windows 32位上,无论如何都需要重新编译它)。
发布于 2014-05-31 17:30:10
对于python,德普可能是您正在寻找的对象。广泛的文档与许多现实生活的例子,和一个非常有用的谷歌团体论坛。它实现了两种鲁棒的MO算法:NSGA和SPEA.
编辑(应请求)
我在MSc论文中使用DEAP,所以我会让你知道我们是如何使用Pareto最优性的。设置DEAP是相当直截了当的,您将在示例中看到这一点。使用这一个作为起点。这是短版,它使用内置算法和运算符.阅读这两篇文章,然后遵循这些指导原则。
由于OneMax示例是单目标的,所以它不使用MO算法.但是,很容易实现它们:
return sum(individual), numpy.std(individual)的东西就会起作用。weights对象的base.Fitness参数,使其与返回的n元组匹配。正浮子意味着最大化,负浮点数表示最小化。您可以使用任何实数,但为了简单起见,我会坚持使用1.0和-1.0。cxSimulatedBinaryBounded()、mutPolynomialBounded()和selNSGA2(),分别用于交叉操作、突变操作和选择操作。这些是建议的方法,因为它们是由NSGA-II作者开发的。MuPlusLambda()。halloffame参数从HallOfFame()更改为ParetoFront()。这将返回所有非支配的个人,而不是最好的字典排序的“所有世代最好的个人”。然后,你可以解决你的帕累托阵线,如:加权和,自定义字典排序,等等。我希望这能帮上忙。考虑到还有一个完整的、更高级的NSGA2示例可用这里。
https://stackoverflow.com/questions/19775809
复制相似问题