最適化プログラムの作り方

optimize_flex フレームワークを用いた設計・実装指針

1. このページの目的

このページでは、optimize_flex フレームワークを用いて 新しい最適化プログラム(optimize_xxx)を作成する手順と設計思想 を解説します。

対象読者は、

です。

2. 基本方針 ― まず決めるべきこと

新しい最適化プログラムを作る前に、 必ず次の問いに答えてください。

これらの答えによって、 optimize_mup 型 / peakfit 型 / ATLAS 型の どれに近いかが自然に決まります。

3. 必要なファイル構成

新しい最適化プログラムは、原則として 次の 3 ファイル構成 で作成します。

内部モデルのみの場合、lib は不要なこともあります。

4. optimize_xxx.py の役割

optimize_xxx.py は、 「最適化そのものを書かない」 ことが最重要です。

このファイルに書くのは、

であり、

一切書きません。

この制約を守ることで、 プログラムの寿命が大きく延びます。

5. optimize_xxx_mf.py の設計指針

mf 層は、optimize_flex における 最重要ファイル です。

ここで行うことは一つだけです。

「どんなモデルであっても、最適化可能な形に変換する」

mf 層では、最終的に

f(x) → y_list

という関数を提供します。

内部で行ってよい処理は、

です。

逆に、

をここに書いてはいけません。

6. lib 層を書くべき場合

次のような処理が必要な場合、 optimize_xxx_lib.py を分離してください。

lib 層は、 「最適化とは無関係な雑務」 を引き受ける場所です。

mf 層を読みやすく保つために、 積極的に分離することを推奨します。

7. 線形・非線形パラメータの分離

可能な限り、

に分離してください。

これは、

を大きく改善します。

8. 実装時のチェックリスト

これらが満たされていれば、 「optimize_flex 準拠」 と言えます。

9. まとめ

optimize_flex における最適化プログラム作成は、

です。

この設計思想を守れば、

コードを書き直す必要はありません。

次のページでは、 外部計算エンジンを用いる場合の 具体的な注意点と実装パターン を解説します。