mcpField
A
alterlab-pymoo

alterlab-pymoo

github.com/alterlab-ieu数据与数据库7866 次安装5 周前更新
代码仓库

关于 alterlab-pymoo

alterlab-pymoo 是使用 Python 优化框架 pymoo 的技能,面向求解单目标与多目标问题的用户,涵盖进化算法、约束处理、帕累托权衡及决策流程。

主要功能

  1. 01单目标与多目标优化
  2. 02NSGA-II/III 等进化算法
  3. 03约束问题处理
  4. 04基准问题与算法评估
  5. 05帕累托可视化与决策支持

适用场景

  1. 01寻找相互冲突目标的权衡解
  2. 02在 ZDT、DTLZ 或 WFG 上评估算法
  3. 03优化包含混合变量类型的问题

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/alterlab-ieu/alterlab-academic-skills --skill alterlab-pymoo

安装后在 Claude Code 中输入/alterlab-pymoo确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

evals/
evals.json
references/
algorithms.md
constraints_mcdm.md
operators.md
problems.md
quick_reference.md
visualization.md
workflows.md
scripts/
custom_problem_example.py
decision_making_example.py
many_objective_example.py
multi_objective_example.py
single_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 前沿
带约束: 目标 + 不等式/等式约束
动态: 随时间变化的目标或约束

核心工作流

  1. 选择问题类型 — 单目标、多目标(2-3 个目标)、多目标(4 个或更多目标)或带约束。
  2. 定义或选择问题 — 使用 get_problem(...) 选择内置问题,或为自定义问题继承 ElementwiseProblem(在 out["F"] 中定义目标,在 out["G"] 中定义不等式约束 g(x) <= 0,在 out["H"] 中定义等式约束 h(x) = 0)。
  3. 选择算法 — 2-3 个目标用 NSGA-II,4 个及以上目标用 NSGA-III(需提供参考方向),单目标用 GA/DE/PSO/CMA-ES。参见 references/quick_reference.md 中的选择表。
  4. 设置终止条件 — ('n_gen', N)、('n_evals', N) 或基于容差的 get_termination("moo", ftol=1e-3, n_max_gen=500)(单目标使用 "soo";没有 "f_tol" 键)。
  5. 使用 minimize(problem, algorithm, termination, seed=1, verbose=True) 运行。
  6. 检查 result.X / result.F / result.G(或表示约束违反量的 result.CV)。
  7. 决策并可视化 — 使用 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)。

评论

支持 Markdown