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
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(____)