実験を実行する

実験ツールとオプティマイザーについて

実験ツールは、同じシミュレーションモデルを毎回1つ以上の変数を変更して複数回実行し、結果が異なるかどうかを確認するツールです。実験ツールにはオプティマイザーも含まれています。このオプティマイザーは、シミュレーションによって解決しようとしている問題に対して可能な限り最良のソリューションを生成する条件の大まかな概要を示します。

このトピックの残りの部分を読む前に、「実験についての主要な概念」をお読みください。

実験ツールとオプティマイザーを開く

実験ツールとオプティマイザーを開くには:

  1. FlexSimのメインメニューで、[統計]メニューをクリックします。
  2. 実験ツール]を選択します。

実験ツールを作成したら、[ツールボックス]で[実験ツール]をダブルクリックしてアクセスできます。

実験ツール/オプティマイザーのユーザーインターフェイスの概要

実験ツール/オプティマイザーは、複数のタブがあるウィンドウとして表示されます。タブは、実験ツールとオプティマイザーの設定と実行に使用する順序で構成されています。一番左のタブ([シナリオ])から始めて、必要な設定を変更します。次に、その右側のタブをクリックしてその設定などを変更します。

次の表は、各タブの基本的な目的について説明しています。

タブ 目的
シナリオ [シナリオ]タブのテーブルを使用して、実験の基本条件を設定できます。実験の各シナリオでテストする変数と各変数の変更方法を指定するには、このタブを使用します。
パフォーマンス指標 このタブを使用して、実験の目標を設定します。スループット、待機時間、費用など、実験の主要業績評価指標である統計を指定します。
実験の実行 このタブを使用して実際の実験を実行し、完了するまで進行状況を監視します。このタブを使用して、シナリオごとに実行する複製の数を指定することもできます。このタブでは、実験終了後に収集してエクスポートするデータをコントロールすることもできます。
オプティマイザーの設計 このタブでは、オプティマイザーの実行に対して変数、制約、目標を設定します。特定の範囲のソリューション(推奨)、1つのソリューション、加重ソリューションのどれを使用するかを決定することもできます。
オプティマイザーの実行 このタブを使用してオプティマイザーを実行し、完了するまで進行状況を監視します。終了時間を指定しなかった場合は、このタブを使用して最適化の実行を停止します。
オプティマイザーの結果 このタブには、最適化の結果と推奨されるソリューションが表示されます。このタブを使用して、収集したデータをエクスポートすることもできます。
詳細 [詳細]タブのさまざまなトリガーを使用して、実験や複製が開始または終了するときのシミュレーションモデルの性質を変更できます。このタブは、実際のモデルが実行を開始するまで変更できない、特定の性質をシミュレーションモデルで発生させる場合に便利です。

シナリオの設計と変数のテストを行う

シナリオを設計し、実験で変数をテストするには、次の画像に示す実験ツールの[シナリオ]タブを使用します。

[シナリオ]タブは、各行がテストする変数を表し、各列が異なるシナリオを表すテーブルです(これらの用語の詳細については、「主な用語」を参照してください)。必要に応じて追加ボタンと削除ボタンを使用し、シナリオ列を追加または削除できます。同じ方法で[実験変数]ボックスの数値を変更し、変数の行を追加または削除できます。

見出しのセルをダブルクリックすると、各見出しに表示されるテキストを変更し、変数またはシナリオにカスタム名を付けることができます。

変数を追加および変更する

各シナリオで変化する変数を特定するには:

  1. 変数]グループで、[追加]ボタン の横にある矢印をクリックしてメニューを開きます。実験のさまざまなシナリオで変化する変数のタイプを選択します。
  2. メニューから変数のタイプを選択すると小さなダイアログボックスがポップアップ表示され、テストする変数を正確に指定できます。このダイアログボックスは選択した変数に応じて異なります。たとえば、メニューから[タスク実行者の数]を選択すると、次の画像のようなダイアログボックスが表示されます。
  3. 変数名]にこの変数のニックネームを入力します。
  4. ダイアログボックスの残りのプロパティを使用して、テストする特定の変数を選択します。

シナリオを追加および変更する

テストする変数を指定したら、シナリオ列を使用して各シナリオにおける各変数の差異を表示します。各シナリオで変数を変更するには:

  1. シナリオ列の下にリストされているセルをクリックします。
  2. このシナリオの実行時に変数に設定する値を入力します。

