1. このページの目的
optimize_flex には、一般的な最適化ライブラリと比べて 多くの最適化アルゴリズム が実装されています。
これは冗長性ではなく、 研究現場で必要な選択肢 を意図的に残した結果です。
このページでは、
- 各アルゴリズムの性質
- 得意・不得意
- どの段階で使うべきか
を実務目線で整理します。
2. optimize_flex の基本方針
optimize_flex では、
- 「最適なアルゴリズム」は存在しない
- 問題ごとに使い分ける
という前提に立っています。
そのため、
- アルゴリズムを簡単に切り替えられる
- 同じ問題を別手法で再検証できる
設計になっています。
3. SIMPLEX(独自実装)
optimize_flex の標準アルゴリズムです。
- 勾配不要
- ノイズに比較的強い
- 実装が単純で挙動が分かりやすい
最初に試すべきアルゴリズム であり、
- optimize_mup
- optimize_peakfit
- optimize_ATLAS
すべてで有効です。
4. SciPy minimize 系アルゴリズム
optimize_flex では、 SciPy の minimize() に含まれる 複数の手法を利用できます。
- Nelder–Mead
- Powell
- BFGS(制約付きで注意)
これらは、
- 局所探索
- 微調整
に向いています。
初期値が良い場合にのみ使用 してください。
5. 線形最小二乗法(lfit)
optimize_flex では、 線形に分離できるパラメータを 必ず線形最小二乗で処理 します。
これはアルゴリズムではなく、 設計思想 です。
- 計算が高速
- 解が一意
- 非線形探索を安定化
lfit を省略すると、 最適化全体の品質が低下します。
6. GA(遺伝的アルゴリズム)
GA は、
- 多峰性
- 初期値不明
- 探索空間が広い
問題に強い手法です。
一方で、
- 評価回数が多い
- 収束が遅い
という欠点もあります。
「最初の粗探索」に限定して使う のが基本です。
7. Swarm(群知能最適化)
Swarm 系アルゴリズムは、 GA よりも
- 連続パラメータ
- 低次元
に向いています。
特に、
- optimize_peakfit
- optimize_ATLAS の初期探索
で有効です。
8. REMC(レプリカ交換モンテカルロ)
REMC は、
- 局所解が多い
- 障壁が高い
問題に対して有効です。
ただし、
- 計算コストが高い
- 実装が複雑
ため、 慎重に使う必要 があります。
9. サロゲート最適化(tkmlr)
サロゲート最適化は、
- 評価関数が非常に高コスト
- 外部エンジン最適化
における切り札です。
tkmlr を用いることで、
- 過去の評価履歴を学習
- 有望点のみを評価
する戦略が取れます。
これは、 アルゴリズムを置き換えるものではなく補助 である点が重要です。
10. 実務的な使い分けまとめ
| 段階 | 推奨手法 |
|---|---|
| 初期探索 | GA / Swarm |
| 安定化 | SIMPLEX |
| 微調整 | Nelder–Mead / Powell |
| 高コスト対策 | サロゲート最適化 |
11. まとめ
optimize_flex に多くのアルゴリズムが存在するのは、
- 問題が多様である
- 研究では「試す」ことが重要
だからです。
アルゴリズムを選ぶこと自体が、研究の一部 であるという思想が、 optimize_flex の根底にあります。