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