Événements et processus non déterministes

Simulation d’événements discrets en Python

Diogo Costa (PhD, MSc)

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

Non-déterminisme des événements

REMARQUE : Les termes « événement » et « processus » sont utilisés de façon interchangeable.

Qu’est-ce que la non-déterminisme d’un événement (ou processus) ?

  • Impossibilité de prédire précisément un processus
  • Le processus est dit « non déterministe »

Pourquoi les processus déterministes sont-ils importants ?

  • Les activités naturelles et humaines sont souvent non déterministes
  • À chaque occurrence, elles se répètent différemment
  • Leur durée ne peut pas être estimée précisément
  • Elles peuvent fortement impacter la sortie du système
Simulation d’événements discrets en Python

Exemples de processus ou événements non déterministes

Monde naturel

  • Moment d’une éruption volcanique
  • Moment exact où il pleuvra
  • Moment et lieu d’un éclair
  • Moment et lieu de formation d’une tornade

Processus d’origine humaine

  • Moment où une machine tombe en panne
  • Moment où l’on doit aller aux toilettes
  • Moment où un bébé commence à pleurer
  • Si un vol commercial sera retardé
Simulation d’événements discrets en Python

Représenter des événements non déterministes dans des modèles à événements discrets

Processus non déterministes

  • Impact non reproductible sur le système
  • Durée exacte inconnue

Statistiques

  • Représentent la variabilité des durées
  • Le package random est utile pour cela

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

Simulation d’événements discrets en Python

Représenter des événements non déterministes avec SimPy

  • Pas de méthode spécifique pour ces processus

  • Variabilité de durée calculée comme pour les modèles sans SimPy

  • Passer les bonnes statistiques à .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]))
Simulation d’événements discrets en Python

Passons à la pratique !

Simulation d’événements discrets en Python

Preparing Video For Download...