4/29/22, 10:23 PM HW6.ipynb – Colaboratory https://colab.research.google.com/drive/1M-qhvd7D6i0pHEWjW1UoegyJBiHIhEa3#printMode=true 1/4 import numpy as np def simulation(a=0.5, d1=0.8, d2=0.9, endTime=100): “”” Single server / Single Queue / Exponential Rates inputs: – a: mean of the interarrival time – d: mean of the service times – end: max simulation time (minutes) outputs: – numArr: number of Arrivals – AvgTimeS: average time in System “”” # state variables N = 0 # number of people in system t = 0 # simulation time (in minutes) B1 = 0 B2 = 0 FEL_time = [t+np.random.exponential(a),endTime] FEL_eventType = [‘A’,’E’] # metric tracking numArr = 0 TotalTimeS = 0 Debug = True time_s1 = 0 time_s1s2 = 0 time_q = 0 eventType = ” while(eventType != ‘E’): if len(FEL_time) == 0: print(‘Error: FEL is empty. Ending simulation now’) break nextEvent = np.argmin(FEL_time) eventTime = FEL_time.pop(nextEvent) eventType = FEL_eventType.pop(nextEvent) TotalTimeS += (N)*(eventTime-t) if N>=3: time_q = time_q + (eventTime-t) if B1 == 1: time_s1 = time_s1 + (eventTime-t) if B1 == 1 and B2 == 1: time_s1s2 = time_s1s2 + (eventTime-t) t = eventTime #arrival if eventType == ‘A’: N+=1 4/29/22, 10:23 PM HW6.ipynb – Colaboratory https://colab.research.google.com/drive/1M-qhvd7D6i0pHEWjW1UoegyJBiHIhEa3#printMode=true 2/4 N+=1 numArr+=1 t_A = np.random.exponential(a) FEL_time.append(t+t_A) FEL_eventType.append(‘A’) if N >= 1 and B1 == 0: t_S = np.random.exponential(d1) FEL_time.append(t+t_S) FEL_eventType.append(‘D1’) B1 = 1 if N > 1 and B1 == 1 and B2 == 0: t_S = np.random.exponential(d2) FEL_time.append(t+t_S) FEL_eventType.append(‘D2’) B2 = 1 #departure elif eventType == ‘D1’: N-=1 B1 = 0 if N > 1 and B1 == 0: t_S = np.random.exponential(d1) FEL_time.append(t+t_S) FEL_eventType.append(‘D1’) B1 = 1 #departure elif eventType == ‘D2’: N-=1 B2 = 0 if N > 1 and B2 == 0: t_S = np.random.exponential(d2) FEL_time.append(t+t_S) FEL_eventType.append(‘D2’) B2 = 1 if Debug == True: print(“eventType: “,eventType,” time: “,”{:.2f}”.format(eventTime), ” N:”,N,” numArr: “,numArr,” TotalTimeS: “, “{:.2f}”.format(TotalTimeS), ” FEL: “,printFEL(FEL_time,FEL_eventType)) return numArr, TotalTimeS / numArr, time_s1, time_s1s2, time_q def printFEL(FEL_time,FEL_eventType): strOutput=”” for eventIndex in range(len(FEL_time)): strOutput += “(” strOutput += str(FEL_eventType[eventIndex]) strOutput += “,” strOutput += “{:.2f}”.format(FEL_time[eventIndex]) strOutput += “) ” return strOutput 4/29/22, 10:23 PM HW6.ipynb – Colaboratory https://colab.research.google.com/drive/1M-qhvd7D6i0pHEWjW1UoegyJBiHIhEa3#printMode=true 3/4 numArr, AvgTimeS, time_s1, time_s1s2, time_q= simulation() print(“The number of arrivals is:”,numArr) print(“The average time spent in the system is:”,AvgTimeS) print(“Proportion of the time the server 1 is busy :”,time_s1) print(“Proportion of the time both servers is busy :”,time_s1s2) print(“Proportion of the time more than one customer in the queue :”,time_q) eventType: A time: 1.64 N: 1 numArr: 1 TotalTimeS: 0.00 FEL: (E,100.00 eventType: A time: 1.98 N: 2 numArr: 2 TotalTimeS: 0.33 FEL: (E,100.00 eventType: D1 time: 1.98 N: 1 numArr: 2 TotalTimeS: 0.34 FEL: (E,100.00 eventType: A time: 2.97 N: 2 numArr: 3 TotalTimeS: 1.32 FEL: (E,100.00 eventType: A time: 3.47 N: 3 numArr: 4 TotalTimeS: 2.34 FEL: (E,100.00 eventType: D1 time: 3.60 N: 2 numArr: 4 TotalTimeS: 2.71 FEL: (E,100.00 eventType: D1 time: 3.74 N: 1 numArr: 4 TotalTimeS: 3.00 FEL: (E,100.00 eventType: D2 time: 5.19 N: 0 numArr: 4 TotalTimeS: 4.44 FEL: (E,100.00 eventType: A time: 5.36 N: 1 numArr: 5 TotalTimeS: 4.44 FEL: (E,100.00 eventType: A time: 5.40 N: 2 numArr: 6 TotalTimeS: 4.48 FEL: (E,100.00 eventType: A time: 5.40 N: 3 numArr: 7 TotalTimeS: 4.49 FEL: (E,100.00 eventType: A time: 5.54 N: 4 numArr: 8 TotalTimeS: 4.89 FEL: (E,100.00 eventType: D1 time: 5.64 N: 3 numArr: 8 TotalTimeS: 5.29 FEL: (E,100.00 eventType: D2 time: 5.87 N: 2 numArr: 8 TotalTimeS: 5.98 FEL: (E,100.00 eventType: D1 time: 6.07 N: 1 numArr: 8 TotalTimeS: 6.39 FEL: (E,100.00 eventType: A time: 6.14 N: 2 numArr: 9 TotalTimeS: 6.46 FEL: (E,100.00 eventType: A time: 6.16 N: 3 numArr: 10 TotalTimeS: 6.50 FEL: (E,100.00 eventType: A time: 6.29 N: 4 numArr: 11 TotalTimeS: 6.88 FEL: (E,100.00 eventType: A time: 6.93 N: 5 numArr: 12 TotalTimeS: 9.43 FEL: (E,100.00 eventType: D1 time: 7.06 N: 4 numArr: 12 TotalTimeS: 10.10 FEL: (E,100 eventType: A time: 7.25 N: 5 numArr: 13 TotalTimeS: 10.84 FEL: (E,100.0 eventType: D1 time: 7.59 N: 4 numArr: 13 TotalTimeS: 12.56 FEL: (E,100 eventType: A time: 8.15 N: 5 numArr: 14 TotalTimeS: 14.78 FEL: (E,100.0 eventType: D1 time: 8.18 N: 4 numArr: 14 TotalTimeS: 14.95 FEL: (E,100 eventType: D1 time: 8.29 N: 3 numArr: 14 TotalTimeS: 15.39 FEL: (E,100 eventType: D2 time: 8.87 N: 2 numArr: 14 TotalTimeS: 17.14 FEL: (E,100 eventType: A time: 8.88 N: 3 numArr: 15 TotalTimeS: 17.15 FEL: (E,100.0 eventType: A time: 9.06 N: 4 numArr: 16 TotalTimeS: 17.71 FEL: (E,100.0 eventType: D2 time: 9.17 N: 3 numArr: 16 TotalTimeS: 18.12 FEL: (E,100 eventType: A time: 9.18 N: 4 numArr: 17 TotalTimeS: 18.16 FEL: (E,100.0 eventType: D1 time: 9.44 N: 3 numArr: 17 TotalTimeS: 19.21 FEL: (E,100 eventType: A time: 9.45 N: 4 numArr: 18 TotalTimeS: 19.24 FEL: (E,100.0 eventType: D1 time: 9.47 N: 3 numArr: 18 TotalTimeS: 19.31 FEL: (E,100 eventType: A time: 9.60 N: 4 numArr: 19 TotalTimeS: 19.70 FEL: (E,100.0 eventType: D1 time: 9.62 N: 3 numArr: 19 TotalTimeS: 19.78 FEL: (E,100 eventType: D2 time: 9.76 N: 2 numArr: 19 TotalTimeS: 20.21 FEL: (E,100 eventType: D2 time: 9.79 N: 1 numArr: 19 TotalTimeS: 20.26 FEL: (E,100 eventType: A time: 10.07 N: 2 numArr: 20 TotalTimeS: 20.54 FEL: (E,100 eventType: A time: 10.42 N: 3 numArr: 21 TotalTimeS: 21.24 FEL: (E,100 eventType: D1 time: 10.46 N: 2 numArr: 21 TotalTimeS: 21.38 FEL: (E,100 eventType: D2 time: 10.47 N: 1 numArr: 21 TotalTimeS: 21.38 FEL: (E,100 eventType: A time: 10.47 N: 2 numArr: 22 TotalTimeS: 21.39 FEL: (E,100 eventType: D1 time: 10.81 N: 1 numArr: 22 TotalTimeS: 22.07 FEL: (E,100 eventType: D2 time: 11.41 N: 0 numArr: 22 TotalTimeS: 22.66 FEL: (E,100 eventType: A time: 12.12 N: 1 numArr: 23 TotalTimeS: 22.66 FEL: (E,100 eventType: A time: 12.21 N: 2 numArr: 24 TotalTimeS: 22.76 FEL: (E,100 eventType: A time: 12.38 N: 3 numArr: 25 TotalTimeS: 23.09 FEL: (E,100 4/29/22, 10:23 PM HW6.ipynb – Colaboratory https://colab.research.google.com/drive/1M-qhvd7D6i0pHEWjW1UoegyJBiHIhEa3#printMode=true 4/4 eventType: D1 time: 12.82 N: 2 numArr: 25 TotalTimeS: 24.41 FEL: (E,100 eventType: D1 time: 13.00 N: 1 numArr: 25 TotalTimeS: 24.76 FEL: (E,100 eventType: A time: 13.03 N: 2 numArr: 26 TotalTimeS: 24.80 FEL: (E,100 eventType: A time: 13.14 N: 3 numArr: 27 TotalTimeS: 25.01 FEL: (E,100 eventType: D1 time: 13.40 N: 2 numArr: 27 TotalTimeS: 25.81 FEL: (E,100 eventType: D2 time: 13.70 N: 1 numArr: 27 TotalTimeS: 26.40 FEL: (E,100 eventType: A time: 14.02 N: 2 numArr: 28 TotalTimeS: 26.72 FEL: (E,100 eventType: D2 time: 14.75 N: 1 numArr: 28 TotalTimeS: 28.17 FEL: (E,100 eventType: D1 time: 15.13 N: 0 numArr: 28 TotalTimeS: 28.56 FEL: (E,100 eventType: A time: 15.41 N: 1 numArr: 29 TotalTimeS: 28.56 FEL: (E,100 eventType: D1 time: 16 17 N: 0 numArr: 29 TotalTimeS: 29 31 FEL: (E 100