Детерминированные события и процессы

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

Diogo Costa (PhD, MSc)

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

Детерминизм событий (или процессов)

ПРИМЕЧАНИЕ: Термины «событие» и «процесс» используются как синонимы.

Что такое детерминизм события (или процесса)?

  • Возможность точно предсказать процесс
  • Такой процесс называют «детерминированным»

Почему детерминированные процессы важны?

  • Природные и рукотворные процессы сложны
  • Множество взаимозависимых процессов и ресурсов
  • Некоторые процессы повторяются одинаково каждый раз
  • Их влияние на результат системы можно точно предсказать
Дискретно-событийное моделирование на Python

Примеры детерминированных процессов и событий

Природные явления

  • Высота морских приливов
  • Ускорение тел под действием силы тяжести (9,81 м$^2$/с)
  • Движение планет в Солнечной системе
  • Скорость звука в воздухе (331,29 м/с)
  • Скорость света (300 000 км/с)
  • Замерзание воды (при 0 градусах Цельсия)

Рукотворные или инициированные человеком

  • Поток воды из крана
  • Скорость работы машины для розлива воды в бутылки
  • Время приготовления кофе кофемашиной
  • Тепло, выделяемое духовкой при 230 градусах Цельсия
  • Запрограммированные режимы стиральной машины
  • Работа микроволновой печи
Дискретно-событийное моделирование на Python

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

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

  • Предсказуемое влияние на динамические системы
  • Известная длительность
  • Повторяются одинаково каждый раз

Длительность процесса необходимо учитывать в модельном времени симуляции

# Deterministic processes (time in hours)
duration_process_1 = 10
duration_process_2 = 5

while sim_time < total_sim_time:
# Update simulation time: Process 1 sim_time += duration_process_1
# Update simulation time: Process 2 sim_time += duration_process_2
Дискретно-событийное моделирование на Python

Представление детерминированных событий с помощью SimPy

Реализация детерминированных событий в SimPy:

  • Метод .timeout() фиксирует длительность процесса
    • Не зависит от единиц времени
    • Воспринимает время как числа
    • Единицы времени должны быть согласованы во всей модели
# Deterministic processes
duration_process_1 = 10
duration_process_2 = 5

while True:

   # Update simulation time: Process 1
   yield env.timeout(duration_process_1)

   # Update simulation time: Process 2
   yield env.timeout(duration_process_2)

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

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

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

Preparing Video For Download...