@@ -52,7 +52,7 @@ def __init__(self, id_, simulation):
5252 self .next_event_date = float ("Inf" )
5353 self .blocked_queue = []
5454 if self .c < float ('Inf' ):
55- self .servers = [ Server ( self , i + 1 ) for i in range ( self . c )]
55+ self .servers = self . create_starting_servers ()
5656 self .highest_id = self .c
5757 self .simulation .deadlock_detector .initialise_at_node (self )
5858 self .preempt = node .preempt
@@ -96,7 +96,7 @@ def add_new_servers(self, shift_indx):
9696 num_servers = self .schedule [shift_indx ][1 ]
9797 for i in range (num_servers ):
9898 self .highest_id += 1
99- self .servers .append (Server (self , self .highest_id ))
99+ self .servers .append (Server (self , self .highest_id , self . next_event_date ))
100100
101101 def attach_server (self , server , individual ):
102102 """
@@ -218,7 +218,6 @@ def change_shift(self):
218218 self .begin_service_if_possible_change_shift (
219219 self .next_event_date )
220220
221-
222221 def check_if_shiftchange (self ):
223222 """
224223 Check whether current time is a shift change.
@@ -227,6 +226,12 @@ def check_if_shiftchange(self):
227226 return self .next_event_date == self .next_shift_change
228227 return False
229228
229+ def create_starting_servers (self ):
230+ """
231+ Initialise the servers
232+ """
233+ return [Server (self , i + 1 , 0.0 ) for i in range (self .c )]
234+
230235 def detatch_server (self , server , individual ):
231236 """
232237 Detatches a server from an individual, and vice versa
@@ -240,7 +245,7 @@ def detatch_server(self, server, individual):
240245 server .busy_time = (individual .exit_date - individual .service_start_date )
241246 else :
242247 server .busy_time += (individual .exit_date - individual .service_start_date )
243- server .total_time = individual .exit_date
248+ server .total_time = self . increment_time ( individual .exit_date , - server . start_date )
244249 if server .offduty :
245250 self .kill_server (server )
246251
@@ -320,10 +325,13 @@ def increment_time(self, original, increment):
320325 """
321326 return original + increment
322327
323- def kill_server (self ,srvr ):
328+ def kill_server (self , srvr ):
324329 """
325330 Kills server.
326331 """
332+ srvr .total_time = self .increment_time (self .next_event_date , - srvr .start_date )
333+ self .all_servers_busy .append (srvr .busy_time )
334+ self .all_servers_total .append (srvr .total_time )
327335 indx = self .servers .index (srvr )
328336 del self .servers [indx ]
329337
@@ -417,6 +425,18 @@ def update_next_event_date(self, current_time):
417425 else :
418426 self .next_event_date = next_end_service
419427
428+ def wrap_up_servers (self , current_time ):
429+ """
430+ Updates the servers' total_time and busy_time
431+ as the end of the simulation run.
432+ """
433+ if self .c != float ('Inf' ):
434+ for srvr in self .servers :
435+ srvr .total_time = current_time - srvr .start_date
436+ if srvr .busy :
437+ srvr .busy_time += (current_time - srvr .cust .arrival_date )
438+
439+
420440 def write_individual_record (self , individual ):
421441 """
422442 Write a data record for an individual:
0 commit comments