SuperAPI AI 工具集

pymoo

数据与分析

查看项目

更新于 10-21 16:18

技能介绍

用途

pymoo 是一个以多目标优化为重点的 Python 优化框架,用于求解单目标和多目标优化问题。它适合需要寻找冲突目标之间权衡解(Pareto 前沿)的场景,并内置了多种进化算法、基准测试问题、可定制的遗传算子以及多准则决策方法。

主要能力

  • 支持单目标、多目标(2-3 个目标)、多目标(4 个及以上目标,即 many-objective)优化。
  • 内置算法包括:NSGA-II、NSGA-III、MOEA/D、SPEA2、RVEA、GA、DE、PSO 等,另在算法选择指南中提及 CMA-ES、R-NSGA-II、AGE-MOEA、SRES、ISRES 等。
  • 提供基准测试问题,如 ZDT、DTLZ、WFG 系列,可通过 get_problem 快速获取。
  • 支持约束优化(不等式与等式约束)、混合变量问题(连续、整数、二进制、分类变量)、动态问题(目标或约束随时间变化)。
  • 支持自定义遗传算子(交叉、变异、选择),并针对连续变量、二进制变量、排列问题给出算子建议。
  • 提供多准则决策(MCDM)方法,用于从 Pareto 前沿中做选择。
  • 提供可视化能力,包括散点图、PCP、radviz、热力图等。
  • 支持并行评估(线程、进程或 Dask),用于目标函数计算代价高昂的场景。

使用方式

安装:

uv pip install pymoo

如需可复现环境,可固定版本:

uv pip install "pymoo==0.6.1.6"

依赖:NumPy(自 0.6.1.3 起兼容 2.x)、SciPy、matplotlib(可视化)。Autograd 为可选依赖,用于基于梯度的功能(自 0.6.1.3 起)。

文档:https://pymoo.org/ ;面向 LLM 的索引:https://pymoo.org/llms.txt

pymoo 使用统一的 minimize() 函数处理所有优化任务:

from pymoo.optimize import minimize

result = minimize(
    problem,        # What to optimize
    algorithm,      # How to optimize
    termination,    # When to stop
    seed=1,
    verbose=True
)

结果对象包含:

  • result.X:最优解的决策变量
  • result.F:最优解的目标值
  • result.G:约束违反情况(若为约束问题)
  • result.algorithm:带历史的算法对象

问题定义支持三种风格:

  • Problem:向量化,_evaluate 接收一批解(矩阵)
  • ElementwiseProblem:每次调用处理一个解,推荐用于自定义问题和并行评估
  • FunctionalProblem:将目标和约束定义为独立函数,无需子类化

约束形式为 g(x) <= 0 和 h(x) = 0。

适用场景

  • 求解单目标或多目标优化问题
  • 寻找 Pareto 最优解并分析权衡
  • 实现进化算法(GA、DE、PSO、NSGA-II/III)
  • 处理带约束的优化问题
  • 在标准测试问题(ZDT、DTLZ、WFG)上对算法进行基准测试
  • 定制遗传算子(交叉、变异、选择)
  • 可视化高维优化结果
  • 从多个竞争解中做决策
  • 处理二进制、离散、连续或混合变量问题

限制与注意事项

  • 资料未提供关于收费、价格、平台支持范围或具体性能效果的数据。
  • 资料未提供除上述算法、问题类型、算子、可视化与并行方式之外的其他功能说明。
  • 资料未提供关于算法在特定问题上的收敛保证或最优性保证。
  • 资料未提供关于运行环境(操作系统、Python 版本)的明确要求。
  • 资料未提供关于许可证、商业使用限制的信息。
  • 资料未提供关于社区支持、更新频率或长期维护承诺的信息。