Skip to content

Commit a2b47e8

Browse files
committed
allow custom exit nodes
1 parent 5f31b40 commit a2b47e8

File tree

3 files changed

+213
-27
lines changed

3 files changed

+213
-27
lines changed

ciw/simulation.py

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ def __init__(
2626
deadlock_detector=None,
2727
node_class=None,
2828
arrival_node_class=None,
29+
exit_node_class=None,
2930
individual_class=None,
3031
server_class=None,
3132
):
@@ -34,7 +35,7 @@ def __init__(
3435
"""
3536
self.current_time = 0.0
3637
self.network = network
37-
self.set_classes(node_class, arrival_node_class, individual_class, server_class)
38+
self.set_classes(node_class, arrival_node_class, exit_node_class, individual_class, server_class)
3839
if exact:
3940
self.NodeTypes = [ExactNode for _ in range(network.number_of_nodes)]
4041
self.ArrivalNodeType = ExactArrivalNode
@@ -48,7 +49,7 @@ def __init__(
4849
self.show_simulation_to_distributions()
4950
self.number_of_priority_classes = self.network.number_of_priority_classes
5051
self.transitive_nodes = [node_type(i + 1, self) for i, node_type in enumerate(self.NodeTypes)]
51-
self.nodes = [self.ArrivalNodeType(self)] + self.transitive_nodes + [ExitNode()]
52+
self.nodes = [self.ArrivalNodeType(self)] + self.transitive_nodes + [self.ExitNodeType()]
5253
self.active_nodes = self.nodes[:-1]
5354
self.routers = self.find_and_initialise_routers()
5455
self.nodes[0].initialise()
@@ -173,17 +174,22 @@ def get_all_records(
173174
return records
174175

175176
def set_classes(
176-
self, node_class, arrival_node_class, individual_class, server_class
177+
self, node_class, arrival_node_class, exit_node_class, individual_class, server_class
177178
):
178179
"""
179-
Sets the type of ArrivalNode and Node classes being used
180-
in the Simulation model (if customer classes are used.)
180+
Sets the type of ArrivalNode, Node, Exit Node, Individual,
181+
and Server classes being used in the Simulation model.
181182
"""
182183
if arrival_node_class is not None:
183184
self.ArrivalNodeType = arrival_node_class
184185
else:
185186
self.ArrivalNodeType = ArrivalNode
186187

188+
if exit_node_class is not None:
189+
self.ExitNodeType = exit_node_class
190+
else:
191+
self.ExitNodeType = ExitNode
192+
187193
if node_class is not None:
188194
if not isinstance(node_class, list):
189195
self.NodeTypes = [node_class for _ in range(self.network.number_of_nodes)]

0 commit comments

Comments
 (0)