ポートロジックを作成する

ポートロジックの概要

このトピックでは、3Dモデルで固定リソースのプロパティを編集し、さまざまなタイプのフローロジックを作成する方法について説明します。このトピックを読む前に、以下のトピックで説明されている概念について理解しておいてください。

主に[プロパティ]ウィンドウの[入力]セクションと[出力]セクションのプロパティを使用して、固定リソース間のフローをコントロールします。アクセスするには、固定リソースをクリックして右側の[プロパティ]ウィンドウでプロパティを開きます。

フローの種類を変更する

シミュレーションモデルに複数の下流オブジェクトに接続された固定リソースがある場合は、流出フローアイテムを受け取る下流ポートを決定するロジックをポートに作成できます。FlexSimには、次のような事前にプログラミングされたさまざまなフローが用意されています。

  • 最初に利用可能 - フローアイテムは、最初にアイテムを受け取ることができる下流ポートに移動します(これがデフォルトの設定です)。
  • ラウンドロビン - フローアイテムは使用可能な各下流オブジェクトに順に送信されます。最初のフローアイテムは最初のポートに移動し、2番目のフローアイテムは2番目のポートに移動します。
  • ランダム - フローアイテムは、統計分布または割合で定義された分布などを使用して、ランダムに下流ポートに送信されます。
  • 条件付き - フローアイテムは、特定の条件が満たされると特定のポートに送信されるか、異なる条件セットに基づいて別のポートに送信されます。
  • シーケンシャル - フローアイテムは、グローバルテーブルに指定されているステップに基づいてポートに送信できます。

これらのフローの詳細な説明とデモンストレーションについては、「一般的なフローの種類」を参照してください。

[ポートに送信]プロパティを編集する

[プロパティ]ウィンドウにある[出力]セクションの[ポートに送信]プロパティを使用して、固定リソースがフローアイテムを受け取る下流ポートを決定する方法をコントロールします。一般的ないずれかのフローの種類を選択するには:

  1. 上流の固定リソースをクリックして、右側のプロパティを開きます。
  2. 出力]セクションで[ポートに送信]ボックスの横にある矢印をクリックします。
  3. このメニューには、選択可能な一般的なフローの種類が多数表示されています。いくつかのオプションを試すことでこのプロパティに慣れてください。

[ポートに送信]プロパティについて

ポートについての主要な概念」トピックでは、各ポートにランキングが割り当てられることを説明しました。2つのオブジェクト間のポート接続を作成するたびに、FlexSimは自動でその接続にランクを割り当てます。最初に作成されたポート接続には1のランクが割り当てられ、次に作成されたポート接続には2のランクが割り当てられます。

固定リソースがアイテムをリリースする準備ができたら、[ポートに送信]プロパティを評価し、ポート番号を返します。返されるすべてのポート番号によって、フローアイテムを受け取るポートが決まります。

たとえば、シミュレーションモデルに5つの出力ポートと5つの異なるキューがあるプロセッサがあり、統計分布を使用してそれらをランダムにキューに送信するとします。このシナリオでは、[ポートに送信]オプションをランダムに設定します。プロセッサがフローアイテムの処理を終了するとSend to Port関数が呼び出され、フローアイテムの送信先のポートが決定されます。[ポートに送信]プロパティはランダムに設定されているため、Send to Port関数はランダム統計分布を使用して1~5の数値を返します。3が返されると、フローアイテムはポート3に送られます。5が返されると、フローアイテムはポート5に送られます。詳細については、「固定リソースの概念」を参照してください。

輸送を使用する

必要に応じて、タスク実行者を使用して1つの固定リソースから別の固定リソースにフローアイテムを輸送できます(詳細な説明とデモンストレーションについては、「輸送を使用する」を参照してください)。

輸送を使用する基本的な方法

固定リソースが輸送を使用するフローロジックを作成するには:

  1. 少なくとも2つの固定リソースを3Dモデルに追加し、入出力ポート接続(A接続)を使用して接続します。詳細については、「ポートを追加する」を参照してください。
  2. 可能な場合は、2つの固定リソースの間で少なくとも1つのタスク実行者を3Dモデルに追加します。
  3. センターポート接続(S接続)を使用して、上流の固定リソースをタスク実行者に接続します。
  4. 上流の固定リソースをクリックして、右側のプロパティを開きます。
  5. 出力]セクションで[輸送を使用]チェックボックスをオンにします。デフォルトでは、このボックスをオンにすると固定リソースの最初のセンターポートに接続されたタスク実行者が使用されます。

[輸送を使用]プロパティの使用について

