Documente Academic
Documente Profesional
Documente Cultură
23 mai 2014
Cours 8INF802
Département d’informatique et mathématique
1. Introduction
2. Mesures
3. Processus de Poisson
4. Simulation
5. SimPy
1. Introduction
2. Mesures
3. Processus de Poisson
4. Simulation
5. SimPy
0
9:30 9:40 9:50 10:00
A(t)
5
0
9:30 9:40 9:50 10:00
A(t)
5 Dq (t)
0
9:30 9:40 9:50 10:00
A(t)
5 Dq (t)
Ds (t)
4
0
9:30 9:40 9:50 10:00
A(t)
5 Dq (t)
Ds (t)
4
0
9:30 9:40 9:50 10:00
A(t)
5 Dq (t)
Ds (t)
4
0
9:30 9:40 9:50 10:00
0
9:30 9:40 9:50 10:00
1
Lq (t)
0
9:30 9:40 9:50 10:00
1
Lq (t)
Ls (t)
0
9:30 9:40 9:50 10:00
5
4
3
2
1
0
5
4
3
2
1
0
I Par conséquent,
N Wq = (b − a)Lq .
I Soit λ = N/(b − a) le nombre moyen de clients qui arrivent
par unité de temps;
I Alors les formules suivantes sont vérifiées peu importe le
type de file d’attente impliquée :
Formules de Little
Lq = λWq
Ls = λWs .
1. Introduction
2. Mesures
3. Processus de Poisson
4. Simulation
5. SimPy
1. N (t) ≥ 0, pour t ∈ R;
2. N (t) est entier pour t ∈ R;
3. Si s ≤ t, alors N (s) ≤ N (t) peu importe s, t ∈ R.
I On dit d’un processus de comptage qu’il a des incréments
indépendants si le nombre d’événements de toute paire
d’intervalles de temps disjoints sont statistiquement
indépendants;
I On dit d’un processus de comptage qu’il a des incréments
stationnaires si le nombre d’événements dans un intervalle
de temps ne dépend que de la longueur de l’intervalle.
1. Introduction
2. Mesures
3. Processus de Poisson
4. Simulation
5. SimPy
I Première méthode :
I On calcule les temps entre les arrivées;
I Pour cela, il suffit de simuler des variables
exponentielles;
I Deuxième méthode :
I On simule d’abord une variable de Poisson sur un
intervalle [a, b];
I Puis on simule des variables uniformes autant de fois
que la valeur obtenu pour la variable de Poisson;
I Finalement, on trie en ordre croissant les temps
d’arrivée ainsi générés.
A(9:15) = {1, 2, 3}
A(9:15) = {4, 5}.
1. On incrémente A(t) de 1;
2. On met à jour les ensembles A(t) et A(t);
3. S’il y a un serveur disponible,
1. On incrémente Ds (t) de 1;
2. On met à jour les ensembles D(t) et D(t);
3. S’il y a un client dans la file,
Reprenons l’exemple
n A−1 (n) S(n)
1 9:05 4 min
2 9:08 7 min
3 9:12 2 min
4 9:20 6 min
5 9:25 7 min
Alors on obtient les valeurs suivantes :
Temps A(t) D(t) A(t) Dq (t) Ds (t) Événement
9:00 ∅ ∅ 0 0 0 Initialisation
Reprenons l’exemple
n A−1 (n) S(n)
1 9:05 4 min
2 9:08 7 min
3 9:12 2 min
4 9:20 6 min
5 9:25 7 min
Alors on obtient les valeurs suivantes :
Temps A(t) D(t) A(t) Dq (t) Ds (t) Événement
9:00 ∅ ∅ 0 0 0 Initialisation
9:05 {1} ∅ 1 1 0 Arrivée
Reprenons l’exemple
n A−1 (n) S(n)
1 9:05 4 min
2 9:08 7 min
3 9:12 2 min
4 9:20 6 min
5 9:25 7 min
Alors on obtient les valeurs suivantes :
Temps A(t) D(t) A(t) Dq (t) Ds (t) Événement
9:00 ∅ ∅ 0 0 0 Initialisation
9:05 {1} ∅ 1 1 0 Arrivée
9:08 {1, 2} ∅ 2 1 0 Arrivée
Reprenons l’exemple
n A−1 (n) S(n)
1 9:05 4 min
2 9:08 7 min
3 9:12 2 min
4 9:20 6 min
5 9:25 7 min
Alors on obtient les valeurs suivantes :
Temps A(t) D(t) A(t) Dq (t) Ds (t) Événement
9:00 ∅ ∅ 0 0 0 Initialisation
9:05 {1} ∅ 1 1 0 Arrivée
9:08 {1, 2} ∅ 2 1 0 Arrivée
9:09 {1, 2} ∅ 2 2 1 Départ
Reprenons l’exemple
n A−1 (n) S(n)
1 9:05 4 min
2 9:08 7 min
3 9:12 2 min
4 9:20 6 min
5 9:25 7 min
Alors on obtient les valeurs suivantes :
Temps A(t) D(t) A(t) Dq (t) Ds (t) Événement
9:00 ∅ ∅ 0 0 0 Initialisation
9:05 {1} ∅ 1 1 0 Arrivée
9:08 {1, 2} ∅ 2 1 0 Arrivée
9:09 {1, 2} ∅ 2 2 1 Départ
9:12 {1, 2, 3} {1} 3 2 1 Arrivée
Reprenons l’exemple
n A−1 (n) S(n)
1 9:05 4 min
2 9:08 7 min
3 9:12 2 min
4 9:20 6 min
5 9:25 7 min
Alors on obtient les valeurs suivantes :
Temps A(t) D(t) A(t) Dq (t) Ds (t) Événement
9:00 ∅ ∅ 0 0 0 Initialisation
9:05 {1} ∅ 1 1 0 Arrivée
9:08 {1, 2} ∅ 2 1 0 Arrivée
9:09 {1, 2} ∅ 2 2 1 Départ
9:12 {1, 2, 3} {1} 3 2 1 Arrivée
9:16 {1, 2, 3} {1, 2} 3 3 2 Départ
Reprenons l’exemple
n A−1 (n) S(n)
1 9:05 4 min
2 9:08 7 min
3 9:12 2 min
4 9:20 6 min
5 9:25 7 min
Alors on obtient les valeurs suivantes :
Temps A(t) D(t) A(t) Dq (t) Ds (t) Événement
9:00 ∅ ∅ 0 0 0 Initialisation
9:05 {1} ∅ 1 1 0 Arrivée
9:08 {1, 2} ∅ 2 1 0 Arrivée
9:09 {1, 2} ∅ 2 2 1 Départ
9:12 {1, 2, 3} {1} 3 2 1 Arrivée
9:16 {1, 2, 3} {1, 2} 3 3 2 Départ
9:18 {1, 2, 3} {1, 2, 3} 3 3 3 Départ
Reprenons l’exemple
n A−1 (n) S(n)
1 9:05 4 min
2 9:08 7 min
3 9:12 2 min
4 9:20 6 min
5 9:25 7 min
Alors on obtient les valeurs suivantes :
Temps A(t) D(t) A(t) Dq (t) Ds (t) Événement
9:00 ∅ ∅ 0 0 0 Initialisation
9:05 {1} ∅ 1 1 0 Arrivée
9:08 {1, 2} ∅ 2 1 0 Arrivée
9:09 {1, 2} ∅ 2 2 1 Départ
9:12 {1, 2, 3} {1} 3 2 1 Arrivée
9:16 {1, 2, 3} {1, 2} 3 3 2 Départ
9:18 {1, 2, 3} {1, 2, 3} 3 3 3 Départ
9:20 {1, 2, 3, 4} {1, 2, 3} 4 4 3 Arrivée
Reprenons l’exemple
n A−1 (n) S(n)
1 9:05 4 min
2 9:08 7 min
3 9:12 2 min
4 9:20 6 min
5 9:25 7 min
Alors on obtient les valeurs suivantes :
Temps A(t) D(t) A(t) Dq (t) Ds (t) Événement
9:00 ∅ ∅ 0 0 0 Initialisation
9:05 {1} ∅ 1 1 0 Arrivée
9:08 {1, 2} ∅ 2 1 0 Arrivée
9:09 {1, 2} ∅ 2 2 1 Départ
9:12 {1, 2, 3} {1} 3 2 1 Arrivée
9:16 {1, 2, 3} {1, 2} 3 3 2 Départ
9:18 {1, 2, 3} {1, 2, 3} 3 3 3 Départ
9:20 {1, 2, 3, 4} {1, 2, 3} 4 4 3 Arrivée
9:25 {1, 2, 3, 4, 5} {1, 2, 3} 5 4 3 Arrivée
Reprenons l’exemple
n A−1 (n) S(n)
1 9:05 4 min
2 9:08 7 min
3 9:12 2 min
4 9:20 6 min
5 9:25 7 min
Alors on obtient les valeurs suivantes :
Temps A(t) D(t) A(t) Dq (t) Ds (t) Événement
9:00 ∅ ∅ 0 0 0 Initialisation
9:05 {1} ∅ 1 1 0 Arrivée
9:08 {1, 2} ∅ 2 1 0 Arrivée
9:09 {1, 2} ∅ 2 2 1 Départ
9:12 {1, 2, 3} {1} 3 2 1 Arrivée
9:16 {1, 2, 3} {1, 2} 3 3 2 Départ
9:18 {1, 2, 3} {1, 2, 3} 3 3 3 Départ
9:20 {1, 2, 3, 4} {1, 2, 3} 4 4 3 Arrivée
9:25 {1, 2, 3, 4, 5} {1, 2, 3} 5 4 3 Arrivée
9:26 {1, 2, 3, 4, 5} {1, 2, 3, 4} 5 5 4 Départ
Reprenons l’exemple
n A−1 (n) S(n)
1 9:05 4 min
2 9:08 7 min
3 9:12 2 min
4 9:20 6 min
5 9:25 7 min
Alors on obtient les valeurs suivantes :
Temps A(t) D(t) A(t) Dq (t) Ds (t) Événement
9:00 ∅ ∅ 0 0 0 Initialisation
9:05 {1} ∅ 1 1 0 Arrivée
9:08 {1, 2} ∅ 2 1 0 Arrivée
9:09 {1, 2} ∅ 2 2 1 Départ
9:12 {1, 2, 3} {1} 3 2 1 Arrivée
9:16 {1, 2, 3} {1, 2} 3 3 2 Départ
9:18 {1, 2, 3} {1, 2, 3} 3 3 3 Départ
9:20 {1, 2, 3, 4} {1, 2, 3} 4 4 3 Arrivée
9:25 {1, 2, 3, 4, 5} {1, 2, 3} 5 4 3 Arrivée
9:26 {1, 2, 3, 4, 5} {1, 2, 3, 4} 5 5 4 Départ
9:33 {1, 2, 3, 4, 5} {1, 2, 3, 4, 5} 5 5 5 Départ
A. Blondin Massé (UQAC) 23 mai 2014 47 / 59
Temps de service
A/S/c/K/N/D
où
I A est la distribution de probabilité des temps entre les
arrivées;
I S est la distribution de probabilité du temps de service;
I c est le nombre de serveurs;
I K est la capacité de la file d’attente;
I N est la taille de la population de clients;
I D est la discipline de la file.
A. Blondin Massé (UQAC) 23 mai 2014 49 / 59
Valeurs classiques
1. Introduction
2. Mesures
3. Processus de Poisson
4. Simulation
5. SimPy
Résultat :
(’fast’, ’0.00’)
(’slow’, ’0.00’)
(’fast’, ’0.40’)
(’fast’, ’0.80’)
(’slow’, ’1.00’)
(’fast’, ’1.20’)
(’fast’, ’1.60’)
(’slow’, ’2.00’)
(’fast’, ’2.00’)
(’fast’, ’2.40’)
(’fast’, ’2.80’)
Neige
1/2 1/4
1/4 1/4
1/2
Soleil Pluie
1/4
1/2
# Customers
def customer(environment, name, server, arrival_time, service_time,
waiting_times):
# Simulating arrival time
yield environment.timeout(arrival_time)
# Requesting server
print(’%s arriving at %d’ % (name, environment.now))
with server.request() as req:
yield req