タスク2.1 - 標準ロードタスクを作成する

タスクの概要

このチュートリアルタスクは、調整されたタスクの作成方法を学ぶ前に、処理フローでの基本的なタスクの構築に関連する主要な概念と処理を確認するのに役立ちます。この最初のチュートリアルタスクでは、さまざまな方法で「チュートリアル1 - タスクロジックツールチュートリアル」で学んだ概念を復習します。

チュートリアル1で作成したシミュレーションモデルと同様に、このチュートリアルでは、単純な一連の輸送タスクを処理フローで設定します。この処理フローのタスクは、2人のオペレーターが1つのキューから2つの異なるプロセッサにボックスをロードおよびアンロードするように指示します。この一連の単純な輸送タスクを最初に構築することで、標準タスクとは少し異なる方法で調整されたタスクの構築方法を理解することができます。

作業が完了すると、シミュレーションモデルは次の画像のように動作します。

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

このステップでは、このチュートリアルの基本的な3Dモデルを構築します。輸送する必要があるボックスを保管するキュー、ボックスを輸送するオペレーター、ボックスを処理するプロセッサを追加します。作業が終了すると、モデルは次の画像のようになります。

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

  1. 3Dモデルウィンドウが開いていてアクティブであることを確認します。ライブラリから、次の3Dオブジェクトをモデルにドラッグします。
    • 2つのキュー
    • 2つのオペレーター
    • 2つのプロセッサ
    • 1つのシンク
  2. 次のようにオブジェクトの名前を変更します。
  3. オブジェクト 新しい名前
    最初のキュー StandardQueue
    2番目のキュー LargeQueue
    最初のオペレーター オペレーターA
    2番目のオペレーター オペレーターB
    最初のプロセッサ プロセッサA
    2つ目のプロセッサ プロセッサB
  4. 次のオブジェクト間でポート接続(A接続)を作成します。
    • プロセッサA]から[シンク1]へ
    • プロセッサB]から[シンク1]へ
  5. オペレーターB]をクリックして選択します。[プロパティ]で、カラーセレクターをクリックして開きます。青い色を選択してください。
  6. オペレーターA]を右クリックして、メニューを開きます。[オブジェクトグループ]をポイントし、[新しいグループに追加]を選択して[新しいグループ]プロパティウィンドウを開きます。
  7. ウィンドウの上部にある名前ボックスで、グループの名前を「オペレーター」に変更します。
  8. メンバー]グループで、[サンプラー]ボタン をクリックしてサンプリングモードに入ります。
  9. オペレーターB]をクリックしサンプリングします。
  10. 前のステップを繰り返して、[プロセッサA]と[プロセッサB]をメンバーとして追加し、[プロセッサ]と呼ばれる別のグループを作成します。

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

ステップ2 処理フローにアクティビティを追加する

このステップでは、アクティビティと共有アセットを処理フローに追加します。これらのアクティビティは、最終的に3Dモデルの輸送ロジックをコントロールします。作業が完了すると、処理フローは次の画像のようになります。

現時点では、これらのアクティビティの追加と処理フローへの接続のみを行います。後のステップで、プロパティを編集してロジックを追加します。