[輸送を使用]プロパティは、フローアイテムを輸送するタスク実行者をFlexSimに指示します。このボックスをオンにすると、デフォルトでcurrent.centerObjects[1]というFlexScript式が表示されます。この式の意味は次のとおりです。

  • 単語currentは、プロパティを定義している現在のオブジェクトを示します。つまり、プロセッサでこのプロパティを定義している場合は、そのプロセッサを意味します。
  • centerObjectsというフレーズは、そのオブジェクトのセンターポートに接続されているタスク実行者の使用をオブジェクトに指示するFlexScriptコードです。
  • 角括弧内の数字[1]は、センターポートに接続されたオブジェクトをランキング1で使用するように指示します。その数を2に変更すると、代わりに2番目のポートに接続されたタスク実行者が使用されます。

[輸送を使用]プロパティを変更し、別のロジックを使用して使用すべきタスク実行者を決定できます。[輸送を使用]ボックスの横にある矢印をクリックすると、タスク実行者を選択するさまざまなオプションが一覧表示されるメニューが表示されます。いくつかのオプションを試すことでこのプロパティに慣れてください。

優先度とプリエンプトについて

[輸送を使用]プロパティには[優先度]と[プリエンプト]という2つのプロパティが追加されています。これらのプロパティは、タスク実行者が他のタスクを作業する前後に輸送タスクを完了する必要があるかどうかをコントロールします。

タスク実行者用の輸送タスクを作成すると、実際には次の3つのタスクのタスクシーケンスが作成されます。

  1. フローアイテムをロードする
  2. 下流のオブジェクトに移動する
  3. フローアイテムをアンロードする

タスク実行者には、一度に複数のタスクシーケンスが割り当てられる可能性があります。たとえば、オペレーターが2つの異なるプロセッサのフローアイテムを輸送している場合、両方のプロセッサから輸送タスクシーケンスを同時に受け取ることができます。

必要に応じて優先度プロパティを使用し、優先度の高いタスクシーケンスをタスク実行者に指示できます。この場合、タスク実行者は他のタスクの前にそのタスクシーケンスで作業します。同様に、プリエンプトプロパティを使用してタスク実行者をプリエンプトできます。この場合、作業中の現在のタスクを停止して、より重要なタスクシーケンスを処理します。

優先度とプリエンプトはタスクシーケンスロジックで重要なプロパティであるため、これらのプロパティについてはタスクシーケンスに関するトピックで説明します。

オブジェクトプルを作成する

必要に応じて、下流オブジェクトで上流オブジェクトからフローアイテムをプルできるように指定できます。たとえば、特定の条件に基づいてプロセッサでフローアイテムをプルするように指定できます(詳細については、「プッシュ/プルする」を参照)。

プル方法を作成する

上流オブジェクトからオブジェクトをプルするには:

  1. 下流オブジェクトをクリックして、右側のプロパティを開きます。
  2. 入力]セクションで[プル方法]チェックボックスをオンにします。
  3. 固定リソースがオブジェクトをプルする入力ポートを変更する場合は、[プル方法]ボックスの横にある矢印をクリックしてメニューを開きます。このメニューには、選択可能な一般的なフローの種類が多数表示されています。いくつかのオプションを試すことでこのプロパティに慣れてください。
  4. この固定リソースがプルするフローアイテムの条件を制限する場合は、[プル要件]ボックスの横にある矢印をクリックしてメニューを開きます。このメニューには、さまざまな種類のフローアイテムの制限が一覧表示されます。いくつかのオプションを試すことでこのプロパティに慣れてください。

プル方法とプル要件のプロパティについて

プル方法プロパティは、フローアイテムがプルされる場所をコントロールします。つまり、固定リソースがフローアイテムをプルする入力ポートを決定します。

プル要件プロパティは、上流の固定リソースからプルできるフローアイテムの種類をコントロールします。たとえば、特定のアイテムタイプまたは一致するラベルのフローアイテムのみをプルするように固定リソースに指定できます。

固定リソースがアイテムをプルする準備ができたら、FlexSimはプル方法を評価して、どのポートからプルするかを決定します。次に、その条件または制限に一致するフローアイテムがあるかどうかを評価します。フローアイテムがその条件に一致するまで、このポートからプルしようとします。

ポートランキングを変更する

オブジェクトのポートランキングを変更するには:

  1. オブジェクトをクリックして、右側のプロパティを開きます。
  2. 次のような[ポート]セクションが表示されています。
  3. 上のボックスには、さまざまなポート接続のタイプが一覧表示されます(詳細については、「ポート接続のタイプ」を参照してください)。再ランク付けするポート接続のタイプを選択してください。
  4. 下のボックスには、このオブジェクトに接続されているタイプのすべてのポートが表示されます。ポートは番号でランク付けされ、ランク順にリストされます。再ランク付けするポートをクリックして選択します。
  5. 右のボタンを使用して、ポートを上下にランク付けします。