たとえば、処理時間を短縮するためにモデルに必要な最適なオペレーター数を求めるとします。各オペレーターのシナリオ列を作成します。最初のシナリオ列に数値1を入力します。これは、1人のオペレーターのみによるシミュレーションモデルの実行をテストすることを意味します。2つ目のシナリオ列には2を入力し、2人のオペレーターによるモデルをテストします。このように、以降も同様に行います。

実験の目標を定義する

特定のシナリオの成功または失敗の測定に使用する主要業績評価指標を定義して、実験の目標を決定する必要があります。次に、ビジネスシステムの成果の測定に使用している特定の統計に、実験ツールを関連付ける必要があります。これを行うには、次の画像に示す[パフォーマンス指標]タブを使用します。

新しいパフォーマンス指標を追加する

新しいパフォーマンス指標を追加するには:

  1. パフォーマンス指標]タブで[追加]ボタン をクリックします。
  2. 名前]ボックスにこの主要パフォーマンス指標を識別するニックネームを入力します。
  3. Y軸のラベル]ボックスに、チャートのY軸に使用する表示名を入力します。このチャートには、実験のパフォーマンス指標結果が表示されます。
  4. パフォーマンス指標]ボックスの横にある矢印をクリックして、統計のさまざまなオプションのメニューを開きます。使用する統計のカテゴリに最も近いと思われるオプションを選択します。
  5. メニューから統計カテゴリを選択すると小さなダイアログボックスがポップアップ表示され、測定する統計を正確に指定できます。このダイアログボックスは選択した統計カテゴリに応じて異なります。たとえば、[個々のオブジェクトによる統計]を選択すると、次の画像のようなダイアログボックスが表示されます。
  6. ダイアログボックスのプロンプトを使用して、関心のある特定の統計に移動します。

実験を実行する

実験を実行するには、次の画像に示すように、実験ツールの[実験の実行]タブを使用します。

以下のセクションでは、実験を実行するさまざまな段階について説明します。

実験の実行前

実験を実行する前に、[実験の実行]タブの[各複製後に元の状態に戻す]チェックボックスをオンにすることを強くお勧めします。このチェックボックスをオンにすると、リセット時に各複製が同じ開始状態で開始されるため、正確性が確保されます。

次のチェックリストには、実験を実行する前に[実験の実行]タブで行えることがいくつか記載されています。

  • 複製の数を変更する - [シナリオごとの複製]設定を変更して、実行する複製の数を指定できます。デフォルトでは、実験ツールは複製を3回実行します。この数は必要に応じて増減できます。
  • 終了時間と実行時間の設定を編集する - シミュレーションモデルが実行を終了する特定の時点を定義する必要があります。経時的にビジネスシステムを表すデータを収集するのに十分長い期間、シミュレーションモデルを実行してください。[終了時間]設定または[実行時間]設定を使用して終了時間を設定できます。二つの設定は関連付けられています。いずれかの設定を編集すると、もう一方の設定も自動で更新されます。
  • 必要に応じてウォームアップ時間を追加する - ウォームアップ時間は、モデルが安定した状態または通常の稼働能力に達するのにかかる時間の長さです。モデルのウォームアップ時間の後、シミュレーションモデルは収集している統計をリセットします。
  • 必要に応じて出力データを保存する - 複製ごとに結果をエクスポートするには、チェックボックスをオンにしてダッシュボードのデータまたは各複製の状態を保存できます。また、実験を実行する前に、正しい情報を追跡するようにダッシュボードが設定されていることを確認できます。

実験を実行する

[実験を実行]ボタンをクリックして実験を開始します。しばらくすると、[実験の実行]タブの中央に実験ステータスの進行状況バーが表示されます。

各シナリオには、実行中の各複製のセクションに分割された進行状況バーがあります。赤いバーは徐々に緑色に変わり、シミュレーション実行の進行状況を示していることがわかります。すべてのバーが緑色になると、実験は終了します。

実験を再度実行するには、[実験をリセット]ボタンをクリックして実験ステータスの進行状況バーを消去します。[実験を実行]ボタンをクリックして実験を繰り返します。

実験の実行後

実験の実行が終了したら、[結果を表示]ボタンをクリックして結果の表示される別のウィンドウを開きます。実験結果ウィンドウには3つのタブがあります。

