【发布时间】:2014-06-03 01:07:59
【问题描述】:
我正在 Matlab 中进行多目标优化,并在优化工具箱中使用fiminimax。我想知道fminimax 是否应用了帕累托优化,如果没有,为什么?另外,您能否推荐一个在 Matlab 或 Python 中确实使用 Pareto 的多目标优化包?
【问题讨论】:
标签: python matlab optimization
我正在 Matlab 中进行多目标优化,并在优化工具箱中使用fiminimax。我想知道fminimax 是否应用了帕累托优化,如果没有,为什么?另外,您能否推荐一个在 Matlab 或 Python 中确实使用 Pareto 的多目标优化包?
【问题讨论】:
标签: python matlab optimization
对于 python,DEAP 可能是您正在寻找的那个。广泛的documentation 有很多现实生活中的例子,以及一个非常有用的谷歌论坛。它实现了两种强大的 MO 算法:NSGA-II 和 SPEA-II。
编辑(按要求)
我在我的硕士论文中使用 DEAP,所以我会告诉你我们是如何使用帕累托最优的。正如您将在示例中看到的那样,设置 DEAP 非常简单。使用this one 作为起点。这是short version,它使用内置的算法和运算符。阅读两者,然后遵循这些准则。
由于 OneMax 示例是单目标的,它不使用 MO 算法。但是,它们很容易实现:
return sum(individual), numpy.std(individual) 之类的方法会起作用。base.Fitness 对象的weights 参数,使其与返回的n 元组匹配。正浮点数表示最大化,而负数表示最小化。您可以使用任何实数,但为了简单起见,我会坚持使用 1.0 和 -1.0。cxSimulatedBinaryBounded()、mutPolynomialBounded() 和selNSGA2(),分别用于交叉、变异和选择操作。这些是建议的方法,因为它们是由 NSGA-II 作者开发的。MuPlusLambda()。halloffame参数从HallOfFame()改为ParetoFront()。这将返回所有非支配个体,而不是按字典顺序排序的最佳“所有世代中的最佳个体”。然后,您可以根据需要解决您的 Pareto Front:加权总和、自定义字典排序等。我希望这会有所帮助。考虑到还有一个完整的、更高级的 NSGA2 示例here。
【讨论】:
gamultiobj 使用的相同)。
对于fminimax 和fgoalattain,它看起来像answer is no。但是,遗传算法求解器gamultiobj 是基于帕累托集的,尽管我不确定它是否是您想要使用的multi-objective optimization function。 gamultiobj 实现了NGSA-II 进化算法。还有this package 使用Matlab mex 接口在C 中实现加强帕累托进化算法2 (SPEA-II)。它有点旧,所以您可能需要重新编译它(如果您不是在 Windows 32 位上,则无论如何都需要)。
【讨论】: