Symulacja zdarzeń dyskretnych w Pythonie
Diogo Costa (PhD, MSc)
Adjunct Professor, University of Saskatchewan, Canada & CEO of ImpactBLUE-Scientific
Optymalizacja systemu
Procesy realizowane przez ludzi
Identyfikacja procesów o największym wpływie na wynik systemu
Próbkowanie Monte Carlo
Funkcje celu
Wyrażenie matematyczne opisujące cel wyjściowy
Ocena scenariuszy symulacji
Przykład
Suma: 100%
Szukaj i zatrzymaj: Uruchamiaj różne konfiguracje modelu i zatrzymaj, gdy spełniony zostanie żądany warunek
while total_duration < 24:
model_to_run()
Wynik i ranking: Oceniaj wyniki symulacji na podstawie kryteriów ważenia
for i in range(num_runs):
out_1, out_2 = model_to_run(i)
scores[i] = 0.3 * out_1 + 0.7 * out_2
Przykład
scenario_num = 0
while scenario_num == 0 or total_duration[s] > 40:
scenario_num += 1
env = simpy.Environment()
env.process(manufacturing_proc(env))
env.run()
plot_results()

Przykład: Przemysł produkcyjny
Involving various sequential tasks (or processes), such as a car production line.
def objective_function_calc():
score_objfunc = np.ones(num_scenarios)
for s in range(num_scenarios):
for p in range(len(processes)):
score_objfunc[s] += (
processes[p]["duration_hours"]
* processes[p]["score_weight"])
Wynik
"CZERWONY": Niski wynik; "NIEBIESKI": Wysoki wynik

Ranking
Rankingowanie przebiegów symulacji według wyniku

Szukaj i zatrzymaj

Linia „niebieska" spełniła kryterium „zatrzymania"
Wyniki najlepszej symulacji:
sum = 20 min)sum = 20 min)sum = 28 min)sum = 30 min)„Proces 1" krytyczny dla osiągnięcia tego celu
Wynik
Cel: najniższy wynik = najkrótszy czas trwania

Ranking
„Proces 1" krytyczny dla osiągnięcia tego celu

Symulacja zdarzeń dyskretnych w Pythonie