Сочетание детерминированных и недетерминированных процессов

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