> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ionworks.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 設計最適化

> バッテリー設計最適化の数学的定式化: パラメータ、メトリクス、アクション、ペナルティ制約、多目的トレードオフ

設計最適化は、実験データを必要とせずに性能目標を満たすバッテリー設計パラメータを見つけます。モデルを測定にフィッティングする代わりに、達成したい内容を定義し、オプティマイザに繰り返しシミュレーションを通じて設計空間を探索させます。

## 仕組み

```mermaid theme={null}
flowchart LR
    subgraph Optimizer
        P[Parameters]
    end

    subgraph Simulation
        M[Model] --> S[Solution]
    end

    subgraph Evaluation
        S --> V[Variables]
        V --> Met[Metrics]
        Met --> A[Actions]
        A --> C[Cost]
    end

    P --> M
    C --> P
```

最適化ループ:

1. **Parameters** は最適化対象となる設計変数を定義します（例: 電極厚み、空隙率）
2. **Model** は指定された動作条件のもとで、それらのパラメータを用いてシミュレーションを実行します
3. **Variables** はシミュレーションから得られる時系列出力です（電圧、温度、容量）
4. **Metrics** は変数からスカラー値を抽出します（終端電圧、最大温度、平均電流）
5. **Actions** はメトリクスをどう扱うかを定義します（最大化、最小化、制約）
6. **Cost** はアクションの結果を単一の目的関数にまとめてオプティマイザに渡します

## 設計パラメータ

設計パラメータは、オプティマイザが変化させることを許された自由度です。各パラメータには製造上の制約や材料特性によって決まる実現可能範囲（境界）があります。たとえば、電極厚みは $25\,\mu\text{m}$ から $150\,\mu\text{m}$ の間、活物質体積分率は $0.4$ から $0.85$ の間などです。

パラメータの選び方は、数の多さよりも重要です。影響力の大きい 2〜3 個のパラメータに現実的な境界を設定した方が、境界の緩い十数個を用意するよりも多くの知見が得られます。パラメータが物理的に結合している場合（たとえば空隙率と活物質分率の合計が 1 になるなど）は、その結合をオプティマイザに見つけさせるのではなく、問題定義の中に明示的にエンコードすべきです。

## メトリクス

メトリクスは、シミュレーションの時系列データを最適化可能なスカラー値へと変換します。「放電終了時の電圧はいくらか？」「最大温度はいくらか？」といった問いに答えます。

### ポイントメトリクス

シミュレーション中の特定の条件における値を抽出します:

| メトリクス   | 値を抽出するタイミング | 例                  |
| ------- | ----------- | ------------------ |
| Time    | 特定の時刻       | $t = 100$ s における電圧 |
| SOC     | 特定の充電状態     | 50% SOC における電圧     |
| Voltage | 特定の電圧       | $V = 3.0$ V における容量 |

### 集約メトリクス

解全体にわたって統計量を計算します:

| メトリクス   | 計算内容 | 例         |
| ------- | ---- | --------- |
| Mean    | 平均値  | パルス中の平均電流 |
| Maximum | ピーク値 | 最大温度      |
| Minimum | 最小値  | 最小電圧      |
| Sum     | 累積合計 | 合計エネルギー   |

### 合成メトリクス

派生量は、基本メトリクスを算術演算で組み合わせて構築されます。たとえば、パルス抵抗は電圧変化を電流で割ったものです:

$$
R = \frac{V_{\text{after}} - V_{\text{before}}}{\bar{I}}
$$

### ステップおよびサイクルメトリクス

複数のステップやサイクルを持つ実験では、その軸に沿って展開されるメトリクスが必要です。たとえば、各サイクルの放電ステップ終了時に測定される容量は、単一の値ではなく容量フェード曲線を生成します。

## アクション

アクションは、オプティマイザが各メトリクスをどう扱うかを定義します:

| アクション       | 動作                         |
| ----------- | -------------------------- |
| Maximize    | メトリクス値を最大化                 |
| Minimize    | メトリクス値を最小化                 |
| GreaterThan | 制約: メトリクスがしきい値を超えなければならない  |
| LessThan    | 制約: メトリクスがしきい値を下回らなければならない |

制約は通常 **ペナルティ関数** によって強制されます。制約が違反されると、違反量に比例した大きな項がコストに加算されます。これにより、制約付き問題は制約なしの問題に変換され、コスト最小化を行う任意のオプティマイザで扱えるようになります。

### 多目的最適化

ほとんどの設計問題は、競合する目標（エネルギー vs. パワー、容量 vs. 充電時間、性能 vs. 温度）のトレードオフを伴います。これらを組み合わせる方法は 2 通りあります:

* **重み付き和**: 重み $w_i$ を選び、$\sum_i w_i f_i$ を最適化します。単純ですが、重みが暗黙のうちに嗜好をエンコードし、パレートトレードオフを隠してしまう可能性があります。
* **制約ベース**: 主目的を最大化しつつ、他を有界に保つ（たとえば $T_{\max} \leq 50\,^{\circ}\text{C}$ の制約の下でエネルギー密度を最大化する）。制約しきい値が設計要件に直接対応するため、多くの場合、より解釈しやすくなります。

