Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parHéloïse Chapelle Modifié depuis plus de 10 années
1
Chapitre IV Développement du modèle
2
Chapitre IV - Développement du modèle2 INTRODUCTION STRUCTURES 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 lhorloge. Exemple: Simulation du système à temps partagé. En plaçant dans une liste les caractéristiques de chaque port, pour déterminer le prochain port à être libéré, il faut parcourir cette liste complètement.
3
Chapitre IV - Développement du modèle3 INTRODUCTION A)Progression du temps dans un simulateur 1) La variable TEMPS est incrémentée dune 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 sans quil y ait aucun événement arrivant dans lintervalle (Temps, Temps + Delta) La recherche dun événement dans cet intervalle est une perte de temps. Il peut y avoir des pertes de précision si lon astreint les temps doccurrence dévénements être des facteurs de DELTA. DELTA on résoud le 1 e problème au dépens de la précision. DELTA la précision augmente mais le # ditérations augmente entraînant des calculs supplémentaires.
4
Chapitre IV - Développement du modèle4 INTRODUCTION 2) Une autre approche pour mettre à jour lhorloge est dexaminer lensemble des événements à venir et de considérer le temps doccurrence du prochain événement. Avec cette approche, les 2 problèmes précédents sont résolus. programmation légèrement plus difficile B) Gestion des événements: listes chaînées ordonnées selon les temps doccurrence des événements. Exemple: SIMULATEUR DUN 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 doccurrence est le plus proche à venir.
5
Chapitre IV - Développement du modèle5 INTRODUCTION C) Arrivée des clients: file dattente Pour simuler un ensemble dusagers en attente dune ressource, on a besoin de conserver de linformation pour chaque client qui arrive: instant darrivée dun 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
6
Chapitre IV - Développement du modèle6 SIMC++
7
7 Monceau File Objet de simulation Type dévénement Ensemble des types dévénements EntitéRessourceTravail File dattente Simulateur Programme dapplication Loi de probabilité SIMC++
8
Chapitre IV - Développement du modèle8 Loi de probabilité SIMC++ Définition dune nouvelle loi Fixer les paramètres de cette loi Générer une valeur pseudo-aléatoire selon cette loi Uniforme Exponentielle Weibull Exacte Un ou deux paramètres
9
Chapitre IV - Développement du modèle9 Monceau File Objet de simulation Type dévénement Ensemble des types dévénements EntitéRessourceTravail File dattente Simulateur Programme dapplication Loi de probabilité SIMC++
10
Chapitre IV - Développement du modèle10 SIMC++ Création dune nouvelle file où chaque sommet renfermera ladresse dun élément quelconque dont le type est une classe dé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
11
Chapitre IV - Développement du modèle11 Monceau File Objet de simulation Type dévénement Ensemble des types dévénements EntitéRessourceTravail File dattente Simulateur Programme dapplication Loi de probabilité SIMC++
12
Chapitre IV - Développement du modèle12 SIMC++ Création dune nouvelle entité Processus darrivée Processus de mortalité bateau Entité Loi de probabilité Définition du nombre dunités constituant lentité
13
Chapitre IV - Développement du modèle13 Monceau File Objet de simulation Type dévénement Ensemble des types dévénements EntitéRessourceTravail File dattente Simulateur Programme dapplication Loi de probabilité SIMC++
14
Chapitre IV - Développement du modèle14 SIMC++ Création dune nouvelle activité à effectuer Durée du travail remplissage dun panier dépicerie Loi de probabilité Aucun délai pour débuter cette activité (pas de file dattente) Travail
15
Chapitre IV - Développement du modèle15 Monceau File Objet de simulation Type dévénement Ensemble des types dévénements EntitéRessourceTravail File dattente Simulateur Programme dapplication Loi de probabilité SIMC++
16
Chapitre IV - Développement du modèle16 SIMC++ Création dune 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 (# dunités demandées ou libérées dépend de lentité)
17
Chapitre IV - Développement du modèle17 Monceau File Objet de simulation Type dévénement Ensemble des types dévénements EntitéRessourceTravail File dattente Simulateur Programme dapplication Loi de probabilité SIMC++
18
Chapitre IV - Développement du modèle18 SIMC++ Création dune nouvelle file d attente Longueur de la file d attente file dattente au quai de chargement File dattente 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 (# dunités insérées ou enlevées dépend de lentité) Disponibilité de la file Politique de gestion de la file PEPS
19
Chapitre IV - Développement du modèle19 Monceau File Objet de simulation Type dévénement Ensemble des types dévénements EntitéRessourceTravail File dattente Simulateur Programme dapplication Loi de probabilité SIMC++
20
Chapitre IV - Développement du modèle20 SIMC++ Objet de simulation Classe vide
21
Chapitre IV - Développement du modèle21 Monceau File Objet de simulation Type dévénement Ensemble des types dévénements EntitéRessourceTravail File dattente Simulateur Programme dapplication Loi de probabilité SIMC++
22
Chapitre IV - Développement du modèle22 SIMC++ Création dun nouveau type d événement Arrivée dun nouveau bateau Type d événement Déf n 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 dune ressource Entrée dans une file Sortie de la file Début dun travail Fin dun travail entitéressourcefile dattente travail
23
Chapitre IV - Développement du modèle23 Monceau File Objet de simulation Type dévénement Ensemble des types dévénements EntitéRessourceTravail File dattente Simulateur Programme dapplication Loi de probabilité SIMC++
24
Chapitre IV - Développement du modèle24 SIMC++ Création de lensemble des types dévénements Ensemble des types dévénements Définition du nombre de types dévénements Ajout d un type dévénement Définition dun graphe dévénements i.e. les événements à céduler lors du traitement de chaque événement Accès aux types dévénements à céduler lors du traitement d un événement.
25
Chapitre IV - Développement du modèle25 Monceau File Objet de simulation Type dévénement Ensemble des types dévénements EntitéRessourceTravail File dattente Simulateur Programme dapplication Loi de probabilité SIMC++
26
Chapitre IV - Développement du modèle26 Monceau SIMC++ Création dun monceau où chaque sommet renferme 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
27
Chapitre IV - Développement du modèle27 Monceau File Objet de simulation Type dévénement Ensemble des types dévénements EntitéRessourceTravail File dattente Simulateur Programme dapplication Loi de probabilité SIMC++
28
Chapitre IV - Développement du modèle28 Simulateur SIMC++ Définition dune simulation Durée du réchauffement Durée de la simulation Nombre maximum dévénements cédulés Insérer lensemble des types dévénements du modèle de simulation Céduler un événement au temps T en spécifiant: le type de lévénement lentité associée à cet événement linstant darrivée de cette entité dans le système Simuler le comportement du système Afficher les résultats de la simulation
29
Chapitre IV - Développement du modèle29 Simulateur SIMC++ Affichage automatique des résultats de la simulation pour chaque objet de simulation : Entité # dentités ayant quitté le système temps moyen passé dans le système pour ceux qui ont quitté Travail # de travaux effectués durée moyenne du travail effectué Ressource # dunités qui ont accédé à la ressource taux dutilisation de la ressource File dattente # moyen dusagers dans la file dattente temps total passé dans la file dattente
30
Chapitre IV - Développement du modèle30 SIMULATION DUN QUAI DE CHARGEMENT /********************************************************** Simulation d'un quai de chargement modélisé par une file d'attente M/M/1. Le système est initialement vide et on simule pendant une période [Duree_du_rechauffement, Duree_de_la_simulation]. L'intervalle de réchauffement du simulateur est [0, Duree_du_rechauffement]. **********************************************************/ #include "SIMC++.h" #include
31
Chapitre IV - Développement du modèle31 SIMULATION DUN QUAI DE CHARGEMENT floatDuree_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"; }
32
Chapitre IV - Développement du modèle32 SIMULATION DUN QUAI DE CHARGEMENT 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);
33
Chapitre IV - Développement du modèle33 SIMULATION DUN QUAI DE CHARGEMENT 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;
34
Chapitre IV - Développement du modèle34 SIMULATION DUN QUAI DE CHARGEMENT 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);
35
Chapitre IV - Développement du modèle35 SIMULATION DUN QUAI DE CHARGEMENT 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);
36
Chapitre IV - Développement du modèle36 SIMULATION DUN QUAI DE CHARGEMENT 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);
37
Chapitre IV - Développement du modèle37 SIMULATION DUN QUAI DE CHARGEMENT 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);
38
Chapitre IV - Développement du modèle38 SIMULATION DUN QUAI DE CHARGEMENT 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(); }
39
Chapitre IV - Développement du modèle39 SIMULATION DUN QUAI DE CHARGEMENT 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 dun chargement = 9.0 --------------------------------------------- RESULTATS DE LA SIMULATION NOMBRE TOTAL DENTITES AYANT QUITTE LE SYSTEME : 4295 TEMPS MOYEN PASSE DANS LE SYSTEME POUR CEUX QUI ONT QUITTE : 108.473 NOMBRE MOYEN DUSAGERS DANS LA FILE : 10.785 TEMPS TOTAL PASSE DANS LA FILE : 432500 NOMBRE MOYEN DUNITES UTILISANT LA RESSOURCE : 0.902509 NOMBRE TOTAL DUNITES QUI ONT ACCEDE A LA RESSOURCE : 4295
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.