Skip to content

Commit 82e9364

Browse files
committed
shorten some lines
1 parent f94ab08 commit 82e9364

File tree

5 files changed

+130
-68
lines changed

5 files changed

+130
-68
lines changed

ciw/arrival_node.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,15 @@ def __repr__(self):
3333

3434
def decide_baulk(self, next_node, next_individual):
3535
"""
36-
Either makes an individual baulk, or sends the individual to the next node
36+
Either makes an individual baulk, or sends the individual
37+
to the next node
3738
"""
3839
if next_node.baulking_functions[self.next_class] == None:
3940
self.send_individual(next_node, next_individual)
4041
else:
4142
rnd_num = random()
42-
if rnd_num < next_node.baulking_functions[self.next_class](next_node.number_of_individuals):
43+
if rnd_num < next_node.baulking_functions[self.next_class](
44+
next_node.number_of_individuals):
4345
self.record_baulk(next_node)
4446
else:
4547
self.send_individual(next_node, next_individual)
@@ -65,7 +67,8 @@ def have_event(self):
6567
Send new arrival to relevent node.
6668
"""
6769
self.number_of_individuals += 1
68-
priority_class = self.simulation.network.priority_class_mapping[self.next_class]
70+
priority_class = self.simulation.network.priority_class_mapping[
71+
self.next_class]
6972
next_individual = Individual(self.number_of_individuals,
7073
self.next_class,
7174
priority_class)
@@ -99,7 +102,8 @@ def inter_arrival(self, nd, cls, current_time):
99102
"""
100103
Samples the inter-arrival time for next class and node.
101104
"""
102-
if self.simulation.network.customer_classes[cls].arrival_distributions[nd-1][0] == "TimeDependent":
105+
if self.simulation.network.customer_classes[
106+
cls].arrival_distributions[nd-1][0] == "TimeDependent":
103107
return self.simulation.inter_arrival_times[nd][cls](current_time)
104108
return self.simulation.inter_arrival_times[nd][cls]()
105109

ciw/import_params.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66

77
def create_network(params):
88
"""
9-
Identifies the type of parameters that is input and calls the correct function
9+
Identifies the type of parameters that is input and
10+
calls the correct function
1011
"""
1112
if isinstance(params, dict):
1213
return create_network_from_dictionary(params)

ciw/node.py

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@ def __init__(self, id_, simulation):
2828
self.schedule = [list(pair) for pair in zip(boundaries, servers)]
2929
self.c = self.schedule[0][1]
3030
raw_schedule_boundaries = [row[0] for row in raw_schedule]
31-
self.date_generator = self.date_from_schedule_generator(raw_schedule_boundaries)
31+
self.date_generator = self.date_from_schedule_generator(
32+
raw_schedule_boundaries)
3233
self.next_shift_change = next(self.date_generator)
3334
else:
3435
self.c = node.number_of_servers
@@ -130,8 +131,10 @@ def begin_interrupted_individuals_service(self, current_time, srvr):
130131
"""
131132
ind = [i for i in self.interrupted_individuals][0]
132133
self.attach_server(srvr, ind)
133-
ind.service_time = self.get_service_time(ind.customer_class, current_time)
134-
ind.service_end_date = self.increment_time(self.get_now(current_time), ind.service_time)
134+
ind.service_time = self.get_service_time(ind.customer_class,
135+
current_time)
136+
ind.service_end_date = self.increment_time(self.get_now(current_time),
137+
ind.service_time)
135138
self.interrupted_individuals.remove(ind)
136139

137140
def begin_service_if_possible_change_shift(self, current_time):
@@ -352,7 +355,8 @@ def get_service_time(self, cls, current_time):
352355
"""
353356
Returns a service time for the given customer class
354357
"""
355-
if self.simulation.network.customer_classes[cls].service_distributions[self.id_number-1][0] == 'TimeDependent':
358+
if self.simulation.network.customer_classes[cls].service_distributions[
359+
self.id_number-1][0] == 'TimeDependent':
356360
return self.simulation.service_times[self.id_number][cls](current_time)
357361
return self.simulation.service_times[self.id_number][cls]()
358362

@@ -431,11 +435,15 @@ def write_individual_record(self, individual):
431435
individual.destination = False
432436

