
lorsque votre système évolue au cours du temps, on utilise les fameux processus stochastiques ; il s’agit d’utiliser une suite de VA (X(t)) où t est le paramètre temps ; on peut distinguer 4 cas :
- VA à valeur discrète avec t discret
- VA à valeur discrète avec t continue
- VA à valeur continue avec t discret
- VA à valeur continue avec t continue
nous allons travailler avec des VA à valeurs discrète (cas 1 & 2)
- ex cas 1 : on regarde l’état de la machine à café toutes les secondes ; elle est soit libre soit en fonction
- ex cas 2 : dans un centre d’appel, un opérateur est soit libre soit occupé ; lorsqu’il répond au téléphone, le temps d’appel est une durée continue
chaîne de markov 😍
en restant simple, on dira que la suite de VA (X_n) est processus de markov si :
- l’état du système est connu (au départ)
- on connait la règle (en terme de probabilité) pour passer à l’étape suivante
de façon schématique, cela ressemble à une suite récurrente … le tout est de savoir quand un évènement se déclenche ; on distingue alors 2 cas :
- CM discrète : le temps avance avec un pas de 1
- CM continue : le temps est continue
remarque : au lieu de simplifier (brutalement) le cas discret (à un pas de 1), on rester un poil plus sophistiqué en choisissant pour le cas discret la loi (discrète) géométrique et dans le cas continue la loi (continue) exponentielle ; et comme par hasard la loi géométrique est la discrétisation de la loi exponentielle …
mais restons simple et regardons de plus près avec 3 exemples :
DTMC Good (G) and Bad (B) 😎
(X_n) une DTMC à 2 positions (voir diagramme)
from random import random
n = 10
S = []
S.append('G') # Initial state
for i in range(n):
u = random()
if S[i] == 'G':
if u < 0.5:
S.append('G')
else:
S.append('B')
elif S[i] == 'B':
if u < 0.7:
S.append('G')
else:
S.append('B')
print('Sample Path: ', S)

CTMC : simulation d’un processus de poisson 😎
(X_n) est un processus de poisson si c’est un CTMC à un état (naissance)
from random import expovariate
from random import expovariate
from matplotlib.pyplot import *
Avg_IAT = 2.0 # Average IAT
Sim_Time = 100 # Total simulation time
N = 0 # Count number of arrivals
clock = 0 # Simulation time
X = [] # Times of events
Y = [] # Values of N
while clock <= Sim_Time:
N = N + 1
# Advance simulation clock
clock = clock + expovariate(1/Avg_IAT)
X.append(clock)
Y.append(N)
step(X, Y, Linewidth=1.2, color='black')
xlabel('Time', size=16)
ylabel('N', size=16)
xlim(0, 101)
#show()
savefig('sim_poisson_process_process.pdf', format='pdf', bbox_inches='tight')

CTMC : birth-death process 😍
(X_n) est un processus à 2 états : naissance et décès
from random import expovariate
from matplotlib.pyplot import *
Avg_IAT = 2.0
Avg_ST = 1.0 # Avg service time
Sim_Time = 100 # Total simulation time
N = 0
clock = 0 # Simulation time
X = [] # Times of events
Y = [] # Values of N
while clock <= Sim_Time:
IAT = expovariate(1 / Avg_IAT)
ST = expovariate(1 / Avg_ST)
if IAT <= ST:
N += 1
clock = clock + IAT
X.append(clock)
Y.append(N)
else:
if N > 0:
N -= 1
clock = clock + ST
X.append(clock)
Y.append(N)
step(X, Y, Linewidth=1.2, color='black')
xlabel('Time', size=16)
ylabel('N', size=16)
xlim(0, 101)
#show()
savefig('sim_birth_death_process.pdf', format='pdf', bbox_inches='tight')