これらのアクティビティを追加して接続するには:

  1. メインツールバーで[処理フロー]ボタンをクリックして、メニューを開きます。新しい処理フローを作成するには、[一般的な処理フローを追加]を選択します。
  2. 処理フローがアクティブな状態で、[プロパティ]で処理フローの名前を「LoadingTasks」に変更します。
  3. 4つの[コンテナ]形状([表示]の下)を処理フローに追加します。
  4. 形状の名前を次のように変更します。
    • リソース
    • ボックスを作成
    • 標準輸送タスク
    • 処理ボックス
  5. リソース]図形で、2つの[リソース]共有アセット([共有アセット]で)を追加します。
  6. 共有アセットの名前を次のように変更します。
  7. 共有アセット 新しい名前
    リソース(1つ目) リソース:プロセッサ
    リソース(2つ目) リソース:演算子
  8. ボックスを作成]図形で、次のアクティビティを含むスタックブロックを作成します。
    • 到着間隔ソース]([トークン作成]で)
    • オブジェクトを作成]([オブジェクト]の下)
  9. アクティビティと共有アセットの名前を次のように変更します。
  10. アクティビティ 新しい名前
    ソース ソース:アイテムの到着
    オブジェクトを作成 オブジェクトを作成:ボックス
  11. 標準輸送タスク]図形で、次のアクティビティを含むスタックブロックを作成します。
    • 2つの[リソースを取得]([共有アセット]で)
    • 1つの[タスクシーケンスを作成
    • 1つの[ロード]([タスクシーケンス]の下)
    • 1つの[アンロード]([タスクシーケンス]の下)
    • 1つの[タスクシーケンスをリリース
    • 1つの[リソースをリリース]([共有アセット]の下)
  12. アクティビティと共有アセットの名前を次のように変更します。
  13. アクティビティ 新しい名前
    取得(1つ目) プロセッサを取得する
    取得(2つ目) オペレーターを取得
    TSを作成 タスクシーケンスを作成
    ロード ボックスをキューでロード
    アンロード プロセッサでアンロード
    TSを終了 タスクシーケンスを終了
    リリース(1回目) オペレーターをリリース
  14. 処理ボックス]図形で、次のアクティビティを含むスタックブロックを作成します。
    • イベントを待つ]([ベーシック]の下)
    • 1つの[リソースをリリース]([共有アセット]の下)
    • 1つの[シンク]([ベーシック]の下)
  15. アクティビティと共有アセットの名前を次のように変更します。
  16. アクティビティ 新しい名前
    イベントを待つ イベントを待つ:処理完了時
    リリース(2回目) プロセッサをリリースする
    シンク シンク:ボックス処理済み
  17. 次のアクティビティから出るコネクターを作成します。
    • オブジェクトを作成:ボックス]アクティビティから[取得:プロセッサ]アクティビティまで
    • オペレーターをリリース]アクティビティから[イベントを待つ:処理完了時]アクティビティまで

シミュレーションモデルを保存することをおすすめします。

ステップ3 共有アセットと初期アクティビティを編集する

このステップでは、リソース共有アセットをチュートリアルの最初のステップで設定した2つの異なるグループにリンクします。シミュレーションモデルにボックスを作成するロジックも編集します。

以下は、共有アセットと共有アクティビティの動作についての概要です。

アクティビティ 説明
リソース:プロセッサ この共有アクティビティを3Dモデルのプロセッサを含むプロセッサグループにリンクします。これらのプロセッサをボックスの目的地として取得できます。
リソース:演算子 この共有アクティビティを3Dモデルのオペレーターを含む[オペレーター]グループにリンクします。その後、これらのオペレーターを取得し、輸送タスクを処理できます。
ソース:アイテムの到着 この[到着間隔ソース]は、3DモデルでボックスがStandardQueueに入る到着率を設定します。ここでは、このアクティビティにデフォルトの統計分布を使用します。
オブジェクトを作成:ボックス トークンが作成されると、このアクティビティに移動してボックスフローアイテムを作成し、それを3DモデルのStandardQueueに配置します。このトークンによって作成された特定のボックスへの参照を含む[ボックス]というラベルを割り当てます。

このロジックを作成するには:

  1. リソース:プロセッサ]共有アセットをクリックして選択します。[プロパティ]で、[参照]ボックスの横にある矢印をクリックして、メニューを開きます。[グループ]をポイントし、[プロセッサ]を選択します。
  2. 前のステップを繰り返し、[リソース:オペレーター]共有アセットを[オペレーター]グループにリンクします。
  3. オブジェクトを作成:ボックス]アクティビティをクリックして選択します。[プロパティ]で、[作成場所]オプションが選択されていることを確認します。このオプションの下のボックスで、[サンプラー]ボタン をクリックしてサンプリングモードに入ります。
  4. 3Dモデルで、[StandardQueue]をクリックしてメニューを開きます。メニューから[StandardQueue]を選択します。
  5. 割り当て先]オプションの下のボックスに「token.Box」と入力します。

