Construye tu modelo: Generar pedidos de aeronaves
Ahora que el entorno de SimPy y los recursos han sido creados, vamos a conectarlo con un generador que simula pedidos de compra de aeronaves. Hay 30 pedidos de aeronaves.
La función assembly_line() realiza solicitudes de recursos secuenciales para las diferentes secciones de fabricación de componentes del avión.
El siguiente código muestra una de esas solicitudes.
# 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]])
Este ejercicio forma parte del curso
Simulación de eventos discretos en Python
Instrucciones del ejercicio
- Crea un bucle for para realizar todas las solicitudes de pedido (
total_num_orders) usando una variable ficticia llamadarequest_i. - Crea un nuevo proceso para cada solicitud de aeronave dentro del bucle for; todos los procesos se basan en el generador
assembly_process_request. - Las 30 aeronaves se han solicitado en un único lote, así que completa el código para reflejar que no hay tiempo de espera entre solicitudes.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
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(____)