Chapitre IV Développement du modèle. Chapitre IV - Développement du modèle2 INTRODUCTION...

39
Chapitre IV Chapitre IV Développement du modèle

Transcript of Chapitre IV Développement du modèle. Chapitre IV - Développement du modèle2 INTRODUCTION...

Page 1: Chapitre IV Développement du modèle. Chapitre IV - Développement du modèle2 INTRODUCTION STRUCTURES DE DONNÉES & IMPLANTATION Dans un programme de simulation,

Chapitre IVChapitre IV

Développement du modèle

Page 2: Chapitre IV Développement du modèle. Chapitre IV - Développement du modèle2 INTRODUCTION STRUCTURES DE DONNÉES & IMPLANTATION Dans un programme de simulation,

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.

Page 3: Chapitre IV Développement du modèle. Chapitre IV - Développement du modèle2 INTRODUCTION STRUCTURES DE DONNÉES & IMPLANTATION Dans un programme de simulation,

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.

Page 4: Chapitre IV Développement du modèle. Chapitre IV - Développement du modèle2 INTRODUCTION STRUCTURES DE DONNÉES & IMPLANTATION Dans un programme de simulation,

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.

Page 5: Chapitre IV Développement du modèle. Chapitre IV - Développement du modèle2 INTRODUCTION STRUCTURES DE DONNÉES & IMPLANTATION Dans un programme de simulation,

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

Page 6: Chapitre IV Développement du modèle. Chapitre IV - Développement du modèle2 INTRODUCTION STRUCTURES DE DONNÉES & IMPLANTATION Dans un programme de simulation,

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

Page 7: Chapitre IV Développement du modèle. Chapitre IV - Développement du modèle2 INTRODUCTION STRUCTURES DE DONNÉES & IMPLANTATION Dans un programme de simulation,

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

Page 8: Chapitre IV Développement du modèle. Chapitre IV - Développement du modèle2 INTRODUCTION STRUCTURES DE DONNÉES & IMPLANTATION Dans un programme de simulation,

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

Page 9: Chapitre IV Développement du modèle. Chapitre IV - Développement du modèle2 INTRODUCTION STRUCTURES DE DONNÉES & IMPLANTATION Dans un programme de simulation,

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

Page 10: Chapitre IV Développement du modèle. Chapitre IV - Développement du modèle2 INTRODUCTION STRUCTURES DE DONNÉES & IMPLANTATION Dans un programme de simulation,

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

Page 11: Chapitre IV Développement du modèle. Chapitre IV - Développement du modèle2 INTRODUCTION STRUCTURES DE DONNÉES & IMPLANTATION Dans un programme de simulation,

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

Page 12: Chapitre IV Développement du modèle. Chapitre IV - Développement du modèle2 INTRODUCTION STRUCTURES DE DONNÉES & IMPLANTATION Dans un programme de simulation,

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é

Page 13: Chapitre IV Développement du modèle. Chapitre IV - Développement du modèle2 INTRODUCTION STRUCTURES DE DONNÉES & IMPLANTATION Dans un programme de simulation,

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

Page 14: Chapitre IV Développement du modèle. Chapitre IV - Développement du modèle2 INTRODUCTION STRUCTURES DE DONNÉES & IMPLANTATION Dans un programme de simulation,

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

Page 15: Chapitre IV Développement du modèle. Chapitre IV - Développement du modèle2 INTRODUCTION STRUCTURES DE DONNÉES & IMPLANTATION Dans un programme de simulation,

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

Page 16: Chapitre IV Développement du modèle. Chapitre IV - Développement du modèle2 INTRODUCTION STRUCTURES DE DONNÉES & IMPLANTATION Dans un programme de simulation,

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é)

Page 17: Chapitre IV Développement du modèle. Chapitre IV - Développement du modèle2 INTRODUCTION STRUCTURES DE DONNÉES & IMPLANTATION Dans un programme de simulation,

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

Page 18: Chapitre IV Développement du modèle. Chapitre IV - Développement du modèle2 INTRODUCTION STRUCTURES DE DONNÉES & IMPLANTATION Dans un programme de simulation,

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

Page 19: Chapitre IV Développement du modèle. Chapitre IV - Développement du modèle2 INTRODUCTION STRUCTURES DE DONNÉES & IMPLANTATION Dans un programme de simulation,

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

