Дискретно-событийное моделирование на 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"])
Оценка
«КРАСНЫЙ»: низкая оценка; «СИНИЙ»: высокая оценка

Ранжирование
Ранжирование прогонов моделирования по оценке

«Поиск и остановка»

«Синяя» линия удовлетворяет критерию «остановки»
Детализация результатов «лучшей» симуляции:
sum = 20 min)sum = 20 min)sum = 28 min)sum = 30 min)«Процесс 1» является критическим для достижения этой цели
Оценка
Цель: наименьшая оценка = наименьшая длительность

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

Дискретно-событийное моделирование на Python