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):
process_dict: dizionario con le informazioni sui processisimulation_time: periodo di simulazione
Il tempo nel modello sarà misurato in giorni.
Questo esercizio fa parte del corso
Simulazione a eventi discreti in Python
Istruzioni dell'esercizio
- Inizializza le variabili di stato del modello,
time(tiene traccia del tempo) esupply_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 disimulation_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")