Page 20: Chapitre IV Développement du modèle. Chapitre IV - Développement du modèle2 INTRODUCTION STRUCTURES DE DONNÉES & IMPLANTATION Dans un programme de simulation,

Chapitre IV - Développement du modèle

20

SIMC++

Objet de simulation Classe vide

Page 21: Chapitre IV Développement du modèle. Chapitre IV - Développement du modèle2 INTRODUCTION STRUCTURES DE DONNÉES & IMPLANTATION Dans un programme de simulation,

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

Page 22: Chapitre IV Développement du modèle. Chapitre IV - Développement du modèle2 INTRODUCTION STRUCTURES DE DONNÉES & IMPLANTATION Dans un programme de simulation,

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

Page 23: Chapitre IV Développement du modèle. Chapitre IV - Développement du modèle2 INTRODUCTION STRUCTURES DE DONNÉES & IMPLANTATION Dans un programme de simulation,

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

Page 24: Chapitre IV Développement du modèle. Chapitre IV - Développement du modèle2 INTRODUCTION STRUCTURES DE DONNÉES & IMPLANTATION Dans un programme de simulation,

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.

Page 25: Chapitre IV Développement du modèle. Chapitre IV - Développement du modèle2 INTRODUCTION STRUCTURES DE DONNÉES & IMPLANTATION Dans un programme de simulation,

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

Page 26: Chapitre IV Développement du modèle. Chapitre IV - Développement du modèle2 INTRODUCTION STRUCTURES DE DONNÉES & IMPLANTATION Dans un programme de simulation,

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

Page 27: Chapitre IV Développement du modèle. Chapitre IV - Développement du modèle2 INTRODUCTION STRUCTURES DE DONNÉES & IMPLANTATION Dans un programme de simulation,

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

Page 28: Chapitre IV Développement du modèle. Chapitre IV - Développement du modèle2 INTRODUCTION STRUCTURES DE DONNÉES & IMPLANTATION Dans un programme de simulation,

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

Page 29: Chapitre IV Développement du modèle. Chapitre IV - Développement du modèle2 INTRODUCTION STRUCTURES DE DONNÉES & IMPLANTATION Dans un programme de 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

Page 30: Chapitre IV Développement du modèle. Chapitre IV - Développement du modèle2 INTRODUCTION STRUCTURES DE DONNÉES & IMPLANTATION Dans un programme de simulation,

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>

Page 31: Chapitre IV Développement du modèle. Chapitre IV - Développement du modèle2 INTRODUCTION STRUCTURES DE DONNÉES & IMPLANTATION Dans un programme de simulation,

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";

}

Page 32: Chapitre IV Développement du modèle. Chapitre IV - Développement du modèle2 INTRODUCTION STRUCTURES DE DONNÉES & IMPLANTATION Dans un programme de simulation,

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);

Page 33: Chapitre IV Développement du modèle. Chapitre IV - Développement du modèle2 INTRODUCTION STRUCTURES DE DONNÉES & IMPLANTATION Dans un programme de simulation,

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;

Page 34: Chapitre IV Développement du modèle. Chapitre IV - Développement du modèle2 INTRODUCTION STRUCTURES DE DONNÉES & IMPLANTATION Dans un programme de simulation,

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);

Page 35: Chapitre IV Développement du modèle. Chapitre IV - Développement du modèle2 INTRODUCTION STRUCTURES DE DONNÉES & IMPLANTATION Dans un programme de simulation,

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);

Page 36: Chapitre IV Développement du modèle. Chapitre IV - Développement du modèle2 INTRODUCTION STRUCTURES DE DONNÉES & IMPLANTATION Dans un programme de simulation,

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);

Page 37: Chapitre IV Développement du modèle. Chapitre IV - Développement du modèle2 INTRODUCTION STRUCTURES DE DONNÉES & IMPLANTATION Dans un programme de simulation,

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);

Page 38: Chapitre IV Développement du modèle. Chapitre IV - Développement du modèle2 INTRODUCTION STRUCTURES DE DONNÉES & IMPLANTATION Dans un programme de simulation,

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();

}

Page 39: Chapitre IV Développement du modèle. Chapitre IV - Développement du modèle2 INTRODUCTION STRUCTURES DE DONNÉES & IMPLANTATION Dans un programme de simulation,

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