Topic List
- Overview
- Details
- Connecting networknodes to Each Other
- Configuring Paths
- Configuring Paths Through the Properties Window
- Dynamically Close Node Edges
- Acceleration/Deceleration on Node Edges
- Connecting networknodes to Objects
- Connecting networknodes to TaskExecuters
- Viewing Connections
- Maximum Number of Travelers
- Virtual Exits
- Commands
- Changes to the Distance Table
- States
- Properties Pages
- Related Topics
Overview
networknodes are used to define a network of paths that transporters and operators follow. The paths can be modified using spline points to add curvature to the path. By default, objects travelling on a network will follow the shortest path between their origin and destination. To learn how to begin using networknodes, refer to Lesson 3 of the FlexSim tutorials.
Details
Connection of travel networks is done in three steps:
- Connecting networknodes to each other.
- Connecting networknodes to the objects they will act as gateways to.
- Connecting TaskExecuters to the networknodes they will be stationed at for the beginning of the simulation.
Connecting networknodes to Each Other
Each networknode can have several paths connecting it to other networknodes. Each path represents two single-direction travel paths. Each path direction can be configured independently.
Configuring Paths
To create a path between two network nodes, hold down the 'A' key, click on one network node, and drag to the other node.
This will create two one-way, passing connections between the nodes. The path is drawn as a green tape between the two nodes. The tape is divided into two sides. Each side describes one direction of the path. Subsequent 'A' drag connections will toggle one direction of the path between passing and non-passing (green and yellow). The direction you toggle is determined by which node you drag from and which node you drag to. The diagram below shows two paths. The first is a passing connection in both directions. The second is a passing connection going right-to-left, and non-passing going left-to-right. The sides of the tape and which direction they describe is determined in the same manner as the American road system: you drive down the right side of the road.
A 'Q' drag connection will toggle one direction of the path as "No Connection", which means travellers aren't allowed to travel in that direction. This type of connection is drawn in red. The diagram below shows a non-passing connection going left-to-right and a no connection going right-to-left. If a 'Q' connection is made in both directions, the whole connection will be deleted.
You can also change the connection type of a given colored box by right clicking on the box and selecting a menu option, or by holding the 'X' key down and clicking on the box.
By default, connections are made as straight paths between nodes. You change these connections to be curved connections by right-clicking on one of the connection's colored boxes and selecting Curved. Two smaller boxes, called spline control points, will be created, and you can move them to create a curved path.
You can also configure how network node connections are made by default through the Travel Networks modeling utility.
Configuring Paths Through the Properties Window
When you open a networknode's Properties window, the Paths page allows you to configure all one-directional paths that extend out of that node. If you want to configure paths going into the node, then edit the properties of the nodes that connect to it. For each path going out of the networknode, you can give it a name, specify the type of travel connection it is, the spacing, the speed limit, and a "virtual" user distance:
- Name - The name of a connection is simply for semantic purposes, and has no effect on model logic.
- Connection Type - There are three connection types: No Connection, Passing, and Non-passing. No connection means that no traveller should travel along this path, in the given direction. If this is selected, then the path will be colored red down the corresponding side of the path. Passing means that travelers do not back up along the path, but simply pass each other if speeds vary. Non-passing means that travellers along this path will actually back up, using the spacing value as a buffer distance between them.
- Spacing - Spacing only applies if the path is Non-passing. This is the distance to keep between the back of one traveller and the front of another traveller on the path.
- Speed Limit - This is a speed limit for the path. Travellers will travel the minimum of their own speed and the speed limit of the path. If the path is a Passing connection, then travellers will accelerate or decelerate to the appropriate speed once the get on the path. If it is non-passing, however, then travellers will immediately change their speed to the appropriate speed, without using acceleration or deceleration.
- Virtual Distance - Here you can enter a user-defined distance for the path. This would be used if you want to set a specific distance, and override the path's actual distance, or if it is a very large distance, but you don't want to have to put the other networknode in a remote part of the model. If 0 is entered, then it will use the actual distance of the path. Otherwise it will use the distance you enter.
Each node's connection has a number associated with it. This is the same as the order of the listing of the connections in the path tab page. The first connection in the list is associated with connection 1, the second with connection 2, and so forth. To get a reference to the networknode that is connected to the node through a given connection number, just use the outobject() command, with the specified connection number.
Dynamically Closing Node Edges
You can dynamically close node paths during the simulation, using the closenodeedge and opennodeedge commands. In these commands, you specify the networknode, and either a number rank or a name of the edge. A closed node edge does not allow any more travellers onto the edge until it has been opened again. However, travellers already on the node edge when it is closed will continue and can exit the edge. A closed node edge is drawn with an orange color, as show below. When the model is reset, all node edges that were previously closed will be opened again.
Acceleration/Deceleration on Node Edges
Acceleration and deceleration will work on network edges. Objects will accelerate to their maximum speed as they begin travel on the network. They will also decelerate when approaching the destination. Also, if a traveler is traveling at its maximum speed and it arrives at an edge whose speed limit is less than its maximum speed, then it will decelerate to the speed limit. The deceleration starts once the traveler starts moving along that edge with the lower speed limit, not before it gets there.
Connecting networknodes to Objects
To connect a networknode to some object in the model for which you want the networknode to act as a travel gateway, make an 'A' drag connection between the networknode and the object. The networknode will draw a blue line between it and the top left corner of the object. Making this type of connection means that any TaskExecuter traveling on the network that wants to travel to that object will travel to the networknode that it is connected to.
You can connect several networknodes to the same object. This will cause a TaskExecuter wanting to travel to the object to travel to the networknode nearest to itself that is connected to the object. You can also connect several objects to the same networknode. These capabilities are shown below. The Processor on the left is connected to both the networknode on the left and the networknode on the right. The networknode on the right is also connected to both the Processor on the left as well as the Processor on the right.
If you connect a node to a station, but don't see the blue line, try moving the networknode around, as the blue line might just be covered up by a grid line.
Connecting networknodes to TaskExecuters
To connect a networknode to a TaskExecuter that you want to travel on the network, make an 'A' drag connection between the networknode and the TaskExecuter. The networknode will draw a red line between it and the top left corner of the object. Making this type of connection means that any TaskExecuter given a Travel task will use the network to get to the destination. It also means that the node that you connect the TaskExecuter to is the first node that it will travel to when it needs to travel through the network. Whenever a TaskExecuter finishes a travel operation, arriving at the node connected to the travel operation's destination object, the TaskExecuter will become inactive at that node, and the red line will be drawn to the TaskExecuter while he is doing other operations in that node's area. What this means is, the next time the TaskExecuter gets a travel task, he must return to the networknode he was inactive at in order to get back onto the network.
(By "inactive" we mean that the TaskExecuter is inactive on the travel network. The object may be actively executing other operations like load, unload, or utilize tasks, but it is not currently traveling on the network.)
You can connect several TaskExecuters to the same networknode. All TaskExecuters connected to a networknode will reset their position to the position of the networknode they were originally assigned to when the model is reset.
If you connect a node to a TaskExecuter, but don't see the red line, try moving the networknode around, as the red line might just be covered up by a grid line.
If you want to connect/disconnect a networknode as a travel gateway to a TaskExecuter, use the 'D' and 'E' keys to connect and disconnect. Connecting in this manner, will cause a blue line to be drawn to the TaskExecuter indicating that other TaskExecuters traveling to that TaskExecuter will travel to the networknode connected to it with the blue line.
Viewing Connections
Once you have built a travel network, you can configure which types of connections you want to be drawn in the Ortho/Perspective view. The network has a set of drawing modes, from showing the most information to showing the least information. These modes are listed below.
Mode 1: Show nodes, paths, object/TaskExecuter connections, spline control points
Mode 2: Show nodes, paths, object/TaskExecuter connections
Mode 3: Show nodes, paths
Mode 4: Show nodes
Mode 5: Show only one node
When you hold the 'X' key down and repeatedly click on a networknode, the whole network will toggle through these modes, showing less information with each 'X' click. When you hold the 'B' key down and repeatedly click on a networknode, the whole network will toggle backwards through the list of modes. You can also select a set of networknodes (hold Ctrl key down and click on several nodes) and then 'X' click on one of that set to have the draw mode toggling only apply to the networknodes you've selected. If you have selected a set of networknodes and 'X' click on a networknode that is not selected, then draw mode toggling will only apply to networknodes that are not selected. This can be very useful if you have a very large model and don't need all spline connections to be drawn.
Maximum Number of Travelers
You can specify the maximum number of travelers allowed to be inactive, or stationary, at the node. An inactive traveler is one that is connected to the network node, and is not performing a Travel task, but rather is doing another task or is idle. You can tell a traveler is inactive by the fact that there is a red line drawn between the traveler and the network node.
If the maximum number of stationary travelers for a network node is set to 1, and a traveler is already stationary at the node, then when another traveler arrives at the node it will have to wait until the first traveler leaves the node before it can finish its travel task. Note that this only applies when the second traveler's destination is that node. If the traveler just wants to pass through the node to another node, then it will not have to wait.
Virtual Exits
networknodes can also have virtual exits. Above it was mentioned that when a TaskExecuter finishes a travel task, it becomes inactive at the destination networknode. Once it gets another travel task, it must go back to the original networknode it was at in order to get back onto the network. Virtual exits allow you to specify alternative nodes that the TaskExecuter can travel to in getting back onto the network. Virtual exits are created between networknodes. They are created by holding down the 'D' key and dragging from one networknode to another. An example is shown below.
The above figure shows two Rack objects and two networknodes. The networknodes are travel gateways to the Rack objects (blue lines are drawn between the Racks and the nodes). A two-way virtual exit connection has also been made between the two networknodes (orange arrows pointing to either node). This means that if a TaskExecuter arrives at the racks through one of the networknodes, and then needs to get back onto the network, it can "exit" the area through any one of the two, whichever has a shorter total distance. Orange arrows pointing out of a given networknode mean that if a TaskExecuter is inactive at that node, it can exit through any one of the networknodes that node is connected to. If it needs to exit through a different node than it entered, it uses the reassignnetnode() command to reassign itself to the new node. Then it simply exits through that node.
To delete a virtual exit, hold the 'E' key down and drag between networknodes in the same direction of the virtual exit connection you want deleted.
Commands
There are several commands you can use to dynamically manipulate networks and transports. These are as follows. More detailed information can be found in the command summary.
reassignnetnode(object transport, object newnode)
This dynamically changes the networknode at which a TaskExecuter is stationed.
redirectnetworktraveler(object transport, object destination)
If a traveler is on a network traveling to a given destination, and you would like it to change its destination in the middle of the travel operation, you can use this command.
distancetotravel(object traveler, object destination)
This command can be used to calculate the distance from a TaskExecuter's current static node to the destination object.
getedgedist(object netnode, num edgenum)
This returns the distance of an edge of the networknode.
getedgespeedlimit(object netnode, num edgenum)
This returns the speed limit of an edge of the networknode.
Changes to the Distance Table
The distance/routing table of all network nodes in the model is kept on a global object in the model called "defaultnetworknavigator". The re-calculation is optimized to only be executed if changes have been made to the network. If you have clicked on a networknode in the model, or if you've 'A' or 'Q' dragged between two networknodes in the model, then the next time you reset the model, the distance/routing table will be re-calculated.
States
The networknode does not implement any states.
Properties Pages
networknode
Triggers
Labels
General
Related Topics
Tutorial: Lesson 3
TrafficControl