Matlab的fminimax是否适用Pareto最优性?

时间:2013-11-04 19:47:19

标签: python matlab optimization

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

2 个答案:

答案 0 :(得分:1)

对于python,DEAP可能是您正在寻找的那个。广泛的documentation包含大量现实生活中的示例,以及非常有用的Google网上论坛论坛。它实现了两种强大的MO算法:NSGA-II和SPEA-II。

修改(根据要求)

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

由于OneMax示例是单目标,因此不使用MO算法。但是,实现它们很容易:

  • 更改评估函数,使其返回具有所需分数的n元组。如果你想最小化标准偏差,像return sum(individual), numpy.std(individual)这样的东西也可以。
  • 此外,修改base.Fitness对象的weights参数,使其与返回的n-tuple匹配。正浮动意味着最大化,而负浮动意味着最小化。您可以使用任何实数,但为了简单起见,我会坚持使用1.0-1.0
  • 分别将您的遗传算子更改为cxSimulatedBinaryBounded()mutPolynomialBounded()selNSGA2(),以进行交叉,变异和选择操作。这些是建议的方法,因为它们是由NSGA-II作者开发的。
  • 如果您想在DEAP中使用其中一个嵌入式即用型算法,请选择MuPlusLambda()
  • 调用算法时,请务必将halloffame参数从HallOfFame()更改为ParetoFront()。这将返回所有非主导的个体,而不是最好的按字典顺序排序的“所有世代中最好的个体”。然后,您可以根据需要解决Pareto Front:加权和,自定义词典排序等。

我希望有所帮助。考虑到还有一个完整的,某种程度上更高级的NSGA2示例here

答案 1 :(得分:0)

对于fminimaxfgoalattain,它看起来像answer is no。然而,遗传算法求解器gamultiobj是基于帕累托集的,但我不确定它是否是你想要使用的那种multi-objective optimization functiongamultiobj实现了NGSA-II进化算法。还有this package在C中使用Matlab mex接口实现强化帕累托进化算法2(SPEA-II)。它有点旧,所以你可能想重新编译它(如果你不在Windows 32位上,你还是需要的。)