ComenzarEmpieza gratis

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

Ver curso

Instrucciones del ejercicio

  • Crea un bucle for para realizar todas las solicitudes de pedido (total_num_orders) usando una variable ficticia llamada request_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(____)
Editar y ejecutar código