Simulare de evenimente discrete în Python
Diogo Costa (PhD, MSc)
Adjunct Professor, University of Saskatchewan, Canada & CEO of ImpactBLUE-Scientific
Optimizarea sistemului
Procese conduse de factorul uman
Identificarea proceselor cu impact mai mare asupra ieșirii sistemului
Eșantionare Monte Carlo
Funcții obiectiv
Expresie matematică ce descrie ținta de ieșire
Scorizarea scenariilor de simulare
Exemplu
Total: 100%
Căutare și oprire: Rulați configurații diferite și opriți când condiția dorită este îndeplinită
while total_duration < 24:
model_to_run()
Scor și Clasament: Scorizarea rezultatelor simulării pe baza criteriilor de ponderare
for i in range(num_runs):
out_1, out_2 = model_to_run(i)
scores[i] = 0.3 * out_1 + 0.7 * out_2
Exemplu
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()

Exemplu: Industria manufacturieră
Implicând diverse sarcini secvențiale (sau procese), precum o linie de producție auto.
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"])
Scor
"ROȘU": Scor mic; "ALBASTRU": Scor mare

Clasament
Clasarea rulărilor după scor

Căutare și oprire

Linia „albastră" a îndeplinit criteriul de „oprire"
Detalii ale celei mai bune simulări:
sum = 20 min)sum = 20 min)sum = 28 min)sum = 30 min)„Procesul 1" este critic pentru atingerea acestui obiectiv
Scor
Obiectiv: scor minim = durată minimă

Clasament
„Procesul 1" este critic pentru atingerea acestui obiectiv

Simulare de evenimente discrete în Python