開始使用免費開始

建立你的模型:產生飛機訂單

現在已經建立好 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(____)
編輯並執行程式碼