IniziaInizia gratis

Costruisci il tuo modello: genera gli ordini degli aerei

Ora che l’ambiente SimPy e le risorse sono stati creati, colleghiamoli a un generatore che simula gli ordini di acquisto degli aerei. Ci sono 30 ordini di aerei.

La funzione assembly_line() effettua richieste sequenziali alle risorse per le diverse sezioni di produzione dei componenti dell’aereo. Il codice qui sotto mostra una di queste richieste.

# Apri la richiesta della risorsa step_1_fuselage
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]])

Questo esercizio fa parte del corso

Simulazione a eventi discreti in Python

Visualizza il corso

Istruzioni dell'esercizio

  • Crea un for-loop per effettuare tutte le richieste d’ordine (total_num_orders) usando una variabile fittizia chiamata request_i.
  • Crea un nuovo processo per ogni richiesta di aereo durante il for-loop; tutti i processi si basano sul generatore assembly_process_request.
  • Tutti e 30 gli aerei sono stati richiesti in un unico batch, quindi completa il codice in modo che non ci sia tempo di attesa tra una richiesta e l’altra.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

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(____)
Modifica ed esegui il codice