Дискретно-подієве моделювання в Python
Diogo Costa (PhD, MSc)
Adjunct Professor, University of Saskatchewan, Canada & CEO of ImpactBLUE-Scientific
Оптимізація системи
Процеси з участю людини
Виявлення процесів із найбільшим впливом на результат системи
Монте-Карло вибірка
Цільові функції
Математичний вираз, що описує ціль результату
Оцінювати сценарії моделювання
Приклад
Разом: 100%
Пошук і зупинка: Запускати різні конфігурації моделі та зупинятись, коли умову виконано
while total_duration < 24:
model_to_run()
Оцінка і ранжування: Оцінювати результати моделювання за ваговими критеріями
for i in range(num_runs):
out_1, out_2 = model_to_run(i)
scores[i] = 0.3 * out_1 + 0.7 * out_2
Приклад
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()

Приклад: виробництво
Залучає послідовні завдання (або процеси), як-от конвеєр збирання авто.
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"])
Оцінка
"RED": низька оцінка; "BLUE": висока оцінка

Ранжування
Ранжування запусків моделювання за оцінкою
Пошук і зупинка

"Синя" лінія задовольнила критерій «stop»
Розклад найкращої симуляції:
sum = 20 min)sum = 20 min)sum = 28 min)sum = 30 min)«Процес 1» критичний для досягнення мети
Оцінка
Мета: найменша оцінка = найменша тривалість

Ранжування
«Процес 1» критичний для досягнення мети

Дискретно-подієве моделювання в Python