Matlab的fminimax是否应用帕累托最优性?

2024-10-06 13:51:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在Matlab中进行多目标优化,并使用优化工具箱中的fiminimax。我想知道fminimax是否应用帕累托优化,如果没有,为什么?另外,你能推荐一个在Matlab或Python中使用Pareto的多目标优化包吗?在


Tags: 目标工具箱matlabparetofminimaxfiminimax
2条回答

对于python,DEAP可能就是您要查找的对象。大量的documentation有很多真实的例子,还有一个非常有用的googlegroups论坛。它实现了两个健壮的MO算法:NSGA-II和SPEA-II。在

编辑(按要求)

我在硕士论文中使用了DEAP,所以我会告诉你我们是如何使用Pareto最优性的。设置DEAP非常简单,正如您将在示例中看到的那样。以this one为起点。这是short version,它使用内置的算法和运算符。阅读这两个,然后遵循这些指导原则。在

由于OneMax的例子是单目标的,所以它没有使用MO算法。但是,它们很容易实现:

  • 更改求值函数,使其返回一个具有所需分数的n元组。如果您还想最小化标准偏差,类似return sum(individual), numpy.std(individual)的方法就可以了。在
  • 另外,修改^{}对象的weights参数,使其与返回的n元组相匹配。正浮动意味着最大化,负浮动意味着最小化。您可以使用任何实数,但为了简单起见,我将坚持使用1.0和{}。在
  • 将你的遗传算子改为^{}^{}和{a8},分别用于交叉、突变和选择操作。这些是建议的方法,因为它们是由NSGA-II的作者开发的。在
  • 如果您想在DEAP中使用一种嵌入的现成算法,请选择^{}。在
  • 调用算法时,请记住将halloffame参数从^{}更改为^{}。这将返回所有非支配个体,而不是按词典排序的“各代最佳个体”。然后您可以根据需要解析Pareto前沿:加权和、自定义词典排序等

我希望这有帮助。考虑到还有一个完整的、更高级的NSGA2示例可用here。在

对于^{}和{a2},它看起来像answer is no。然而,遗传算法求解器^{},是基于Pareto集的,尽管我不确定它是否是您想要使用的multi-objective optimization functiongamultiobj实现NGSA-II进化算法。还有一个this package,它在C语言中用Matlab mex接口实现了强化帕累托进化算法2(SPEA-II)。它有点旧,所以你可能想重新编译它(如果你不在32位的Windows上,你无论如何都需要重新编译)。在

相关问题 更多 >