> ## 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.

# 最適化の概要

> マルチスタートのベイズ最適化と進化的オプティマイザを使い、バッテリー設計と充電プロトコルの最適パラメータを自動的に探索します

# 最適化

Ionworks Studio の最適化機能を使用すると、バッテリーモデルに最適なパラメータ値を自動的に見つけることができます。異なるパラメータの組み合わせで多数のシミュレーションを手動で実行する代わりに、最適化エンジンがパラメータ空間をインテリジェントに探索し、制約条件を満たしながら目的関数を最大化または最小化する値を見つけます。

## 最適化を使用すべき場面

最適化は以下のような場面に最適です:

* **充電プロトコル設計** - リチウム析出を回避しながら充電時間を最小化する最適な充電電流と電圧プロファイルを見つける
* **セル設計** - エネルギー密度や出力特性を最大化するために、電極の厚さ、空隙率、その他の幾何学的パラメータを最適化する
* **多目的トレードオフ** - 容量と充電時間、またはエネルギーと出力など、競合する目標のバランスを取る

## 最適化の仕組み

最適化プロセスは以下の手順で進みます:

1. **最適化に名前を付ける**（オプション） - 実行に説明的な名前を付けるか、空白のままにして自動生成させます
2. **セルとモデルを選択する** - 最適化対象のセル仕様とパラメータ化されたモデルを選択します
3. **目的関数を定義する** - 最大化または最小化したい対象を指定し、遵守すべき制約条件を追加します
4. **パラメータを定義する** - 最適化するモデルパラメータを選択し、その範囲（最小値と最大値）を設定します
5. **アルゴリズムを設定する** - マルチスタート数と最大反復回数を設定します
6. **最適化を実行する** - アルゴリズムがパラメータ空間を探索し、指定された目的関数と制約条件に対する最適値を見つけます
7. **結果を確認する** - 最適化された結果をベースラインと比較し、反復履歴を確認します

### マルチスタート最適化

最適化問題には複数の局所最適解が存在する場合があります。大域的最適解を見つける可能性を高めるため、Ionworks は**マルチスタート最適化**を使用します:

* 異なる初期点から複数の最適化を開始します
* 各実行はそれぞれの局所最適解に収束します
* すべての実行の中から最良の結果が最終的な解として選択されます

デフォルトのマルチスタート数は選択したオプティマイザによって異なります。Differential Evolution のようなグローバルオプティマイザは、探索空間を広範囲に自律探索するため、デフォルトは 1 マルチスタートです。XNES や CMA-ES のようなローカルオプティマイザはデフォルトで 4 です。網羅性と計算時間のバランスを調整するために、この値はいつでも変更できます。マルチスタート実行間での CPU の割り当て方法については、[並列化](/ja/optimize/parallelization)を参照してください。

## 最適化テンプレート

Ionworks は、すぐに始められるように事前設定された**最適化テンプレート**を提供しています。テンプレートは個々のプロジェクトにスコープされているため、各プロジェクトが特定のニーズに合わせた独自のテンプレートセットを持つことができます。組み込みの**システムテンプレート**（Design と Charge）は、すべてのプロジェクトで読み取り専用の出発点として利用可能です。

### 設計最適化

電極の厚さや材料特性などのセル設計パラメータを最適化し、目標とする性能特性を達成します。

**一般的なユースケース:**

* 所定のフォームファクタに対してセル容量を最大化する
* 急速充電のための電極厚み比を最適化する
* エネルギー密度と出力特性のバランスを取る

### 充電最適化

安全性の制約条件を遵守しながら、充電時間を最小化するための充電プロトコルパラメータを最適化します。

**一般的なユースケース:**

* 多段定電流充電
* 0-80% 充電時間の最小化
* リチウム析出の回避（アノード電位を正に維持）

