Chapitre iv
This presentation is the property of its rightful owner.
Sponsored Links
1 / 39

Chapitre IV PowerPoint PPT Presentation


  • 65 Views
  • Uploaded on
  • Presentation posted in: General

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.

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Chapitre iv

Chapitre IV

Développement du modèle


Introduction

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


Introduction1

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


Introduction2

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


Introduction3

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


Chapitre iv

SIMC++

Chapitre IV - Développement du modèle


Chapitre iv

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


Chapitre iv

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


Chapitre iv

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


Chapitre iv

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


Chapitre iv

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


Chapitre iv

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


Chapitre iv

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


Chapitre iv

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


Chapitre iv

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


Chapitre iv

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


Chapitre iv

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


Chapitre iv

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


Chapitre iv

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


Chapitre iv

SIMC++

Classe vide

Objet de simulation

Chapitre IV - Développement du modèle


Chapitre iv

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


Chapitre iv

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


Chapitre iv

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


Chapitre iv

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


Chapitre iv

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


Chapitre iv

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


Chapitre iv

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


Chapitre iv

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


Chapitre iv

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


Chapitre iv

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


Chapitre iv

SIMULATION D’UN 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";

}

Chapitre IV - Développement du modèle


Chapitre iv

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


Chapitre iv

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


Chapitre iv

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


Chapitre iv

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


Chapitre iv

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


Chapitre iv

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


Chapitre iv

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


Chapitre iv

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


  • Login