Aan de slagGa gratis aan de slag

Bouw je model: Genereer vliegtuigorders

Nu de SimPy-omgeving en -resources zijn aangemaakt, koppelen we deze aan een generator die aankooporders voor vliegtuigen simuleert. Er zijn 30 vliegtuigorders.

De functie assembly_line() doet sequentiële resourcerequests voor de verschillende secties waar vliegtuigonderdelen worden geproduceerd. De onderstaande code laat zo’n request zien.

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

Deze oefening maakt deel uit van de cursus

Discrete Event Simulation in Python

Cursus bekijken

Oefeninstructies

  • Maak een for-lus om alle orderverzoeken (total_num_orders) te doen met een dummyvariabele genaamd request_i.
  • Maak tijdens de for-lus voor elke vliegtuigaaanvraag een nieuw proces; alle processen zijn gebaseerd op de generator assembly_process_request.
  • Alle 30 vliegtuigen zijn in één batch aangevraagd, dus maak de code af zodat er geen wachttijd is tussen de verzoeken.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

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(____)
Code bewerken en uitvoeren