Вы находитесь на странице: 1из 4

Département Informatique et Statistique, Université Lumière Lyon 2

L3 IDS – Année 2012-2013


Projet C : Simulation de files d’attente
Marian-Andrei Rizoiu (http://eric.univ-lyon2.fr/~arizoiu), 17/04/13

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)

Structures de données modélisant les files d’attente

Client : Enregistrement comprenant les champs suivants


 Date d’arrivée dans le système
 Pointeur vers le client suivant dans une file d’attente

Liste des files d’attente :


Soit N le nombre de files d’attente, qui est un paramètre du programme.
 Tableau de taille N d’entiers représentant la taille des files d’attente
 Tableau de taille N de pointeurs vers la tête des files d’attente (listes chaînées)
 Tableau de taille N de pointeurs vers la queue des files d’attente

Client Client Client


Taille Tête Dtarr Suiv Dtarr Suiv Dtarr Suiv Queue

0 3 0 0 4 ... 11 0

1 T1 1 File d'attente n° 0 1
NULL

2 T2 2 2

... ... ...

N-1 T(N-1) N-1 N-1

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.

2. Début de traitement d'un client (événement de type D)


 Ajouter dans l’échéancier un événement « Début de traitement d'un client » à la date d et la fille
assigné.
 Pensez à générer un événement « Fin de traitement d’un client » à la date d+tt-1. De d à
d+tt-1 (inclusive) sont d unités de temps.

3. Fin de traitement d’un client (événement de type T)


 Supprimer le client de sa file d’attente.
 Si la file d’attente n’est pas vide, le traitement du client suivant (un événement « Début de
traitement d'un client ») commence à la date d+ta+1. La liste d'attente est en période de repos
pendent ta unités de temps.

Structure de données pour la gestion de la simulation

Événement : Enregistrement comprenant les champs suivants


 Type d’événement : A, D ou T
 Date d’exécution
 File d’attente concernée
 Pointeur vers l’événement suivant dans l’échéancier

É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.

Evénement Evénement Evénement


Type Date File Suiv Type Date File Suiv Type Date File Suiv

Tête A 0 0 T 5 0 ... T 10 1 NULL

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
...
...

Exemple d’exécution - entrés et sorties


input.txt
2 5 1
0
0
1

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

Détails de calcul de mesures :

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

Вам также может понравиться