1 / 39

Chapitre IV

Chapitre IV. Développement du modèle. 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.

nhung
Download Presentation

Chapitre IV

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Chapitre IV Développement du modèle

  2. 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 l’horloge. 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. Chapitre IV - Développement du modèle

  3. INTRODUCTION A) Progression du temps dans un simulateur 1) 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 sans qu’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’occurrence d’é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. INTRODUCTION 2) 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 difficile B) 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. INTRODUCTION C) Arrivée des clients: file d’attente Pour simuler un ensemble d’usagers en attente d’une ressource, on a besoin de conserver 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++ Chapitre IV - Développement du modèle

  7. Programme d’application Simulateur Ensemble des types d’événements Monceau Type d’événement SIMC++ Objet de simulation File d’attente Entité Travail Ressource Loi de probabilité File Chapitre IV - Développement du modèle

  8. SIMC++ Définition d’une nouvelle loi Uniforme Exponentielle Weibull Exacte Loi de probabilité Fixer les paramètres de cette loi Un ou deux paramètres Générer une valeur pseudo-aléatoire selon cette loi Chapitre IV - Développement du modèle

  9. Programme d’application Simulateur Ensemble des types d’événements Monceau Type d’événement SIMC++ Objet de simulation File d’attente Entité Travail Ressource Loi de probabilité File Chapitre IV - Développement du modèle

  10. SIMC++ Création d’une nouvelle file où chaque sommet renfermera l’adresse d’un élément quelconque dont le type est une classe dérivée de la classe vide « element » File d’entités File Insérer ou enlever un sommet de la file Test si la file est vide ou pleine Chapitre IV - Développement du modèle

  11. Programme d’application Simulateur Ensemble des types d’événements Monceau Type d’événement SIMC++ Objet de simulation File d’attente Entité Travail Ressource Loi de probabilité File Chapitre IV - Développement du modèle

  12. SIMC++ Création d’une nouvelle entité bateau Définition du nombre d’unités constituant l’entité Entité Processus d’arrivée Loi de probabilité Processus de mortalité Chapitre IV - Développement du modèle

  13. Programme d’application Simulateur Ensemble des types d’événements Monceau Type d’événement SIMC++ Objet de simulation File d’attente Entité Travail Ressource Loi de probabilité File Chapitre IV - Développement du modèle

  14. SIMC++ Création d’une nouvelle activité à effectuer remplissage d’un panier d’épicerie Aucun délai pour débuter cette activité (pas de file d’attente) Travail Durée du travail Loi de probabilité Chapitre IV - Développement du modèle

  15. Programme d’application Simulateur Ensemble des types d’événements Monceau Type d’événement SIMC++ Objet de simulation File d’attente Entité Travail Ressource Loi de probabilité File Chapitre IV - Développement du modèle

  16. SIMC++ Création d’une nouvelle ressource quai de chargement Définition de la capacité de la ressource (1 par défaut) Ressource Nombre d ’unités utilisant la ressource Durée de service Loi de probabilité 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. Programme d’application Simulateur Ensemble des types d’événements Monceau Type d’événement SIMC++ Objet de simulation File d’attente Entité Travail Ressource Loi de probabilité File Chapitre IV - Développement du modèle

  18. SIMC++ Création d’une nouvelle file d ’attente file d’attente au quai de chargement Définition de la capacité de la file d ’attente ( par défaut) Définition de la ressource associée File d’attente Longueur de la file d ’attente 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 PEPS Politique de gestion de la file Chapitre IV - Développement du modèle

  19. Programme d’application Simulateur Ensemble des types d’événements Monceau Type d’événement SIMC++ Objet de simulation File d’attente Entité Travail Ressource Loi de probabilité File Chapitre IV - Développement du modèle

  20. SIMC++ Classe vide Objet de simulation Chapitre IV - Développement du modèle

  21. Programme d’application Simulateur Ensemble des types d’événements Monceau Type d’événement SIMC++ Objet de simulation File d’attente Entité Travail Ressource Loi de probabilité File Chapitre IV - Développement du modèle

  22. SIMC++ Création d’un nouveau type d ’événement Arrivée d’un nouveau bateau Défn de la caractéristique de cet événement Départ du système Arrivée dans le système Type d ’événement Libération d’une ressource Accès à une ressource Sortie de la file Entrée dans une file Fin d’un travail Début d’un travail Définition de l’ «objet de simulation» associé travail entité ressource file d’attente Chapitre IV - Développement du modèle

  23. Programme d’application Simulateur Ensemble des types d’événements Monceau Type d’événement SIMC++ Objet de simulation File d’attente Entité Travail Ressource Loi de probabilité File Chapitre IV - Développement du modèle

  24. SIMC++ Création de l’ensemble des types d’é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énements i.e. les événements à céduler lors du traitement de chaque événement Ensemble des types d’événements Accès aux types d’événements à céduler lors du traitement d ’un événement. Chapitre IV - Développement du modèle

  25. Programme d’application Simulateur Ensemble des types d’événements Monceau Type d’événement SIMC++ Objet de simulation File d’attente Entité Travail Ressource Loi de probabilité File Chapitre IV - Développement du modèle

  26. SIMC++ Création d’un monceau où chaque sommet renferme une clé et un élément de donnée Insérer un sommet selon la clé fournie Monceau 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. Programme d’application Simulateur Ensemble des types d’événements Monceau Type d’événement SIMC++ Objet de simulation File d’attente Entité Travail Ressource Loi de probabilité File Chapitre IV - Développement du modèle

  28. SIMC++ Définition d’une simulation Durée du réchauffement Durée de la simulation Nombre maximum d’événements cédulés Insérer l’ensemble des types d’événements du modèle de simulation Simulateur Céduler un événement au temps T en spécifiant: le type de l’événement l’entité associée à cet événement l’instant d’arrivée de cette entité dans le système Simuler le comportement du système Afficher les résultats de la simulation Chapitre IV - Développement du modèle

  29. SIMC++ Affichage automatique des résultats de la simulation pour chaque objet de simulation : # d’entités ayant quitté le système temps moyen passé dans le système pour ceux qui ont quitté Entité # de travaux effectués durée moyenne du travail effectué Simulateur Travail # d’unités qui ont accédé à la ressource taux d’utilisation de la ressource Ressource # moyen d’usagers dans la file d’attente temps total passé dans la file d’attente File d’attente Chapitre IV - Développement du modèle

  30. SIMULATION D’UN 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 <iostream.h> Chapitre IV - Développement du modèle

  31. SIMULATION D’UN QUAI DE CHARGEMENT 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 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); Chapitre IV - Développement du modèle

  33. SIMULATION D’UN 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; Chapitre IV - Développement du modèle

  34. SIMULATION D’UN 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); Chapitre IV - Développement du modèle

  35. SIMULATION D’UN 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); Chapitre IV - Développement du modèle

  36. SIMULATION D’UN 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); Chapitre IV - Développement du modèle

  37. SIMULATION D’UN 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); Chapitre IV - Développement du modèle

  38. SIMULATION D’UN 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(); } Chapitre IV - Développement du modèle

  39. SIMULATION D’UN 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 d’un chargement = 9.0 --------------------------------------------- RESULTATS DE LA SIMULATION NOMBRE TOTAL D’ENTITES AYANT QUITTE LE SYSTEME : 4295 TEMPS MOYEN PASSE DANS LE SYSTEME POUR CEUX QUI ONT QUITTE : 108.473 NOMBRE MOYEN D’USAGERS DANS LA FILE < File de bateaux > : 10.785 TEMPS TOTAL PASSE DANS LA FILE < File de bateaux > : 432500 NOMBRE MOYEN D’UNITES UTILISANT LA RESSOURCE < Quai de chargement > : 0.902509 NOMBRE TOTAL D’UNITES QUI ONT ACCEDE A LA RESSOURCE < Quai de chargement > : 4295 Chapitre IV - Développement du modèle

More Related