chapitre 4 : files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 ·...
TRANSCRIPT
Chapitre 4 : Files d’attente
Alexandre Blondin Massé
Laboratoire d’informatique formelleUniversité du Québec à Chicoutimi
23 mai 2014Cours 8INF802
Département d’informatique et mathématique
A. Blondin Massé (UQAC) 23 mai 2014 1 / 59
Table des matières
1. Introduction
2. Mesures
3. Processus de Poisson
4. Simulation
5. SimPy
A. Blondin Massé (UQAC) 23 mai 2014 2 / 59
Files d’attente
Les problèmes de files d’attente surviennent dans des contextestrès variés :
I Lignes aériennes;
I Transplantation d’organes;
I Cour de Justice;
I Traitement de processus informatiques;
I Prendre de l’essence dans une station-service;
I Transactions quotidiennes à la banque, etc.
A. Blondin Massé (UQAC) 23 mai 2014 3 / 59
Intérêt
I Plusieurs problèmes de files d’attente ont des solutionsanalytiques;
I Autrement, on peut toujours recourir à des simulations;
I Dans les applications concrètes, les solutions permettent deréduire substantiellement les coûts;
I Elles facilitent également la prise de décision.
A. Blondin Massé (UQAC) 23 mai 2014 4 / 59
Trois entités de base
I Les trois entités de base d’un système de file d’attentesont :
1. Le client, qui est la personne ou la chose qui attend unservice;
2. Le serveur, qui est la personne ou la chose qui fournitun service;
3. La file d’attente, qui est un groupe de clients attendantun service. Elle peut être ordonnée ou non.
I L’identification de ces entités est parfois complexe.
A. Blondin Massé (UQAC) 23 mai 2014 5 / 59
Client
I La description du temps d’arrivée des clients s’appelleprocessus d’arrivée;
I Est-ce que les arrivées sont indépendantes ? par groupe ? Ya-t-il des moments de grand achalandage ?
I Souvent, on choisit une loi de probabilité qui décrit lesarrivées en question;
I Certaines actions peuvent être effectuées par les clients;
I Renoncer (en anglais, reneging) : le client quitte avantd’être servi;
I Changer de file (en anglais, jockeying);
I Ces actions rendent souvent l’analyse plus complexe.
A. Blondin Massé (UQAC) 23 mai 2014 6 / 59
Serveur
I Il s’agit de l’entité qui accède aux requêtes des clients;
I Le temps de service peut aussi être décrit par une loi deprobabilité ou être entièrement déterministe;
I Est-ce que le service se fait à l’unité ? par groupe ?
I Est-ce que le temps de service dépend du type de client ?du moment de la journée ?
I La configuration des serveurs peut également influencer :
I Combien y a-t-il de serveurs ?
I Sont-ils identiques et peuvent offrir le service enparallèle ? Ou plutôt en série ?
A. Blondin Massé (UQAC) 23 mai 2014 7 / 59
Files d’attente
I Plusieurs façons de gérer la file;
I Premier arrivé, premier servi (FIFO);
I Avec priorité ?
I Il peut y avoir différents types de files;
I Combien y en a-t-il ?
A. Blondin Massé (UQAC) 23 mai 2014 8 / 59
Banque
I Client ? Celui qui effectue une transaction ou la transactionelle-même;
I Serveur ? Le commis, l’ordinateur central ou le guichetautomatique;
I Typiquement, on a une file d’attente et plusieurs serveurs.
A. Blondin Massé (UQAC) 23 mai 2014 9 / 59
Supermarché
I Client ? Celui qui achète, les items achetés, le paiement;
I Serveur ? Le caissier, la caisse-enregistreuse, le scanner,l’emballeur;
I Typiquement, on a une file d’attente par serveur.A. Blondin Massé (UQAC) 23 mai 2014 10 / 59
SAAQ
I Client ? Plusieurs types possibles (renouvellement, nouveaupermis, etc.);
I Files d’attente ? Différents types aussi (prise de photo,traitements courants, transferts de véhicule).
A. Blondin Massé (UQAC) 23 mai 2014 11 / 59
Table des matières
1. Introduction
2. Mesures
3. Processus de Poisson
4. Simulation
5. SimPy
A. Blondin Massé (UQAC) 23 mai 2014 12 / 59
Mesures de performance
I Lorsqu’on modélise un système de file d’attente, plusieursstatistiques sont intéressantes;
I Temps d’arrivé : le temps où le client arrive dans la file;
I Temps de départ : le temps où le client quitte la file, aprèsavoir été servi;
I Temps de départ de la file : le temps où le client quitte lafile et commence à être servi;
I Temps d’attente : le temps de départ de la file moins letemps d’arrivée;
I Temps de service : le temps de départ moins le temps dedépart de la file;
I Temps dans le système : le temps d’attente plus le tempsde service.
A. Blondin Massé (UQAC) 23 mai 2014 13 / 59
Critères du client
I Temps d’attente : idéalement le plus court possible;
I Temps de service : parfois considéré moins coûteux que letemps d’attente;
I Coût d’attente : certains clients ont un coût d’attente plusélevé que d’autres;
I Services complétés à temps : Le nombre de servicescomplétés avant une limite;
I Retard : Si le service est terminé en retard, l’importance duretard peut aussi être considérée.
A. Blondin Massé (UQAC) 23 mai 2014 14 / 59
Performance du serveur
I Temps de service : plus il est court, plus efficace le serviceest;
I Proportion d’utilisation : pourcentage du temps où leserveur est en service;
I Rythme de service : le rythme auquel les clients sont servis;
I Proportion d’abandon : le pourcentage de clients quiquittent avant d’être servis;
I Longueur de la file : une longue file demande plus d’espace.
A. Blondin Massé (UQAC) 23 mai 2014 15 / 59
Diagrammes cumulatifs (1/2)
On introduit la notation suivante :
I A(t) est le nombre de clients arrivés entre 0 et t;
I Ds(t) est le nombre de clients qui ont quitté le systèmeentre 0 et t;
I Ds(t) est le nombre de clients qui ont quitté la file entre 0et t;
Client Arrivée Service Départ du système1 9:36 9:36 9:402 9:37 9:40 9:443 9:38 9:44 9:484 9:40 9:48 9:525 9:45 9:52 9:56
A. Blondin Massé (UQAC) 23 mai 2014 16 / 59
Diagrammes cumulatifs (2/2)
9:30 9:40 9:50 10:000
1
2
3
4
5
A(t)Dq(t)Ds(t)
I Les temps d’attente correspondent à des distanceshorizontales;
I La longueur de la file correspond à des distances verticales.
A. Blondin Massé (UQAC) 23 mai 2014 17 / 59
Diagrammes cumulatifs (2/2)
9:30 9:40 9:50 10:000
1
2
3
4
5A(t)
Dq(t)Ds(t)
I Les temps d’attente correspondent à des distanceshorizontales;
I La longueur de la file correspond à des distances verticales.
A. Blondin Massé (UQAC) 23 mai 2014 17 / 59
Diagrammes cumulatifs (2/2)
9:30 9:40 9:50 10:000
1
2
3
4
5A(t)Dq(t)
Ds(t)
I Les temps d’attente correspondent à des distanceshorizontales;
I La longueur de la file correspond à des distances verticales.
A. Blondin Massé (UQAC) 23 mai 2014 17 / 59
Diagrammes cumulatifs (2/2)
9:30 9:40 9:50 10:000
1
2
3
4
5A(t)Dq(t)Ds(t)
I Les temps d’attente correspondent à des distanceshorizontales;
I La longueur de la file correspond à des distances verticales.
A. Blondin Massé (UQAC) 23 mai 2014 17 / 59
Diagrammes cumulatifs (2/2)
9:30 9:40 9:50 10:000
1
2
3
4
5A(t)Dq(t)Ds(t)
I Les temps d’attente correspondent à des distanceshorizontales;
I La longueur de la file correspond à des distances verticales.
A. Blondin Massé (UQAC) 23 mai 2014 17 / 59
Diagrammes cumulatifs (2/2)
9:30 9:40 9:50 10:000
1
2
3
4
5A(t)Dq(t)Ds(t)
I Les temps d’attente correspondent à des distanceshorizontales;
I La longueur de la file correspond à des distances verticales.
A. Blondin Massé (UQAC) 23 mai 2014 17 / 59
Nombre de clients
On utilise la notation suivante :
I Lq(t) est le nombre de clients dans la file au temps t;
I Ls(t) est le nombre de clients dans le système au temps t;
9:30 9:40 9:50 10:000
1
2
3
4
5
Lq(t)Ls(t)
A. Blondin Massé (UQAC) 23 mai 2014 18 / 59
Nombre de clients
On utilise la notation suivante :
I Lq(t) est le nombre de clients dans la file au temps t;
I Ls(t) est le nombre de clients dans le système au temps t;
9:30 9:40 9:50 10:000
1
2
3
4
5
Lq(t)Ls(t)
A. Blondin Massé (UQAC) 23 mai 2014 18 / 59
Nombre de clients
On utilise la notation suivante :
I Lq(t) est le nombre de clients dans la file au temps t;
I Ls(t) est le nombre de clients dans le système au temps t;
9:30 9:40 9:50 10:000
1
2
3
4
5
Lq(t)Ls(t)
A. Blondin Massé (UQAC) 23 mai 2014 18 / 59
Nombre de clients
On utilise la notation suivante :
I Lq(t) est le nombre de clients dans la file au temps t;
I Ls(t) est le nombre de clients dans le système au temps t;
9:30 9:40 9:50 10:000
1
2
3
4
5
Lq(t)
Ls(t)
A. Blondin Massé (UQAC) 23 mai 2014 18 / 59
Nombre de clients
On utilise la notation suivante :
I Lq(t) est le nombre de clients dans la file au temps t;
I Ls(t) est le nombre de clients dans le système au temps t;
9:30 9:40 9:50 10:000
1
2
3
4
5
Lq(t)Ls(t)
A. Blondin Massé (UQAC) 23 mai 2014 18 / 59
Temps d’attente (1/2)
Les fonctions A, Dq et Ds sont inversibles :
I A−1(n) est le temps de la n-ième arrivée d’un client;
I D−1q (n) est le temps du n-ième départ de la file;
I D−1s (n) est le temps du n-ième départ du système;
n A−1(n) D−1q (n) D−1s (n)
1 9:36 9:36 9:402 9:37 9:40 9:443 9:38 9:44 9:484 9:40 9:48 9:525 9:45 9:52 9:56
A. Blondin Massé (UQAC) 23 mai 2014 19 / 59
Temps d’attente (2/2)
I On en vient naturellement à définir les quantités suivantes :
I Wq(n) est le temps d’attente dans la file du n-ièmeclient;
I Ws(n) est le temps d’attente dans le système dun-ième client.
I Clairement, si la file d’attente est du type FIFO, alors
Wq(n) = D−1q (n)−A−1(n)Ws(n) = D−1s (n)−A−1(n).
A. Blondin Massé (UQAC) 23 mai 2014 20 / 59
Utilisation du serveur
I En tout temps, le nombre de serveurs occupés est donnépar Dq(t)−Ds(t), qui correspond au nombre de clients enservice;
I L’utilisation moyenne est le nombre moyen de serveursoccupés par rapport au temps;
I La proportion d’utilisation est égale à l’utilisation moyennedivisée par le nombre total de serveurs disponibles;
I Le temps d’inactivité est le temps pendant lequel
1. Dq(t)−Ds(t) est plus petit que le nombre de serveurset
2. A(t)−Dq(t) = Lq(t) est plus grand que 0.
I Pour mesurer le nombre de clients qui renoncent, il faututiliser un diagramme supplémentaire.
A. Blondin Massé (UQAC) 23 mai 2014 21 / 59
Statistiques sur le temps d’attente
I La distribution du temps d’attente est une mesure trèsprécieuse de la performance du système;
I Les temps d’attente moyen sont calculés comme suit :
Wq =
∑Nn=1Wq(n)
N,
Ws =
∑Nn=1Ws(n)
N.
I Et pour évaluer la dispersion des données, on calculel’écart-type :
σWq =
√∑Nn=1[Wq(n)−Wq]2
N,
σWs =
√∑Nn=1[Ws(n)−Ws]2
N.
A. Blondin Massé (UQAC) 23 mai 2014 22 / 59
Statistiques sur la longueur de la file
I Il en va de même pour la distribution de la longueur de lafile;
I La longueur moyenne est donnée par
Lq =
∫ ba Lq(t)dt
b− a,
Ls =
∫ ba Ls(t)dt
b− a.
I Et l’écart-type est
σLq =
√∫ ba [Lq(t)− Lq]2dt
b− a,
σLs =
√∫ ba [Ls(t)− Ls]2dt
b− a.
A. Blondin Massé (UQAC) 23 mai 2014 23 / 59
Formule de Little (1/2)
012345
I Il est clair queN∑n=1
Wq(n) =
∫ b
aLq(t)dt.
où [a, b] commence/termine avec 0 client.
I De la même façonN∑n=1
Ws(n) =
∫ b
aLs(t)dt.
A. Blondin Massé (UQAC) 23 mai 2014 24 / 59
Formule de Little (1/2)
012345
I Il est clair queN∑n=1
Wq(n) =
∫ b
aLq(t)dt.
où [a, b] commence/termine avec 0 client.
I De la même façonN∑n=1
Ws(n) =
∫ b
aLs(t)dt.
A. Blondin Massé (UQAC) 23 mai 2014 24 / 59
Formule de Little (2/2)
I Par conséquent,NWq = (b− a)Lq.
I Soit λ = N/(b− a) le nombre moyen de clients qui arriventpar unité de temps;
I Alors les formules suivantes sont vérifiées peu importe letype de file d’attente impliquée :
Formules de Little
Lq = λWq
Ls = λWs.
A. Blondin Massé (UQAC) 23 mai 2014 25 / 59
Remarques additionnelles
I Lorsqu’il y a plusieurs serveurs, les diagrammes cumulatifssont également adéquats;
I En revanche, si la file n’est pas de type FIFO, la lecture dudiagramme doit être faite différemment;
I Par exemple, si on a un système LIFO, alors le tempsmoyen est le même, mais l’écart-type augmente;
A. Blondin Massé (UQAC) 23 mai 2014 26 / 59
Techniques de mesure
I La mesure des différentes quantités pour évaluer laperformance d’un système peut être très simple oucompliquée;
I Lorsque le système n’est pas complètement informatisé,certaines informations peuvent être difficiles ou impossiblesà enregistrer :
I Un tourniquet dans un métro;
I Une carte magnétique;
I L’anonymat de certains systèmes;
I La taille importante;
I etc.
A. Blondin Massé (UQAC) 23 mai 2014 27 / 59
Table des matières
1. Introduction
2. Mesures
3. Processus de Poisson
4. Simulation
5. SimPy
A. Blondin Massé (UQAC) 23 mai 2014 28 / 59
Arrivée des clients
I Lorsqu’on simule l’arrivée des clients, il faut évidemmentun modèle approprié;
I Il s’avère que le processus de Poisson est souvent unexcellent candidat :
I Il s’agit d’un processus très simple;
I Il donne des résultats très réalistes.
I Permet de modéliser de nombreux phénomènes physiquesou issus d’autres domaines.
A. Blondin Massé (UQAC) 23 mai 2014 29 / 59
Processus
I Un processus de comptage est une fonction N(t) telle que
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émentsindépendants si le nombre d’événements de toute paired’intervalles de temps disjoints sont statistiquementindépendants;
I On dit d’un processus de comptage qu’il a des incrémentsstationnaires si le nombre d’événements dans un intervallede temps ne dépend que de la longueur de l’intervalle.
A. Blondin Massé (UQAC) 23 mai 2014 30 / 59
Processus de Poisson (1/2)
I Plus formellement, un processus de Poisson de moyenne λest un processus de comptage N(t) si
1. Le processus a des incréments indépendants;2. Le processus a des incréments stationnaires;3. Pour tout nombre dt suffisamment petit,
P (N(t+ dt)−N(t) = 0) = 1− λdtP (N(t+ dt)−N(t) = 1) = λdt
P (N(t+ dt)−N(t) > 1) = 0
I Le paramètre λ indique le nombre moyen de clients quiarrivent par unité de temps;
I Par exemple, si λ = 10/heure, alors on s’attend à ce qu’il yait 5 clients qui arrivent dans un intervalle de 30 minutes.
A. Blondin Massé (UQAC) 23 mai 2014 31 / 59
Processus de Poisson (2/2)
I Évidemment, le nombre de clients arrivant dans unintervalle de temps donné peut être complètement différentde λ = 10/heure;
I De plus, si on prend un petit intervalle de temps, parexemple 1 seconde, alors la probabilité qu’un client arrivedans cet intervalle est d’environ 10/3600 = 0.00278;
I En d’autres mots,
1. La probabilité qu’un client arrive à un moment donnéne dépend pas de l’arrivée des autres clients;
2. La probabilité qu’un client arrive à un moment donnéne dépend pas du temps en question;
3. Les clients arrivent un seul à la fois.
A. Blondin Massé (UQAC) 23 mai 2014 32 / 59
Distribution de Poisson
I Rappelons qu’une variable aléatoire X suit une loi dePoisson si sa fonction de masse est
f(x) =(λt)x
x!e−λt, x = 0, 1, 2, . . . ,
où λ est une constante;
I Une façon alternative de définir un processus de Poisson estde dire que
1. C’est un processus avec incréments indépendants;2. Le nombre d’événements dans n’importe quel intervalle
de temps de longueur t suit un loi de Poisson demoyenne λt.
A. Blondin Massé (UQAC) 23 mai 2014 33 / 59
Temps entre arrivées des clients
I Rappelons que la distribution exponentielle est une loicontinue dont les fonctions de densité et de répartition sont
f(x) = λe−λx, x ≥ 0
F (x) = 1− e−λx, x ≥ 0.
I En particulier, si X suit une loi exponentielle et que N(t)est un processus de Poisson, alors
P (X ≥ t) = 1− F (t) = e−λt = P (N(t) = 0).
I On en conclut donc que les temps entre les arrivées suiventdes lois exponentielles indépendantes de moyenne 1/λ.
A. Blondin Massé (UQAC) 23 mai 2014 34 / 59
Estimation des paramètres
I En pratique, on ne connaît pas λ et il faut l’estimer;
I Il existe de nombreux tests statistiques et techniquesd’estimation de paramètres pour calculer cette valeur :
I Maximum de vraisemblance;
I Intervalle de confiance;
I Test d’adéquation;
I Test d’indépendance.
I En particulier, on peut vérifier si un modèle par processusde Poisson semble adéquat dans une situation;
I On peut aussi identifier les sous-intervalles pertinents (parexemple, l’avant-midi, λ = 10, l’après-midi, λ = 15).
A. Blondin Massé (UQAC) 23 mai 2014 35 / 59
Table des matières
1. Introduction
2. Mesures
3. Processus de Poisson
4. Simulation
5. SimPy
A. Blondin Massé (UQAC) 23 mai 2014 36 / 59
Simulation de variables aléatoires
Nous avons vu aux cours précédents comment simuler
I Une loi uniforme
I à l’aide d’un générateur pseudo-aléatoire;
I Une loi de Poisson et une loi exponentielle
I à l’aide de la transformation inverse;
I Une loi normale
I à l’aide du théorème de Box-Müller;
A. Blondin Massé (UQAC) 23 mai 2014 37 / 59
Simulation d’un processus de Poisson
I Première méthode :
I On calcule les temps entre les arrivées;
I Pour cela, il suffit de simuler des variablesexponentielles;
I Deuxième méthode :
I On simule d’abord une variable de Poisson sur unintervalle [a, b];
I Puis on simule des variables uniformes autant de foisque la valeur obtenu pour la variable de Poisson;
I Finalement, on trie en ordre croissant les tempsd’arrivée ainsi générés.
A. Blondin Massé (UQAC) 23 mai 2014 38 / 59
Simulation d’un processus de renouvellement
I Une généralisation naturelle d’un processus de Poisson estappelée processus de renouvellement;
I Le temps entre les arrivées est toujours indépendant;
I De plus, le temps entre les arrivées est identiquementdistribué;
I Par contre, les temps d’arrivée ne sont pas indépendants;
I Autrement dit, les incréments ne sont pas indépendants;
I Cela permet d’avoir une distribution autre que ladistribution exponentielle pour les temps entre les arrivées.
A. Blondin Massé (UQAC) 23 mai 2014 39 / 59
Temps d’arrivée dépendants
I On s’intéresse à l’achalandage de voitures sur uneautoroute;
I À une borne donnée, on enregistre le passage des voitures;
I On suppose que les intervalles de temps entre les arrivéessont indépendants;
I Par contre, on remarque qu’il est impossible que deuxvoitures passent au marqueur dans un intervalle plus petitque 1 seconde.
I La distribution des temps entre arrivée Ti est donc uneexponentielle décalée
P (Ti ≤ h) =
{0, si h < a;1− e−λ(th−a), si h ≥ a.
A. Blondin Massé (UQAC) 23 mai 2014 40 / 59
Simulation d’une file d’attente
I Il faut tenir compte
I du temps de service et
I des arrivées des clients.
I Le modèle le plus simple est celui où
I Le temps de service ne dépend pas des temps d’arrivéeni de la longueur de la file;
I Les clients arrivent selon un processus de Poisson.
I Dans ce cas, on parle d’une simulation à événementsdiscrets;
I Un autre type de simulation est la simulation en temps réelou simulation chronologique.
A. Blondin Massé (UQAC) 23 mai 2014 41 / 59
Notation
On introduit la notation suivante :
I A(t) est l’ensemble des clients qui sont arrivés avant t;
I A(t) est l’ensemble des clients qui ne sont pas arrivés avantt;
I D(t) est l’ensemble des clients qui ont quitté le systèmeavant t;
I D(t) est l’ensemble des clients qui n’ont pas quitté lesystème avant t;
I S(n) est le temps de service pour le client n.
A. Blondin Massé (UQAC) 23 mai 2014 42 / 59
Exemple
I Considérons les données suivantes :n A−1(n) S(n)
1 9:05 4 min2 9:08 7 min3 9:12 2 min4 9:20 6 min5 9:25 7 min
I Alors
A(9:15) = {1, 2, 3}A(9:15) = {4, 5}.
A. Blondin Massé (UQAC) 23 mai 2014 43 / 59
Calcul des événements (1/3)
I Tout d’abord, on calcule le moment du prochain événementà partir de t;
I Il y a deux possibilités, (1) une nouvelle arrivée ou (2) undépart du système;
I Le moment du prochain événement est donc
T (t) = min
{minn∈A(t)
A−1(n), minn∈D(t)
D−1s (n)
}.
I Ensuite, on met à jour le système selon l’événement;
A. Blondin Massé (UQAC) 23 mai 2014 44 / 59
Calcul des événements (2/3)
Si le prochain événement est une arrivée, alors
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,
(a) On incrémente Dq(t) de 1;(b) On enregistre le temps de départ du système de ce
client à t+ S(n).
A. Blondin Massé (UQAC) 23 mai 2014 45 / 59
Calcul des événements (3/3)
Si le prochain événement est un départ du système, alors
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,
(a) On incrémente Dq(t) de 1;(b) On choisit le client le plus prioritaire;(c) On enregistre son temps de départ à t+ S(n).
Puis on recalcule T (t).
A. Blondin Massé (UQAC) 23 mai 2014 46 / 59
Exemple
Reprenons l’exemplen A−1(n) S(n)1 9:05 4 min2 9:08 7 min3 9:12 2 min4 9:20 6 min5 9:25 7 min
Alors on obtient les valeurs suivantes :
Temps A(t) D(t) A(t) Dq(t) Ds(t) Événement9:00 ∅ ∅ 0 0 0 Initialisation
9:05 {1} ∅ 1 1 0 Arrivée9:08 {1, 2} ∅ 2 1 0 Arrivée9:09 {1, 2} ∅ 2 2 1 Départ9:12 {1, 2, 3} {1} 3 2 1 Arrivée9:16 {1, 2, 3} {1, 2} 3 3 2 Départ9:18 {1, 2, 3} {1, 2, 3} 3 3 3 Départ9:20 {1, 2, 3, 4} {1, 2, 3} 4 4 3 Arrivée9:25 {1, 2, 3, 4, 5} {1, 2, 3} 5 4 3 Arrivée9:26 {1, 2, 3, 4, 5} {1, 2, 3, 4} 5 5 4 Départ9: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
Exemple
Reprenons l’exemplen A−1(n) S(n)1 9:05 4 min2 9:08 7 min3 9:12 2 min4 9:20 6 min5 9:25 7 min
Alors on obtient les valeurs suivantes :
Temps A(t) D(t) A(t) Dq(t) Ds(t) Événement9:00 ∅ ∅ 0 0 0 Initialisation9:05 {1} ∅ 1 1 0 Arrivée
9:08 {1, 2} ∅ 2 1 0 Arrivée9:09 {1, 2} ∅ 2 2 1 Départ9:12 {1, 2, 3} {1} 3 2 1 Arrivée9:16 {1, 2, 3} {1, 2} 3 3 2 Départ9:18 {1, 2, 3} {1, 2, 3} 3 3 3 Départ9:20 {1, 2, 3, 4} {1, 2, 3} 4 4 3 Arrivée9:25 {1, 2, 3, 4, 5} {1, 2, 3} 5 4 3 Arrivée9:26 {1, 2, 3, 4, 5} {1, 2, 3, 4} 5 5 4 Départ9: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
Exemple
Reprenons l’exemplen A−1(n) S(n)1 9:05 4 min2 9:08 7 min3 9:12 2 min4 9:20 6 min5 9:25 7 min
Alors on obtient les valeurs suivantes :
Temps A(t) D(t) A(t) Dq(t) Ds(t) Événement9:00 ∅ ∅ 0 0 0 Initialisation9:05 {1} ∅ 1 1 0 Arrivée9:08 {1, 2} ∅ 2 1 0 Arrivée
9:09 {1, 2} ∅ 2 2 1 Départ9:12 {1, 2, 3} {1} 3 2 1 Arrivée9:16 {1, 2, 3} {1, 2} 3 3 2 Départ9:18 {1, 2, 3} {1, 2, 3} 3 3 3 Départ9:20 {1, 2, 3, 4} {1, 2, 3} 4 4 3 Arrivée9:25 {1, 2, 3, 4, 5} {1, 2, 3} 5 4 3 Arrivée9:26 {1, 2, 3, 4, 5} {1, 2, 3, 4} 5 5 4 Départ9: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
Exemple
Reprenons l’exemplen A−1(n) S(n)1 9:05 4 min2 9:08 7 min3 9:12 2 min4 9:20 6 min5 9:25 7 min
Alors on obtient les valeurs suivantes :
Temps A(t) D(t) A(t) Dq(t) Ds(t) Événement9:00 ∅ ∅ 0 0 0 Initialisation9:05 {1} ∅ 1 1 0 Arrivée9:08 {1, 2} ∅ 2 1 0 Arrivée9:09 {1, 2} ∅ 2 2 1 Départ
9:12 {1, 2, 3} {1} 3 2 1 Arrivée9:16 {1, 2, 3} {1, 2} 3 3 2 Départ9:18 {1, 2, 3} {1, 2, 3} 3 3 3 Départ9:20 {1, 2, 3, 4} {1, 2, 3} 4 4 3 Arrivée9:25 {1, 2, 3, 4, 5} {1, 2, 3} 5 4 3 Arrivée9:26 {1, 2, 3, 4, 5} {1, 2, 3, 4} 5 5 4 Départ9: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
Exemple
Reprenons l’exemplen A−1(n) S(n)1 9:05 4 min2 9:08 7 min3 9:12 2 min4 9:20 6 min5 9:25 7 min
Alors on obtient les valeurs suivantes :
Temps A(t) D(t) A(t) Dq(t) Ds(t) Événement9:00 ∅ ∅ 0 0 0 Initialisation9:05 {1} ∅ 1 1 0 Arrivée9:08 {1, 2} ∅ 2 1 0 Arrivée9:09 {1, 2} ∅ 2 2 1 Départ9:12 {1, 2, 3} {1} 3 2 1 Arrivée
9:16 {1, 2, 3} {1, 2} 3 3 2 Départ9:18 {1, 2, 3} {1, 2, 3} 3 3 3 Départ9:20 {1, 2, 3, 4} {1, 2, 3} 4 4 3 Arrivée9:25 {1, 2, 3, 4, 5} {1, 2, 3} 5 4 3 Arrivée9:26 {1, 2, 3, 4, 5} {1, 2, 3, 4} 5 5 4 Départ9: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
Exemple
Reprenons l’exemplen A−1(n) S(n)1 9:05 4 min2 9:08 7 min3 9:12 2 min4 9:20 6 min5 9:25 7 min
Alors on obtient les valeurs suivantes :
Temps A(t) D(t) A(t) Dq(t) Ds(t) Événement9:00 ∅ ∅ 0 0 0 Initialisation9:05 {1} ∅ 1 1 0 Arrivée9:08 {1, 2} ∅ 2 1 0 Arrivée9:09 {1, 2} ∅ 2 2 1 Départ9:12 {1, 2, 3} {1} 3 2 1 Arrivée9:16 {1, 2, 3} {1, 2} 3 3 2 Départ
9:18 {1, 2, 3} {1, 2, 3} 3 3 3 Départ9:20 {1, 2, 3, 4} {1, 2, 3} 4 4 3 Arrivée9:25 {1, 2, 3, 4, 5} {1, 2, 3} 5 4 3 Arrivée9:26 {1, 2, 3, 4, 5} {1, 2, 3, 4} 5 5 4 Départ9: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
Exemple
Reprenons l’exemplen A−1(n) S(n)1 9:05 4 min2 9:08 7 min3 9:12 2 min4 9:20 6 min5 9:25 7 min
Alors on obtient les valeurs suivantes :
Temps A(t) D(t) A(t) Dq(t) Ds(t) Événement9:00 ∅ ∅ 0 0 0 Initialisation9:05 {1} ∅ 1 1 0 Arrivée9:08 {1, 2} ∅ 2 1 0 Arrivée9:09 {1, 2} ∅ 2 2 1 Départ9:12 {1, 2, 3} {1} 3 2 1 Arrivée9:16 {1, 2, 3} {1, 2} 3 3 2 Départ9: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ée9:25 {1, 2, 3, 4, 5} {1, 2, 3} 5 4 3 Arrivée9:26 {1, 2, 3, 4, 5} {1, 2, 3, 4} 5 5 4 Départ9: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
Exemple
Reprenons l’exemplen A−1(n) S(n)1 9:05 4 min2 9:08 7 min3 9:12 2 min4 9:20 6 min5 9:25 7 min
Alors on obtient les valeurs suivantes :
Temps A(t) D(t) A(t) Dq(t) Ds(t) Événement9:00 ∅ ∅ 0 0 0 Initialisation9:05 {1} ∅ 1 1 0 Arrivée9:08 {1, 2} ∅ 2 1 0 Arrivée9:09 {1, 2} ∅ 2 2 1 Départ9:12 {1, 2, 3} {1} 3 2 1 Arrivée9:16 {1, 2, 3} {1, 2} 3 3 2 Départ9:18 {1, 2, 3} {1, 2, 3} 3 3 3 Départ9: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ée9:26 {1, 2, 3, 4, 5} {1, 2, 3, 4} 5 5 4 Départ9: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
Exemple
Reprenons l’exemplen A−1(n) S(n)1 9:05 4 min2 9:08 7 min3 9:12 2 min4 9:20 6 min5 9:25 7 min
Alors on obtient les valeurs suivantes :
Temps A(t) D(t) A(t) Dq(t) Ds(t) Événement9:00 ∅ ∅ 0 0 0 Initialisation9:05 {1} ∅ 1 1 0 Arrivée9:08 {1, 2} ∅ 2 1 0 Arrivée9:09 {1, 2} ∅ 2 2 1 Départ9:12 {1, 2, 3} {1} 3 2 1 Arrivée9:16 {1, 2, 3} {1, 2} 3 3 2 Départ9:18 {1, 2, 3} {1, 2, 3} 3 3 3 Départ9:20 {1, 2, 3, 4} {1, 2, 3} 4 4 3 Arrivée9: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épart9: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
Exemple
Reprenons l’exemplen A−1(n) S(n)1 9:05 4 min2 9:08 7 min3 9:12 2 min4 9:20 6 min5 9:25 7 min
Alors on obtient les valeurs suivantes :
Temps A(t) D(t) A(t) Dq(t) Ds(t) Événement9:00 ∅ ∅ 0 0 0 Initialisation9:05 {1} ∅ 1 1 0 Arrivée9:08 {1, 2} ∅ 2 1 0 Arrivée9:09 {1, 2} ∅ 2 2 1 Départ9:12 {1, 2, 3} {1} 3 2 1 Arrivée9:16 {1, 2, 3} {1, 2} 3 3 2 Départ9:18 {1, 2, 3} {1, 2, 3} 3 3 3 Départ9:20 {1, 2, 3, 4} {1, 2, 3} 4 4 3 Arrivée9:25 {1, 2, 3, 4, 5} {1, 2, 3} 5 4 3 Arrivée9: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
Exemple
Reprenons l’exemplen A−1(n) S(n)1 9:05 4 min2 9:08 7 min3 9:12 2 min4 9:20 6 min5 9:25 7 min
Alors on obtient les valeurs suivantes :
Temps A(t) D(t) A(t) Dq(t) Ds(t) Événement9:00 ∅ ∅ 0 0 0 Initialisation9:05 {1} ∅ 1 1 0 Arrivée9:08 {1, 2} ∅ 2 1 0 Arrivée9:09 {1, 2} ∅ 2 2 1 Départ9:12 {1, 2, 3} {1} 3 2 1 Arrivée9:16 {1, 2, 3} {1, 2} 3 3 2 Départ9:18 {1, 2, 3} {1, 2, 3} 3 3 3 Départ9:20 {1, 2, 3, 4} {1, 2, 3} 4 4 3 Arrivée9:25 {1, 2, 3, 4, 5} {1, 2, 3} 5 4 3 Arrivée9:26 {1, 2, 3, 4, 5} {1, 2, 3, 4} 5 5 4 Départ9: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
I Souvent, les temps d’arrivée sont modélisés par desprocessus de Poisson;
I En revanche, les temps de service varient énormément :
I Temps constant;
I Loi exponentielle;
I Loi normale;
I Loi gamma, etc.
I Souvent, le temps de service peut être prédit si on connaîtle type de client;
I Par exemple, au supermarché, le temps dépend du nombred’articles.
A. Blondin Massé (UQAC) 23 mai 2014 48 / 59
Notation de KendallLa notation de Kendall est utilisée pour décrire les paramètresd’une file d’attente :
A/S/c/K/N/D
où
I A est la distribution de probabilité des temps entre lesarrivé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
I Pour les temps entre les arrivées et les temps de service :
I M : Markov, pour un processus de Poisson;
I MMPP : Markov modulated Poisson process, pour lesarrivées en groupes;
I D : déterministe;
I G : générale.
I Le nombre de serveurs : 1 ou c;
I La capacité de la file : finie ou infinie;
I La taille de la population : finie ou infinie;
I Discipline : FIFO, LIFO, avec priorité, aléatoirement.
A. Blondin Massé (UQAC) 23 mai 2014 50 / 59
Solutions analytiques
Des solutions analytiques (complètes ou partielles) sont connuespour plusieurs types de files d’attente
I M/M/1;
I M/M/c;
I M/M/∞;
I M/M/c/K;
I M/G/1/∞
I etc.
A. Blondin Massé (UQAC) 23 mai 2014 51 / 59
Table des matières
1. Introduction
2. Mesures
3. Processus de Poisson
4. Simulation
5. SimPy
A. Blondin Massé (UQAC) 23 mai 2014 52 / 59
SimPy
I SimPy est un ensemble de fonctions et de servicespermettant de simuler des événements discrets;
I Il est basé sur le langage Python;
I Les générateurs Python permettent de modéliser lesprocessus ou les agents du système;
I Les simulations peuvent être exécutées en temps réel oumanuellement;
I Pas approprié pour les simulations continues.
A. Blondin Massé (UQAC) 23 mai 2014 53 / 59
Simulation de chronomètres
import simpy
# A Python generator simulating a clockdef clock(env, name, tick):
while True:print(name, "{0:.2f}".format(env.now))yield env.timeout(tick)
# Setting up the environmentenv = simpy.Environment()env.process(clock(env, ’fast’, 0.4)) # A fast clockenv.process(clock(env, ’slow’, 1)) # A slow clock
# Running the simulationenv.run(until=10)
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’)
A. Blondin Massé (UQAC) 23 mai 2014 54 / 59
Simulation de chronomètres
import simpy
# A Python generator simulating a clockdef clock(env, name, tick):
while True:print(name, "{0:.2f}".format(env.now))yield env.timeout(tick)
# Setting up the environmentenv = simpy.Environment()env.process(clock(env, ’fast’, 0.4)) # A fast clockenv.process(clock(env, ’slow’, 1)) # A slow clock
# Running the simulationenv.run(until=10)
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’)
A. Blondin Massé (UQAC) 23 mai 2014 54 / 59
Chaîne de Markov
I On peut facilement modéliser des chaînes de Markov àl’aide de SimPy;
I Essayons ensemble de modéliser l’exemple de la météo :
Soleil Pluie
Neige
1/2
1/4
1/2
1/4
1/4
1/2
1/2
1/4
A. Blondin Massé (UQAC) 23 mai 2014 55 / 59
File d’attente (1/3)
from simpy import Environment, Resourcefrom simpy.rt import RealtimeEnvironment
# In real-time?realtime = True
# Deterministic data simulationclients = [(5, 4), (8, 7), (12, 2), (20, 6), (25, 7)]
# Customersdef customer(environment, name, server, arrival_time, service_time,
waiting_times):# Simulating arrival timeyield environment.timeout(arrival_time)
# Requesting serverprint(’%s arriving at %d’ % (name, environment.now))with server.request() as req:
yield req
# Updating waiting time logwaiting_times[name] = environment.now - arrival_time
# Receiving serviceprint(’%s receiving service at %s’ % (name, environment.now))yield environment.timeout(service_time)print(’%s leaving the server at %s’ % (name, environment.now))
A. Blondin Massé (UQAC) 23 mai 2014 56 / 59
File d’attente (2/3)
# Setting up the environmentif realtime:
environment = RealtimeEnvironment(factor=0.5)else:
environment = Environment()server = Resource(environment, capacity=1)waiting_times = {}for (i, (arrival_time, service_time)) in enumerate(clients):
environment.process(customer(environment, ’Customer %d’ % (i + 1),server, arrival_time, service_time,
waiting_times))
# Running the simulationprint(’Simulation’)print(’----------’)environment.run()print
# Display waiting timesprint(’Waiting times’)print(’-------------’)plural = lambda v: ’’ if v in (0,1) else ’s’for (customer, waiting_time) in sorted(waiting_times.items()):
print(’%s has waited %s minute%s’ % (customer, waiting_time, plural(waiting_time)))
A. Blondin Massé (UQAC) 23 mai 2014 57 / 59
File d’attente (3/3)
Résultat :Simulation----------Customer 1 arriving at 5Customer 1 receiving service at 5Customer 2 arriving at 8Customer 1 leaving the server at 9Customer 2 receiving service at 9Customer 3 arriving at 12Customer 2 leaving the server at 16Customer 3 receiving service at 16Customer 3 leaving the server at 18Customer 4 arriving at 20Customer 4 receiving service at 20Customer 5 arriving at 25Customer 4 leaving the server at 26Customer 5 receiving service at 26Customer 5 leaving the server at 33
Waiting times-------------Customer 1 has waited 0 minuteCustomer 2 has waited 1 minuteCustomer 3 has waited 4 minutesCustomer 4 has waited 0 minuteCustomer 5 has waited 1 minute
n A−1(n) S(n)
1 9:05 4 min2 9:08 7 min3 9:12 2 min4 9:20 6 min5 9:25 7 min
A. Blondin Massé (UQAC) 23 mai 2014 58 / 59
Deux exemples
I Simulation d’une banque :
I On illustre le cas où certains clients renoncent (enanglais « reneging »);
I Voir fichier bank.py.
I Simulation d’une station-service :
I Dans ce cas, il y a plusieurs serveurs;
I Lorsqu’il n’y a plus d’essence dans les pompes, onremplit le réservoir commun;
I Voir fichier gas_station.py.
A. Blondin Massé (UQAC) 23 mai 2014 59 / 59