タスク4.2 - オプティマイザー

タスクの概要

実験ツールを使用してシナリオを明示的に定義する方法だけでなく、オプティマイザーを使用する方法もあります。オプティマイザーは自動的に作成したシナリオをテストして、目標に最適なシナリオを見つけます。

ステップ1 最適化を設計する

  1. [実験ツール]ウィンドウの[オプティマイザーの設計]タブに移動します。先ほど作成した2つの変数があります。これは、実験ツールとオプティマイザーが変数を共有するためです。

    ただしオプティマイザーには、これらの変数に関する追加情報が必要です。具体的には、次の項目を指定する必要があります。

    • タイプ - 変数のタイプ。この変数に使用できる値の種類を指定します。連続変数は、上限と下限の間にあるどの値をとることもできます。
    • 下限 - オプティマイザーがこの変数に設定できる最小の値を指定します。
    • 上限 - オプティマイザーがこの変数に設定できる最大の値を指定します。
    • ステップ - 離散変数と設計変数に使用し、下限から始まる値と値との間隔を指定します。
    • グループ - 順列変数に使用し、この変数がどの順列変数のセットに属すかを指定します。
  2. 今回の最適化では、プロセッサを左右に3メートルまで移動できるようにします。この範囲であれば特定の位置に限定されないため、どちらの位置変数も[連続]です。ただし、どちらの変数にも、下限と上限の設定が必要です。テーブルの値を編集するには、対象のセルをダブルクリックし、新しい値を入力します。次のように値を入力します。

  3. 設計の最終ステップは目標関数の設定です。目標関数は存在しますが空欄です。名前を編集し、「Revenue」(収益)にします。次に[関数]フィールドをクリックします。右側に ボタンが表示されます。このボタンをクリックすると、すべての変数とパフォーマンス指標のリストが表示されます。目標関数は、これらの値のいずれか、またはすべてから導き出される値です。[Throughput]を選択すると、このパフォーマンス指標が目標関数として追加され、その右側の末尾にカーソルが配置されます。テキスト「* 500」を追加すると、RevenueThroughput * 500に等しい値になります。[方向]は[最大化]のままにします。Revenueを最大化したいためです。目標は1つしかないため、[検索モード]は[単一]のままにします。

ステップ2 最適化を実行する

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

    • 実行時間]を「10000」に設定します。これは、オプティマイザーで各モデル設定(「ソリューション」と呼ばれます)を実行して評価する時間の長さです。
    • 実測時間]を「0」に設定します。これは通常、オプティマイザーをリアルタイムで実行できる時間です。値0は、時間制限がないことを意味します。
    • ソリューションの最大数]を「50」に設定します。これは、最適なソリューションを見つけるために、オプティマイザーが最大で50個のソリューションを試すことを意味します。
    • Optimize]ボタンをクリックします。

  2. 実験ツールのウィンドウが自動で[オプティマイザーの結果]タブに切り替わります。オプティマイザーは、次のループの実行を開始します。

    1. Proc2XProc3Xの値を確認します。
    2. これらの値を使用して、モデルを10000秒間実行します。
    3. パフォーマンス指標を評価します。
    4. 目標関数を計算します。
    5. このソリューションのランク付けをします。
    6. このソリューションの情報を使用して、Proc2XProc3Xに新しい値を適用し、新しいソリューションを作成します。
    7. ステップ2以降を繰り返します。
  3. オプティマイザーは実験ツールのマルチスレッド機能を共有するため、複数のソリューションを同時に評価できます。最適化の進行に伴って[オプティマイザーの結果]グラフが更新され、オプティマイザーの進捗が表示されます。

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

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

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

[Y軸]には[単一目標]と表示されています。この例では、Revenueと同義です。優れたソリューションは強調表示されます。薄い境界線で囲まれている円が、より優れたソリューションです。単一目標の場合、上位10個のソリューションがこのようにマークされます。

オプティマイザーの作成するソリューションは、最適化の進行に伴って質が向上しており、最後の15個のソリューションはいずれも非常に優れています。これはコンバージェンスと呼ばれ、最適化の終了を判断する1つの方法です。目標値がしばらくの間向上しない場合、以降の検索でも向上しないと考えられるため、現時点での最良のソリューションを使用するべきです。

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

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

  1. チャートの最良のソリューション(最大の青い円)にカーソルを合わせると、小さいポップアップが表示されます。

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

  3. 最良のソリューション(およびその他の優れたソリューション)は、Proc2Xが最大でProc3Xが最小の位置にあります。前述のように、上位10個のソリューションは同じ結果になりました。このケースでは、2台のプロセッサを隣接させることが、このモデルの最良の設定方法です。

最良のソリューションに合わせてモデルを設定する

最良のソリューションに合わせたモデル設定は非常に有効です。そのためには、次の手順を実行します。

  1. 選択したシナリオをエクスポート]ボタンをクリックします。選択したすべてのソリューションから、実験ツールのシナリオが作成されます。[実験ツール]ウィンドウの[シナリオ]タブに戻り、新しいソリューションを表示します。

  2. ここで、右端の[デフォルトのリセットシナリオを選択]ドロップダウンから新しいシナリオを選択します。次に、モデルをリセットしてこれらの値を3Dモデルに適用します。

結論

ここでは、オプティマイザーの使用方法を学習しました。