タブ 目的
パフォーマンス指標 このタブには、定義した各パフォーマンス指標の実験結果が表示されます。メニューを使用して、表示する特定のパフォーマンス指標を選択します。
ダッシュボード統計 このタブには、探索対象のシナリオや複製のダッシュボードチャートが表示されます。このタブを使用する前に、最初に関心のあるチャートをシミュレーションモデルのダッシュボードに追加する必要があることに注意してください。
コンソール出力 このタブを使用して、実験を実行してもシミュレーションモデルにエラーがなかったことを確認します。このタブでは、任意のコンソールエラーメッセージについて複製ごとにコンソール出力を確認できます。このステップは必ず行ってください。

次の画像は、一連の実験に対する実験結果の例を示しています。

この実験から、プロセッサを近くに配置すると、システムのスループットが大幅に向上することがわかります。

次の画像は、実験ツールで1つの複製に対するダッシュボード統計の例を示しています。

必要に応じて、複製のチャートを任意で表示できます。

最適化を設計する

次の画像に示すように、[オプティマイザーの設計]タブを使用して最適化を設定します。

変数を追加する

[オプティマイザーの設計]タブを最初に開くと、[シナリオ]タブで使用した変数と同じ変数が変数テーブルに表示されることがわかります。したがって、これらの変数を追加、変更、削除する場合は、最初に[シナリオ]タブに変数を追加する必要があります。

[シナリオ]タブで変数を追加したら、次の操作を行います。

  1. タイプ]ボックスの下のセルをクリックし、メニューから変数のタイプを選択します。このメニューには次のオプションがあります。
  2. タイプ 説明
    連続 使用可能な小数点または負の数を含む値の範囲を指定できる変数に使用します。細かく調整できる値(位置、長さ、時間など)は、多くの場合、連続変数として表されます。
    整数 使用可能な値の範囲(整数のみ)から選択する場合はこのオプションを選択します。離散オブジェクトの数(人数、アイテム数など)は、多くの場合、整数変数として表されます。
    離散 これらの変数は、使用可能な値の範囲を使用するオプションと、使用可能な値の間のステップを表します。下限からnステップ分の値のみが有効です。離散ステップ(部品サイズ、ペアアイテムなど)を使用する値は、多くの場合、離散変数として表されます。
    バイナリ 0と1(真または偽)の2つの値のみをとる変数に使用します。はい/いいえ、オン/オフ、存在する/しない、などのオプションを表す値は通常、バイナリ変数として表されます。
    設計 これらの変数は範囲を使用するオプションを表しますが、大きい値が「より多い」または「それ以上」を表すわけではありません。この場合の値は、単に別のオプションを表します。オプティマイザーは、この種類の変数を増加することがシステムに予測可能な影響を及ぼすことを想定していません。マシンタイプ、全体的なフロアレイアウト、パッキング方法などのオプションを表す値は通常、設計変数として表されます。
    順列 これらの変数は通常、異なる順序で完了できるステップシーケンスを表すために使用されます。たとえば、部分経路は順列変数で表される場合があります。ある構成では、Station 1は最初のステーション、Station 2は2つ目のステーション、Station 3は3つ目のステーションとして指定できます。別の構成では、Station 3が最初のステーション、Station 1が2つ目のステーション、Station 2が3つ目のステーションのように指定できます。
  3. 変数タイプを選択したら、その変数の残りのセルを定義する必要があります。メニューから選択した変数タイプに応じて、さまざまなセルとオプションを使用できます。セルが使用できない場合は、N/Aと表示されます。使用できる場合は、そのセルに入力してください。

目標を追加する

オプティマイザーがその定義に最も適したソリューションを判断できるように、成功した場合の表示を定義する必要があります。これは、[オプティマイザーの設計]タブの目標テーブルに特定の目標を追加して行います。

目標は簡単な式で表現してください。たとえば、システムによって生成されたアイテムを300ドルで販売できる場合、次のように収益を計算できます。[Throughput * 300]

これらの式には、実験ツールで定義済みの変数に対する参照を含めることができます。たとえば、システムで使用されるオペレーターの数を含むTeamSizeという変数を[シナリオ]タブで作成した場合、その名前を括弧に入れた目標を[TeamSize]として使用し、この変数を参照できます。

