ПочатиПочніть безкоштовно

Побудуйте модель: Згенеруйте замовлення на літаки

Тепер, коли середовище 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, щоб надіслати всі запити на замовлення (total_num_orders) з використанням фіктивної змінної request_i.
  • Під час циклу 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(____)
Редагувати та запускати код