Evenimente și procese nedeterministe

Simulare de evenimente discrete în Python

Diogo Costa (PhD, MSc)

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

Nedeterminismul evenimentelor

NOTĂ: Termenii „eveniment" și „proces" sunt folosiți interschimbabil.

Ce este nedeterminismul unui eveniment (sau proces)?

  • Imposibilitatea de a prezice cu exactitate un proces
  • Procesul este denumit „Nedeterminist"

De ce sunt importante procesele deterministe?

  • Activitățile naturale și umane implică adesea procese nedeterministe
  • La fiecare apariție, se desfășoară în mod diferit
  • Durata lor nu poate fi determinată cu exactitate
  • Pot avea un impact semnificativ asupra rezultatului sistemului
Simulare de evenimente discrete în Python

Exemple de procese sau evenimente nedeterministe

Lumea naturală

  • Momentul erupției unui vulcan
  • Momentul exact al ploii
  • Momentul și locul în care va lovi fulgerul
  • Momentul și locul în care se va forma o tornadă

Procese conduse sau inițiate de oameni

  • Momentul defectării unei mașini
  • Momentul în care cineva simte nevoia să meargă la baie
  • Momentul în care un bebeluș începe să plângă
  • Dacă un zbor comercial va fi întârziat
Simulare de evenimente discrete în Python

Reprezentarea evenimentelor nedeterministe în modele cu evenimente discrete

Procese nedeterministe

  • Produc impact nerepetabil asupra sistemului
  • Durată exactă necunoscută

Statistici

  • Reprezintă variabilitatea duratei proceselor
  • Pachetul random este util în acest scop

  • Exemplu: 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])

Simulare de evenimente discrete în Python

Reprezentarea evenimentelor nedeterministe cu SimPy

  • Nu există metode specifice pentru procesele nedeterministe

  • Variabilitatea duratei evenimentelor se calculează ca în modelele fără SimPy

  • Transmiteți statisticile corecte către .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]))
Simulare de evenimente discrete în Python

Să exersăm!

Simulare de evenimente discrete în Python

Preparing Video For Download...