SuperAPI AI 工具集

pymoo

编程与开发

查看项目

更新于 10-15 22:40

技能介绍

pymoo 是 Python 的进化优化框架,通过统一 API 支持单目标与多目标优化。用户通过继承 Problem(向量化,速度快)或 ElementwiseProblem(逐元素,写法简单)定义问题,指定目标数、决策变量数与约束条件。内置 20 余种算法,如 NSGA-II、NSGA-III、MOEA/D 及单目标的 GA、DE;问题定义、算法配置、交叉变异算子与分析组件可独立替换。求解后返回 Result 对象,包含帕累托最优种群、目标值 F 和决策变量值 X,并提供超体积(HV)、IGD 等性能指标及散点图、平行坐标图等可视化。适合多目标冲突设计、无梯度黑盒优化、ML 多目标超参数搜索、投资组合帕累托前沿等场景。使用需安装 pymoo、numpy、matplotlib,命令为 pip install pymoo numpy matplotlib,核心计算在 CPU 上运行,不使用 GPU。

典型用法是:先定义问题类,实现 _evaluate 返回目标值;再实例化算法(如 NSGA2(pop_size=100));然后调用 minimize(problem, algorithm, ("n_gen", 200), seed=1) 求解;最后读取 res.F、res.X 或用 Scatter、PCP 绘图。约束采用约束违反度方式处理,不可行解被保留但受支配。终止条件可用固定代数 n_gen 或基于收敛的 DefaultMultiObjectiveTermination。

实用建议:目标函数单次评估耗时超过 1 毫秒时可用 StarmapParallelization 并行;2 个目标优先 NSGA-II,3 个及以上目标宜用 NSGA-III 或 MOEA/D,并配合 Das-Dennis 参考方向;计算指标前应对不同量纲的目标做归一化。需注意其每次运行评估次数约为 pop_size × n_gen,较高代数与种群规模会显著增加计算成本;不同算法的参数(如 SBX 的 prob、DE 的 CR/F、参考方向 n_partitions)会影响结果,缺少梯度信息时该方法也不保证全局最优。资料未提供官方定价与授权信息。