近接動作
概要と主要な概念
近接動作は、エージェントシステム内でエージェントに対してアクティブ化できる動作です。この動作は、各エージェントと近接エージェントとの近接距離を測定し、ユーザー定義の近接距離以内に近づいた時点と、その後で再度近接距離が確保された時点でトリガーを起動します。
エージェント間の近接性を計算する動作の詳細については、「近接性の計算」を参照してください。
動作設定
[動作]タブには、次のプロパティがあります。
更新間隔
エージェントが互いに定義済みの近接距離内に存在するかどうかをシステムでチェックする頻度を、選択した時間単位に基づいて定義します。
近接半径
近接検出をトリガーする距離を、選択済みの測定単位に基づいて定義します。
スレッディング
次の2つのオプションがあります。
- シングルスレッド - 動作がシングルスレッドのとき、1つのCPUスレッドを使用して、各エージェントを順に更新します。
- マルチスレッド (実験的) - 動作がマルチスレッドのとき、複数のCPUスレッドを使用して各エージェントを更新します。更新が必要なエージェントが多数存在する場合、マルチスレッドを使用すると効果的です。
アクティブルール
アクティブルールを選択すると、特定の状況または条件に動作を適用できます。たとえば、特定のタイプ、または特定の状態や動作がアクティブなエージェントとの間でのみ近接性を検出する動作が可能です。
ボタンをクリックすると、新しいアクティブルールが作成されます。アクティブルールが選択されると、ルールの名前が[アクティブルール]フィールドに表示されます。ルールの名前の横にある[X]ボタンをクリックすると、ルールを削除できます。ルールとカテゴリは次のとおりです。
セルフベースのアクティブルールは、エージェント自身のプロパティに基づいて適用されます。次のオプションがあります。
- 移動時のみ - このオプションは、エージェントがタスク実行者で、移動タスクを現在実行中のときのみ近接検出を適用します。
- アイドル時のみ - このオプションは、エージェントがタスク実行者で、移動タスクを現在実行していないときのみ近接検出を適用します。
- ラベル値 - このオプションは、エージェントに特定のラベルがあり、特定の値のときのみ、近接検出を適用します。このオプションを選択すると、[ラベル名]、および一致する必要があるラベルの[値]のフィールドが表示されます。
近接ベースのアクティブルールは、特定の近接に基づいて適用されます。次のオプションがあります。
- 動作での近接 - このオプションは、定義された動作を持つ、または動作を一切持たない周囲のエージェントとの近接検出のみを行います。
- 一致するラベルでの近接 - このオプションは、エージェントのラベル値に一致するラベルを持つ周囲のエージェントとの近接検出のみを行います。
- ラベル値での近接 - このオプションは、選択したラベルが定義された値と一致する周囲のエージェントとの近接検出のみを行います。
トリガー
近接動作のトリガーは、ここに定義します。 ボタンをクリックすると、使用可能なトリガーのメニューが開きます。追加できるトリガーのセットは、その動作がサポートするイベントのセットに対応しています。
イベント
近接動作がサポートするイベントのセットは次のとおりです。近接動作イベントのリッスンの詳細については、「エージェントシステム:他のFlexSimロジックとの統合」を参照してください。
On Enter Proximity
このイベントは、周囲のエージェントが近接半径内に初めて検出されたとき発生します。
On Exit Proximity
このイベントは、周囲のエージェントが近接半径から離れたことが初めて検出されたとき発生します。
On In Proximity
このイベントは、現在エージェントと近接しているすべての周囲のエージェントについて、更新間隔ごとに発生します。