1. optimize_mup とは
optimize_mup は、パラメータ数が事前に決まっている物理モデル を対象とした最適化プログラムです。
代表的な用途として、
- 移動度の温度依存性解析
- 散乱モデル(phonon, impurity 等)の同定
- 物理モデルパラメータの定量評価
が挙げられます。
モデル構造は解析者が明示的に与え、 「モデルは正しい」という前提でパラメータを推定 する点が大きな特徴です。
2. 対象とする最適化問題
optimize_mup が対象とする問題は、次のような性質を持ちます。
- パラメータ数は固定
- 各パラメータには物理的意味がある
- 初期値・範囲がある程度見積もれる
- 評価関数は非線形
このような問題では、 「ブラックボックス探索」よりも物理的妥当性 が重要になります。
3. 内部構造と使用ライブラリ
optimize_mup は、optimize_flex フレームワーク上に 以下の構成で実装されています。
- optimize_mup.py:アプリケーション層
- optimize_mup_mf.py:固定次元モデル用 mf
- mobility_pi_model.py:モデル API 定義
- mobility_pi.py:物理モデル実装
物理モデルの詳細は model 側に閉じており、 最適化コードはモデルの数式を知りません。
4. 実行モード(mode)の考え方
optimize_mup では、解析を段階的に進めるため、 複数の mode が用意されています。
4.1 plot / sim
- 入力データの確認
- 初期パラメータでのモデル挙動確認
この段階で物理的に不自然な場合、先に進みません。
4.2 lfit(線形最小二乗)
線形に分離可能なパラメータを、
- 非線形パラメータ固定
- 線形最小二乗で一括最適化
することで、最適化の安定性を大きく向上させます。
4.3 fit(非線形最適化)
SIMPLEX や Nelder–Mead、GA などを用いて 非線形パラメータを最適化します。
4.4 scan(尤度スキャン)
パラメータを 1 つずつ固定して再最適化を行い、 誤差分布を直接可視化します。
5. 最適化アルゴリズムの使い分け
optimize_mup では、問題の性質に応じて 最適化アルゴリズムを切り替えます。
- SIMPLEX:標準・安定
- Nelder–Mead:微調整向き
- GA / Swarm:多峰性対策
勾配法は原則として推奨されません。
6. 誤差評価の考え方
optimize_mup では、共分散行列を直接計算しません。
その代わり、評価関数を
f(x) ≈ −2 log L(x)
と解釈し、
- 非対称誤差
- 分布の歪み
- 物理制約の影響
を尤度スキャンによって評価します。
7. optimize_peakfit / optimize_ATLAS との違い
| 項目 | optimize_mup | optimize_peakfit | optimize_ATLAS |
|---|---|---|---|
| パラメータ数 | 固定 | 可変 | 固定 |
| 評価関数 | Python 内部 | Python 内部 | 外部エンジン |
| 主用途 | 物理モデル同定 | データ分解 | TCAD 同定 |
8. まとめ
optimize_mup は、
- 物理モデルを信じたい
- パラメータに意味がある
- 誤差の非対称性を正しく評価したい
という研究に最適なプログラムです。
次のページでは、 可変パラメータ数問題を扱う optimize_peakfit について解説します。