def EndOfServiceB1(DepartingCustomer): TotalTime1.Record(Clock - DepartingCustomer.CreateTime) if Queue1.NumQueue() > 0: # Serve Customer from Queue1 NextCustomer = Queue1.Remove(Clock) ServerB.Seize(1, Clock) VBASim.SchedulePlus(Calendar, "EndOfServiceB1", RNG.Expon(MeanPT1_2, 4), NextCustomer, Clock) elif Queue2.NumQueue() > 0: # Serve Customer from Queue2 NextCustomer = Queue2.Remove(Clock) ServerB.Seize(1, Clock) VBASim.SchedulePlus(Calendar, "EndOfServiceB2", RNG.Expon(MeanPT2, 5), NextCustomer, Clock) else: ServerB.Free(1, Clock)
def Arrival1(): VBASim.Schedule(Calendar, "Arrival1", RNG.Expon(MeanTBA1, 1), Clock) Customer1 = Basic_Classes.Entity(Clock) # Go to A, or go to B, or add in Queue1 if ServerA.Busy < ServerA.NumberOfUnits: # Go to ServerA ServerA.Seize(1, Clock) VBASim.SchedulePlus(Calendar, "EndOfServiceA", RNG.Expon(MeanPT1_1, 3), Customer1, Clock) elif (ServerB.Busy < ServerB.NumberOfUnits) and (Queue1.NumQueue == 0): # Go to ServerB ServerB.Seize(1, Clock) VBASim.SchedulePlus(Calendar, "EndOfServiceB1", RNG.Expon(MeanPT1_2, 4), Customer1, Clock) else: # Add in Queue1 Queue1.Add(Customer1, Clock)
def EndOfServiceA(DepartingCustomer): TotalTime1.Record(Clock - DepartingCustomer.CreateTime) if Queue1.NumQueue() > 0: # Go to ServerA NextCustomer = Queue1.Remove(Clock) VBASim.SchedulePlus(Calendar, "EndOfServiceA", RNG.Expon(MeanPT1_1, 3), NextCustomer, Clock) else: ServerA.Free(1, Clock)
def Arrival2(): VBASim.Schedule(Calendar, "Arrival2", RNG.Expon(MeanTBA2, 2), Clock) Customer2 = Basic_Classes.Entity(Clock) # Go to B, or add in Queue2 if ServerB.Busy < ServerB.NumberOfUnits: # Go to ServerB ServerB.Seize(1, Clock) VBASim.SchedulePlus(Calendar, "EndOfServiceB2", RNG.Expon(MeanPT2, 5), Customer2, Clock) else: # Add in Queue2 Queue2.Add(Customer2, Clock)
def EndOfService(DepartingCustomer): TimeSpent.Record(Clock - DepartingCustomer.CreateTime) if WaitingList.NumQueue() > 0: NextCustomer = WaitingList.Remove(Clock) VBASim.SchedulePlus(Calendar, "EndOfService", RNG.Erlang(Phases, MeanST, 2), NextCustomer, Clock) WaitingTime.Record(Clock - NextCustomer.CreateTime) WTrecords.append(Clock - NextCustomer.CreateTime) else: Server.Free(1, Clock)
def Arrival(): VBASim.Schedule(Calendar, "Arrival", RNG.Expon(MeanTBA, 1), Clock) Customer = bc.Entity(Clock) if Server.Busy < Server.NumberOfUnits: Server.Seize(1, Clock) VBASim.SchedulePlus(Calendar, "EndOfService", RNG.Erlang(Phases, MeanST, 2), Customer, Clock) WaitingTime.Record(0) WTrecords.append(0) else: WaitingList.Add(Customer, Clock)