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

80
Chapitre 4 : Files d’attente Alexandre Blondin Massé Laboratoire d’informatique formelle Université du Québec à Chicoutimi 23 mai 2014 Cours 8INF802 Département d’informatique et mathématique A. Blondin Massé (UQAC) 23 mai 2014 1 / 59

Upload: others

Post on 08-Aug-2020

5 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 2: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 3: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 4: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 5: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 6: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 7: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 8: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 9: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 10: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 11: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 12: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 13: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 14: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 15: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 16: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 17: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 18: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 19: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 20: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 21: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 22: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 23: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 24: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 25: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 26: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 27: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 28: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 29: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 30: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 31: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 32: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 33: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 34: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 35: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 36: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 37: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 38: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 39: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 40: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 41: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 42: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 43: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 44: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 45: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 46: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 47: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 48: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 49: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 50: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 51: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 52: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 53: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 54: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 55: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 56: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 57: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 58: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 59: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 60: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 61: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 62: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 63: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 64: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 65: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 66: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 67: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 68: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 69: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 70: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 71: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 72: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 73: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 74: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 75: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 76: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 77: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 78: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 79: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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

Page 80: Chapitre 4 : Files d'attenteblondin/files/8inf802/ete2014/files... · 2020-07-19 · Tabledesmatières 1. Introduction 2. Mesures 3. ProcessusdePoisson 4. Simulation 5. SimPy A. Blondin

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