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

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

Diogo Costa (PhD, MSc)

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

Детермінізм події (або процесу)

ПРИМІТКА: Терміни «подія» та «процес» уживаються як синоніми.

Що таке детермінізм події (або процесу)?

  • Здатність процесу бути точно передбаченим
  • Процес називають «детермінованим»

Чому детерміновані процеси важливі?

  • Природні та штучні діяльності складні
  • Багато взаємозалежних процесів і ресурсів
  • Деякі процеси щоразу повторюються однаково
  • Вплив на вихід системи можна точно передбачити
Дискретно-подієве моделювання в Python

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

Природний світ

  • Висота океанських припливів
  • Прискорення тіл через гравітацію (9,81 м$^2$/с)
  • Рух планет у Сонячній системі
  • Швидкість звуку в повітрі (331,29 м/с)
  • Швидкість світла (300 000 км/с)
  • Замерзання води (за 0 °C)

Спричинені або ініційовані людиною

  • Потік із водопровідного крана
  • Швидкість машини для наповнення пляшок водою
Дискретно-подієве моделювання в 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...