Ein diskretes Ereignismodell entwickeln
Du sollst ein diskretes Ereignismodell für einen landwirtschaftlichen Betrieb entwickeln, um Ressourcen zuzuweisen, die Produktivität zu steigern und Engpässe zu identifizieren und zu beseitigen.
Du besprichst noch mit deinen Kolleginnen und Kollegen die verschiedenen Prozesse und in welcher Detailtiefe sie im Modell abgebildet werden sollen. Daher habt ihr vereinbart, die Informationen in einem Dictionary namens process_dict mit der folgenden Struktur zu sammeln. Die Idee ist, dass dieses Dictionary aktualisiert wird, sobald mehr Informationen über die Prozesse vorliegen.
process_dict = {
"Process name 1": <duration>,
"Process name 2": <duration>,
...
}
Lass uns ein generisches diskretes Ereignismodell namens discrete_model_farm() erstellen, das beliebig viele im Dictionary definierte diskrete Ereignisse einplanen kann.
Die Eingabeargumente des Modells sind (in dieser Reihenfolge):
process_dict: Dictionary mit Informationen über die Prozessesimulation_time: Simulationszeitraum
Die Zeit im Modell wird in Tagen gemessen.
Diese Übung ist Teil des Kurses
Diskrete-Ereignis-Simulation mit Python
Anleitung zur Übung
- Initialisiere die Zustandsvariablen des Modells,
time(verfolgt die Zeit) undsupply_chain(verfolgt die Anzahl der Zyklen), und setze beide auf null. - Definiere die Endbedingung so, dass das Modell läuft, solange
timekleiner ist alssimulation_time. - Addiere die Dauer des Prozesses zur Zustandsvariable
time.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
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")