Simulation de Files D'attente
Simulation de Files D'attente
Simulation de Files D'attente
On souhaite simuler à l’aide d’un programme C le comportement et mesurer les performances d’un
système à files d’attente (type caisses de supermarché ou péage d’autoroute). On nommera les entités qui
transitent dans ce système les clients. L’objectif est d’optimiser ou de dimensionner le système étudié.
Les clients arrivent à l'entrée du système à une date d’arrivée. Ils sont assignés la file d’attente de plus
petite taille. Chaque client est traité dans tt unités de temps (paramètre du système). Entre la fin du
traitement d'un client et le début du traitement du client suivant, il y a un délai ta unités de temps. La
simulation va être gérée à l’aide d’un échéancier (planning), qui est une liste d’événements à traiter
chacun à une date (ou instant) donnée. Les événements peuvent être de trois types : arrivée d'un client,
début de traitement d'un client et fin de traitement d'un client (détaillés ci-dessous). Tous les clients
passent par les trois étapes : ils arrivent et ils sont assignés à une fille la plus courte (un événement
arrivée d'un client est inséré dans l' échéancier), son traitement commence (un événement début de
traitement d'un client est inséré dans l' échéancier) et après le temps de traitement tt il est prêt un
événement fin de traitement d'un client est inséré dans l' échéancier).
Basé sur un liste des arrivés des clients, vous devrez générer l'échéancier et l'afficher à la fin de
l’exécution, aussi que les mesures de performance suivantes :
Taille maximum des files d’attente
Taille moyenne des files d’attente
Temps de réponse moyen (temps de traitement moyen des clients). Le temps de réponse pour un
client est la différence entre son arrivé et la fin de traitement.
Débit moyen (nombre moyen de clients par unité de temps)
0 3 0 0 4 ... 11 0
1 T1 1 File d'attente n° 0 1
NULL
2 T2 2 2
1/4
Gestion de la simulation – les événements
Soit d la date courante.
1. Arrivée d’un nouveau client (événement de type A)
Créer un nouveau client et l’ajouter dans la file d’attente de plus petite taille. S'il y a 2 filles avec la
même taille (la plus petites), ajoutez-le à la fille avec le numéro d'ordre le plus petit.
Ajouter dans l’échéancier un événement « Arrivée d’un nouveau client » à la date d et la fille
assigné.
Si la file était vide avant l’arrivée du nouveau client, celui-ci est servi de suite : ajouter dans
l’échéancier un événement début de traitement d'un client à la date d.
Échéancier : Liste chaînée d’événements triés par ordre croissant de date d’exécution. La liste chaînée
d’événements doit être trié par:
1. ordre croissant de date d’exécution
2. pour des dates égales, par ordre croissante du code d'événement (A < D < T)
3. pour dates égales et codes égales, par numéro d'ordre de la file d'attente.
Echéancier
Entrés et sorties
Toutes les paramètres sont lus à partir d'un fichier texte du format suivant : première ligne contient N (le
nombre de filles), tt (temps de traitement) et ta (temps d'attente entre clients), séparés par un espace
(blanc). Les lignes suivantes contient les dates d'arrivés des client, une par ligne. Le nombre des clients
est variable, vous devrez lire jusqu'à la fin du fichier. Le fichier d'entré s’appelle « input.txt » et se trouve
dans le même dossier que l’exécutable de votre projet.
2/4
N tt ta
date_arrivé_client_0
date_arrivé_client_1
date_arrivé_client_2
date_arrivé_client_3
date_arrivé_client_4
...
...
La sortie de votre logiciel est un fichier texte « output.txt » (vous devrez le créer dans le même dossier
que l’exécutable). Le fichier contient (i) sur la première ligne les mesures de performance (taille
maximum des files d’attente, taille moyenne des files d’attente, temps de réponse moyen, débit moyen)
séparées par des espaces et avec un précision de 2 décimales (arrondi au nombre le plus proche, affichez
avec le format “%.2f”) et (ii) sur les ligne suivantes l'échéancier, avec un événement par ligne. Un
événement est décrit par son type, date et fille séparés par un espace (blanc).
taille_max taille_moy temps_rep_moy débit
type1 date1 fille1
type1 date1 fille1
type1 date1 fille1
...
...
output.txt
2.00 1.82 6.67 0.27
A 0 0
A 0 1
D 0 0
D 0 1
A 1 0
T 4 0
T 4 1
D 6 0
T 10 0
File \ Temps 0 1 2 3 4 5 6 7 8 9 10
0 1 1,3 1,3 1,3 1,3 3 3 3 3 3 3 Période de repos
1 2 2 2 2 2 Traitement fini
Taille filles : 2 3 3 3 3 1 1 1 1 1 1 1,82
Ci-dessus il y a le tableau avec les 2 filles d'attente. Les 3 clients sont marques avec les numéros 1, 2 et 3.
Le format 1 représente le client en attente, avant le début du traitement, le format 1 représente le client en
train d'être traité.
Taille maximum des files d’attente : 2 pour la fille 0 entre les moments 1 et 4 :
Taille moyenne des files d’attente : 1,82 Taille filles donne le nombre des clients en train d'attendre
ou être traités à chaque moment. ATTENTION : ils sont 11 moments de temps (de 0 à 10) ;
Temps de réponse moyen (temps de traitement moyen des clients). 20 / 3 = 6,67 si on compte le
nombre d'apparitions pour chaque client : client 1 : 5 fois, client 2 : 5 fois, client 3: 10 fois.
Débit moyen (nombre moyen de clients par unité de temps) 0.27 = 3 clients en 11 unités de temps.
3/4
Notes, date limite et informations.
Rendu du projet : le 06/05/2013 à 8h.
Le rapport et le logiciel doivent être envoyé en version électronique par le mél du responsable de
cours. L’émail doit avoir comme sujet le tag [ProjetC] suivi du nom et prénom de l’étudiant.
Exemple de titre de mél : [ProjetC] RIZOIU Marian-Andrei. N’oubliez pas de vous mettre
vous-même en copie du mél, pour pouvoir prouver (si besoin) que l’émail a été transmis dans les
délais.
Attention : chaque jour de retard entraîne une pénalité de 1 point sur la note finale. Les retards sont
calculés par jour entier. Exemple de calcul du retard : un mél envoyé le 6 mai à 10h (2 heures de
retard) entraîne déjà une pénalité d’un point.
Toutes correspondances se feront à l’adresse mél suivante : Marian-Andrei.Rizoiu@univ-lyon2.fr.
Attention : respecter bien le format d'entré et de sortie. Si votre logiciel ne respecte pas les
formats, la note de l'évaluation automatique (voir si-dessous) sera 0 (zéro).
Vous devrez fournir un makefile pour compiler votre logiciel. Dans l'évaluation automatique, votre
logiciel sera compilé avec la commande make et exécuté avec make run. L'absence de makefile
(ou erreur de compilation ou d’exécution) entraîne une note de zéro à l'évaluation automatique.
Notation :
10 points évaluation automatique. 10 jeux de test (fichiers d'entrée) seront fournis à votre logiciel
et votre sortie sera comparé avec la sortie correcte. Si les deux sont identiques, un point vous sera
accordé. Sinon, zéro.
10 points évaluation manuelle du code. Le code doit être correctement présenté (indentation),
clair (utilisation de norme précise pour les noms) et commenté (en lisant les commentaires, on doit
pouvoir comprendre le programme). L’ensemble de ces fichiers est à fournir sous la forme d’une
archive (.zip ou .tar.gz).
4/4