question

Cindy Schiess avatar image
2 Likes"
Cindy Schiess asked Brandon Peterson edited

defining custom travel routes based on model conditions or traveler properties

If I put up the boundaries of where people can walk (or fork trucks or whatever), there will be choices as to which route to take.

Can I assume traveling task executors always take the shortest route, or is there a way to split the traffic at points based on attributes? Maybe attributes of the person/vehicle (preferences), traffic levels, etc.?

FlexSim 16.0.1
task executertravelshortest distancecustom travel routing
5 |100000

Up to 12 attachments (including images) can be used with a maximum of 23.8 MiB each and 47.7 MiB total.

Ben Wilson avatar image
2 Likes"
Ben Wilson answered Cindy Schiess edited

Your options for defining travel routes taken for task executor travel are

  • direct travel
  • network nodes
  • A* (A-Star)
  • AGV

Direct travel means shortest distance from point A to point B in a straight line. This is the brute force travel method - no finesse involved. Travelers will move right through other objects, levitate through the air or travel into the ground, if necessary. This is the simplest method and FlexSim's default.

Network nodes allow you to define a network of connections (edges) from netnode to netnode, that a task executor will travel on. You can designate different properties for each edge of the network, such as 2-way vs 1-way, passing vs no-passing, max edge speed, maximum number of travelers, or virtual distance. There are many options, so be sure to check the documentation for network nodes.

Travelers will always take the shortest distance along the network by default, but network nodes have arrival and continue triggers with which you can direct a traveler to go down a different path than what was calculated for the shortest distance, based on whatever criteria you choose. This is one way to dynamically modify the route that a traveler will take. Check out the Commands category index for Network Nodes to see the commands that will allow you to dynamically closenodeedge(), redirectnetworktraveler(), and more.

A* has the option to create Preferred Paths that a traveler will prefer, based on a weighting value, more than a simple shortest distance calculation. These preferred paths cannot be changed on the fly through the course of a model run, so it may not be what you're looking for. We don't currently have any online links to the A* documentation, so be sure to check within your software's User Manual to learn more about A* and its various features.

AGVs were described by Anthony in a previous answer.

5 |100000

Up to 12 attachments (including images) can be used with a maximum of 23.8 MiB each and 47.7 MiB total.

anthony.johnson avatar image
2 Likes"
anthony.johnson answered anthony.johnson edited

By default, task executers will always take the shortest distance route to the destination. However, you can change this by placing redirect logic at various points in the system. This solution depends on which travel system you're using. If you are using travel networks with network nodes, then you can use a network node's OnArrival trigger to redirect to a different edge than the shortest distance edge (by returning the rank of the edge you want to go to). If you are using an AGV network, you can either use way points or process flow (AGV control point listening will be available in 2016 update 1, out in a month or so), and use the agvredirect() command to redirect the agv to a different control point before continuing to its destination.

5 |100000

Up to 12 attachments (including images) can be used with a maximum of 23.8 MiB each and 47.7 MiB total.