実験ツールから変数を参照できるのみでなく、実験ツールで定義したパフォーマンス指標の名前も参照できます。たとえば、3Dモデルでオブジェクトの統計にリンクされたThroughputという名前のパフォーマンス指標を作成した場合、目標でパフォーマンス指標を参照できます。

たとえば、アイテムを生産する費用を計算するとします。従業員の賃金が1人あたり1000ドルであり、アイテムの生産に必要な材料が10ドルであるとします。この場合、次の式を目標として使用できます。[TeamSize] * 1000 + [Throughput] * 10

オプティマイザーを実行するサードパーティ製ソフトウェアは、FlexScriptの式を目標として読み取るように設計されていないことに注意してください。ただし、実験ツールで変数とパフォーマンス指標を定義する際にFlexScript式を使用できます。つまり、間接的な方法を使用して独自のカスタムコードを組み込むことができます。

検索モードを選択する

検索モードにより、オプティマイザーで検索するソリューションの数が決まります。一般的には、パターンメソッドであるデフォルトオプションを使用します。次の表に、各オプションを示します。

検索モード 説明
単一 オプティマイザーは1つの目標を最大化または最小化しようとします。オプティマイザーが指定した時間実行されると、最適なソリューションの推奨値が返されます。
加重 オプティマイザーは、指定されたすべての目標の累積値を最大化しようとします。各目標には加重値と方向が与えられます。特定の目標を最小化する場合、その値に-1を掛けてから累積目標に加算します。指定された時間で見つかった最良のソリューションが返されます。
パターン これがデフォルトの検索モードと推奨モードです。オプティマイザーは、指定されたすべての目標を最適化する特定の範囲のソリューションを検索します。この検索モードは最適なソリューションの集合を返します。ある目標が改善されると他が悪くなることで、目標は最適となります。たとえば、利益を最大化し、費用を最小化する最適化があります。オプティマイザーで1つのソリューションを最適として強調表示する場合、費用を増やさずに利益を増やすソリューションは他に存在しません。

制約を追加する

制約は、特定のモデルが維持する必要のある条件をさらに指定する方法です。オプティマイザーは、定義した制約内で実現可能であれば、最適化として設定をマークします。

一般的なベストプラクティスとして、可能な限り3Dモデルに直接制約を構築することが必要です。ただし、追加の制約を強制すべき状況が生じることがあります。これは、[オプティマイザーの設計]タブの制約テーブルを使用して実行できます。制約は結果としてブール値になる数式です。変数、パフォーマンス指標、リテラル値、基本的な数学関数で構成できます。有効な式の詳細については、「リファレンス - 実験ツールとオプティマイザー」を参照してください。

最適化を実行する

最適化を実行するには、次の画像に示すように、実験ツールの[オプティマイザーの実行]タブを使用します。

以下のセクションでは、最適化を実行するさまざまな段階について説明します。

最適化の実行前

次のチェックリストには、実験を実行する前に[実験の実行]タブで行えることがいくつか記載されています。

  • 必要に応じて終了時間、実行時間、ウォームアップの設定を更新する - 終了時間と実行時間の設定では、[実験の実行]タブで使用した設定と同じ設定が自動で使用されます。ここで編集すると、[実験の実行]タブの設定も変更されます。オプティマイザーでこれらの設定を無視し、手動で停止できるようにするには、[手動停止のみ]ボタンをオンにします。
  • 必要なソリューションの数を決定する - [ソリューションの最大数]ボックスに探索するソリューションの数を入力します。オプティマイザーが探索するソリューションの数を決定する際には、コンピュータの処理能力と、多数のソリューションの探索に対応できるかどうかを把握する必要があることに注意してください。

最適化を実行する

最適化]ボタンをクリックして、オプティマイザーの実行を開始します。このボタンを押すと、ウィンドウは[オプティマイザーの結果]タブに自動で切り替わり、リアルタイムで結果の表示が開始されます。

オプティマイザーの結果を分析する

オプティマイザーの推奨ソリューションを把握すると、それらのソリューションを生成できるシナリオと変数の設定を探索できるようになります。主に[オプティマイザーの結果]タブを使用して、次の画像に示すように結果を分析します。

以下のセクションでは、オプティマイザーの結果を分析するさまざまな方法について説明します。

ソリューションを選択する

