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

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

Diogo Costa (PhD, MSc)

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

Недетермінізм подій

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

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

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

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

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

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

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

  • Момент виверження вулкана
  • Точний момент початку дощу
  • Час і місце удару блискавки
  • Час і місце формування торнадо

Процеси, керовані або ініційовані людьми

  • Момент поломки машини
  • Момент, коли виникне потреба в туалет
  • Момент, коли немовля заплаче
  • Чи буде затримано комерційний рейс
Дискретно-подієве моделювання в Python

Подання недетермінованих подій у дискретно-подієвих моделях

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

  • Спричиняють неповторний вплив на систему
  • Точна тривалість невідома

Статистика

  • Відображає варіативність тривалості процесів
  • Пакет random у цьому допомагає

  • Приклад: random.randint(start, end)

import random

# Non-deterministic processes
process_1 = [5, 15]

while time < simulation_time:

   # Update simulation time: process_1
   time += random.randint(
               process_1[0], 
               process_1[1])

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

Подання недетермінованих подій за допомогою SimPy

  • Немає спеціальних методів для урахування недетермінованих процесів

  • Варіативність тривалості обчислюють як у моделях без SimPy

  • Передайте потрібну статистику до .timeout()

import random

# Non-deterministic processes
process_1 = [5, 15]

while True:

  # Update simulation time: process_1
  yield env.timeout(random.randint(
         process_1[0], 
         process_1[1]))
Дискретно-подієве моделювання в Python

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

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

Preparing Video For Download...