Diskrete-Ereignis-Simulation mit Python
Diogo Costa (PhD, MSc)
Adjunct Professor, University of Saskatchewan, Canada & CEO of ImpactBLUE-Scientific
Systemoptimierung
Menschengetriebene Prozesse
Prozesse mit größtem Einfluss auf den Systemoutput identifizieren
Monte-Carlo-Sampling
Zielfunktionen
Mathematischer Ausdruck für das Ziel
Simulationsszenarien bewerten
Beispiel
Summe: 100%
Search & Stop: Verschiedene Modellkonfigurationen laufen lassen und stoppen, wenn die Bedingung erfüllt ist
while total_duration < 24:
model_to_run()
Score & Rank: Simulationsergebnisse nach Gewichtung bewerten
for i in range(num_runs):
out_1, out_2 = model_to_run(i)
scores[i] = 0.3 * out_1 + 0.7 * out_2
Beispiel
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()

Beispiel: Fertigungsindustrie
Mit mehreren sequentiellen Aufgaben (Prozessen), z. B. einer Autoproduktionslinie.
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"])
Score
„ROT“: Niedriger Score; „BLAU“: Hoher Score

Rang
Simulationen nach Score einordnen

Search & Stop

Blaue Linie erfüllt „Stop“-Kriterium
Aufschlüsselung der „besten“ Simulation:
sum = 20 min)sum = 20 min)sum = 28 min)sum = 30 min)„Prozess 1“ ist kritisch für das Ziel
Score
Ziel: niedrigster Score = kürzeste Dauer

Rang
„Prozess 1“ ist kritisch für das Ziel

Diskrete-Ereignis-Simulation mit Python