タスク4.2 - オプティマイザー
タスクの概要
実験ツールを使用してシナリオを明示的に定義する方法だけでなく、オプティマイザーを使用する方法もあります。オプティマイザーは自動的に作成したシナリオをテストして、目標に最適なシナリオを見つけます。
ステップ1 最適化を設計する
-
[実験ツール]ウィンドウの[オプティマイザーの設計]タブに移動します。先ほど作成した2つの変数があります。これは、実験ツールとオプティマイザーが変数を共有するためです。
ただしオプティマイザーには、これらの変数に関する追加情報が必要です。具体的には、次の項目を指定する必要があります。
- タイプ - 変数のタイプ。この変数に使用できる値の種類を指定します。連続変数は、上限と下限の間にあるどの値をとることもできます。
- 下限 - オプティマイザーがこの変数に設定できる最小の値を指定します。
- 上限 - オプティマイザーがこの変数に設定できる最大の値を指定します。
- ステップ - 離散変数と設計変数に使用し、下限から始まる値と値との間隔を指定します。
- グループ - 順列変数に使用し、この変数がどの順列変数のセットに属すかを指定します。
-
今回の最適化では、プロセッサを左右に3メートルまで移動できるようにします。この範囲であれば特定の位置に限定されないため、どちらの位置変数も[連続]です。ただし、どちらの変数にも、下限と上限の設定が必要です。テーブルの値を編集するには、対象のセルをダブルクリックし、新しい値を入力します。次のように値を入力します。
-
設計の最終ステップは目標関数の設定です。目標関数は存在しますが空欄です。名前を編集し、「Revenue」(収益)にします。次に[関数]フィールドをクリックします。右側に
ボタンが表示されます。このボタンをクリックすると、すべての変数とパフォーマンス指標のリストが表示されます。目標関数は、これらの値のいずれか、またはすべてから導き出される値です。[Throughput]を選択すると、このパフォーマンス指標が目標関数として追加され、その右側の末尾にカーソルが配置されます。テキスト「
* 500
」を追加すると、RevenueはThroughput * 500
に等しい値になります。[方向]は[最大化]のままにします。Revenueを最大化したいためです。目標は1つしかないため、[検索モード]は[単一]のままにします。
ステップ2 最適化を実行する
-
実験ツールウィンドウの[オプティマイザーの実行]タブに移動します。次の手順を実行します。
- [実行時間]を「
10000
」に設定します。これは、オプティマイザーで各モデル設定(「ソリューション」と呼ばれます)を実行して評価する時間の長さです。 - [実測時間]を「
0
」に設定します。これは通常、オプティマイザーをリアルタイムで実行できる時間です。値0は、時間制限がないことを意味します。 - [ソリューションの最大数]を「
50
」に設定します。これは、最適なソリューションを見つけるために、オプティマイザーが最大で50個のソリューションを試すことを意味します。 - [Optimize]ボタンをクリックします。
- [実行時間]を「
-
実験ツールのウィンドウが自動で[オプティマイザーの結果]タブに切り替わります。オプティマイザーは、次のループの実行を開始します。
- Proc2XとProc3Xの値を確認します。
- これらの値を使用して、モデルを10000秒間実行します。
- パフォーマンス指標を評価します。
- 目標関数を計算します。
- このソリューションのランク付けをします。
- このソリューションの情報を使用して、Proc2XとProc3Xに新しい値を適用し、新しいソリューションを作成します。
- ステップ2以降を繰り返します。
-
オプティマイザーは実験ツールのマルチスレッド機能を共有するため、複数のソリューションを同時に評価できます。最適化の進行に伴って[オプティマイザーの結果]グラフが更新され、オプティマイザーの進捗が表示されます。
-
オプティマイザーが50個のソリューションを評価した時点で、停止理由を示すメッセージが表示されます。このケースでは、ソリューションが最大数に達した旨が表示されます。問題が発生した場合、メッセージにはエラーに関する情報が含まれます。
ステップ3 結果を分析する
最適化が終了すると、[オプティマイザーの結果]チャートは次のようになります。
[Y軸]には[単一目標]と表示されています。この例では、Revenueと同義です。優れたソリューションは強調表示されます。薄い境界線で囲まれている円が、より優れたソリューションです。単一目標の場合、上位10個のソリューションがこのようにマークされます。
オプティマイザーの作成するソリューションは、最適化の進行に伴って質が向上しており、最後の15個のソリューションはいずれも非常に優れています。これはコンバージェンスと呼ばれ、最適化の終了を判断する1つの方法です。目標値がしばらくの間向上しない場合、以降の検索でも向上しないと考えられるため、現時点での最良のソリューションを使用するべきです。
当初の疑問の答えを見つける
この最適化の目標は、2台のプロセッサをどこに配置するかを見つけ出すことでした。現時点では、この疑問の答えを簡単に見つけることができます。
-
チャートの最良のソリューション(最大の青い円)にカーソルを合わせると、小さいポップアップが表示されます。
-
このソリューションをクリックして選択します。ここで、[グラフオプション]パネルの[Y軸]を[Proc3X]に、[X軸]を[Proc2X]に変更します。
-
最良のソリューション(およびその他の優れたソリューション)は、Proc2Xが最大でProc3Xが最小の位置にあります。前述のように、上位10個のソリューションは同じ結果になりました。このケースでは、2台のプロセッサを隣接させることが、このモデルの最良の設定方法です。
最良のソリューションに合わせてモデルを設定する
最良のソリューションに合わせたモデル設定は非常に有効です。そのためには、次の手順を実行します。
-
[選択したシナリオをエクスポート]ボタンをクリックします。選択したすべてのソリューションから、実験ツールのシナリオが作成されます。[実験ツール]ウィンドウの[シナリオ]タブに戻り、新しいソリューションを表示します。
-
ここで、右端の[デフォルトのリセットシナリオを選択]ドロップダウンから新しいシナリオを選択します。次に、モデルをリセットしてこれらの値を3Dモデルに適用します。
結論
ここでは、オプティマイザーの使用方法を学習しました。