Een discrete-eventmodel ontwikkelen
Je bent gevraagd een discrete-eventmodel te ontwikkelen voor een landbouwbedrijf om middelen toe te wijzen, de productiviteit te verhogen en knelpunten te identificeren en weg te nemen.
Je bespreekt nog met je collega’s welke processen erbij horen en in welk detail ze in het model moeten worden weergegeven. Daarom hebben jullie afgesproken de informatie te verzamelen in een dictionary met de naam process_dict met de volgende structuur. Het idee is dat deze dictionary wordt bijgewerkt zodra er meer informatie over de processen beschikbaar komt.
process_dict = {
"Process name 1": <duration>,
"Process name 2": <duration>,
...
}
Laten we een generiek discrete-eventmodel bouwen met de naam discrete_model_farm() dat elk aantal discrete events kan inplannen die in de dictionary zijn gedefinieerd.
De invoerargumenten van het model zijn (in deze volgorde):
process_dict: Dictionary met informatie over de processensimulation_time: Simulatieperiode
Tijd in het model wordt gemeten in dagen.
Deze oefening maakt deel uit van de cursus
Discrete Event Simulation in Python
Oefeninstructies
- Initialiseer de statusvariabelen van het model,
time(houdt de tijd bij) ensupply_chain(houdt het aantal cycli bij), en zet ze op nul. - Definieer de stopvoorwaarde zodat het model draait zolang
timekleiner is dansimulation_time. - Tel de duur van het proces op bij de statusvariabele
time.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
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")