## 例: エネルギー密度の最大化

この例は、古典的なバッテリー設計問題における全体的なワークフローを示します。

### 問題の説明

電極厚みには基本的な設計トレードオフがあります:

* **厚い電極**は容量を増やしますが（単位面積あたりの活物質が多い）、リチウムがより長い距離を拡散する必要があるためレート特性が悪化します
* **薄い電極**はパワー特性を改善しますが、総エネルギー貯蔵量は減少します

温度上限の制約の下で、与えられた放電レートにおけるエネルギー密度を最大化する厚みを求めます。

### 数学的定式化

最適化問題は次のようになります:

$$
\max_{L_{\text{pos}}} \; E_g(L_{\text{pos}})
$$

制約条件:

$$
L_{\text{pos}}^{\min} \leq L_{\text{pos}} \leq L_{\text{pos}}^{\max}
$$

$$
T_{\max}(L_{\text{pos}}) \leq T_{\text{limit}}
$$

ここで $L_{\text{pos}}$ は正極の厚み、$E_g$ は放電終了時の重量エネルギー密度、$T_{\max}$ は放電中のセル最大温度、$T_{\text{limit}}$ は温度安全上限（例: $323\,\text{K}$）です。

エネルギー密度はシミュレーションから次のように計算されます:

$$
E_g = \frac{\int_0^{t_f} V(t) \cdot I(t) \, dt}{m_{\text{cell}}}
$$

ここで $V(t)$ は電圧、$I(t)$ は電流（正 = 放電）、$t_f$ は放電終了時刻、$m_{\text{cell}}$ はセル質量です。

### オプティマイザの動作

候補となる厚みごとに、シミュレーションが実行されメトリクスが評価されます:

1. モデルが電気化学方程式を解いて $V(t)$、$T(t)$ などを得る
2. $t_f$ におけるポイントメトリクスが最終的なエネルギー密度を抽出する
3. 集約メトリクスがピーク温度を抽出する
4. アクションがこれらをコストに変換する: 負の $E_g$（最大化のため）に加えて、$T_{\max} > T_{\text{limit}}$ の場合はペナルティを加算
5. オプティマイザはこのコストを用いて次の候補を提案する

収束解はエネルギー密度と熱制約のバランスを取ります。厚い電極はより多くのエネルギーを貯蔵しますが、オーミック損失と反応速度損失によってより多くの熱を発生させます。

## オプティマイザの選択

設計最適化はブラックボックス問題です。各評価が完全なシミュレーションとなるため、オプティマイザの選択は主にシミュレーションのコスト、パラメータ数、利用可能な並列性に依存します。

| 状況                               | 推奨されるアプローチ                                      |
| -------------------------------- | ----------------------------------------------- |
| 多数のパラメータを持つ、安価で高速なシミュレーション       | 小さな個体数で多世代にわたる進化的探索(差分進化)                       |
| 高コストなシミュレーション、10 個以下のパラメータ、小さな予算 | ベイズ最適化 — サロゲートモデルにより各評価を最大限に活用                  |
| 高コストなシミュレーションを広いバッチサイズで並列評価      | 信頼領域ベイズ最適化(TuRBO) — 大きなバッチサイズや高次元へとサロゲート効率をスケール |
| 問題構造に関する強い事前情報がない                | CMA-ES、堅牢で汎用的なデフォルト                             |

サロゲート手法(ベイズ最適化、TuRBO、SOBER)は、コストの高いシミュレーションを節約するためにラウンドごとにより多くの作業を行います。集団ベースの手法(CMA-ES、差分進化、粒子群最適化)は反復ごとのコストが低く、より高速な目的関数に適しています。

シミュレーションを並列に実行する場合、ウォールクロック時間は評価の総数ではなく最適化ラウンドの数によって決まります。TuRBO はこのような状況のために設計されています。最初のラウンドで利用可能なワーカーをすべて使用するように、ウォームアップサイズをバッチ幅に合わせて設定してください。

<Note>
  SOBER は、求積法スタイルのバッチ選択を行いたい場合に有用です。純粋な最適化用途では、TuRBO、ベイズ最適化、または差分進化を推奨します。
</Note>

## ベストプラクティス

**パラメータの選択** — 目的関数に大きな影響を与えるパラメータを選びます。物理的・製造的な限界を反映した境界を使用し、結合しているパラメータ（例: 空隙率 $= 1 - $ 活物質分率）は独立したものとして扱うのではなく、リンクさせてください。

**動作条件** — 実際の使用状況を反映する条件でシミュレーションしてください。1C 放電向けに最適化されたセルは、5C ではうまく動作しないかもしれません（逆も同様）。休止期間や現実的なデューティサイクルが重要な場合は、それらを含めてください。

**シンプルに始める** — 単一の明確な目的を持つ 2〜3 個のパラメータの方が、収束に何時間もかかる高次元問題よりも設計空間について多くを教えてくれます。シンプルな版が期待通りに動作することを確認してから、複雑さを追加してください。

**物理的に検証する** — オプティマイザは、数学的には最適でも物理的には非現実的なパラメータを平然と返してきます。解は常に物理的直感や既知の設計制約に照らして妥当性をチェックしてください。
