Vous êtes sur la page 1sur 27

Chapitre 3

La simulation des systèmes discrets


La simulation des systèmes discrets

 Elle s'applique à ma classe des systèmes discrets,


caractérisés par la présence des événements
aléatoires ou liés à des variables stochastiques.
 Trois stratégies de simulation discrète peuvent être
utilisées:
❑ Simulation des événements (ordonnancement des
événements).
❑ Simulation des activités (balayage des activités)
❑ Simulation des processus (interaction des
processus).
Simulation des événements
 Le système est étudié à des instants discrets, non
fixes; c'est-à-dire lorsque des événements
surviennent et altèrent l'état du système.
 Ces changements de l'état du système peuvent
générer à leur tour de nouveaux événements et
ainsi de suite.
 Le système de files d'attente est un modèle type de
la Simulation des événements
Simulation des événements
 Dans l'exemple de la cabine téléphonique , le parcours
de l'usager peut être schématisé comme suit:
Exemple d'événements:
 Arrivée d'un client.
 Début de service.
 Départ d’un client
Le temps de simulation
 Utilisation d’une horloge de simulation.
 Unité de temps est choisi en fonction de besoin
 L’horloge peu avancer par:
➢ bonds réguliers
➢ Bonds irréguliers (simulation discrète)
Les arrivées dans le système
 Distribution de probabilités déterminée pour les
arrivées et la durée de service
 Elle doit correspondre a la nature réelle de
phénomène.
 Exemple:
 dans une banque: exponentielle
Analyse et description de l’algorithme de
simulation
 analyse des composante:
 Les entités du système et leurs attributs
 EVENT_list
Analyse et description de l’algorithme de
simulation
Algorithme
Début
Initialisation ()
Tantque (la simulation continue) faire
Extraire un événement de l’Event_list;
Traiter l’événement
Effectuer des statistiques
Fin tant que
Imprimer les résultats ()
Fin
Analyse et description de l’algorithme de
simulation
A. Terminaison: Le programme de simulation s’arrête:
✓ Lorsque un nombre spécifié est servi
✓ Lorsqu’une certaine durée s’écoule.
Analyse et description de l’algorithme de
simulation
B. Classification des événements:
➢ Événement primaire
➢ Événement secondaire
➢ Événement secondaire conditionnel
➢ Événement secondaire inconditionnel
Analyse et description de l’algorithme de simulation
C. Traitement de l’évènement
➢ Événement primaire (EP)
1. Avancer l’horloge de simulation jusqu’au temps de réalisation
de cet événement.
2. Déterminer le temps de réalisation du prochain EP et l’insérer
dans EVENT_list
3. Changer l’état du système conformément à cet événement
4. Tester s’il y a un Événement secondaire conditionnel qui se
réalise et l’insérer dans l’Event_list et le traiter dans
l’immédiat.
Analyse et description de l’algorithme de simulation
C. Traitement de l’évènement
➢ Événement secondaire (ES)
1. Avancer l’horloge de simulation jusqu’au temps de réalisation
de cet événement.
2. Changer l’état du système conformément à cet événement
3. Placer tous les Événement s secondaire inconditionnel qui
dans l’Event_list.
4. Tester s’il y a un Événement secondaire conditionnel qui se
réalise et l’insérer dans l’Event_list et le traiter dans
l’immédiat.
Analyse et description de l’algorithme de simulation
D. Statistique
➢ A chaque traitement d’Événement on peut calculer
certaine statistique, exemples:
1. Temps d’occupation du serveur
2. Nombre de clients servis sans faire la queue
3. Nombre maximum de clients dans la FA
4. ….
Variantes des algorithmes de simulation
des événements
 Simulation orientée serveur
 Simulation orientée client
 Simulation avec plusieurs serveur en parallèle
Simulation orientée serveur
 On s’intéresse pas au clients de façon individuelle,
mais la fille d’attente entière sera considérée
comme une entité.
 L’étude est concentrer sur le serveur.
Variantes de l’algorithme de simulation
des évènements
 Il existe trois variantes:
➢Simulation orientée serveur
➢Simulation orientée client
➢Simulation avec plusieurs serveurs
Simulation orientée serveur

• On s’intéresse pas au client d’une façon individuelle


 La FA est considérée comme entité
 L’étude se concentre sur le serveur
 Statistiques:
 Taille de la FA (q)
 Temps d’occupation du serveur.
 Temps d’inoccupation du serveur
…
Simulation orientée serveur

• Lorsqu’un client arrive, il se fait servir immédiatement


si la file d’attente est vide « et le serveur est inoccupé »
si non il entre en file d’attente selon la discipline
suggérée.
• Lorsque le serveur finit de servir un client, ce dernier
quitte le système, et un autre client vient se faire servir
s’il en reste en file d’attente, si non le serveur devient
inoccupé.
Simulation orientée serveur

 Description des entités :

Entité
Queue q: entier; /* taille de la file d’attente*/
/*nombre de clients en attente*

Serveur Serveur_libre: logique /*état du serveur*/


Tinacet: reel; /* temps d’inactivité du
serveur*/
Simulation orientée serveur

 Description des événements du système:

Evènement Type Attribut Condition

Arrivée Primaire Tarr: réel /

Début service Secondaire Tdeb_serv: reel Serveur_libre


conditionnel et q>0

Départ Secondaire Tdep:réel /


inconditionnel
Simulation orientée serveur
 Structure de données:
 Event_list: liste d’enregistrements composés de:
 Event_type {Arrivé, début,_service, départ}
 Tevent:réel
Simulation orientée serveur
 Algorithme:
Départ
| Initialisation ();
| Tantque Nclient<Nmax Faire
| | extraire le premier évènement l’Event_liste;
| | selon (event_type) Faire
| | | arrivée: arriver();
| | |début_service: débuter_service();
| | |départ: partir();
| | |fin cas
| | fin tantque
| Imprimer_résultat();
FIN
Simulation orientée serveur
 Initialisation:
Départ
| Initialisation (arrivée, 0) dans l’Event_list; /*mise en place du
premier évènement primaire */
|serveur_libre vrai;
| t 0; /*inisialisation de l’horloge de simulation*/
|q0;/*nombre de client en attente */
|Nmax /*nombre maximum de clients traiter*/
|qmax 0;
| Nclient0; /*compteur des clients déjà servis*/
| Totinact0; /*temps total d’inactivité*/
|
FIN
Simulation orientée serveur
 Procedure Arriver()
Départ
|
| t Tevent; /*avancer l’horloge de simulation*/
|tarrt+temps _inter_arrivées;
|inserer (arrivée, tarr) dans l’event_list;
|q q+1;
| si q>qmax alors
|qmax  q
finsi
| si serveur_libre alors
|inserer (début_service, t) dans l’évent_liste
| finsi
FIN
Simulation orientée serveur
 Procédure Debuter_service()
Debut
| t Tevent; /*avancer l’horloge de simulation*/
|serveur_libre faux;
|qq-1;
|Tdept+estimation du temps de service;
|inserer(Départ, Tdep) dans l’évent_liste
| si (T-Tinact) <>0alors
| TotinactTotinact+(t-Tinact);
|finsi
FIN
Simulation orientée serveur
 Procedure Partir()
Debut
| t Tevent; /*avancer l’horloge de simulation*/
|serveur_libre vrai;
|tinactt;
|nclientnclient+1;
| si q<>0 alors
|inserer (début_service, t) dans l’évent_liste
|finsi
FIN

Vous aimerez peut-être aussi