关于 alterlab-pymoo
alterlab-pymoo 是使用 Python 优化框架 pymoo 的技能,面向求解单目标与多目标问题的用户,涵盖进化算法、约束处理、帕累托权衡及决策流程。
主要功能
- 01单目标与多目标优化
- 02NSGA-II/III 等进化算法
- 03约束问题处理
- 04基准问题与算法评估
- 05帕累托可视化与决策支持
适用场景
- 01寻找相互冲突目标的权衡解
- 02在 ZDT、DTLZ 或 WFG 上评估算法
- 03优化包含混合变量类型的问题
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ alterlab-ieu/ alterlab-academic-skills --skill alterlab-pymoo安装后在 Claude Code 中输入/alterlab-pymoo确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
evals/evals.jsonreferences/algorithms.mdconstraints_mcdm.mdoperators.mdproblems.mdquick_reference.mdvisualization.mdworkflows.mdscripts/custom_problem_example.pydecision_making_example.pymany_objective_example.pymulti_objective_example.pysingle_objective_example.py详细介绍
Pymoo - Python 多目标优化
概述
Pymoo 是一个功能全面的 Python 优化框架,专注于多目标问题。使用先进算法(NSGA-II/III、MOEA/D)解决单目标和多目标优化问题,使用基准问题(ZDT、DTLZ)、可自定义遗传算子和多准则决策方法。擅长为目标相互冲突的问题寻找权衡解(Pareto 前沿)。
何时使用此技能
在以下情况下应使用此技能:
- 解决一个或多个目标的优化问题
- 寻找 Pareto 最优解并分析权衡关系
- 实现进化算法(GA、DE、PSO、NSGA-II/III)
- 处理带约束的优化问题
- 在标准测试问题(ZDT、DTLZ、WFG)上对算法进行基准测试
- 自定义遗传算子(交叉、变异、选择)
- 可视化高维优化结果
- 根据多个相互竞争的解进行决策
- 处理二进制、离散、连续或混合变量问题
不适用的情况
| 场景 | 改用 |
|---|---|
| 随时间模拟队列或共享资源(离散事件模拟) | alterlab-simpy |
| 搜索机器学习模型的超参数(网格/随机搜索、交叉验证) | alterlab-scikit-learn |
| 通过导数或符号求解来求公式的闭式最优解 | alterlab-sympy |
核心概念
统一接口
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:包含历史记录的算法对象
问题类型
单目标: 一个需要最小化/最大化的目标
多目标: 2-3 个相互冲突的目标 → Pareto 前沿
多目标(4 个及以上): 4 个或更多目标 → 高维 Pareto 前沿
带约束: 目标 + 不等式/等式约束
动态: 随时间变化的目标或约束
核心工作流
- 选择问题类型 — 单目标、多目标(2-3 个目标)、多目标(4 个或更多目标)或带约束。
- 定义或选择问题 — 使用
get_problem(...)选择内置问题,或为自定义问题继承ElementwiseProblem(在out["F"]中定义目标,在out["G"]中定义不等式约束g(x) <= 0,在out["H"]中定义等式约束h(x) = 0)。 - 选择算法 — 2-3 个目标用 NSGA-II,4 个及以上目标用 NSGA-III(需提供参考方向),单目标用 GA/DE/PSO/CMA-ES。参见
references/quick_reference.md中的选择表。 - 设置终止条件 —
('n_gen', N)、('n_evals', N)或基于容差的get_termination("moo", ftol=1e-3, n_max_gen=500)(单目标使用"soo";没有"f_tol"键)。 - 使用
minimize(problem, algorithm, termination, seed=1, verbose=True)运行。 - 检查
result.X/result.F/result.G(或表示约束违反量的result.CV)。 - 决策并可视化 — 使用 MCDM 选出偏好的 Pareto 解,并用
Scatter/PCP/Petal绘图。
为确保结果可复现,始终设置 seed;当目标值的尺度不同时,应进行归一化;使用 NSGA-III 时,应提供参考方向。
路由——查阅位置
| 你需要…… | 请查阅 |
|---|---|
| 全部 7 种工作流(单目标/多目标/多对象目标、自定义问题、约束处理、多准则决策、可视化)的完整复制粘贴示例 | references/workflows.md |
| 算法选择表、基准问题列表、算子配置、故障排查、最佳实践、安装 | references/quick_reference.md |
| 深入的算法参考(参数、用法、选择) | references/algorithms.md |
| 基准测试问题(ZDT、DTLZ、WFG)及其特征 | references/problems.md |
| 遗传算子(采样、选择、交叉、变异) | references/operators.md |
| 所有可视化类型及示例 | references/visualization.md |
| 约束处理 + 多准则决策 | references/constraints_mcdm.md |
可运行脚本(scripts/):single_objective_example.py、multi_objective_example.py、many_objective_example.py、custom_problem_example.py、decision_making_example.py。使用 uv run python scripts/<name>.py 运行。
搜索参考资料: grep -r "NSGA-II\|NSGA-III\|MOEA/D" references/ · grep -r "Feasibility First\|Penalty\|Repair" references/ · grep -r "Scatter\|PCP\|Petal" references/
安装
uv pip install pymoo
依赖项(自动安装):NumPy、SciPy、matplotlib、autograd、cma、moocore。文档:https://pymoo.org/——此技能适用于 pymoo 0.6.x(当前版本为 0.6.2,2026 年 6 月发布,该版本在 NumPy 2 下恢复了 CMA-ES)。