Поєднання детермінованих і недетермінованих процесів

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

Diogo Costa (PhD, MSc)

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

Детерміновані та недетерміновані процеси

Діаграма з послідовністю процесів у системі. Спершу детермінований процес A, далі недетермінований процес B, і на завершення ще один детермінований процес C.

Приклад: Керування пасажиропотоком в аеропортах

  • Недетермінований: час прибуття пасажира до аеропорту
  • Детермінований: перевезення багажу в аеропорту після реєстрації
Дискретно-подієве моделювання в Python

Приклад: Конвеєр на фабриці

Детерміновані процеси

  • Доставка сировини на фабрику
  • Повністю автоматизовані етапи
  • Перевірки якості
  • Пакування
  • Доставка нового продукту клієнтам

Приклад: Зварювальний апарат

Час обробки = Довжина зварного шва × Швидкість зварювального апарата

Недетерміновані процеси

  • Замовлення сировини
  • Ручне складання складних вузлів

Точкова діаграма, що показує тривалість конкретного ручного складання при багаторазовому повторенні.

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

Детерміновані процеси

Приклад: Конвеєр зі зварюванням

  • 2 детерміновані процеси
    welding_1

welding_2

  • welding_1

    • Назва процесу: Welding component A

    • Час обробки: 5 годин

  • welding_2
    • Назва процесу: Welding component B
    • Час обробки: length * hours_per_length

Створення dictionary для кожного процесу:

welding_1 = {
    "name": "Welding component A",
    "time_hours": 5
}

length = 20   # meters
hours_per_length = 0.2  # hours 

welding_2 = {
    "name": "Welding component B",
    "time_hours": length * hours_per_length
}
Дискретно-подієве моделювання в Python

Недетерміновані процеси

Приклад: Конвеєр

  • 2 недетерміновані процеси manual_assembly_1

manual_assembly_2

  • manual_assembly_1

    • Назва процесу: Manual Assembly A
    • Середній час обробки: 80 годин

    • Стандартне відхилення: 5 годин

  • manual_assembly_2
    • Назва процесу: Manual Assembly B"
    • Середній час обробки: 20 годин
  • Стандартне відхилення: 2 годин

Створення dictionary для кожного процесу:

manual_assembly_1 = {
    "name": "Manual Assembly A",
    "time_hours": 80,
    "std_hours": 5
}
manual_assembly_2 = {
    "name": "Manual Assembly B",
    "time_hours": 20,
    "std_hours": 2}
Дискретно-подієве моделювання в Python

Побудова імітації на подіях

Послідовність виробничих процесів Діаграма з послідовністю процесів у виробництві в хронологічному порядку: welding_1, manual_assembly_1, manual_assembly_2 та welding_2.

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

# Initiate time-tracking variable
time = numpy.zeros(number_of_processes)

# Next-event time progression time[0] = 0 time[1] = time[0] + welding_1["time_hours"] time[2] = time[1] + rd.gauss(manual_assembly_1["time_hours"], manual_assembly_1["std_hours"]) time[3] = time[2] + rd.gauss(manual_assembly_2["time_hours"], manual_assembly_2["std_hours"]) time[4] = time[3] + welding_2["time_hours"] time[5] = time[4]
Дискретно-подієве моделювання в Python

Одиниці часу та дослідження моделі

  • Одиниці часу
    • Переконайтеся, що одиниці часу узгоджені для всіх процесів.
Дискретно-подієве моделювання в Python

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

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

Preparing Video For Download...