chapitre 4 : files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 ·...

Post on 08-Aug-2020

5 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

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

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

top related