タスク4.2 - 最適化ジョブ

タスクの概要

実験ツールを使用すると、最適化ジョブを定義することができます。シナリオを明示的に定義する実験ジョブとは異なり、最適化ジョブは、シナリオを自動的に作成してからテストし、目標に最適なシナリオを探します。

すべての最適化ジョブがOptQuest最適化エンジンによって使用されるFlexSimのオプティマイザーを使用します。

ステップ1 最適化ジョブを追加する

  1. [実験ツール]ウィンドウの[ジョブ]タブに移動します。
  2. 左上の[追加]ボタン をクリックして、メニューから[最適化]を選択します。

ステップ2 最適化ジョブを設計する

  1. 停止時間]を10000に設定します。これは、オプティマイザーが各シナリオを実行して評価する時間の長さです。
  2. 実測時間]を0に設定します。これは通常、オプティマイザーをリアルタイムで実行できる時間です。値0は、時間制限がないことを意味します。
  3. パラメータ]ツリーの一番上のチェックボックスをオンにして両方のパラメータを含めます。
  4. 最大反復数]を50に設定します。これは、最適なシナリオを見つけるために、オプティマイザーが最大で50個のシナリオを試すことを意味します。
  5. 1つ目の目標の[関数]セルをクリックします。
  6. 表示された ボタンをクリックします。
  7. パフォーマンス指標]をポイントしてから、[PerformanceMeasure1]を選択します。

ステップ3 最適化ジョブを実行する

  1. 実験ツールウィンドウの[実行]タブに移動します。次の手順を実行します。

    • ジョブ]コンボボックスを使用して、最適化ジョブを選択します。
    • 実行]ボタンをクリックします。

  2. そうすると、最適化ジョブが次のループを通して実行を開始します。

    1. Parameter1Parameter2の値を推測します。それぞれの推測が最適化の実行とともにますます理にかなってきます。それぞれの推測を反復と言います。
    2. これらの値を使用して、モデルを10000秒間実行します。
    3. パフォーマンス指標を評価します。
    4. 目標関数を計算します。
    5. このシナリオを格付けします。
    6. このシナリオからの情報を使用して、新しいシナリオ、Parameter1Parameter2の新しい値を作成します。
    7. ステップ2以降を繰り返します。

    複数のCPUが使用可能な場合は、最適化で複数の同時推測を作成できます。

  3. 最適化ジョブの進行に伴って、ステータスチャートが更新され、ジョブの進行状況が表示されます。

  4. オプティマイザーが50個のシナリオを評価し終えた時点で、オプティマイザーが停止した理由を示すメッセージが表示されます。このケースでは、オプティマイザーが反復の最大数に達したことが表示されます。問題が発生した場合、メッセージにはエラーに関する情報が含まれます。

ステップ4 結果を分析する

最適化が終了すると、[オプティマイザーの結果]チャートは次のようになります。

最良のシナリオは、金色の星印でマークされます。通常は、最適化ジョブの進行に伴って、ますます良いシナリオが見つかります。ただし、新しいランダム推測を試して、局所最適に縛られていないことを確認する場合もあります。このようなランダム推測が実行されない場合もあります。

当初の疑問の答えを見つける

この最適化の目標は、2台のプロセッサをどこに配置するかを見つけ出すことでした。現時点では、この疑問の答えを簡単に見つけることができます。

  1. チャート上の最良のシナリオ(金色の星が付いているシナリオ)の上にカーソルを移動すると、小型のポップアップが表示されます。

  2. このシナリオをクリックして選択します。ここで、[グラフオプション]パネルの[Y軸]を[Parameter2]に、[X軸]を[Parameter1]に変更します。

  3. 最高のパフォーマンスを示したシナリオの場合は、Parameter1の値が高く、Parameter2の値が低くなります。

まとめ

最適化ジョブは、最良の目標値を見つけるために構成を何百回も自動的に試すことができる強力なツールです。複雑な操作を伴う多数の変数が存在する場合でも、最適化によって短時間に非常に良好なシナリオが見つかります。