Diskret händelsesimulering i Python
Diogo Costa (PhD, MSc)
Adjunct Professor, University of Saskatchewan, Canada & CEO of ImpactBLUE-Scientific
Systemoptimering
Mänskligt styrda processer
Identifiera processer med störst påverkan på systemets utfall
Monte Carlo-sampling
Målfunktioner
Matematiskt uttryck som beskriver ett utfallsmål
Poängsätt simuleringsscenarier
Exempel
Totalt: 100%
Sök & Stopp: Kör olika modellkonfigurationer och avbryt när önskat villkor uppfylls
while total_duration < 24:
model_to_run()
Poängsätt & Rangordna: Poängsätt simuleringsresultat utifrån viktningskriterier
for i in range(num_runs):
out_1, out_2 = model_to_run(i)
scores[i] = 0.3 * out_1 + 0.7 * out_2
Exempel
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()

Exempel: Tillverkningsindustrin
Omfattar olika sekventiella uppgifter (eller processer), till exempel ett biltillverkningsbands.
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"])
Poäng
"RÖD": Låg poäng; "BLÅ": Hög poäng

Rangordning
Rangordning av simuleringsresultat baserat på poäng

Sök & Stopp

"Blå" linje uppfyllde "stopp"-kriteriet
Detaljerade resultat från "bästa" simulering:
sum = 20 min)sum = 20 min)sum = 28 min)sum = 30 min)"Process 1" avgörande för att nå detta mål
Poäng
Mål: lägst poäng = kortast varaktighet

Rangordning
"Process 1" avgörande för att nå detta mål

Diskret händelsesimulering i Python