プロジェクト間で設定を再利用するために、[テンプレートをプロジェクト間でコピー](/ja/optimize/templates#copying-templates-between-projects)することもできます。

## 主要な概念

### パラメータ

パラメータは最適化したい値です。各パラメータには以下があります:

* **名前** - 変動させるモデルパラメータ（例: "Positive electrode thickness \[m]"）
* **範囲** - 許容される最小値と最大値
* **初期値** - 最適化の開始点（デフォルトではモデルの値）

### 目的関数

目的関数は達成したい目標を定義します。各目的関数には以下が含まれます:

* **実験** - 実行するシミュレーションプロトコル（UCP 形式）
* **ゴール** - 最大化または最小化する対象
* **制約条件** - 遵守すべき制限

### メトリクス

メトリクスはシミュレーション結果から値を抽出し、ゴールや制約条件に使用します:

| メトリクスタイプ       | 説明              | 使用例            |
| -------------- | --------------- | -------------- |
| **Maximum**    | シミュレーション中の最大値   | ピーク温度          |
| **Minimum**    | シミュレーション中の最小値   | 最小アノード電位       |
| **Mean**       | 時間平均値           | 平均出力           |
| **Sum**        | 累積合計値           | エネルギースループット    |
| **Time**       | 特定の時間点での値       | 最終容量           |
| **SOC**        | 特定の充電状態での値      | SOC 80% での電圧   |
| **Voltage**    | 特定の電圧での値        | 4.2V に達するまでの時間 |
| **PointBased** | 単一ポイントの値（時系列なし） | セルコスト          |

### 制約条件

制約条件は遵守すべき制限を定義します。制約条件に違反した場合、コスト関数にペナルティが追加されます。各制約条件には以下があります:

* **Action** - "GreaterThan" または "LessThan"
* **Value** - しきい値
* **Penalty** - 違反に対するペナルティの重み（デフォルト: 1e6）

## アルゴリズム設定

<a id="optimizer-selection" />

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

Ionworks は複数の最適化アルゴリズムをサポートしています。デフォルトは **Differential Evolution** で、手動チューニングなしに幅広い問題に対して効果的に機能するグローバルオプティマイザです。

| オプティマイザ                           | タイプ          | 最適な用途                                  | デフォルトマルチスタート数 |
| --------------------------------- | ------------ | -------------------------------------- | ------------- |
| **Differential Evolution**（デフォルト） | 集団ベース、グローバル  | 汎用最適化; ノイズの多いまたは多峰性のランドスケープ            | 1             |
| **XNES**                          | 集団ベース        | 汎用; 滑らかなランドスケープ                        | 4             |
| **CMA-ES**                        | 集団ベース        | 困難な非分離問題                               | 4             |
| **PSO**                           | 集団ベース、グローバル  | 群知能による広範な探索                            | 1             |
| **Nelder-Mead**                   | 単一点、勾配フリー    | 単純な問題での高速収束; 局所最適解に陥る可能性あり             | 4             |
| **Bayesian Optimization**         | サロゲート（ガウス過程） | 高コストなシミュレーション、パラメータ約 10 個以下、評価予算が小さい場合 | 1             |
| **TuRBO**                         | サロゲート、信頼領域   | 並列バッチで評価される高コストなシミュレーション; 高次元にもスケール    | 1             |
| **SOBER**                         | サロゲート、バッチ求積  | 求積スタイルのバッチ選択が望ましい広い並列バッチ               | 1             |

Differential Evolution や PSO のようなグローバルオプティマイザは探索空間を広範囲に自律探索するため、通常 1 マルチスタートで十分です。ローカルオプティマイザは局所最適解に陥ることを避けるために、複数のマルチスタートが有効です。サロゲートオプティマイザは目的関数の確率モデルを構築するため、すべての評価を有効活用できます。各シミュレーションが高コストな場合に最適な選択肢です。

### サロゲートオプティマイザを選ぶタイミング

サロゲート手法はシミュレーションを節約するために、*各ラウンド*でより多くの計算を行います。

* **Bayesian Optimization** — 逐次的でサンプル効率が高い手法。各評価が高コストで、パラメータが 10 個以下、数十回のシミュレーションしか実行できない場合に使用してください。
* **TuRBO** — 並列バッチと高次元向けに設計された信頼領域ベイズ最適化。最初のラウンドで利用可能なワーカーをすべて活用できるよう、ウォームアップサイズを並列バッチ幅と一致させてください。
* **SOBER** — 求積スタイルの再結合を用いたバッチベイズ最適化。広く多様なバッチが必要な場合に有用です。純粋に最良コストを目指す最適化では、TuRBO または Bayesian Optimization を優先してください。

各アルゴリズムが効果を発揮する条件についての詳細は、[設計最適化ガイド](/ja/guide/optimize/design-optimization#choosing-an-optimizer)を参照してください。

### アルゴリズムパラメータ

最適化アルゴリズムを調整できます:

* **Multistarts** - 並列最適化実行の数（1-50）。デフォルトはオプティマイザによって異なります。グローバルオプティマイザのデフォルトは 1、ローカルオプティマイザのデフォルトは 4 です。
* **Max Iterations** - 各実行の最大反復回数（10-1000、デフォルト: 100）
* **集団サイズ**（Differential Evolution および PSO） - 1 世代あたりに評価される候補数。デフォルトはフィットパラメータ数に応じてスケールし、高次元問題で 1 世代のワーカー需要が膨れ上がることを防ぐため **40 で上限が設定されます**。詳細は[集団サイズ](/ja/optimize/running-optimization#集団サイズ)を参照してください。

マルチスタート数を増やすと信頼性が向上しますが、時間がかかります。反復回数を増やすとより精密な収束が可能になりますが、単純な問題では不要な場合があります。

## 次のステップ

* [最適化テンプレート](/ja/optimize/templates)で利用可能なテンプレートについて学ぶ
* [最適化の実行](/ja/optimize/running-optimization)のガイドでステップバイステップの手順を確認する
