Kom igångKom igång gratis

Bygg din modell: Generera flygplansbeställningar

Nu när SimPy-miljön och resurserna har skapats är det dags att koppla den till en generator som simulerar inköpsbeställningar av flygplan. Det finns 30 flygplansbeställningar.

Funktionen assembly_line() gör sekventiella resursförfrågningar för de olika sektionerna i tillverkningen av flygplanskomponenter. Koden nedan visar ett exempel på en sådan förfrågan.

# 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]])

Den här övningen är en del av kursen

Diskret händelsesimulering i Python

Visa kurs

Övningsinstruktioner

  • Skapa en for-loop som hanterar alla beställningsförfrågningar (total_num_orders) med hjälp av en dummyvariabel med namnet request_i.
  • Skapa en ny process för varje flygplansförfrågan i for-loopen. Alla processer baseras på generatorn assembly_process_request.
  • Alla 30 flygplan har beställts i ett och samma batch, så komplettera koden så att den återspeglar att det inte finns någon väntetid mellan förfrågningarna.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

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(____)
Redigera och kör kod