Skip to content

Commit 513550b

Browse files
committed
some restructrue so distributions see the simulation object
1 parent 3915ef8 commit 513550b

3 files changed

Lines changed: 18 additions & 0 deletions

File tree

ciw/arrival_node.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ def __init__(self, simulation):
2727
self.simulation.network.number_of_classes)}
2828
for nd in range(self.simulation.network.number_of_nodes)}
2929

30+
def initialise(self):
3031
self.initialise_event_dates_dict()
3132
self.find_next_event_date()
3233

ciw/simulation.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,11 @@ def __init__(self, network,
4343
self.inter_arrival_times = self.find_arrival_dists()
4444
self.service_times = self.find_service_dists()
4545
self.batch_sizes = self.find_batching_dists()
46+
self.show_simulation_to_distributions()
4647
self.number_of_priority_classes = self.network.number_of_priority_classes
4748
self.transitive_nodes = [self.NodeType(i + 1, self) for i in range(network.number_of_nodes)]
4849
self.nodes = ([self.ArrivalNodeType(self)] + self.transitive_nodes + [ExitNode()])
50+
self.nodes[0].initialise()
4951
self.statetracker = tracker
5052
self.statetracker.initialise(self)
5153
self.times_dictionary = {self.statetracker.hash_state(): 0.0}
@@ -96,6 +98,16 @@ def find_batching_dists(self):
9698
for clss in range(self.network.number_of_classes)}
9799
for node in range(self.network.number_of_nodes)}
98100

101+
def show_simulation_to_distributions(self):
102+
"""
103+
Adds the simulation object as an attribute of the distribution objects
104+
"""
105+
for clss in range(self.network.number_of_classes):
106+
for nd in range(self.network.number_of_nodes):
107+
self.inter_arrival_times[nd + 1][clss].simulation = self
108+
self.service_times[nd + 1][clss].simulation = self
109+
self.batch_sizes[nd + 1][clss].simulation = self
110+
99111
def find_next_active_node(self):
100112
"""
101113
Returns the next active node, the node whose next_event_date is next:

ciw/tests/test_arrival_node.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ def test_init_method(self):
1313
Q = ciw.Simulation(ciw.create_network_from_yml(
1414
'ciw/tests/testing_parameters/params.yml'))
1515
N = ciw.ArrivalNode(Q)
16+
N.initialise()
1617
self.assertEqual(round(N.next_event_date, 5), 0.00440)
1718
self.assertEqual(N.number_of_individuals, 0)
1819
self.assertEqual(N.number_of_individuals_per_class, [0, 0, 0])
@@ -31,6 +32,7 @@ def test_initialise_event_dates_dict_method(self):
3132
Q = ciw.Simulation(ciw.create_network_from_yml(
3233
'ciw/tests/testing_parameters/params.yml'))
3334
N = ciw.ArrivalNode(Q)
35+
N.initialise()
3436
dates_dict_1 = {1: {0: 0.4362282541, 1: 0.2672232406, 2: 0.3864256273},
3537
2: {0: 0.1636952311, 1: 0.0714709565, 2: 0.8065738414},
3638
3: {0: 0.4088480190, 1: 0.0514323248, 2: 0.8132038176},
@@ -58,6 +60,7 @@ def test_find_next_event_date_method(self):
5860
Q = ciw.Simulation(ciw.create_network_from_yml(
5961
'ciw/tests/testing_parameters/params.yml'))
6062
N = ciw.ArrivalNode(Q)
63+
N.initialise()
6164
self.assertEqual(round(N.next_event_date, 5), 0.00105)
6265
N.find_next_event_date()
6366
self.assertEqual(round(N.next_event_date, 5), 0.00105)
@@ -74,6 +77,7 @@ def test_have_event_method(self):
7477
Q = ciw.Simulation(ciw.create_network_from_yml(
7578
'ciw/tests/testing_parameters/params.yml'))
7679
N = ciw.ArrivalNode(Q)
80+
N.initialise()
7781
self.assertEqual(N.number_of_individuals, 0)
7882
self.assertEqual(N.number_of_individuals_per_class, [0, 0, 0])
7983
self.assertEqual(N.number_accepted_individuals, 0)
@@ -113,6 +117,7 @@ def test_have_event_method(self):
113117
Q = ciw.Simulation(ciw.create_network_from_yml(
114118
'ciw/tests/testing_parameters/params.yml'))
115119
N = ciw.ArrivalNode(Q)
120+
N.initialise()
116121
self.assertEqual(N.number_of_individuals, 0)
117122
self.assertEqual(N.number_of_individuals_per_class, [0, 0, 0])
118123
self.assertEqual(N.number_accepted_individuals, 0)

0 commit comments

Comments
 (0)