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

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

Diogo Costa (PhD, MSc)

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

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

Непрерывные модели

  • Выполняются с фиксированным шагом по времени

  • Время — вспомогательная переменная

    • Время не обновляется внутри цикла
  • Используют циклы for по времени

    for t in range(time_range):
    

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

  • Выполняются с переменным шагом по времени

    • Запускают/планируют дискретные события разной длительности
  • Время — переменная состояния

    • Время обновляется внутри цикла while
    • Время не является вспомогательной переменной
  • Часто используют циклы while

    while (time < 365):
    time += process_duration
    
Дискретно-событийное моделирование на Python

Компоненты дискретно-событийных моделей

  • Переменные состояния
  • Часы
  • Список событий (или список процессов)
  • Условие(я) завершения
Дискретно-событийное моделирование на Python

Компоненты модели

Пример: модель таксомоторной компании

while (time < 10):

    # Process 1
    time_duration_1 = manage_requests()
    time += time_duration_1

    # Process 2
    time_duration_2 = dispatch_taxi()
    time += time_duration_2

Условие завершения

while (time < 10)
  • Условие(я), при котором моделирование останавливается
Дискретно-событийное моделирование на Python

Компоненты модели

Пример: модель таксомоторной компании

while (time < 10):

    # Process 1
    time_duration_1 = manage_requests()
    time += time_duration_1

    # Process 2
    time_duration_2 = dispatch_taxi()
    time += time_duration_2

Часы

time += time_duration_1
time += time_duration_2
  • time отслеживает текущее время моделирования
  • Часы перескакивают к моменту начала следующего события
  • Время скачет, поскольку события мгновенны
Дискретно-событийное моделирование на Python

Компоненты модели

Пример: модель таксомоторной компании

while (time < 10):

    # Process 1
    time_duration_1 = manage_requests()
    time += time_duration_1

    # Process 2
    time_duration_2 = dispatch_taxi()
    time += time_duration_2

Переменная состояния

time
  • Сокращение времени между вызовом такси и доставкой клиента

  • Переменные, характеризующие результаты и эффективность системы

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

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

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

Preparing Video For Download...