シミュレーションモデルを保存することをおすすめします。

ステップ4 標準輸送タスクロジックを作成する

このステップでは、輸送タスクのロジックをコントロールするアクティビティを編集します。新しいアクティビティが機能する方法の概要を次に示します。

アクティビティ 説明
プロセッサを取得する このアクティビティはボックスを輸送するいずれかのプロセッサの取得を試みます。タスクを処理するために使用できるプロセッサがない場合、トークンはプロセッサが使用可能になるまでこのアクティビティで待機します。ボックスを受け取るプロセッサがある場合、トークンはそのリソースを取得し、そのトークンを次の下流オブジェクトにリリースします。リソースを取得したら、トークンに[プロセッサ]という名前のラベルを割り当てます。このラベルには、トークンによって取得された特定のプロセッサへの参照が含まれます。
オペレーターを取得 このアクティビティでは、輸送タスクを処理するいずれかのオペレーターの取得を試みます。そのタスクを処理するオペレーターを用意できない場合、トークンはオペレーターが作業可能になるまでこのアクティビティで待機します。オペレーターがタスクで作業ができる場合は、トークンがリソースを取得し、そのトークンを次の下流オブジェクトにリリースします。リソースを取得したら、トークンに、[オペレーター]というラベルを割り当てます。このラベルには、トークンによって取得された特定のオペレーターへの参照が含まれます。
タスクシーケンスを作成 このアクティビティでは、割り当てられたオペレーターが実行するタスクのシーケンスとして、一連のタスク(ロードとアンロード)を設定します。
ボックスをキューでロード このアクティビティは、選択する必要があるフローアイテムと、そのフローアイテムの場所をオペレーターに指示します。[オペレーター]ラベルを使用し、前のアクティビティで取得したのと同じオペレーターにタスクを割り当てます。また、[ボックス]ラベルを使用して、どのアイテムを輸送する必要があるかをオペレーターに伝えます。
プロセッサでアンロード このアクティビティは、フローアイテムをアンロードする場所をオペレーターに指示します。[オペレーター]ラベルを使用し、前のアクティビティで取得したのと同じオペレーターにタスクを割り当てます。また、[ボックス]ラベルを使用して、どのアイテムを輸送する必要があるかをオペレーターに伝えます。どのプロセッサがフローアイテムを受け取るべきかをオペレーターに知らせるために、[プロセッサ]ラベルを使用します。
タスクシーケンスを終了 このアクティビティは、タスクシーケンスの終了処理を指示します。
オペレーターをリリース 輸送タスクが完了すると、このアクティビティはオペレーターをリリースします。[Operator]ラベルを使用してオペレーターをリリースします。

