python - Matlab 的 fminimax 是否适用帕累托最优?

标签 python matlab optimization

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

最佳答案

对于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.Fitnessweights 参数对象,因此它与返回的 n 元组匹配。正 float 意味着最大化,负 float 意味着最小化。您可以使用任何实数,但为了简单起见,我会坚持使用 1.0-1.0
  • 将您的遗传运算符更改为 cxSimulatedBinaryBounded() , mutPolynomialBounded()selNSGA2() ,分别用于交叉、变异和选择操作。这些是建议的方法,由 NSGA-II 作者开发。
  • 如果您想使用 DEAP 中的嵌入式现成算法之一,请选择 MuPlusLambda() .
  • 调用算法时,请记住将 halloffame 参数从 HallOfFame() 更改为至 ParetoFront() 。这将返回所有非支配个体,而不是按字典顺序排序的最佳“所有世代中的最佳个体”。然后您可以根据需要解决帕累托前沿:加权和、自定义词典排序等。

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

关于python - Matlab 的 fminimax 是否适用帕累托最优?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19775809/

相关文章:

matlab - 在 MATLAB 中,我想将文本元素向量转换为数字以便绘制它们。

matlab - Matlab 中的向量化求解

Scala 2.10 基准测试 : generic methods from the collections are useless when performance is important?

python - 由于额外的列值,尝试使用 pandas Python 读取 csv 时出错

python - python中的多线程文件下载并在shell中更新下载进度

python - 如何使用链式比较对数组进行 bool 掩码?

python - 如何以 UTC 获取当前时间(现在)?

matlab - 如何从表格在matlab中制作数据透视表

java - 在文件系统中搜索数据的性能优化

optimization - x86 中对齐 16 字节边界意味着什么