Začněte nyníZačněte zdarma

Sestavení modelu: generování objednávek letadel

Prostředí SimPy a zdroje jsou připraveny – teď je propojíme s generátorem, který simuluje objednávky nákupu letadel. Celkem je 30 objednávek.

Funkce assembly_line() postupně odesílá požadavky na zdroje jednotlivých výrobních sekcí pro různé komponenty letadla. Ukázka jednoho takového požadavku je v kódu níže.

# Open the resource step_1_fuselage request
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]])

Toto cvičení je součástí kurzu

Diskrétní simulace událostí v Pythonu

Zobrazit kurz

Pokyny k cvičení

  • Vytvoř cyklus for, který zpracuje všechny objednávky (total_num_orders) s použitím pomocné proměnné pojmenované request_i.
  • V rámci tohoto cyklu for vytvoř pro každý požadavek na letadlo nový proces; všechny procesy vycházejí z generátoru assembly_process_request.
  • Všech 30 letadel bylo objednáno najednou v jedné dávce – doplň kód tak, aby odrážel nulovou čekací dobu mezi požadavky.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

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(____)
Upravit a spustit kód