1. optimize_ATLAS とは
optimize_ATLAS は、 Python の外部で実行される計算エンジン を評価関数として用いる最適化プログラムです。
典型的な対象は、
- Silvaco ATLAS などの TCAD
- Fortran / C / C++ で書かれた数値コード
- DLL / SO を介した高速計算
- 実験装置の制御と測定結果
です。
optimize_ATLAS は、これらを 「単なる y = f(x) の評価」 として最適化フレームワークに組み込みます。
2. 外部エンジン最適化が難しい理由
外部計算エンジンを用いた最適化は、 内部モデルとは本質的に異なる困難を伴います。
- 評価に時間がかかる(秒〜分)
- 途中で失敗することがある
- 評価値がノイジー
- 内部構造が見えない
- 再現性が環境に依存する
多くの最適化ツールは、 これらを想定していません。
optimize_ATLAS は、 これらを前提条件として受け入れる ために設計されています。
3. optimize_ATLAS の内部構造
optimize_ATLAS は、optimize_flex フレームワーク上で 以下の構成を取ります。
- optimize_ATLAS.py:解析シナリオ制御
- optimize_ATLAS_mf.py:外部実行対応 mf
- optimize_ATLAS_lib.py:ATLAS 固有 I/O・解析
最適化アルゴリズム(tkFit)や 制御・履歴管理(tkoptimize_flex)は、 外部エンジンの存在を一切知りません。
4. mf 層による外部エンジンの抽象化
mf 層(optimize_ATLAS_mf.py)の役割は、
「外部プロセスを、1 回の評価関数として見せる」
ことです。
内部では、
- パラメータを入力ファイルに反映
- 外部エンジンを実行
- ログファイルを生成
- 結果を読み取り、補間・照合
- 評価値 y_list を返す
という処理が行われます。
しかし最適化アルゴリズムから見れば、 すべてが「1 回の評価」 です。
5. lib 層の重要性
optimize_ATLAS_lib.py は、
- ATLAS 入力ファイル生成
- IV / DOS ログ解析
- 実測データとの対応付け
- 補間・再サンプリング
を担当します。
この層を分離することで、
- mf 層が肥大化しない
- 別の TCAD への移植が容易
という利点が生まれます。
6. 実行モードと実務フロー
optimize_ATLAS では、次の段階的フローを推奨します。
- plot:実測データ確認
- make_input_data:最適化用入力生成
- sim:外部エンジン単体確認
- lfit:線形パラメータ安定化
- fit:非線形最適化
- scan:尤度スキャン
途中で結果を確認しながら進めることが必須 です。
7. 最適化アルゴリズムの選択指針
外部エンジン最適化では、 評価回数を抑えることが最重要です。
- 初期探索:GA / Swarm
- 安定化:SIMPLEX
- 微調整:Nelder–Mead
- 高コスト対策:サロゲート最適化
勾配法は原則として適しません。
8. サロゲート最適化との関係
optimize_ATLAS は、 サロゲート最適化との相性が非常に良い プログラムです。
tkmlr を用いることで、
- 履歴データから代理モデルを学習
- 評価すべき点を賢く選択
- ATLAS 実行回数を大幅に削減
することが可能です。
これは、 外部エンジン最適化を現実的な時間で実行するための鍵 です。
9. optimize_mup / optimize_peakfit との使い分け
| 項目 | optimize_ATLAS | optimize_mup | optimize_peakfit |
|---|---|---|---|
| 評価関数 | 外部エンジン | 内部モデル | 内部モデル |
| パラメータ数 | 固定 | 固定 | 可変 |
| 計算コスト | 高 | 低〜中 | 中 |
| 主用途 | TCAD / 実験同定 | 物理モデル解析 | データ分解 |
10. まとめ
optimize_ATLAS は、
- 外部計算エンジンを含む最適化
- ノイジー・失敗前提の評価関数
- 高コスト問題
に対して、 安全かつ拡張性の高い解決策 を提供します。
optimize_flex フレームワークの中でも、 最も実戦的で強力なバリエーション と言えるでしょう。