Nedeterministické události a procesy

Diskrétní simulace událostí v Pythonu

Diogo Costa (PhD, MSc)

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

Nedeterminismus událostí

POZNÁMKA: Pojmy „událost" a „proces" se používají jako synonyma.

Co je nedeterminismus události (nebo procesu)?

  • Proces nelze přesně předpovědět
  • Takový proces se označuje jako „nedeterministický"

Proč jsou deterministické procesy důležité?

  • Přírodní i lidmi řízené děje jsou často nedeterministické
  • Při každém výskytu probíhají jinak
  • Jejich trvání nelze přesně určit
  • Mohou výrazně ovlivnit výstup systému
Diskrétní simulace událostí v Pythonu

Příklady nedeterministických procesů a událostí

Přírodní svět

  • Okamžik erupce sopky
  • Přesný okamžik deště
  • Čas a místo úderu blesku
  • Čas a místo vzniku tornáda

Procesy způsobené nebo vyvolané člověkem

  • Okamžik poruchy stroje
  • Okamžik, kdy člověk pocítí potřebu jít na záchod
  • Okamžik, kdy dítě začne plakat
  • Zda bude komerční let zpožděn
Diskrétní simulace událostí v Pythonu

Reprezentace nedeterministických událostí v diskrétních modelech událostí

Nedeterministické procesy

  • Mají na systém neopakovatelný dopad
  • Jejich přesné trvání neznáme

Statistika

  • Vyjadřuje proměnlivost v trvání procesů
  • Vhodný je balíček random

  • Příklad: 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]))

Diskrétní simulace událostí v Pythonu

Reprezentace nedeterministických událostí pomocí SimPy

  • Neexistují speciální metody pro nedeterministické procesy

  • Proměnlivost trvání událostí se počítá stejně jako u modelů bez SimPy

  • Správnou statistiku předej metodě .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]))
Diskrétní simulace událostí v Pythonu

Pojďme cvičit!

Diskrétní simulace událostí v Pythonu

Preparing Video For Download...