仕組み
最適化ループ:- Parameters は最適化対象となる設計変数を定義します(例: 電極厚み、空隙率)
- Model は指定された動作条件のもとで、それらのパラメータを用いてシミュレーションを実行します
- Variables はシミュレーションから得られる時系列出力です(電圧、温度、容量)
- Metrics は変数からスカラー値を抽出します(終端電圧、最大温度、平均電流)
- Actions はメトリクスをどう扱うかを定義します(最大化、最小化、制約)
- Cost はアクションの結果を単一の目的関数にまとめてオプティマイザに渡します
設計パラメータ
設計パラメータは、オプティマイザが変化させることを許された自由度です。各パラメータには製造上の制約や材料特性によって決まる実現可能範囲(境界)があります。たとえば、電極厚みは から の間、活物質体積分率は から の間などです。 パラメータの選び方は、数の多さよりも重要です。影響力の大きい 2〜3 個のパラメータに現実的な境界を設定した方が、境界の緩い十数個を用意するよりも多くの知見が得られます。パラメータが物理的に結合している場合(たとえば空隙率と活物質分率の合計が 1 になるなど)は、その結合をオプティマイザに見つけさせるのではなく、問題定義の中に明示的にエンコードすべきです。メトリクス
メトリクスは、シミュレーションの時系列データを最適化可能なスカラー値へと変換します。「放電終了時の電圧はいくらか?」「最大温度はいくらか?」といった問いに答えます。ポイントメトリクス
シミュレーション中の特定の条件における値を抽出します:集約メトリクス
解全体にわたって統計量を計算します:合成メトリクス
派生量は、基本メトリクスを算術演算で組み合わせて構築されます。たとえば、パルス抵抗は電圧変化を電流で割ったものです:ステップおよびサイクルメトリクス
複数のステップやサイクルを持つ実験では、その軸に沿って展開されるメトリクスが必要です。たとえば、各サイクルの放電ステップ終了時に測定される容量は、単一の値ではなく容量フェード曲線を生成します。アクション
アクションは、オプティマイザが各メトリクスをどう扱うかを定義します:
制約は通常 ペナルティ関数 によって強制されます。制約が違反されると、違反量に比例した大きな項がコストに加算されます。これにより、制約付き問題は制約なしの問題に変換され、コスト最小化を行う任意のオプティマイザで扱えるようになります。
多目的最適化
ほとんどの設計問題は、競合する目標(エネルギー vs. パワー、容量 vs. 充電時間、性能 vs. 温度)のトレードオフを伴います。これらを組み合わせる方法は 2 通りあります:- 重み付き和: 重み を選び、 を最適化します。単純ですが、重みが暗黙のうちに嗜好をエンコードし、パレートトレードオフを隠してしまう可能性があります。
- 制約ベース: 主目的を最大化しつつ、他を有界に保つ(たとえば T_{\max} \leq 50\,^{\circ}\text{C} の制約の下でエネルギー密度を最大化する)。制約しきい値が設計要件に直接対応するため、多くの場合、より解釈しやすくなります。
例: エネルギー密度の最大化
この例は、古典的なバッテリー設計問題における全体的なワークフローを示します。問題の説明
電極厚みには基本的な設計トレードオフがあります:- 厚い電極は容量を増やしますが(単位面積あたりの活物質が多い)、リチウムがより長い距離を拡散する必要があるためレート特性が悪化します
- 薄い電極はパワー特性を改善しますが、総エネルギー貯蔵量は減少します
数学的定式化
最適化問題は次のようになります: 制約条件: ここで は正極の厚み、 は放電終了時の重量エネルギー密度、 は放電中のセル最大温度、 は温度安全上限(例: )です。 エネルギー密度はシミュレーションから次のように計算されます: ここで は電圧、 は電流(正 = 放電)、 は放電終了時刻、 はセル質量です。オプティマイザの動作
候補となる厚みごとに、シミュレーションが実行されメトリクスが評価されます:- モデルが電気化学方程式を解いて 、 などを得る
- におけるポイントメトリクスが最終的なエネルギー密度を抽出する
- 集約メトリクスがピーク温度を抽出する
- アクションがこれらをコストに変換する: 負の (最大化のため)に加えて、 の場合はペナルティを加算
- オプティマイザはこのコストを用いて次の候補を提案する
オプティマイザの選択
設計最適化はブラックボックス問題です。各評価が完全なシミュレーションとなるため、オプティマイザの選択は主にシミュレーションのコスト、パラメータ数、利用可能な並列性に依存します。
サロゲート手法(ベイズ最適化、TuRBO、SOBER)は、コストの高いシミュレーションを節約するためにラウンドごとにより多くの作業を行います。集団ベースの手法(CMA-ES、差分進化、粒子群最適化)は反復ごとのコストが低く、より高速な目的関数に適しています。
シミュレーションを並列に実行する場合、ウォールクロック時間は評価の総数ではなく最適化ラウンドの数によって決まります。TuRBO はこのような状況のために設計されています。最初のラウンドで利用可能なワーカーをすべて使用するように、ウォームアップサイズをバッチ幅に合わせて設定してください。
SOBER は、求積法スタイルのバッチ選択を行いたい場合に有用です。純粋な最適化用途では、TuRBO、ベイズ最適化、または差分進化を推奨します。