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

Дискретно-подієве моделювання в 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: Оцінка і ранжування

Оцінка

"RED": низька оцінка; "BLUE": висока оцінка Діаграма розсіювання з оцінкою цільової функції для різних змодельованих сценаріїв процесів "Unloading and Preparing", "Cutting" і "Polishing".

Ранжування

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

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

Виявлення критичних процесів, що обмежують продуктивність

Пошук і зупинка

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

  • "Синя" лінія задовольнила критерій «stop»

    • Загальна тривалість = 30 хв
  • Розклад найкращої симуляції:

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

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

Виявлення критичних процесів, що обмежують продуктивність

Оцінка

Мета: найменша оцінка = найменша тривалість Діаграма розсіювання з оцінкою цільової функції для різних змодельованих сценаріїв процесів "Unloading and Preparing", "Cutting" і "Polishing". Мінімальну тривалість кожного процесу, отриману для найкращих симуляцій, виділено.

Ранжування

«Процес 1» критичний для досягнення мети Графік ранжування сценаріїв за значенням цільової функції для різних змодельованих сценаріїв процесів "Unloading and Preparing", "Cutting" і "Polishing". Мінімальну тривалість кожного процесу, отриману для найкращих симуляцій, виділено.

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

Давайте потренуємось!

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

Preparing Video For Download...