タスク4.1 - 実験ジョブ

タスクの概要

このチュートリアルでは、実験ジョブを使用して、いくつかのシナリオを指定し、それらのシナリオの複製を多数実行します。

このチュートリアルでは、非常にシンプルな状況を調査します。まず、1人の作業員がソースからプロセッサまでアイテムを運びます。アイテムの処理が終了すると、同じ作業員が第2のプロセッサまでアイテムを運びます。このプロセッサは、第1のプロセッサより時間がかかります。第2のプロセッサでアイテムの処理が終了すると、作業員はアイテムをシンクに運びます。

ここで、プロセッサの位置を調整することでこのシステムのスループット(同時に収益にも関係)を最大化できるかどうかを調べたいと仮定します。各プロセッサを左右に最大3メートル移動できる場合、それぞれをどこに配置すべきでしょうか。両プロセッサをどのように配置すればスループットを最大化できるかを直感的に判断するのは非常に困難です。この問題を正確に解決するために、実験ツールとオプティマイザーを使用します。

このシナリオが極めて単純であることは明らかですが、実際の環境では、各種レイアウトが全体的なスループットにどのような影響を与えるかを把握したいということはよくあります。このシナリオは、こうした実験を非常にシンプルに実装したものです。

ステップ1 3Dモデルを構築する

このステップでは、このチュートリアルの基本的な3Dモデルを構築します。作業が終了すると、モデルは次の画像のようになります。

このモデルを構築するには:

  1. 3Dモデルウィンドウが開いていてアクティブであることを確認します。ライブラリから、次の3Dオブジェクトをモデルにドラッグします。
    • ソース
    • プロセッサ
    • プロセッサ
    • シンク
    • ディスパッチャー
    • オペレーター
  2. [Source1]をクリックします
  3. [プロパティ]の[位置]ボタン をクリックし、直接空間への位置参照を設定します。
  4. 次のテーブルに基づいてオブジェクトの位置を設定します。
    オブジェクト Xの位置 Yの位置
    Source1 0.0 0.0
    Processor1 10.0 0.0
    Processor2 20.0 0.0
    Sink1 30.0 0.0
    Dispatcher1 N/A N/A
    Operator2 N/A N/A
    Dispatcher5Operator7の位置は問いませんが、残りのオブジェクトと一致しないようにする必要があります。
  5. 次のロジックを設定します。
    • Source1Processor1Processor2の[輸送を使用]をオンにします。
    • Processor1の[処理時間]を「normal(10, 2, getstream(current))」に設定します。
    • Processor2の[処理時間]を「normal(12, 3, getstream(current))」に設定します。

モデルがこのステップの冒頭に表示した画像のようになっていることを確認します。

ステップ2 パラメータを作成する

パラメータを作成するには、モデルパラメータテーブルを使用します。その後で、2つのパラメータを構成します。それぞれのパラメータが1つのプロセッサにリンクされます。リセットすると、プロセッサは、そのx位置がパラメータの値と一致するように移動します。

    • ツールボックスで、Parametersという名前のモデルパラメータテーブルをクリックして開きます。
    • パラメータテーブルビューをクリックしてドラッグし、3Dビューの右側にドッキングします。
    • Parameter1の[]セルをクリックします。ボタン が表示されます。このボタンをクリックして、パラメータ値プロパティを開きます。
    • 下限]を7に設定します。
    • 上限]を13に設定します。
    • 参照]フィールドの横にあるサンプラーボタン をクリックします。
    • Processor1]をクリックして、[プロパティ]をポイントしてから、[設定時間]を選択します。
    • On Set]フィールドの横にあるプロパティボタン をクリックします。
    • プロパティ]を[Location.X]に変更します。
    • パラメータ値プロパティをクリックしてポップアップを閉じます。

    • [Parameters]テーブルの最上部で、上ボタンをクリックし、別のパラメータを追加します。
    • Parameter1]の[]セルをクリックして選択します。
    • Ctrl+Cを押して値をコピーします
    • Parameter2]の[]セルをクリックして選択します。
    • Ctrl+Vを押して値を貼り付けます。
    • ボタンをクリックして、Parameter2のパラメータ値プロパティを開きます。
    • 下限]を17に設定します。
    • 上限]を23に設定します。
    • 参照]フィールドの横にあるサンプラーボタン をクリックします。
    • Processor2]をクリックして、[Processor2]を選択します。

これらのパラメータの働きを確認するために、モデルをリセットします。Processor1はそのx位置が7になるように移動し、Processor2はそのx位置が17になるように移動するはずです。パラメータテーブルを編集して、Parameter1とParameter2の新しい値(10や20など)を入力します。もう一度モデルをリセットすると、プロセッサが一致するように移動するはずです。

ステップ3 パフォーマンス指標を作成する

ツールボックスで、PerformanceMeasuresという名前のパフォーマンス指標テーブルをダブルクリックします。それを[Parameters]テーブルと同じペインにドッキングします。ここで、次の手順を実行します。

  1. PerformanceMeasure1の[]セルをクリックします。
  2. ボタン をクリックして、パフォーマンス指標の値プロパティを開きます。
  3. サンプラーボタン をクリックします。
  4. Sink1]をクリックしてサンプリングします。その後で、[統計]をポイントして[入力]を選択します。
  5. パフォーマンス指標値プロパティウィンドウの外側をクリックして閉じます。

これで、モデルを長時間実行すると、ボックスがシンクに入るにつれてパフォーマンス指標の値が上昇することが確認できるはずです。

ステップ4 実験ジョブを設計する

これでパラメータとパフォーマンス指標が作成されたため、一部のシナリオの複製を実行するように実験ジョブをセットアップします。

  1. [統計]メニューで、[実験ツール]を選択します。実験ツールウィンドウが表示されます。すでにExperiment1という名前の実験ジョブが含まれているはずです。
  2. Parameters]リストで、チェックボックスをオンにします。これにより、[Parameters]テーブル内のすべてのパラメータが実験に追加されます。
  3. シナリオカウントフィールドに「5」と入力することによって、全部で5個のシナリオを作成します。
  4. シナリオ名と値を次のように入力します。

ステップ5 実験ジョブを実行する

[実行]タブに移動します。[実行]ボタンをクリックします。各シナリオが5回実行され、実行が終了するたびにパフォーマンス指標の結果が収集されます。ステータスチャートに、現在実行中のシナリオ/複製が表示されます。マルチコアCPUが搭載されたコンピュータでは、複数のシナリオが同時に実行されます。

実験が終了したら、一番上の ボタンをクリックします。ウィンドウが開き、シナリオのパフォーマンス指標のデータが表示されます。この例にはパフォーマンス指標が1つしかありませんが、複数ある場合は、各パフォーマンス指標の結果がこのウィンドウに表示されます。データの表示方法には、[複製プロット]、[頻度ヒストグラム]、[相関プロット](複数のパフォーマンス指標の相関を調べる)、[データの概要]、[未加工データ]ビューなど、複数のオプションがあります。

目標がスループットの最大化の場合は、「閉じる」シナリオが最適なオプションです。

まとめ

ここまで、実験ジョブの使用方法を学習してきました。次のチュートリアルタスクでは、最適化ジョブの使用方法を学習します。「チュートリアルタスク4.2 - 最適化ジョブ」に進んでください。