1

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

4

2 回答 2

1

对于 python,DEAP可能是您正在寻找的。包含大量真实示例的大量文档,以及一个非常有用的 Google Groups 论坛。它实现了两种强大的 MO 算法:NSGA-II 和 SPEA-II。

编辑(按要求)

我在我的硕士论文中使用 DEAP,所以我会告诉你我们是如何使用帕累托最优的。正如您将在示例中看到的那样,设置 DEAP 非常简单。以此起点。这是一个简短的版本,它使用内置的算法和运算符。阅读两者,然后遵循这些指南。

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

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

我希望这会有所帮助。考虑到这里还有一个完整的、更高级的 NSGA2 示例。

于 2014-05-31T17:30:10.303 回答
0

fminimax看起来答案是fgoalattain否定的。但是,遗传算法求解器是基于帕累托集的,尽管我不确定它是否是您想要使用的那种多目标优化函数。实现了NGSA-II进化算法。还有这个包用 Matlab接口实现了 C 中的加强帕累托进化算法 2 (SPEA-II) 。它有点旧,所以您可能需要重新编译它(如果您不在 Windows 32 位上,则无论如何都需要)。gamultiobjgamultiobjmex

于 2013-11-04T20:09:07.267 回答