AGV.AllocatableObject
Objectから継承します。
説明
AGVによって割り当て可能なオブジェクトです。
割り当て可能オブジェクトは、コントロールポイントとコントロールエリアのいずれかです。このオブジェクトに関して取得できる主なプロパティは、割り当てリクエストのセットと割り当てのセットです。
プロパティ
allocations | 現在オブジェクトを割り当てているAGVのセットを表すAGV.AllocationPointの配列状リスト。 |
requests | 現在オブジェクトを要求しているAGVのセットを表すAGV.AllocationPointの配列状リスト。 |
routingConstraint | ルーティングを計算するときにAGVがオブジェクトをどのように通過するか、または通過すべきかどうかを定義する値。 |
メソッド
allocate | オブジェクトの割り当てを試みます。 |
詳細
AGV.AllocatableObject.allocations
readonly allocations
説明
現在オブジェクトを割り当てているAGVのセットを表すAGV.AllocationPointの配列状リスト。
AGV.AllocatableObject.requests
readonly requests
説明
現在オブジェクトを要求しているAGVのセットを表すAGV.AllocationPointの配列状リスト。
AGV.AllocatableObject.routingConstraint
int routingConstraint
説明
ルーティングを計算するときにAGVがオブジェクトをどのように通過するか、または通過すべきかどうかを定義する値。
routingConstraintプロパティは、AGV.RoutingConstraintのいずれかの値をとります。この値を設定すると、AllocatableObjectはルーティング目的の動的バリアになります。デフォルト値(AGV.RoutingConstraint.None)は、AGVがオブジェクトを通過できることを意味します。他の値(例:AGV.RoutingConstraint.Blocked)に設定すると、AGVは使用された値に基づいてオブジェクトを迂回します。
なお、AGV.RoutingConstraintは、パスに対する条件付きのルールを補足します。違いは、条件付きのルールがルーティングテーブルのキャッシュを使用するのに対して、routingConstraintは使用しない点です。モデル内の任意のオブジェクトのroutingConstraintがAGV.RoutingConstraint.None以外に設定されている場合、AGVネットワークはキャッシュされたルーティングテーブルを無視し、パスを再計算します。そのため、routingConstraintを使用すると、移動オペレーションのたびにパスの再計算が必要になるため、実行速度に大きな影響を与えます。とはいえ、動的バリアが非常に多くなる可能性があり、ルートのキャッシュ(およびすべての条件付きルールの作成)が現実的でない場合、routingConstraintは有用です。
ルーティング制約が設定され、AGVネットワークがルートを動的に構築するとき、AGVネットワークは「A*モード」に切り替わり、出発地点から目的地までのパスを素早く見つけるためにA*検索アルゴリズムを使用します。最適なパスを見つけると、検索アルゴリズムを切り上げ、標準的なダイクストラ法で通常行われるルーティングテーブルへの完全な登録は行いません。これは、動的バリアを使用するときにパス検索をできるだけ効率化することが目的です。
AGV.AllocatableObject.allocate()
AGV.AllocationPoint allocate( Object allocator , int force = 0 ) |
パラメータ
allocator | 割り当てを「所有する」オブジェクト。 |
force | 1または0に設定します。1の場合、割り当てを「強制」します。つまり、オブジェクトの最大割り当てプロパティを無視し、割り当て容量に達していてもオブジェクトを割り当てます。0の場合、オブジェクトがすでに割り当て容量に達しているとリクエストがリクエストキューに追加されます。 |
戻り値
AGV.AllocationPoint | 割り当てを表すAGV.AllocationPoint。割り当てポイントのrequestStateプロパティを取得して、割り当てがすぐに完了したかどうか、あるいは割り当てがオブジェクトのリクエストリストに追加されたかどうかを確認できます。 |
説明
オブジェクトの割り当てを試みます。
一般にこのメソッドの呼び出しは不要です。割り当てと割り当て解除はデフォルトではAGV移動の動作によって管理されるためです。このメソッドを使用するのは、AGVの標準的な移動パスに含まれないコントロールエリアやコントロールポイントを割り当てる必要がある場合です。たとえば、コンベヤシステムのアイテムに、コンベヤの決定点のOnArrivalトリガーによってコントロールエリアを割り当てさせることができます。この操作を自動的に実行し、このメソッドを呼び出すピックリストオプションがあります。
このメソッドを使用してオブジェクトを割り当てる場合、シミュレーションの後半で、結果の割り当てポイントでdeallocateを呼び出して割り当てを解除する必要があります。
AGV.AllocationPoint alloc = controlArea.allocate(current);
if (alloc.requestState == AGV.RequestState.Requested) {
... // do stuff if the object was not allocated immediately
await alloc.event("OnAllocate");
}
... // do stuff once the control area is allocated.