433437
def date_from_schedule_generator(self, boundaries):
434-
"""A generator that yields the next time according to a given schedule"""
438+
"""
439+
A generator that yields the next time according to a given schedule.
440+
"""
435441
boundaries_len = len(boundaries)
436442
index = 0
437443
date = 0
438444
while True:
439-
date = self.increment_time(boundaries[index % boundaries_len], (index) // boundaries_len * boundaries[-1])
445+
date = self.increment_time(
446+
boundaries[index % boundaries_len],
447+
(index) // boundaries_len * boundaries[-1])
440448
index += 1
441449
yield date

ciw/simulation.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,11 @@ class Simulation(object):
2222
"""
2323
Overall simulation class
2424
"""
25-
def __init__(self, network, exact=False, name='Simulation', tracker=False, deadlock_detector=False,
25+
def __init__(self, network,
26+
exact=False,
27+
name='Simulation',
28+
tracker=False,
29+
deadlock_detector=False,
2630
node_class=None, arrival_node_class=None):
2731
"""
2832
Initialise a queue instance.
@@ -62,13 +66,13 @@ def check_userdef_dist(self, func):
6266
"""
6367
sample = func()
6468
if not isinstance(sample, float) or sample < 0:
65-
raise ValueError("UserDefined function must return positive float.")
69+
raise ValueError("UserDefined func must return positive float.")
6670
return sample
6771

6872
def check_timedependent_dist(self, func, current_time):
6973
sample = func(current_time)
7074
if not isinstance(sample, float) or sample < 0:
71-
raise ValueError("TimeDependent function must return positive float.")
75+
raise ValueError("TimeDependent func must return positive float.")
7276
return sample
7377

7478

ciw/tests/test_sampling.py

Lines changed: 99 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,10 @@ def test_sampling_uniform_dist_hypothesis(self, u, rm):
7979
Q = ciw.Simulation(ciw.create_network(params))
8080
Nu = Q.transitive_nodes[0]
8181
for itr in range(10): # Because repition happens in the simulation
82-
self.assertTrue(ul <= Nu.simulation.service_times[Nu.id_number][0]() <= uh)
83-
self.assertTrue(ul <= Nu.simulation.inter_arrival_times[Nu.id_number][0]() <= uh)
82+
self.assertTrue(
83+
ul <= Nu.simulation.service_times[Nu.id_number][0]() <= uh)
84+
self.assertTrue(
85+
ul <= Nu.simulation.inter_arrival_times[Nu.id_number][0]() <= uh)
8486

8587
def test_error_uniform_dist(self):
8688
Arrival_distributions = [['Uniform', 2.2, 3.3]]
@@ -156,8 +158,10 @@ def test_sampling_deterministic_dist_hypothesis(self, d, rm):
156158
Q = ciw.Simulation(ciw.create_network(params))
157159
Nd = Q.transitive_nodes[0]
158160
for itr in range(10): # Because repition happens in the simulation
159-
self.assertEqual(Nd.simulation.service_times[Nd.id_number][0](), d)
160-
self.assertEqual(Nd.simulation.inter_arrival_times[Nd.id_number][0](), d)
161+
self.assertEqual(
162+
Nd.simulation.service_times[Nd.id_number][0](), d)
163+
self.assertEqual(
164+
Nd.simulation.inter_arrival_times[Nd.id_number][0](), d)
161165

162166
def test_error_deterministic_dist(self):
163167
Arrival_distributions = [['Deterministic', 2.2]]
@@ -225,8 +229,10 @@ def test_sampling_triangular_dist_hypothesis(self, t, rm):
225229
Q = ciw.Simulation(ciw.create_network(params))
226230
Nt = Q.transitive_nodes[0]
227231
for itr in range(10): # Because repition happens in the simulation
228-
self.assertTrue(tl <= Nt.simulation.service_times[Nt.id_number][0]() <= th)
229-
self.assertTrue(tl <= Nt.simulation.inter_arrival_times[Nt.id_number][0]() <= th)
232+
self.assertTrue(
233+
tl <= Nt.simulation.service_times[Nt.id_number][0]() <= th)
234+
self.assertTrue(
235+
tl <= Nt.simulation.inter_arrival_times[Nt.id_number][0]() <= th)
230236

231237
def test_error_triangular_dist(self):
232238
Arrival_distributions = [['Triangular', 2.2, 3.3, 2.8]]
@@ -620,10 +626,12 @@ def test_error_custom_dist(self):
620626

621627
def test_userdefined_function_dist(self):
622628
params = {
623-
'Arrival_distributions': [['UserDefined', lambda : random()],
624-
['UserDefined', lambda : custom_function()]],
625-
'Service_distributions': [['UserDefined', lambda : random()],
626-
['UserDefined', lambda : custom_function()]],
629+
'Arrival_distributions': [
630+
['UserDefined', lambda : random()],
631+
['UserDefined', lambda : custom_function()]],
632+
'Service_distributions': [
633+
['UserDefined', lambda : random()],
634+
['UserDefined', lambda : custom_function()]],
627635
'Number_of_servers': [1, 1],
628636
'Transition_matrices': [[0.1, 0.1],
629637
[0.1, 0.1]]
@@ -681,10 +689,12 @@ def test_userdefined_function_dist(self):
681689
def test_userdefined_function_dist_hypothesis(self, const, dist, rm):
682690
my_empirical_dist = [8.0, 8.0, 8.0, 8.8, 8.8, 12.3]
683691
params = {
684-
'Arrival_distributions': [['UserDefined', lambda : choice(my_empirical_dist)],
685-
['UserDefined', lambda : const]],
686-
'Service_distributions': [['UserDefined', lambda : random()],
687-
['UserDefined', lambda : custom_function()]],
692+
'Arrival_distributions': [
693+
['UserDefined', lambda : choice(my_empirical_dist)],
694+
['UserDefined', lambda : const]],
695+
'Service_distributions': [
696+
['UserDefined', lambda : random()],
697+
['UserDefined', lambda : custom_function()]],
688698
'Number_of_servers': [1, 1],
689699
'Transition_matrices': [[0.1, 0.1],
690700
[0.1, 0.1]]
@@ -694,11 +704,15 @@ def test_userdefined_function_dist_hypothesis(self, const, dist, rm):
694704
N2 = Q.transitive_nodes[1]
695705
ciw.seed(5)
696706
for itr in range(10): # Because repition happens in the simulation
697-
self.assertTrue(N1.simulation.inter_arrival_times[N1.id_number][0]()
707+
self.assertTrue(
708+
N1.simulation.inter_arrival_times[N1.id_number][0]()
698709
in set(my_empirical_dist))
699-
self.assertTrue(N2.simulation.inter_arrival_times[N2.id_number][0]() == const)
700-
self.assertTrue(0.0 <= N1.simulation.service_times[N1.id_number][0]() <= 1.0)
701-
self.assertTrue(0.0 <= N2.simulation.service_times[N2.id_number][0]() <= 2.0)
710+
self.assertTrue(
711+
N2.simulation.inter_arrival_times[N2.id_number][0]() == const)
712+
self.assertTrue(
713+
0.0 <= N1.simulation.service_times[N1.id_number][0]() <= 1.0)
714+
self.assertTrue(
715+
0.0 <= N2.simulation.service_times[N2.id_number][0]() <= 2.0)
702716

703717
def test_no_arrivals_dist(self):
704718
params = {
@@ -708,9 +722,10 @@ def test_no_arrivals_dist(self):
708722
'Transition_matrices': [[0.1]]
709723
}
710724
Q = ciw.Simulation(ciw.create_network(params))
711-
Nna = Q.transitive_nodes[0]
725+
Na = Q.transitive_nodes[0]
712726
ciw.seed(5)
713-
self.assertEqual(Nna.simulation.inter_arrival_times[Nna.id_number][0](), float('Inf'))
727+
self.assertEqual(
728+
Na.simulation.inter_arrival_times[Na.id_number][0](), float('Inf'))
714729

715730
def test_error_dist(self):
716731
params = {'Arrival_distributions': ['NoArrivals'],
@@ -732,18 +747,24 @@ def test_error_dist(self):
732747
rm=random_module())
733748
def test_check_userdef_dist(self, positive_float, negative_float, word, rm):
734749
assume(negative_float < 0)
735-
Q = ciw.Simulation(ciw.create_network('ciw/tests/testing_parameters/params.yml'))
736-
self.assertEqual(Q.check_userdef_dist(lambda : positive_float), positive_float)
737-
self.assertRaises(ValueError, Q.check_userdef_dist, lambda : negative_float)
738-
self.assertRaises(ValueError, Q.check_userdef_dist, lambda : word)
750+
Q = ciw.Simulation(
751+
ciw.create_network('ciw/tests/testing_parameters/params.yml'))
752+
self.assertEqual(
753+
Q.check_userdef_dist(lambda : positive_float), positive_float)
754+
self.assertRaises(
755+
ValueError, Q.check_userdef_dist, lambda : negative_float)
756+
self.assertRaises(
757+
ValueError, Q.check_userdef_dist, lambda : word)
739758

740759

741760
def test_timedependent_function_dist(self):
742761
params = {
743-
'Arrival_distributions': [['TimeDependent', lambda t : time_dependent_function_1(t)],
744-
['TimeDependent', lambda t : time_dependent_function_2(t)]],
745-
'Service_distributions': [['TimeDependent', lambda t : time_dependent_function_1(t)],
746-
['TimeDependent', lambda t : time_dependent_function_2(t)]],
762+
'Arrival_distributions': [
763+
['TimeDependent', lambda t : time_dependent_function_1(t)],
764+
['TimeDependent', lambda t : time_dependent_function_2(t)]],
765+
'Service_distributions': [
766+
['TimeDependent', lambda t : time_dependent_function_1(t)],
767+
['TimeDependent', lambda t : time_dependent_function_2(t)]],
747768
'Number_of_servers': [1, 1],
748769
'Transition_matrices': [[0.1, 0.1],
749770
[0.1, 0.1]]
@@ -752,16 +773,26 @@ def test_timedependent_function_dist(self):
752773
N1 = Q.transitive_nodes[0]
753774
N2 = Q.transitive_nodes[1]
754775
ciw.seed(5)
755-
self.assertEqual(N1.simulation.service_times[N1.id_number][0](3.0), 3.0)
756-
self.assertEqual(N1.simulation.service_times[N1.id_number][0](9.0), 3.0)
757-
self.assertEqual(N1.simulation.service_times[N1.id_number][0](9.0), 3.0)
758-
self.assertEqual(N1.simulation.service_times[N1.id_number][0](11.0), 5.0)
759-
self.assertEqual(N1.simulation.service_times[N1.id_number][0](11.0), 5.0)
760-
self.assertEqual(N2.simulation.service_times[N2.id_number][0](4.0), 2.0)
761-
self.assertEqual(N2.simulation.service_times[N2.id_number][0](4.0), 2.0)
762-
self.assertEqual(N2.simulation.service_times[N2.id_number][0](17.0), 8.5)
763-
self.assertEqual(N2.simulation.service_times[N2.id_number][0](22.0), 8.0)
764-
self.assertEqual(N2.simulation.service_times[N2.id_number][0](22.0), 8.0)
776+
self.assertEqual(
777+
N1.simulation.service_times[N1.id_number][0](3.0), 3.0)
778+
self.assertEqual(
779+
N1.simulation.service_times[N1.id_number][0](9.0), 3.0)
780+
self.assertEqual(
781+
N1.simulation.service_times[N1.id_number][0](9.0), 3.0)
782+
self.assertEqual(
783+
N1.simulation.service_times[N1.id_number][0](11.0), 5.0)
784+
self.assertEqual(
785+
N1.simulation.service_times[N1.id_number][0](11.0), 5.0)
786+
self.assertEqual(
787+
N2.simulation.service_times[N2.id_number][0](4.0), 2.0)
788+
self.assertEqual(
789+
N2.simulation.service_times[N2.id_number][0](4.0), 2.0)
790+
self.assertEqual(
791+
N2.simulation.service_times[N2.id_number][0](17.0), 8.5)
792+
self.assertEqual(
793+
N2.simulation.service_times[N2.id_number][0](22.0), 8.0)
794+
self.assertEqual(
795+
N2.simulation.service_times[N2.id_number][0](22.0), 8.0)
765796

766797
self.assertEqual(N1.get_service_time(0, 3.0), 3.0)
767798
self.assertEqual(N1.get_service_time(0, 9.0), 3.0)
@@ -774,21 +805,33 @@ def test_timedependent_function_dist(self):
774805
self.assertEqual(N2.get_service_time(0, 22.0), 8.0)
775806
self.assertEqual(N2.get_service_time(0, 22.0), 8.0)
776807

777-
self.assertEqual(N1.simulation.inter_arrival_times[N1.id_number][0](3.0), 3.0)
778-
self.assertEqual(N1.simulation.inter_arrival_times[N1.id_number][0](9.0), 3.0)
779-
self.assertEqual(N1.simulation.inter_arrival_times[N1.id_number][0](9.0), 3.0)
780-
self.assertEqual(N1.simulation.inter_arrival_times[N1.id_number][0](11.0), 5.0)
781-
self.assertEqual(N1.simulation.inter_arrival_times[N1.id_number][0](11.0), 5.0)
782-
self.assertEqual(N2.simulation.inter_arrival_times[N2.id_number][0](4.0), 2.0)
783-
self.assertEqual(N2.simulation.inter_arrival_times[N2.id_number][0](4.0), 2.0)
784-
self.assertEqual(N2.simulation.inter_arrival_times[N2.id_number][0](17.0), 8.5)
785-
self.assertEqual(N2.simulation.inter_arrival_times[N2.id_number][0](22.0), 8.0)
786-
self.assertEqual(N2.simulation.inter_arrival_times[N2.id_number][0](22.0), 8.0)
808+
self.assertEqual(
809+
N1.simulation.inter_arrival_times[N1.id_number][0](3.0), 3.0)
810+
self.assertEqual(
811+
N1.simulation.inter_arrival_times[N1.id_number][0](9.0), 3.0)
812+
self.assertEqual(
813+
N1.simulation.inter_arrival_times[N1.id_number][0](9.0), 3.0)
814+
self.assertEqual(
815+
N1.simulation.inter_arrival_times[N1.id_number][0](11.0), 5.0)
816+
self.assertEqual(
817+
N1.simulation.inter_arrival_times[N1.id_number][0](11.0), 5.0)
818+
self.assertEqual(
819+
N2.simulation.inter_arrival_times[N2.id_number][0](4.0), 2.0)
820+
self.assertEqual(
821+
N2.simulation.inter_arrival_times[N2.id_number][0](4.0), 2.0)
822+
self.assertEqual(
823+
N2.simulation.inter_arrival_times[N2.id_number][0](17.0), 8.5)
824+
self.assertEqual(
825+
N2.simulation.inter_arrival_times[N2.id_number][0](22.0), 8.0)
826+
self.assertEqual(
827+
N2.simulation.inter_arrival_times[N2.id_number][0](22.0), 8.0)
787828

788829
def test_broken_timedependent_function_dist(self):
789830
params = {
790-
'Arrival_distributions': [['TimeDependent', lambda t : time_dependent_function_1(t)]],
791-
'Service_distributions': [['TimeDependent', lambda t : broken_td_func(t)]],
831+
'Arrival_distributions': [
832+
['TimeDependent', lambda t : time_dependent_function_1(t)]],
833+
'Service_distributions': [
834+
['TimeDependent', lambda t : broken_td_func(t)]],
792835
'Number_of_servers': [1],
793836
'Transition_matrices': [[0.1]]
794837
}
@@ -800,10 +843,12 @@ def test_broken_timedependent_function_dist(self):
800843

801844
def test_timedependent_exact(self):
802845
params = {
803-
'Arrival_distributions': [['TimeDependent', lambda t : time_dependent_function_1(t)],
804-
['TimeDependent', lambda t : time_dependent_function_2(t)]],
805-
'Service_distributions': [['TimeDependent', lambda t : time_dependent_function_1(t)],
806-
['TimeDependent', lambda t : time_dependent_function_2(t)]],
846+
'Arrival_distributions': [
847+
['TimeDependent', lambda t : time_dependent_function_1(t)],
848+
['TimeDependent', lambda t : time_dependent_function_2(t)]],
849+
'Service_distributions': [
850+
['TimeDependent', lambda t : time_dependent_function_1(t)],
851+
['TimeDependent', lambda t : time_dependent_function_2(t)]],
807852
'Number_of_servers': [1, 1],
808853
'Transition_matrices': [[0.1, 0.1],
809854
[0.1, 0.1]]

0 commit comments

Comments
 (0)