Tworzenie modelu zdarzeniowego
Zostałeś poproszony o opracowanie modelu symulacji dyskretnej dla operacji rolniczej, który pomoże w alokacji zasobów, zwiększeniu produktywności oraz identyfikacji i eliminacji wąskich gardeł.
Wciąż omawiasz z kolegami poszczególne procesy i stopień szczegółowości ich odwzorowania w modelu. Ustaliliście, że informacje zostaną zebrane w słowniku o nazwie process_dict o następującej strukturze. Słownik będzie aktualizowany w miarę napływu nowych danych o procesach.
process_dict = {
"Process name 1": <duration>,
"Process name 2": <duration>,
...
}
Zbudujmy ogólny model symulacji dyskretnej o nazwie discrete_model_farm(), który będzie obsługiwał dowolną liczbę zdarzeń dyskretnych zdefiniowanych w słowniku.
Argumenty wejściowe modelu (w kolejności):
process_dict: słownik z informacjami o procesachsimulation_time: okres symulacji
Czas w modelu będzie mierzony w dniach.
To ćwiczenie jest częścią kursu
Symulacja zdarzeń dyskretnych w Pythonie
Instrukcje do ćwiczenia
- Zainicjuj zmienne stanu modelu:
time(śledzi czas) orazsupply_chain(śledzi liczbę cykli) i nadaj im wartość zero. - Zdefiniuj warunek zakończenia tak, aby model działał, dopóki
timejest mniejsze odsimulation_time. - Dodaj czas trwania procesu do zmiennej stanu
time.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
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")