Inherits from Object
An object that can be allocated by an AGV.
An allocatable object is either a Control Point or a Control Area. The primary properties you can get on this object are its set of allocation requests and its set of allocations.
|An array-like list of AGV.AllocationPoints that represent the set of AGVs who have currently allocated the object.
|An array-like list of AGV.AllocationPoints that represent the set of AGVs currently requesting to allocate the object.
|A value defining how/whether AGVs may travel through the object when calculating routing.
A value defining how/whether AGVs may travel through the object when calculating routing.
The routingConstraint property takes one of the values of AGV.RoutingConstraint. Setting this value makes the AllocatableObject into a dynamic barrier for routing purposes. The default value (AGV.RoutingConstraint.None) means AGVs can travel through the object. Setting it to some other value, e.g. AGV.RoutingConstraint.Blocked, will cause AGVs to route around the object, depending on the value you use.
Note that this supplements your use of conditional rules on paths. The difference is that conditional rules work with routing table caching, while routingConstraint does not. If there is any object in the model with a routingConstraint set to something other than AGV.RoutingConstraint.None, then the AGV network will ignore any cached routing tables and recalculate paths anew. As such, using routingConstraint can have significant impacts on run speed because it must recalculate the path on every travel operation. Nevertheless, it can be useful when the potential number of dynamic barriers is so large that route caching (and creating all the conditional rules) is impractical.
When routing constraints are set and the AGV network is building routes dynamically, it will switch to an 'A* mode', using the A* search algorithm to quickly find the path from the source to the destination. As soon as it finds the best path, it will shortcut the search algorithm, not filling out the routing table fully as it usually would when executing standard Dijkstra's algorithm. This is done to make the path search as efficient as possible when using dynamic barriers.