Deterministické 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

Determinismus události (nebo procesu)

POZNÁMKA: Termíny „událost" a „proces" jsou zaměnitelné.

Co je determinismus události (nebo procesu)?

  • Schopnost přesně předpovědět průběh procesu
  • Takový proces se označuje jako „deterministický"

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

  • Přírodní i člověkem řízené činnosti jsou složité
  • Mnoho vzájemně závislých procesů a zdrojů
  • Některé procesy probíhají při každém výskytu stejně
  • Dopad na výstup systému lze přesně předpovědět
Diskrétní simulace událostí v Pythonu

Příklady deterministických procesů nebo událostí

Přírodní svět

  • Výška mořských přílivů
  • Zrychlení objektů vlivem gravitace (9,81 m$^2$/s)
  • Pohyb planet ve sluneční soustavě
  • Rychlost zvuku ve vzduchu (331,29 m/s)
  • Rychlost světla (300 000 km/s)
  • Tuhnutí vody (při 0 °C)

Člověkem řízené nebo iniciované

  • Průtok z vodovodního kohoutku
  • Rychlost stroje na plnění lahví vodou
  • Doba přípravy kávy v kávovaru
  • Teplo uvolněné troubou při 230 °C
  • Naprogramované cykly pračky
  • Provoz mikrovlnné trouby
Diskrétní simulace událostí v Pythonu

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

Deterministické procesy

  • Předvídatelný dopad na dynamické systémy
  • Dobře známá délka trvání
  • Opakují se stejným způsobem

Délka trvání procesu musí být zohledněna v simulačním čase

# 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
Diskrétní simulace událostí v Pythonu

Reprezentace deterministických událostí pomocí SimPy

Implementace deterministických událostí v SimPy:

  • Metoda .timeout() zaznamenává délku trvání procesu
    • Nezohledňuje časové jednotky
    • Pracuje s časem jako s čísly
    • Časové jednotky musí být v celém modelu konzistentní
# 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)

Diskrétní simulace událostí v Pythonu

Pojďme procvičovat!

Diskrétní simulace událostí v Pythonu

Preparing Video For Download...