Chapitre IV Développement du modèle. Chapitre IV - Développement du modèle2 INTRODUCTION...
-
Upload
heloise-chapelle -
Category
Documents
-
view
110 -
download
3
Transcript of Chapitre IV Développement du modèle. Chapitre IV - Développement du modèle2 INTRODUCTION...
Chapitre IVChapitre IV
Développement du modèle
Chapitre IV - Développement du modèle
2
INTRODUCTIONINTRODUCTIONSTRUCTURES DE DONNÉES & IMPLANTATION
Dans un programme de simulation, beaucoup de calculs sont dédiés à la gestion desévénements:
- identification du prochain événement à survenir- cédule des événements futurs.
Peu de calculs sont dédiés pour mettre à jour les variables d’état et l’horloge.
Exemple: Simulation du système à temps partagé.
En plaçant dans une liste les caractéristiques de chaque port, pour déterminer leprochain port à être libéré, il faut parcourir cette liste complètement.
Chapitre IV - Développement du modèle
3
INTRODUCTIONINTRODUCTIONA) Progression du temps dans un simulateur1) La variable TEMPS est incrémentée d’une valeur fixe (DELTA) à chaque itération- À chaque itération, on doit vérifier si un événement arrive à cet instant.
- Cette approche a plusieurs inconvénients:Dans la plupart des cas, TEMPS sera remplacé par TEMPS + DELTA sansqu’il y ait aucun événement arrivant dans l’intervalle (Temps, Temps + Delta)La recherche d’un événement dans cet intervalle est une perte de temps.
Il peut y avoir des pertes de précision si l’on astreint les temps d’occurrenced’événements être des facteurs de DELTA.
DELTA on résoud le 1e problème au dépens de la précision.DELTA la précision augmente mais le # d’itérations augmente
entraînant des calculs supplémentaires.
Chapitre IV - Développement du modèle
4
INTRODUCTIONINTRODUCTION2) Une autre approche pour mettre à jour l’horloge est d’examiner l’ensemble des événements à venir et de considérer le temps d’occurrence du prochain événement.
Avec cette approche, les 2 problèmes précédents sont résolus.
programmation légèrement plus difficileB) Gestion des événements: listes chaînées ordonnées selon les temps
d’occurrence des événements.
Exemple: SIMULATEUR D’UN SYSTÈME À TEMPS PARTAGÉ (lorsque k devient élevé)
En général, - # d’événements varie continuellement- # d’événements peut croître indéfiniment,- accès à un événement dont le temps d’occurrence est le plus proche à venir.
Chapitre IV - Développement du modèle
5
INTRODUCTIONINTRODUCTIONC) Arrivée des clients: file d’attente
Pour simuler un ensemble d’usagers en attente d’une ressource, on a besoin deconserver de l’information pour chaque client qui arrive:
instant d’arrivée d’un client, sa priorité dans la file.
Structures de données file avec priorités
D) Gestion de la mémoire
ALLOCATION DYNAMIQUE DE LA MÉMOIRE
LIBÉRATION DE LA MÉMOIRE APRÈS USAGE
Chapitre IV - Développement du modèle
6
SIMC++SIMC++
PROGICIEL DE SIMULATION DE SY STÈMESSTOCHASTIQUES À ÉVÉNEMENTS DISCRETS,
AVEC UNE VISION PAR ÉVÉNEMENTS,DÉVELOPPÉ EN C++
Chapitre IV - Développement du modèle
7
Monceau
File
Objet de simulation
Type d’événement
Ensemble des typesd’événements
Entité RessourceTravail
File d’attente
Simulateur
Programme d’application
Loi de probabilité
SIMC++
Chapitre IV - Développement du modèle
8
Loi de probabilité
SIMC++
Définition d’une nouvelle loi
Fixer les paramètres de cette loi
Générer une valeur pseudo-aléatoire seloncette loi
UniformeExponentielle
Weibull
Exacte
Un ou deux paramètres
Chapitre IV - Développement du modèle
9
Monceau
File
Objet de simulation
Type d’événement
Ensemble des typesd’événements
Entité RessourceTravail
File d’attente
Simulateur
Programme d’application
Loi de probabilité
SIMC++
Chapitre IV - Développement du modèle
10
SIMC++
Création d’une nouvelle file où chaquesommet renfermera l’adresse d’un élémentquelconque dont le type est une classedérivée de la classe vide « element »
Insérer ou enlever un sommet de la file
Test si la file est vide ou pleine
File
File d’entités
Chapitre IV - Développement du modèle
11
Monceau
File
Objet de simulation
Type d’événement
Ensemble des typesd’événements
Entité RessourceTravail
File d’attente
Simulateur
Programme d’application
Loi de probabilité
SIMC++
Chapitre IV - Développement du modèle
12
SIMC++
Création d’une nouvelle entité
Processus d’arrivée
Processus de mortalité
bateau
Entité
Loi de probabilité
Définition du nombre d’unités constituantl’entité
Chapitre IV - Développement du modèle
13
Monceau
File
Objet de simulation
Type d’événement
Ensemble des typesd’événements
Entité RessourceTravail
File d’attente
Simulateur
Programme d’application
Loi de probabilité
SIMC++
Chapitre IV - Développement du modèle
14
SIMC++
Création d’une nouvelle activité à effectuer
Durée du travail
remplissage d’un panier d’épicerie
Loi de probabilité
Aucun délai pour débuter cette activité(pas de file d’attente)Travail
Chapitre IV - Développement du modèle
15
Monceau
File
Objet de simulation
Type d’événement
Ensemble des typesd’événements
Entité RessourceTravail
File d’attente
Simulateur
Programme d’application
Loi de probabilité
SIMC++
Chapitre IV - Développement du modèle
16
SIMC++
Création d’une nouvelle ressource
Durée de service
quai de chargement
Loi de probabilité
Ressource
Définition de la capacité de la ressource(1 par défaut)
Nombre d ’unités utilisant la ressource
Disponibilité de la ressource
Accès ou libération de la ressource(# d’unités demandées ou libérées
dépend de l’entité)
Chapitre IV - Développement du modèle
17
Monceau
File
Objet de simulation
Type d’événement
Ensemble des typesd’événements
Entité RessourceTravail
File d’attente
Simulateur
Programme d’application
Loi de probabilité
SIMC++
Chapitre IV - Développement du modèle
18
SIMC++
Création d’une nouvelle file d ’attente
Longueur de la file d ’attente
file d’attente au quai de chargement
File d’attente
Définition de la capacité de la file d ’attente( par défaut)
Définition de la ressource associée
Insérer ou enlever une entité de la file(# d’unités insérées ou enlevées
dépend de l’entité)Disponibilité de la file
Politique de gestion de la file PEPS
Chapitre IV - Développement du modèle
19
Monceau
File
Objet de simulation
Type d’événement
Ensemble des typesd’événements
Entité RessourceTravail
File d’attente
Simulateur
Programme d’application
Loi de probabilité
SIMC++
Chapitre IV - Développement du modèle
20
SIMC++
Objet de simulation Classe vide
Chapitre IV - Développement du modèle
21
Monceau
File
Objet de simulation
Type d’événement
Ensemble des typesd’événements
Entité RessourceTravail
File d’attente
Simulateur
Programme d’application
Loi de probabilité
SIMC++
Chapitre IV - Développement du modèle
22
SIMC++
Création d’un nouveau type d ’événement
Arrivée d’un nouveau bateau
Type d ’événement
Défn de la caractéristique de cet événement
Définition de l’ «objet de simulation» associé
Arrivée dans le système Départ du système
Accès à une ressource Libération d’une ressource
Entrée dans une file Sortie de la fileDébut d’un travail Fin d’un travail
entité ressource file d’attente travail
Chapitre IV - Développement du modèle
23
Monceau
File
Objet de simulation
Type d’événement
Ensemble des typesd’événements
Entité RessourceTravail
File d’attente
Simulateur
Programme d’application
Loi de probabilité
SIMC++
Chapitre IV - Développement du modèle
24
SIMC++
Création de l’ensemble des typesd’événements
Ensemble des typesd’événements
Définition du nombre de types d’événements
Ajout d ’un type d’événement
Définition d’un graphe d’événementsi.e.
les événements à céduler lors dutraitement de chaque événement
Accès aux types d’événements à cédulerlors du traitement d ’un événement.
Chapitre IV - Développement du modèle
25
Monceau
File
Objet de simulation
Type d’événement
Ensemble des typesd’événements
Entité RessourceTravail
File d’attente
Simulateur
Programme d’application
Loi de probabilité
SIMC++
Chapitre IV - Développement du modèle
26
Monceau
SIMC++
Création d’un monceau où chaque sommetrenferme une clé et un élément de donnée
Insérer un sommet selon la clé fournie
Enlever le sommet dont la clé est minimale
Tester si le monceau est plein ou vide
Vider le monceau
Chapitre IV - Développement du modèle
27
Monceau
File
Objet de simulation
Type d’événement
Ensemble des typesd’événements
Entité RessourceTravail
File d’attente
Simulateur
Programme d’application
Loi de probabilité
SIMC++
Chapitre IV - Développement du modèle
28
Simulateur
SIMC++
Définition d’une simulationDurée du réchauffementDurée de la simulationNombre maximum d’événements cédulés
Insérer l’ensemble des types d’événementsdu modèle de simulation
Céduler un événement au temps T enspécifiant:
le type de l’événementl’entité associée à cet événementl’instant d’arrivée de cette entité dans le système
Simuler le comportement du systèmeAfficher les résultats de la simulation
Chapitre IV - Développement du modèle
29
Simulateur
SIMC++
Affichage automatique des résultats de lasimulation pour chaque objet de simulation :
Entité # d’entités ayant quitté le systèmetemps moyen passé dans le système pour ceux qui ont quitté
Travail # de travaux effectuésdurée moyenne du travail effectué
Ressource # d’unités qui ont accédé à la ressourcetaux d’utilisation de la ressource
File d’attente # moyen d’usagers dans la file d’attentetemps total passé dans la file d’attente
Chapitre IV - Développement du modèle
30
SIMULATION D’UN QUAI DECHARGEMENT
/**********************************************************Simulation d'un quai de chargement modélisé par une file d'attenteM/M/1.
Le système est initialement vide et on simule pendant une période[Duree_du_rechauffement, Duree_de_la_simulation]. L'intervalle deréchauffement du simulateur est [0, Duree_du_rechauffement].
**********************************************************/
#include "SIMC++.h"#include <iostream.h>
Chapitre IV - Développement du modèle
31
SIMULATION D’UN QUAI DECHARGEMENT
float Duree_rechauffement, Duree_simulation,temps_moyen_entre_2arrivees, duree_moyenne_chargement;
void Lire_Donnees(){/* Lecture de la durée de la simulation, du temps moyen entre deux
arrivées de bateaux et de la durée moyenne d'un chargement.Impression des données d'entrée. */cout << " Veuillez fournir les renseignements suivants : " << "\n\n";cout << " Duree du rechauffement = ";cin >> Duree_rechauffement;cout << " Duree de la simulation = ";cin >> Duree_simulation;cout << " Temps moyen entre deux arrivees de bateaux = ";cin >> temps_moyen_entre_2arrivees;cout << " Duree moyenne d'un chargement = ";cin >> duree_moyenne_chargement; cout << " ---------------------------------\n";
}
Chapitre IV - Développement du modèle
32
SIMULATION D’UN QUAI DECHARGEMENT
void main(){
Lire_Donnees();Loi_de_probabilite * pLoi_d_arrivee_des_bateaux =
new Loi_de_probabilite(Exponentielle);pLoi_d_arrivee_des_bateaux -> Fixer_un_parametre_de_la_loi
(temps_moyen_entre_2arrivees,1);
Loi_de_probabilite * pLoi_de_depart_du_systeme =new Loi_de_probabilite(Exacte);
Loi_de_probabilite * pDuree_du_service =new Loi_de_probabilite(Exponentielle);
pDuree_du_service -> Fixer_un_parametre_de_la_loi(duree_moyenne_chargement,1);
Chapitre IV - Développement du modèle
33
SIMULATION D’UN QUAI DECHARGEMENT
Entite * pEnt = new Entite("bateau");pEnt -> Definir_processus_d_arrivee(pLoi_d_arrivee_des_bateaux);pEnt -> Definir_processus_de_mortalite(pLoi_de_depart_du_systeme);
Ressource * pRes = new Ressource("Quai de chargement");pRes -> Definir_duree_de_service(pDuree_du_service);
File_d_attente * pFile = new File_d_attente("File de bateaux");pFile -> Definir_ressource_associee(pRes);
Ensemble_des_types_d_evenements * pEns =new Ensemble_des_types_d_evenements(6);
Objet_de_simulation * pObj;
Chapitre IV - Développement du modèle
34
SIMULATION D’UN QUAI DECHARGEMENT
Type_d_evenement * pType =new Type_d_evenement("Arrivee d'un bateau");
pType -> Definir_caracteristique(Arrivee_dans_le_systeme);pObj = (Objet_de_simulation *) pEnt;pType -> Definir_objet_de_la_simulation(pObj);pEns -> Definir_un_type_d_evenement(1, pType);
Type_d_evenement * pT =new Type_d_evenement("Depart d'un bateau");
pT -> Definir_caracteristique(Depart_du_systeme);pObj = (Objet_de_simulation *) pEnt;pT -> Definir_objet_de_la_simulation(pObj);pEns -> Definir_un_type_d_evenement(2, pT);
Chapitre IV - Développement du modèle
35
SIMULATION D’UN QUAI DECHARGEMENT
pT = new Type_d_evenement("Entree dans la file de bateaux");pT -> Definir_caracteristique(Entree_dans_une_file);pObj = (Objet_de_simulation *) pFile;pT -> Definir_objet_de_la_simulation(pObj);pEns -> Definir_un_type_d_evenement(3, pT);
pT = new Type_d_evenement("Sortie de la file de bateaux");pT -> Definir_caracteristique(Sortie_de_la_file);pObj = (Objet_de_simulation *) pFile;pT -> Definir_objet_de_la_simulation(pObj);pEns -> Definir_un_type_d_evenement(4, pT);
Chapitre IV - Développement du modèle
36
SIMULATION D’UN QUAI DECHARGEMENT
pT = new Type_d_evenement("Debut du chargement");pT -> Definir_caracteristique(Acces_a_une_ressource);pObj = (Objet_de_simulation *) pRes;pT -> Definir_objet_de_la_simulation(pObj);pEns -> Definir_un_type_d_evenement(5, pT);
pT = new Type_d_evenement("Fin du chargement");pT -> Definir_caracteristique(Liberation_d_une_ressource);pObj = (Objet_de_simulation *) pRes;pT -> Definir_objet_de_la_simulation(pObj);pEns -> Definir_un_type_d_evenement(6, pT);
Chapitre IV - Développement du modèle
37
SIMULATION D’UN QUAI DECHARGEMENT
pEns -> Definir_graphe_d_evenement(1, 1);pEns -> Definir_graphe_d_evenement(1, 3);pEns -> Definir_graphe_d_evenement(1, 5);
pEns -> Definir_graphe_d_evenement(4, 5);
pEns -> Definir_graphe_d_evenement(5, 6);
pEns -> Definir_graphe_d_evenement(6, 4);pEns -> Definir_graphe_d_evenement(6, 2);
Chapitre IV - Développement du modèle
38
SIMULATION D’UN QUAI DECHARGEMENT
Simulateur Simulation_d_un_quai_de_chargement(Duree_rechauffement, Duree_simulation, 100);
Simulation_d_un_quai_de_chargement.Inserer_ensemble_des_types_d_evenements(pEns);
float Instant;Instant=pLoi_d_arrivee_des_bateaux->Generer_une_valeur_pseudo_aleatoire();
Simulation_d_un_quai_de_chargement.Ceduler_un_evenement(pEnt, Instant, pType, Instant);
Simulation_d_un_quai_de_chargement.Simuler();Simulation_d_un_quai_de_chargement.Rapport();
}
Chapitre IV - Développement du modèle
39
SIMULATION D’UN QUAI DECHARGEMENT
Veuillez fournir les renseignements suivants :
Duree du rechauffement = 10000.0 Duree de la simulation = 50000.0 Temps moyen entre deux arrivees de bateaux = 10.0 Duree moyenne d’un chargement = 9.0 ---------------------------------------------RESULTATS DE LA SIMULATION
NOMBRE TOTAL D’ENTITES AYANT QUITTE LE SYSTEME : 4295TEMPS MOYEN PASSE DANS LE SYSTEME POUR CEUX QUI ONT QUITTE : 108.473NOMBRE MOYEN D’USAGERS DANS LA FILE < File de bateaux > : 10.785TEMPS TOTAL PASSE DANS LA FILE < File de bateaux > : 432500NOMBRE MOYEN D’UNITES UTILISANT LA RESSOURCE < Quai de chargement > :0.902509NOMBRE TOTAL D’UNITES QUI ONT ACCEDE A LA RESSOURCE < Quai de chargement >: 4295