Целевые функции и оптимизация системы

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

Diogo Costa (PhD, MSc)

Adjunct Professor, University of Saskatchewan, Canada & CEO of ImpactBLUE-Scientific

Оптимизация системы

  • Оптимизация системы

    • Поиск оптимальной операционной конфигурации
  • Процессы с участием человека

    • Максимальный результат при минимальных затратах (ресурсы, время)
  • Определение процессов с наибольшим влиянием на выход системы

  • Выборка методом Монте-Карло

    • Оценка успеха и ранжирование результатов
  • Целевые функции

    • Функция для задания целевых показателей производительности
Дискретно-событийное моделирование на Python

Целевая функция

  • Математическое выражение, описывающее целевой результат

  • Оценка сценариев моделирования

Пример

  • Процесс A: 35%
  • Процесс B: 20%
  • Процесс C: 45%

Итого: 100%

  • Процесс C имеет наибольший вес

«Поиск и остановка»: Запуск различных конфигураций модели с остановкой при достижении нужного условия

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
Дискретно-событийное моделирование на Python

Подход 1: «Поиск и остановка»

  • Выборка методом Монте-Карло для запуска нескольких сценариев
  • Включает различные проявления недетерминированных процессов
  • Цикл поиска оптимального сценария прерывается при выполнении условия

Пример

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()

График, показывающий огибающую отклика производственного процесса, включающего ряд последовательных операций; синяя нижняя линия соответствует последнему запуску, удовлетворяющему условию метода «Поиск и остановка».

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

Подход 2: «Оценка и ранжирование»

  • Выборка методом Монте-Карло для запуска нескольких сценариев
  • Оценка и ранжирование результатов

Пример: производственная отрасль

Включает различные последовательные задачи (или процессы), например сборочную линию автомобилей.

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"])
Дискретно-событийное моделирование на Python

Подход 2: «Оценка и ранжирование»

Оценка

«КРАСНЫЙ»: низкая оценка; «СИНИЙ»: высокая оценка Точечный график с оценками целевой функции для различных смоделированных сценариев процессов «Разгрузка и подготовка», «Резка» и «Полировка».

Ранжирование

Ранжирование прогонов моделирования по оценке График, ранжирующий сценарии по оценке целевой функции для процессов «Разгрузка и подготовка», «Резка» и «Полировка».

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

Определение критических процессов, ограничивающих производительность

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

График, показывающий огибающую отклика производственного процесса с рядом последовательных операций; синяя нижняя линия соответствует последнему запуску, удовлетворяющему условию метода «Поиск и остановка». Выделена минимальная длительность каждого процесса, полученная для наилучших симуляций.

  • «Синяя» линия удовлетворяет критерию «остановки»

    • Общая длительность = 30 мин
  • Детализация результатов «лучшей» симуляции:

    • Процесс 1: около 10 мин (sum = 20 min)
    • Процесс 2: около 10 мин (sum = 20 min)
    • Процесс 3: около 8 мин (sum = 28 min)
    • Процесс 4: около 2 мин (sum = 30 min)
  • «Процесс 1» является критическим для достижения этой цели

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

Определение критических процессов, ограничивающих производительность

Оценка

Цель: наименьшая оценка = наименьшая длительность Точечный график с оценками целевой функции для различных смоделированных сценариев процессов «Разгрузка и подготовка», «Резка» и «Полировка». Выделена минимальная длительность каждого процесса для наилучших симуляций.

Ранжирование

«Процесс 1» является критическим для достижения этой цели График, ранжирующий сценарии по оценке целевой функции для процессов «Разгрузка и подготовка», «Резка» и «Полировка». Выделена минимальная длительность каждого процесса для наилучших симуляций.

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

Давайте потренируемся!

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

Preparing Video For Download...