IniziaInizia gratis

Sviluppare un modello a eventi discreti

Ti è stato chiesto di sviluppare un modello a eventi discreti per un'attività agricola, per aiutare ad allocare le risorse, aumentare la produttività e individuare/eliminare i colli di bottiglia.

Stai ancora discutendo con i colleghi i diversi processi coinvolti e con quale livello di dettaglio rappresentarli nel modello. Avete quindi concordato di raccogliere le informazioni in un dizionario chiamato process_dict con la seguente struttura. L'idea è che questo dizionario venga aggiornato man mano che diventano disponibili più informazioni sui processi.

process_dict = {
    "Process name 1":  <duration>,
    "Process name 2":  <duration>,
    ...
}

Costruiamo un modello generico a eventi discreti chiamato discrete_model_farm() che possa pianificare un numero qualsiasi di eventi discreti definiti nel dizionario.

Gli argomenti di input del modello sono (in ordine):

  1. process_dict: dizionario con le informazioni sui processi
  2. simulation_time: periodo di simulazione

Il tempo nel modello sarà misurato in giorni.

Questo esercizio fa parte del corso

Simulazione a eventi discreti in Python

Visualizza il corso

Istruzioni dell'esercizio

  • Inizializza le variabili di stato del modello, time (tiene traccia del tempo) e supply_chain (tiene traccia del numero di cicli) e impostale a zero.
  • Definisci la condizione di termine in modo che il modello giri finché time è minore di simulation_time.
  • Aggiungi la durata del processo alla variabile di stato time.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

def discrete_model_farm(process_dict, simulation_time):
  # Initiate variables
  time = ____
  supply_chain = ____

  # Define ending condition
  while ____ < ____:

    supply_chain += 1
    process_names = list(process_dict.keys())

    for p in range(len(process_names)):
		  
      event_duration = process_dict[process_names[p]]
          
      # Add the process duration
      ____ += event_duration
      print(f"{process_names[p]}  (completed): time = {time}")
          
    print(f"COMPLETED: Production cycle #{supply_chain} | Time = {time} days")  
Modifica ed esegui il codice