AGV Network
Overview and Key Concepts
The AGV Network helps you to create travel paths while simulating automatic guided vehicles (AGVs) and other task executers.
The AGV module does not add its own AGV object type to the library. Instead you can attach any task executer ( TaskExecuter, Operator, Transporter, etc.) to a control point on an AGV network, and that task executer will travel using AGV-defined logic.
The AGV Types Tab
For information on the AGV Types tab, see AGV Types.
The Control Point Connections Tab
For information on the Control Point Connections tab, see Control Point Connections.
The Accumulation Types Tab
For information on the Accumulation Types tab, see Accumulation Types.
The Deallocation Types Tab
For information on the Deallocation Types tab, see Deallocation Types.
The Conditional Rules Tab
The Conditional Rules tab lets you define boolean conditions for routing on various paths. For example, some paths may only be designated for certain types of AGVs. If you only want AGVs with a certain label value to be able to traverse the path, you can define a conditional rule that checks that the AGV label value matches. Then set the Conditional Rule property of a path to reference that rule. Once configured, only AGVs with matching label values will travel on that path.
Each time an AGV starts a travel task, it evaluates each conditional rule, creating a tuple that acts as a key into a cached map of routes to the desired destination. The AGV network maintains this cache for speed reasons, so that it does not need to recalculate the route every time an AGV needs to travel. Routing tables will be built and cached as needed during the simulation run.
It's important to note that AGVs only evaluate conditional rules at the beginning of their travel operations. This means that if a conditional rule's value changes in the middle of a travel operation, you must preempt the AGV so it will restart its travel operation, re-evaluating the conditional rules and the consequent route.
The General Tab
The General tab has the following properties:
You can get to the General page by right-clicking on a Path or Control Point and choosing AGV Network Properties.
Check for Deadlock
If checked, the Control Point/Control Area allocation logic will continuously check for deadlock cycles. If it finds one, it will stop the model and notify you of the issue. Note that deadlock detection does require additional calculations and may slow your simulation down. You should hence turn it on while debugging, and once all deadlock issues are resolved, turn it back off.
Zero Travel End Speed Means Max Speed
If checked, AGV's will interpret travel tasks with end speed of 0 to mean: end at the AGV's max speed. This behavior is the default with other FlexSim travel mechanisms, such as standard travel networks that use network nodes. However, with AGVs this is not always the desired behavior, so it is an explicit setting that you define here.
Ignore Internal Destination Errors
If checked, travel destination errors caused when using AGV.BodyOffset.TrainLeadingEdge or AGV.BodyOffset.TrainTrailingEdge for a destination internal to the train body will not be printed to the system console. The AGV will instead immediately finish the travel task.
This error happens in a very specific case. If you want an AGV train's "leading edge" to travel to a destination on the AGV path network that is internal to the AGV train, then there is technically no way to successfully perform that operation, because whatever edge of the train travels to that destination will be the "trailing edge" not the "leading edge." Thus, giving the AGV such a task is technically an error. However, in some models it would be onerous to try to detect and avoid this error. Thus, you can check this box and the AGV will simply finish the travel task without moving at all.
Line Width
Defines a baseline width, in pixels, by which Paths and Control Points will be drawn in the model.
Draw Scale
Defines a baseline size by which to scale drawing of Control Points and Path direction arrows.
Path Drawing, Control Point Drawing, Control Area Drawing
Defines how the respective objects can be manipulated in the model. As you finish certain parts of your model you may want to restrict what you can change about the objects in it. Options are:
- Full Manipulation - You can click on and move these objects around as needed.
- Clickable Only - You can click on these object but you cannot move them around.
- Not Clickable - You can see the objects in the 3D view but you cannot click on them.
- Do Not Draw - You cannot see the objects in the 3D view.
Show Control Point/Area Allocations
Used primarily for debugging. If checked, the AGV network will draw each AGV's current and requested allocations in the 3D view. This includes allocations of control points, control areas, as well as path transfers. Current allocations are drawn in orange, whereas requested allocations are drawn in red.
Show Accumulation Associations
Used primarily for debugging. If checked, the AGV network will draw a lines between AGVs that are currently traveling on accumulating paths. It will draw a blue line from each AGV to the AGV ahead of it, and to the AGV behind it.
Route Cost
This group of controls lets you customize how travel costs are calculated when resolving routes along the AGV path network. The AGV network uses dijkstra's algorithm to determine the best route of travel. As the algorithm traverses the network, it calculates the "costs" associated with traveling on each section of path. The AGV will then follow the route with the least total cost to get to the destination.
By default, the cost to travel a section of path is equal to the distance of that section. Alternately, if you select Divide By Speed, it will divide the distance by the speed a given AGV will travel along that path. The result is that the AGV will travel the fastest route instead of the shortest route.
You can also select Multiply By Custom Path Cost and enter a path-dependent expression. The algorithm will then multiply the cost by the result of the expression. The most common use for this would be to put labels on various paths in your network that give certain paths priority over other paths. The algorithm will then favor traveling on certain paths over others. Here, an expression result of 1 would use the standard cost, an expression of 3 would triple the cost, an expression value of .5 would cut the cost in half, and so forth. Note that, if the expression result is 0, it will use the standard cost.
Path-based costing is assumed to be static. When the system needs a routing table to a destination, it will only build it once and cache it off. Subsequent routing will use the cached table. This means that you can't simply change path-dependent costs during a simulation run and assume they will work. It will use whatever the path-based costs were the first time the table was built, not on subsequenct changes. However, you can use path-dependent costing, in conjunction with conditional rules, to achieve this goal.
The system creates a tuple by evaluating each conditional rule at the beginning of a travel task. The tuple is a key into a map of routing tables. The system will use a cached table if the table for the given tuple key already exists. If the table does not yet exist, the system will build and cache a new route. Thus, if you want your path costs to be dynamic, you can associate a given path cost configuration with a conditional rule. To use that configuration, set all the path cost values to the configuration, then turn on the conditional rule. Then once the routing table has been calculated, reset the path costs back to their default values, and turn the conditional rule off.
Debugging Route Costs
The AGV system also provides tools to get information on dijkstra's algorithm results. You can right-click on a destination control point and select Show Routing Accessibility. Then hover the cursor over other control points and path transfers in the model. It will show the various costs associated with traveling from the hovered point to the destination.
See Showing AGV Routing Accessibility for more information.
Way Points
Way Points are used to define AGV control logic that will happen when an AGV passes over a control point. However, going forward we advise you to use process flow instead of Way Points for AGV control. FlexSim provides a template AGV control process flow, which can be used as a starting point for defining AGV control logic..
The Way Points tab has the following properties:
You can get to the Way Points page by right-clicking on a Path or Control Point and choosing AGV Network Properties.
Way Points List
Here you can add, remove, re-order, and rename each Way Point.
Trigger Point
This defines when to fire the Way Point Logic. Options are:
- On Pre-Arrival - The Way Point Logic will be fired at the point when the AGV would otherwise start to decelerate to stop at the Way Point.
- On Arrival - The Way Point Logic will be fired when the AGV arrives at the Way Point. Note that if the Trigger Requirement is met and this Trigger Point is chosen, the AGV will slow to a stop at this Way Point and then fire the Way Point, even if the Way Point is not the AGV's final destination. Hence if you don't want the AGV to slow to a stop, you should use On Pre-Arrival.
Trigger Requirement
A field that should return 1 if the Way Point should be fired, 0 if not.
Way Point Logic
The code for the Way Point.
Way Point Members
The list of Control Points that are part of this Way Point. Here you can add, remove and re-order the members list.