Discrete Event Simulation in Python
Diogo Costa (PhD, MSc)
Adjunct Professor, University of Saskatchewan, Canada & CEO of ImpactBLUE-Scientific
Systeemsoptimalisatie
Mensgedreven processen
Processen met grootste impact op systeemoutput vinden
Monte Carlo-sampling
Doelfuncties
Wiskundige expressie met het outputdoel
Scenario’s scoren
Voorbeeld
Totaal: 100%
Search & Stop: Draai varianten en stop zodra aan de voorwaarde is voldaan
while total_duration < 24:
model_to_run()
Score & Rank: Score resultaten op basis van wegingscriteria
for i in range(num_runs):
out_1, out_2 = model_to_run(i)
scores(i) = 0.3 * out_1 + 0.7 * out_2
Voorbeeld
scenario_num = 0
while scenario_num == 0 or total_duration[s] > 40:
scenario_num += 1
env = simpy.Environment()
env.process(manufractoring_proc(env))
env.run()
plot_results()

Voorbeeld: maakindustrie
Met opeenvolgende taken (processen), zoals een autoproductielijn.
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
"ROOD": Lage score; "BLAUW": Hoge score

Rang
Score-gebaseerde rangschikking van runs

Zoeken & stoppen

"Blauwe" lijn haalde het "stop"-criterium
Resultaten van "beste" simulatie:
sum = 20 min)sum = 20 min)sum = 28 min)sum = 30 min)"Proces 1" is cruciaal om dit te halen
Score
Doel: laagste score = kortste duur

Rang
"Proces 1" is cruciaal om dit te halen

Discrete Event Simulation in Python