最適化アルゴリズムは、設計変数と応答に対する制約条件が適用される目的関数を最小化または最大化することを目標としています。
解析対象となる最適化は次のように表現されます:
最小化: |
|
(目的関数) |
適用条件: |
|
(不等式の制約条件) |
|
|
(等式の制約条件) (設計の制限値) |
|
|
|
関数
は、次の形式を持つと想定されます。
この定式化にある各値の意味は次のとおりです:
-
は、実数値による設計変数のn次元ベクトルです。
-
と
はそれぞれ、設計変数の下限値と上限値です。
-
は、ソルバーでシステムを表現するために使用する状態のセットです。
-
は、以前のシミュレーションで関数に得られた値です。最初のシミュレーションの場合、この値は必ずゼロです。
最適化処理の目標は、制約条件
を満たしながら、目的関数
の値を最小にすることです。制約条件は本質的に非線形であると想定します。制約条件は、不等式の制約条件であっても等式の制約条件であってもかまいません。
と
によって、
の要素の下限値と上限値を定義します。
の許容値すべてのセットを問題の設計空間と呼びます。設計ポイントまたはサンプルポイントは、設計空間にある複数の値で構成する特定のセットです。
すべての制約条件を満足する設計ポイントのみが実現可能と見なされます。これに対応して、制約条件の1つでも違反している設計ポイントは実現不可能と見なされます。ここでの目標は、当然のことながら実現可能な設計を見つけることです。場合によっては、制約条件が存在するために、実現可能な設計が見つからないことがあります。
上記の最適化問題を解析するために、さまざまな手法を使用できます。これらの手法はすべて、設計
について何らかの形で反復計算を実行することで、より良い解を探します。このプロセスを記述した一般的なアルゴリズムは次のように機能します:
- 設計変数
の初期値を最適化エンジンに渡します。
- シミュレーションを実行することで、応答量
を計算します。
- 何らかのアルゴリズム(場合によっては感度ベースの手法)を適用して、目的関数と実現不可能性の大きさの一方または両方を小さくする新しい
を生成します。
- 感度ベースの手法を使用する場合は、設計
に対する関数
の感度を最適化エンジンで計算する必要もあります。このため、最適化エンジンは偏導関数
のマトリックスを必要とします。
- 最適化エンジンで最小値が見つかるか、反復計算の上限を超えたと判定されるまで、複数の新しい設計(
)を最適化エンジンで繰り返し生成します。
特定の目的の値を最大にすることが望ましいことも考えられます。その場合は、計算する目的の論理を反転することにより、汎用性を失うことなく、目的の値を最小化する問題に変換できます。したがって、関数
の最大化が必要な場合は、コスト関数を
として定義することで、この関数を最小化する問題に変換できます。