建立你的模型:產生飛機訂單
現在已經建立好 SimPy 環境與資源,接著把它們與一個模擬飛機採購訂單的產生器連結起來。共有 30 筆飛機訂單。
assembly_line() 函式會依序向不同的飛機組件製造站提出資源請求。
下面的程式碼展示其中一次請求。
# 開啟資源 step_1_fuselage 的請求
with step_1_fuselage.request() as slot_request_1:
request_1_time = env.now
yield slot_request_1
print(f"time: {env.now:7.4f} | Aircraft {aircraft_id:02d}
| Enters: step_1_fuselage
| Queued for {env.now-request_1_time} hours")
yield env.timeout(processing_time[processing_time_step_names[0]])
本練習屬於課程
Python 的離散事件模擬
練習說明
- 建立一個 for 迴圈,使用名為
request_i的虛擬變數,為所有訂單(total_num_orders)提出請求。 - 在 for 迴圈中,為每一架飛機的請求建立一個新的流程;所有流程都以產生器
assembly_process_request為基礎。 - 30 架飛機是一次性批次提出請求,因此請完成程式碼,使各次請求之間沒有等待時間。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
def order_aircraft(env, total_num_orders, step_1_fuselage, step_2_wings, step_3_power_plant, step_4_landing_gear):
# Generate the orders with a for-loop
____ request_i in range(total_num_orders):
assembly_process_request = assembly_line(env, request_i, step_1_fuselage, step_2_wings, step_3_power_plant, step_4_landing_gear)
# Initiate an assembly line process for each request
env.____(assembly_process_request)
# Clock-in the time between requests
yield env.timeout(____)