汽車裝配線:加入非決定性事件
本練習先在不使用 SimPy 的情況下,專注於非決定性(non-deterministic)流程。下一題將再回到 SimPy。
你被要求在先前汽車生產線的離散事件模型中,納入流程時間的變動性。先前識別的流程群組為:(1)「焊接與塗裝」,以及(2)「零件組裝與測試」。請記得,每個流程群組底下其實包含許多子流程與工作,但目前你專注於先完成模型的第一版、高階層級的程式碼。
先前你判定,焊接與塗裝平均需時 15 小時完成,而零件組裝與測試平均需時 24 小時。
現在,你額外進行了研究與監測,以評估這些流程時間的變異。你得到的結論是:焊接與塗裝可能上下浮動 5 小時;而零件組裝的時間可能上下浮動 6 小時。
請更新你的離散事件模型,將上述事件持續時間的變動性納入考量。
已為你載入 random 套件。
本練習屬於課程
Python 的離散事件模擬
練習說明
- 依據新的變動性資訊,使用
random套件中可產生隨機整數的方法,記錄「焊接與塗裝」流程的實際持續時間。 - 依據新的變動性資訊,使用
random套件中可產生隨機整數的方法,記錄「零件組裝與測試」流程的實際持續時間。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
def car_production_line(SIMULATION_TIME):
car_number, time = 0, 0
while time < SIMULATION_TIME:
car_number += 1
# Clock the time requirement for: Welding and Painting
time += ____
if time >= SIMULATION_TIME: break
print(f"Time = {time:7.4f} | Car {car_number:02d} | Welding and Painting")
# Clock the time requirement for: Assembly of parts and Testing
time += ____
if time >= SIMULATION_TIME: break
print(f"Time = {time:7.4f} | Car {car_number:02d} | Assembly of parts and Testing")
print(f"Time = {time:7.4f} | Car {car_number:02d} | Car ready for shipping!")
car_production_line(SIMULATION_TIME)