alterlab-pymoo について
alterlab-pymooは、Python最適化フレームワークpymooを使うためのスキルです。単一・多目的問題を扱い、進化アルゴリズム、制約、パレート解の比較、意思決定を支援します。
主な機能
- 01単一・多目的最適化
- 02NSGA-II/IIIなどの進化アルゴリズム
- 03制約付き問題への対応
- 04ベンチマーク問題とアルゴリズム評価
- 05パレート解の可視化と意思決定
活用シーン
- 01相反する目的間のトレードオフ解の探索
- 02ZDT、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)、カスタマイズ可能な遺伝的オペレーター、多基準意思決定手法を使用して、単一目的および多目的の最適化を解決できます。目的が競合する問題で、トレードオフ解(パレートフロント)を見つけるのに優れています。
このスキルを使用する場面
次の場合にこのスキルを使用してください。
- 1つまたは複数の目的を持つ最適化問題を解く
- パレート最適解を見つけ、トレードオフを分析する
- 進化アルゴリズム(GA、DE、PSO、NSGA-II/III)を実装する
- 制約付き最適化問題に取り組む
- 標準的なテスト問題(ZDT、DTLZ、WFG)でアルゴリズムをベンチマークする
- 遺伝的オペレーター(交叉、突然変異、選択)をカスタマイズする
- 高次元の最適化結果を可視化する
- 複数の競合する解から意思決定する
- バイナリ、離散、連続、または混合変数の問題を扱う
対象外
| シナリオ | 代わりに使用 |
|---|---|
| キューや共有リソースを時間経過とともにシミュレーションする(離散イベントシミュレーション) | alterlab-simpy |
| 機械学習モデルのハイパーパラメーターを探索する(グリッド/ランダムサーチ、CV) | 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:履歴を含むアルゴリズムオブジェクト
問題の種類
単一目的: 最小化または最大化する目的関数が1つ 多目的: 競合する目的関数が2〜3個 → パレートフロント 多目的(4目的以上): 目的関数が4個以上 → 高次元のパレートフロント 制約付き: 目的関数と不等式/等式制約 動的: 時間とともに変化する目的関数または制約
コアワークフロー
- 問題の種類を選ぶ — 単一目的、多目的(目的関数が2〜3個)、多目的(目的関数が4個以上)、または制約付きから選びます。
- 問題を定義または選択する —
get_problem(...)を使って組み込み問題を選ぶか、カスタム問題用にElementwiseProblemをサブクラス化します(目的関数はout["F"]、不等式制約g(x) <= 0はout["G"]、等式制約h(x) = 0はout["H"]に格納します)。 - アルゴリズムを選ぶ — 目的関数が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 を適用して優先するパレート解を選び、
Scatter/PCP/Petalでプロットします。
再現性を確保するために常に seed を設定し、目的関数のスケールが異なる場合は正規化し、NSGA-III には参照方向を指定してください。
ルーティング — 参照先
| 必要なもの… | 参照先 |
|---|---|
| 7 つすべてのワークフロー(単一目的/多目的/多数目的、カスタム問題、制約処理、MCDM による意思決定、可視化)の完全なコピー&ペースト可能な例 | 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 が復活しました)を対象としています。