まず、最も関心があるソリューションを選択する必要があります。探索するソリューションを選択するには:

  1. [オプティマイザーの結果]グラフでソリューションをポイントします。上にマウスを重ねると、明るいグレーの円が周りに表示されます。
  2. ソリューションをクリックして選択します。選択したソリューションの周りに色付きの円が表示され、選択されていることを示します。
  3. 必要に応じて追加のソリューションをクリックします。次の例に示すように、各ソリューションに一意の色が自動で割り当てられます。

選択したソリューションの入力と出力を表示する

関心対象のソリューションを選択したら、[グラフオプション]グループのコントロールを使用して、[オプティマイザーの結果]グラフに表示される結果を変更できます。これらのコントロールは、表示できるデータ入力と出力を変更できます。

グラフオプションを変更すると、次の画像に示すように、選択したソリューションがグラフに表示される場所を確認できます。

マウスで特定のソリューションをポイントすると、そのソリューションの正確なY軸とX軸の統計を示すポップアップテキストが表示されます。

選択したシナリオをエクスポートする

必要に応じて、選択したシナリオをオプティマイザーから実験ツールにエクスポートできます。[選択したシナリオをエクスポート]ボタンをクリックすると、シナリオをエクスポートできます。このボタンをクリックすると、ウィンドウは直ちに[シナリオ]タブに切り替わります。選択したシナリオは、[シナリオ]テーブルの最後に新しい列として追加されます。テーブルで選択したシナリオを表示するには、右にスクロールする必要がある場合があることに注意してください。

実験ツールにエクスポートするといくつかの点でメリットがあります。

  • 選択したソリューションの変数設定を参照する。必要に応じて、選択したシナリオを[シナリオ]タブにエクスポートして、条件変数それぞれの正確な設定を表示できます。[グラフオプション]グループで設定を変更して設定を表示することもできます。
  • 選択したソリューションの複製をさらに実行する。特定のソリューションの統計平均が有効であることを確認するために、これらのソリューションで実験をいくつか追加で実行して、実行する複製の数を増やすこともできます。
  • 特定のシナリオを選択して実行される3Dモデルをリアルタイムで監視する。いずれかのソリューションのモデルの実行をリアルタイムで確認する必要がある場合、最初にソリューションを実験ツールにエクスポートする必要があります。

特定のシナリオをリアルタイムで実行するには:

  1. [オプティマイザーの結果]タブで、リアルタイムで表示するソリューションをクリックします。
  2. 選択したシナリオをエクスポート]ボタンをクリックします。ウィンドウが自動で[シナリオ]タブに切り替わります。
  3. デフォルトのリセットシナリオを選択]メニューをクリックして開きます。3Dモデルで実行するシナリオを選択します。
  4. シミュレーションコントロールバーで[リセット]ボタンを押し、モデルをそのシナリオに変更します。次に[実行]ボタンを押して、モデルを通常どおり確認します。

スクリーンショットをエクスポートする

必要に応じて[オプティマイザーの結果]グラフの画像ファイルを.png形式でエクスポートできます。

  1. グラフオプション]設定をオンにして、適切なグラフ表示設定が選択されていることを確認します。
  2. スクリーンショットをエクスポート]ボタンをクリックします。
  3. 画像ファイルを保存するフォルダの場所に移動します。
  4. ファイルの名前を入力し、[保存]ボタンをクリックします。

.CSVファイルをエクスポートする

必要に応じて.csvファイル形式でスプレッドシートをエクスポートできます。オプティマイザーは、選択したソリューションのみでなく、オプティマイザーのすべての結果からデータをエクスポートすることに注意してください。

結果のスプレッドシートをエクスポートするには:

  1. CSVとしてエクスポート]ボタンをクリックします。
  2. ファイルを保存するフォルダの場所に移動します。
  3. ファイルの名前を入力し、[保存]ボタンをクリックします。

統計コレクター結果を照会する

統計コレクターを設定して3Dモデルからカスタム統計を収集すると、統計コレクターは任意の実験または最適化のすべての複製をバックグラウンドで実行します。これらの実験から未加工データを表示するには、この時点で計算済みテーブルを作成する必要があります。

SQLクエリの作成に慣れている場合は、Experiment.MyStatisticsCollectorキーワードを使用して、これらの実験から未加工データをインポートできます。詳細については、「SQLクエリ」を参照してください。SQLクエリに慣れていない場合は、FlexSimカスタマーサポートにお問い合わせください。