このロジックを作成するには:

  1. プロセッサを取得]アクティビティをクリックして選択します。このアクティビティの横にある[感嘆符]ボタン をクリックして、サンプリングモードに入ります。
  2. リソース:プロセッサ]共有アセットをクリックしてサンプリングします。
  3. [プロパティ]の[ラベルに割り当てる]ボックスに、「token.Processor」と入力します。
  4. オペレーターを取得]アクティビティをクリックして選択します。このアクティビティの横にある[感嘆符]ボタン をクリックして、サンプリングモードに入ります。
  5. リソース:オペレーター]共有アセットをクリックしてサンプリングします。
  6. [プロパティ]の[ラベルに割り当てる]ボックスに、「token.Operator」と入力します。
  7. タスクシーケンスを作成]アクティビティをクリックして選択します。[プロパティ]で、[実行者/タスクシーケンス]ボックスの横にある矢印をクリックして、メニューを開きます。[トークンラベル]をポイントし、[Operator]を選択します。これにより、作成中のタスクシーケンスは、先ほど取得したオペレーターに割り当てられます。他の設定はデフォルト値のままにします。このアクティビティにより、「taskSequence」という新しいラベルがトークンに作成されることが分かります。このシーケンスのタスクはすべて、このラベルを通じてシーケンスに割り当てられます。
  8. ボックスをキューでロード]アクティビティをクリックして選択します。[プロパティ]で、[実行者/タスクシーケンス]のデフォルトが「token.taskSequence」になっていることを確認します。
  9. アイテム]ボックスの横にある矢印をクリックして、メニューを開きます。[トークンラベル]をポイントして[ボックス]を選択します。
  10. プロセッサでアンロード]アクティビティをクリックして選択します。[プロパティ]で、[実行者/タスクシーケンス]のデフォルトが「token.taskSequence」になっていることを確認します。
  11. アイテム]ボックスの横にある矢印をクリックして、メニューを開きます。[トークンラベル]をポイントして[ボックス]を選択します。
  12. ステーション]ボックスの横にある矢印をクリックして、メニューを開きます。[トークンラベル]をポイントし、[プロセッサ]を選択します。
  13. [タスクシーケンスを終了]はデフォルト設定のままにします。[タスクシーケンス]ボックスが「token.taskSequence」となっていることを確認してください。これは、タスクシーケンスの終了処理の実行を指示します。
  14. オペレーターをリリース]アクティビティをクリックして選択します。[プロパティ]で、[割り当て先のリソース]ボックスの横にある矢印をクリックして、メニューを開きます。[トークンラベル]をポイントし、[Operator]を選択します。

シミュレーションモデルを保存することをおすすめします。

ステップ5 処理ボックスロジックを作成する

このステップでは、フローアイテムの処理が終了した後にプロセッサをリリースするアクティビティのロジックを編集します。新しいアクティビティが機能する方法の概要を次に示します。

アクティビティ 説明
イベントを待つ:処理完了時 これはイベントリスニングのアクティビティです。つまり、3Dモデル内のオブジェクトをリッスンし、イベントが発生すると、トークンを次の下流アクティビティにリリースします。このアクティビティは、プロセッサがアイテムの処理を終了するまで待機してから、トークンを次のアクティビティにリリースします。
プロセッサをリリースする フローアイテムの処理が完了すると、このアクティビティはプロセッサをリリースします。[Processor]ラベルを使用してプロセッサをリリースします。
シンク:ボックス処理済み このアクティビティは、処理フローからトークンを削除します。デフォルト設定を使用します。

このロジックを作成するには:

  1. イベントを待つ:処理完了時]アクティビティをクリックして選択します。[プロパティ]で、[オブジェクト]ボックスの横にある矢印をクリックして、メニューを開きます。[トークンラベル]をポイントし、[プロセッサ]を選択します。
  2. イベント]ボックスの横にある[サンプラー]ボタン をクリックして、サンプリングモードに入ります。
  3. 3Dモデルで、[プロセッサA]をクリックしてメニューを開きます。[処理完了時]を選択します。
  4. プロセッサをリリース]アクティビティをクリックして選択します。[プロパティ]で、[割り当て先のリソース]ボックスの横にある矢印をクリックして、メニューを開きます。[トークンラベル]をポイントし、[プロセッサ]を選択します。

シミュレーションモデルを保存することをおすすめします。

ステップ6 モデルを実行してテストする

シミュレーションモデルをリセットして実行します。

モデルを実行して、オペレーターがStandardQueueでボックスをロードし、いずれかのプロセッサでそれらをアンロードするのを確認してください。

モデルが期待通りに動作しない場合は、戻って、すべてのプロパティ設定が正しいことを再確認してください。

結論

ここまで、FlexSimで簡単な輸送タスクを作成する処理を確認しました。これにより、調整された輸送タスクを作成する準備ができました。次に「チュートリアルタスク2.2 - 調整されたロードタスクを作成する」に進みます。