シミュレーションベース最適化(単にシミュレーション最適化とも呼ばれる)は、最適化手法をシミュレーションモデリングと分析に統合する手法です。シミュレーションの複雑さゆえに、目的関数の評価は困難かつ高コストになる場合があります。通常、基礎となるシミュレーションモデルは確率的であるため、目的関数は統計的推定手法(シミュレーション手法では出力分析と呼ばれる)を用いて推定する必要があります。
システムが数学的にモデル化されると、コンピュータベースのシミュレーションによってその挙動に関する情報が得られます。パラメトリックシミュレーション手法は、システムのパフォーマンスを向上させるために使用できます。この手法では、他のパラメータを一定に保ったまま各変数の入力を変化させ、設計目標への影響を観察します。これは時間のかかる手法であり、パフォーマンスを部分的に向上させます。最小限の計算と時間で最適な解を得るために、問題を反復的に解き、各反復で解が最適解に近づきます。このような手法は、「数値最適化」、「シミュレーションベース最適化」[ 1 ] 、または複数の目的が関係する場合に使用される「シミュレーションベース多目的最適化」として知られています。
シミュレーション実験では、入力変数のさまざまな値がシステムに与える影響を評価することが目的です。しかし、システムの結果の観点から、入力変数の最適な値を見つけることに関心がある場合もあります。一つの方法として、考えられるすべての入力変数に対してシミュレーション実験を実行することが考えられます。しかし、このアプローチは、いくつかの状況が考えられるため、常に実用的とは限らず、各シナリオに対して実験を実行することが困難になるだけです。たとえば、入力変数の可能な値が多すぎる場合や、シミュレーションモデルが複雑すぎて、多数の入力変数値に対して実行するのコストが高すぎる場合があります。このような場合、考えられるすべての値を試すのではなく、入力変数の最適な値を反復的に見つけることが目的となります。このプロセスはシミュレーション最適化と呼ばれます。[ 2 ]
図1に従って、決定変数の種類に基づいて、特定のシミュレーションベースの最適化手法を選択することができます。[ 3 ]

最適化は、オペレーションズリサーチの2つの主要な分野に存在する。
パラメータ最適化(静的) – 目的は、すべての状態に対して「静的」なパラメータの値を見つけ、関数を最大化または最小化することです。この場合、線形計画法などの数理計画法を使用できます。このシナリオでは、パラメータにノイズが含まれている場合や、問題の評価に複雑さのために過剰なコンピュータ時間が必要になる場合に、シミュレーションが役立ちます。[ 4 ]
最適化制御(動的) – これは主にコンピュータサイエンスと電気工学で使用されます。最適制御は状態ごとに行われ、結果はそれぞれの状態で変化します。数理計画法と動的計画法の両方を使用できます。このシナリオでは、シミュレーションによってランダムサンプルを生成し、複雑で大規模な問題を解決できます。[ 4 ]
シミュレーション最適化におけるいくつかの重要なアプローチについて以下に説明します。 [ 5 ] [ 6 ]
順位付けおよび選択手法は、選択肢が固定され既知である問題向けに設計されており、シミュレーションを用いてシステム性能を推定します。シミュレーション最適化の場面では、無差別領域アプローチ、最適な計算予算配分、知識勾配アルゴリズムなどの手法が適用可能です。
応答曲面法では、入力変数と応答変数の間の関係を見つけることが目的です。プロセスは、線形回帰モデルを当てはめようとするところから始まります。P値が低い場合は、通常は二次である高次の多項式回帰が実行されます。入力変数と応答変数の間の良好な関係を見つけるプロセスは、各シミュレーション テストで実行されます。シミュレーション最適化では、応答曲面法を使用して、応答変数に関して望ましい結果を生み出す最適な入力変数を見つけることができます。[ 7 ]
ヒューリスティック法は、速度によって精度を変化させます。その目的は、従来の方法が遅すぎる場合や問題解決に失敗した場合、従来の方法よりも速く良い解を見つけることです。通常、最適値ではなく局所最適値を見つけますが、その値は最終的な解に十分近いとみなされます。このような方法の例としては、タブーサーチや遺伝的アルゴリズムなどがあります。[ 4 ]
メタモデルにより、研究者は高価で時間のかかるコンピュータシミュレーションを実行することなく、信頼性の高い近似モデル出力を得ることができます。したがって、モデル最適化のプロセスは計算時間とコストを削減できます。[ 8 ]
確率近似は、関数を直接計算できず、ノイズのある観測によってのみ推定できる場合に使用されます。このようなシナリオでは、この方法(または一連の方法)は、これらの関数の極値を探します。目的関数は次のようになります。[ 9 ]
導関数を用いない最適化は、数理最適化の一分野です。この方法は、導関数が利用できない、または信頼できない場合に、特定の最適化問題に適用されます。導関数を用いない方法は、サンプル関数値に基づいてモデルを構築するか、詳細なモデルを利用せずに直接サンプル関数値のセットを抽出します。導関数を必要としないため、導関数に基づく方法とは比較できません。[ 10 ]
制約のない最適化問題の場合、形式は次のようになります。
導関数を用いない最適化の限界:
1. 一部の手法では、変数が数個を超える最適化問題を処理できず、結果の精度が通常あまり高くありません。しかし、目的関数に「ノイズ」として現れるランダム性を含む非自明なシミュレーション最適化問題において、導関数を用いない手法が成功した実例は数多くあります。例えば、以下を参照してください [ 5 ] 。[ 11 ]
2. 非凸関数を最小化する場合、その限界が明らかになります。
3. 導関数を用いない最適化手法は比較的単純で簡単ですが、ほとんどの最適化手法と同様に、実際の実装には注意が必要です(例えば、アルゴリズムのパラメータの選択など)。
動的計画法は、段階的に意思決定が行われる状況を扱います。この種の問題の鍵は、現在と将来のコストのトレードオフです。[ 12 ]
動的基本モデルには2つの特徴があります。
1) これは離散時間動的システムです。
2) コスト関数は時間に対して加算的である。
離散的な特徴量の場合、動的計画法は次の形式をとります。
コスト関数は次の形式をとります。
これは、プロセス終了時のコストです。
コストを意味のある形で最適化することはできないため、期待値を用いることができます。
ニューロ動的プログラミングは、近似アーキテクチャの概念を持つ点を除けば、動的プログラミングと同じです。人工知能、シミュレーションベースのアルゴリズム、および関数アプローチ技術を組み合わせたものです。この用語の「ニューロ」は、人工知能コミュニティに由来します。これは、現在の動作に基づく組み込みメカニズムを介して、将来に向けてより良い意思決定を行う方法を学習することを意味します。ニューロ動的プログラミングの最も重要な部分は、最適化問題のための訓練済みニューロネットワークを構築することです。[ 13 ]
シミュレーションベースの最適化には、システムの動的挙動をその表現として十分良いとみなされる方法で模倣するモデルを作成することの難しさなど、いくつかの制限があります。もう1つの問題は、現実世界のシステムとシミュレーションの両方の制御不能なパラメータを決定することの複雑さです。さらに、実際の値の統計的推定しか得られません。目的関数は測定の結果であるため、解に悪影響を与える可能性があるため、目的関数を決定するのは容易ではありません。[ 14 ] [ 15 ]