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
Oefeninstructies
- Maak een for-lus om alle orderverzoeken (
total_num_orders) te doen met een dummyvariabele genaamdrequest_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(____)