タスクを構築するツールと方法

ツールと方法の概要

一般に、タスクを作成し、それらをタスク実行者に割り当てるための2つの基本的なツールがあります。

  • 標準3Dオブジェクトロジック - 3D固定リソースの多くは、基本的なロードタスクやアンロードタスク、処理中にオペレーターの立会いを要求するなど、単純なタスクをタスク実行者に割り当てるために使用できるプロパティと基本ロジックを備えています。標準ロジックを使用するには、通常、ポート接続またはディスパッチャーオブジェクトを使用してタスク実行者を固定リソースに接続する必要があります。
  • 処理フロー共有アセット - 処理フローでタスクシーケンスを設計することもできます。リソースやリストなどの共有アセットを使用して、特定のタスクに対するタスク実行者の割り当てを処理できます。

各方法には、それぞれ利点と欠点があります。これらについては、このトピックで詳しく説明します。タスクを構築するためのさまざまなツールや方法の使用について詳細な実践的ガイドが必要な場合は、タスクロジックチュートリアル1 - タスクロジックツールの実行もおすすめします。

標準ロジックを使用してタスクを作成する

標準ロジックの使用とは、ポート接続と3Dオブジェクトのプロパティを使用してタスクを作成し、タスク実行者に割り当てることを意味します。

たとえば、最も基本的なタスクは、タスク実行者を割り当てて1つの固定リソースから別の固定リソースにフローアイテムを輸送することです。このロジックを作成するには:

  1. 入出力ポート接続(A接続)を使用して2つの固定リソースを接続します。
  2. センターポート接続(S接続)を使用して、上流の固定リソースをタスク実行者に接続します。
  3. 上流の固定リソースをダブルクリックして、プロパティウィンドウを開きます。[フロー]タブで、[輸送を使用]チェックボックスをオンにします。
  4. このチェックボックスの横にあるボックスに、式current.centerObjects[1]を使用して、どのタスク実行者がこのタスクを実行するかを指定します。

current.centerObjects[1]は3つの部分から成ります。最初のcurrentの部分は、現在の3Dオブジェクト(現在プロパティを編集しているオブジェクト)に接続されているものを使用することを意味します。後半のcenterObjectsは、センターポートを介して接続されているものを使用することを意味します。最後の[1]の部分は、最初のセンターポートを介して接続されているタスク実行者を使用するように指示しています。

シミュレーションモデルで複数のタスク実行者を使用する場合は、通常、それらをディスパッチャーに接続する必要があります。ディスパッチャーは可用性やその他の要因に基づいて、タスク実行者にタスクを割り当てる処理を行います。

処理フロー内のリソースを使用してタスクを作成する

タスクを作成するための1つの方法は、リソース(処理フローの一種の共有アセット)を使用することです。

この種のシステムでは、処理フローを移動するトークンは通常、完了する必要があるタスクを表します。次にトークンは、3Dモデル内のタスク実行者またはタスク実行者のグループにリンクされているリソースを取得します。取得されたタスク実行者はその後タスクを完了し、タスクが完了するとリリースされます。

処理フロー内のリストを使用してタスクを作成する

タスクを作成するもう1つの方法は、リスト(処理フローのもう一種の共有アセット)を使用することです。

この種のシステムでは、1セットのトークンが処理フローを通過して、完了する必要があるタスクをリストにプッシュします。次に、モデル内の各タスク実行者を表す別のトークンのセットもあります。タスク実行者に関連付けられているトークンは、リストからタスクをプルして、それらのタスクを完了します。これらのタスクを完了した後、タスク実行者を表すトークンは処理フローをループして、リストからさらにタスクをプルできます。

ツールや方法を決定する

シミュレーションモデルの計画段階にあり、タスクロジックの設計に着手している場合、次の質問について考えてみることをおすすめします。

  • タスクはどのように生成されますか?たとえば、固定リソースはタスクを生成しますか?固定リソースはタスクをリストにプッシュしますか?処理フロー内のイベントトリガーソースはタスクを生成しますか?
  • タスクはどのようにタスク実行者に割り当てられますか?特定のタスクが他のタスクよりも優先されますか?FIFOロジック(先入れ先出し)以外のロジックを使用してタスク実行者にタスクを割り当てる必要はありますか。
  • 一部のタスクの詳細は、シミュレーションモデルの条件の変化に基づいて変更する必要がありますか?たとえば、ロードアクティビティの目的地は、タスクがタスク実行者に割り当てられる時点で動的に決定される必要がありますか?
  • タスク実行者は、タスクを完了するために協力する必要がありますか?これらは通常、協調タスクと呼ばれます。詳細については、「協調タスク」を参照してください。
  • タスクを実行している間、タスク実行者をプリエンプトすることが必要になる場合がありますか?
  • カスタムタスクを作成する必要がありますか?

シミュレーションモデルでタスクを作成して割り当てるために使用する方法は、シミュレーションプロジェクト固有のニーズとこれらの質問への回答に応じて大きく異なります。より複雑なタスクロジックを作成する予定の場合は、おそらく標準の3Dロジックではなく処理フローツールの使用を検討する必要があるでしょう。

このことを念頭に置いて、次のテーブルに、タスクを構築するためのさまざまなツールと方法の利点と欠点の概要を示します。

方法 利点 欠点
標準の3Dロジック
  • 簡単で迅速な設定
  • タスクの優先度の割り当てが可能
  • タスクのプリエンプト処理が可能
  • カスタムタスクまたは中間タスクの処理が困難
  • モデルが複雑になるにつれて、必ずしも適切に拡張できない
処理フロー内のリソース
  • 簡単で迅速な設定
  • ロジックがより見やすく、トラブルシューティングがより容易
  • カスタムまたは中間タスクを簡単に処理可能
  • 必要に応じて簡単にリソースを追加または削除可能
  • 標準ロジックと組み合わせて動作するのが困難
  • タスクの優先度の割り当てや、タスク実行者のプリエンプトが容易に行えない
  • 複雑なリソース割り当て方法を使用する場合、うまく拡張できない場合がある
処理フロー内のリスト
  • 複雑なタスク割り当てと優先度をかなりうまく処理できる
  • タスクを簡単に並べ替えまたは一致させることが可能
  • タスク実行者が作業を検索するシステムで使用可能
  • 標準ロジックと組み合わせて簡単に動作できる
  • モデルが複雑になるにつれて通常は拡張可能
  • 設定が簡単でも直感的でもない
  • タスクシーケンスを使用していて、それらをグローバルリストにプッシュしている場合は、モデル内で動的な意思決定を行うことが困難になる可能性があります

シミュレーションプロジェクトで1つの方法がうまくいかない場合、別のツールや方法にいつでも切り替えられることを忘れないでください。繰り返しますが、タスクロジックチュートリアル1 - タスクロジックツールを完了すると、タスクを構築するためのさまざまなツールや方法についてより深く理解できるようになります。シミュレーションプロジェクトに最適なアプローチが見つかるまで、実験を恐れないでください。