Bắt đầu ngayBắt đầu miễn phí

Xây dựng mô hình: Tạo đơn đặt hàng máy bay

Bây giờ môi trường SimPy và các tài nguyên đã được tạo, hãy nối chúng với một bộ tạo (generator) mô phỏng các đơn đặt mua máy bay. Có 30 đơn đặt hàng máy bay.

Hàm assembly_line() sẽ lần lượt yêu cầu tài nguyên cho các công đoạn chế tạo linh kiện máy bay khác nhau. Đoạn mã dưới đây minh họa một yêu cầu như vậy.

# Mở yêu cầu tài nguyên 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]])

Bài tập này là một phần của khóa học

Mô phỏng Sự kiện Rời rạc bằng Python

Xem khóa học

Hướng dẫn bài tập

  • Tạo một vòng lặp for để gửi tất cả yêu cầu đặt hàng (total_num_orders) dùng biến giả request_i.
  • Trong vòng lặp for, tạo một tiến trình mới cho mỗi yêu cầu máy bay; tất cả tiến trình đều dựa trên generator assembly_process_request.
  • Cả 30 máy bay đều được yêu cầu trong một lô, nên hãy hoàn thiện mã để thể hiện không có thời gian chờ giữa các yêu cầu.

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

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(____)
Chỉnh sửa và Chạy Mã