Академический Документы
Профессиональный Документы
Культура Документы
1. INTRODUCTION
La simulation est aujourd’hui largement reconnue comme une technique
puissante pour l’analyse et la conception des systèmes. Elle peut être appliquée dans
divers domaines tels que l’analyse des systèmes de services (Banques, téléphonie,
...), les systèmes de production (ou de fabrication), les systèmes naturels
(biologiques, écologiques,...), les systèmes informatiques (d’exploitation, de
communications, etc.).
L'étude scientifique d'un système nous amène dans la plupart des cas a faire un ensemble
de suppositions sur le fonctionnement du système. Ces suppositions, prennent
habituellement la forme de relations mathématiques ou logiques, constituent un modèle qui
est utilisé pour essayer de comprendre comment le comportement du système étudié.
Si les relations qui composent le modèle sont assez simples il peut être possible d'utiliser
des méthodes mathématiques (telle que l'algèbre, la theorie des probabilité) pour obtenir
des responses exactes aux questions qui nous intéreseent. Une telle solution s'appelle une
solution analytique. Cependant, les systèmes qu'on trouve dans la réalité sont le plus
souent trop complexes pour pourvoir se preter a une évaluation analytique, et leurs
modèles doivent être étudiés au moyen de la simulation. Dans une simulation on utilise
l'ordinateur pour évaluer numériquement un modèle et des données sont colloectées dans
le but d'estimer les caractéristiques souhaitées du modèle.
A titre d'exemple, si une entreprise industrielle prevoit faire une extension de son
usine mais n'est pas sûr si le gain potentiel dans la productivité justifierait le coût de la
construction peut recourrir a une étude par la simulation. En effet, il ne serait surement pas
rentable en terme d'argent que l'entreprise procède a l'extension puis l'enlèver plus tard s'il
elle est jugée non satisfante. Cependant une étude par la simulation pourrait éclairer sur la
question en simulant le fonctionnement de l'usine dans son état avant l'extension et puis
avec l'extension. Ceci pourra etre fait sans que cela necessiterait des changements
physiques dans l'usine.
Les domaines d'application de la simulation sont nombreux et variés. Une liste non
exhaustive de problemes pour lesquels la simulation s'est averée un outil utile et puissant
sont :
Beaucoup d'etudes ont montré que la simulation figurait parmi les techniques les plus
Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna.
utilisées a travers le monde. Cependant, plusieurs obstacles n'ont pas favorisé une plus
large utilisation de la simulation. En premier lieu, les modèles utilisés pour étudier les
systèmes à grande échelle ont tendance a être très complexe, et leur traduction sous forme
de programme pour les exécuter peut être une tâche ardue. Cette tâche a été beaucoup
simplifié durant ces derniéres années grace au développement d'excellents logiciels qui
offrent en standad beaucoup de possibilités necessaires pour coder un modèle de la
simulation. Un deuxième problème avec simulation des systèmes complexes est qu'ils
exigent souvent beaucoup de temps sur ordinateur mais cet obstacle est devenu moins
sévère aujourd'hui a cause de la diminution des prix (materiel) et l'augmentation de la
puissance de calcul.
De la on peut souligner que la simulation en tant que méthode ne doit en aucun cas etre
vue comme un simple travail de programmation sur ordinateur quelque soit la complexité du
système a analyser. Elle doit obéir a une approche méthodologique qui est en grande partie
indépendante du logiciel et du matériel qu'on utilise.
Le plus important pour nous n’est pas d’énoncer une définition précise du terme
mais d’essayer de faire ressortir les mots clefs qui nous semblent bien caractériser
cette notion de système. De là, on peut dire qu’un système est caractérisé par :
"Un système est une entité complexe traitée (eu égard à certaines finalités)
comme une totalité organisée, formée d'éléments et de relations entre ceux-ci, les uns et
les autres étant définis en fonction de la place qu'ils occupent dans cette totalité et cela
de telle sorte que son identité soit maintenue face à certaines évolutions."
Exemple :
Une usine de production constitue un très bon exemple de système dont les parties
pourraient être :
• main d’oeuvre
• service achats
• service approvisionnement
• service de gestion de stocks
• service Fabrication
• service Ventes
• service Ordonnancement de la production
• service Administratif
Les frontières d'un système peuvent être physiques; cependant il serait plus juste
de parler des relations de cause à effet entre un système et son environnement.
Certains facteurs externes peuvent influencer le système. Si ces facteurs contrôlent
entièrement la dynamique du système , il n’ y a pas d’intérêt à conduire des
expérimentation avec ce système et il faudra redéfinir le système. Si par contre ces
facteurs contrôle partiellement la dynamique du système, On peut alors soit :
2.2.1 Définition
Une définition d'un modèle énoncée par l'AFCET , est la suivante :
"Un modèle est un schéma, i.e. une description mentale (intériorisée),ou figurée
(diagrammes, formules mathématiques, etc ... qui, pour un champ de questions est pris
comme représentation abstraite d'une classe de phénomènes, plus ou moins habilement
dégagés de leur contexte par un observateur pour servir de support à l'investigation,
et/ou la communication".
Un modèle est donc une représentation d’un système (réel ou imaginé) dont le
but est d’expliquer et de prédire certains aspects du comportement de ce système.
Cette représentation est plus ou moins fidèle car d’une part le modèle devra être
assez complet afin de pouvoir répondre aux diverses questions qu’on peut se poser
sur le système qu’il représente et d’autre part il ne doit pas être trop complexe pour
pouvoir être facilement manipulé. Ceci implique immédiatement qu’il y a intérêt à bien
définir les limites ou frontières du modèle qui est censé représenter le système.
Dans ce modèle, certains facteurs sont négligés : poids de l’avion, types des
matériaux de construction, ... Ils n’ont pas d’importance pour les questions auxquelles
ont veut répondre.
3) On construit un premier ''vrai'' avion grandeur nature pour essai. Des résultats
issus des essais en vol sont recueillis, puis comparés à ceux obtenus à l’aide des
modèles réduits. Une mise à jour de nouveaux paramètres est faite et les tests avec
les modèles réduits sont refaits.
De la on peut dire qu’un modèle n’est pas identique en tout point au système qu’il
modélise. En effet, si tel était le cas, le modèle serait sans intérêt car il serait aussi
simple de travailler directement sur le système.
Il faut noter ici que quelque soit la méthode utilisée, le modèle doit être finalisé selon
le point de vue adopté et le but recherché. Il ne saurait donc exister de modèle
universel d'un phénomène, transposable au gré d'une utilisation souhaitée (voire les
modeles de l’avion)
Les modèles physiques : sont ceux dans lesquels le système réel est représenté
par une réplique ou maquette, à une échelle différente et éventuellement à l’aide de
matériaux différents (exemple : maquette de véhicules pour les essais aérodynamiques
en soufflerie).
Nous nous intéresserons par la suite aux modèles de simulation (modèles abstraits
dynamiques) et plus particulièrement aux modèles de simulation a événements discrets.
On peut donc tres bien dire que simuler le fonctionnement d’un système c’est imiter
son fonctionnement au cours du temps en manipulant un modèle. Ceci équivaudrait à la
génération d’un historique artificiel des changements d’état du système et l’observation
de cet historique pour faire des déductions sur ses caractéristiques de fonctionnement.
C’est donc une méthodologie essentiellement pratique qui permet de modéliser aussi
Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna.
bien des systèmes conceptuels (qu’on veut concevoir) que des systèmes existants déjà.
Elle peut être utilisée pour :
2.3.1 Définition
Beaucoup de définitions ont été attribuées au terme ‘‘Simulation’’ dans la
littérature technique. En voici quelques-unes :
Parmi toutes ces définitions nous retenons celle donnée par A.A.B. Pritsker
auteur du langage SLAM II, et qui s'énonce comme suit :
De là on peut dire que le terme de simulation pourrait être caractérisé par les
mots clefs suivants :
methodes analytiques, il serait preferable de les utiliser car elles conduisent a des solutions
optimales. En effet, pour un probleme donné et des objectifs fixés, on peut avoir le choix
entre differentes approches pour le resoudre parmi lesquelles il y a la simulation comme le
montre la figure suivante :
6\VWqPH
l’exemple suivant va nous aider a cerner la démarche typique pour le choix d’une
méthode de résolution d’un problème
On dispose d'un reservoir contenant 100 litres d'eau. Le reservoir est muni d'un
robinet qui debite a une vitesse de 1 litre par minute.
a. Par un calcul
Si 1 litre sort du reservoir par minute et qu'il y a 100 litres dans le reservoir , un simple
calcul nous indiquerais que le reservoir se videra au bout de 100 minutes ( i.e. 100
litre / 1 litre/minute )
Supposons que nous ne savons pas calculer et que nous pouvons disposer d'un
chronomètre. On peut se mettre a coté du reservoir , mettre le chronometre en
marche et attendre jusqu'à ce que le reservoir soit vide. Si nous appuyons alors
immédiatement sur le bouton, nous lirons les 100 minutes
c. En simulant le phénomène
Si nous n'avons pas de reservoir du tout , nous pourrions décider de mettre 100
Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna.
grammes de sable dans une petite boîte en carton, faire un trou dans la boîte et
s'arranger de telle sorte que 1 gramme de sable puisse s'ecouler de la boite en 1
minute. Nous mesurons alors le temps que mettera la boîte pour se vider et conclure
que le même résultat serait probablement valide pour le reservoir aussi.
T
1 quand est-ce que nous devons simuler?
Cette question a trait aux objectifs visés. Si nous savons que la simulation est la
seule méthode pour résoudre un problème, nous devons nous demander aussi si les
coûts de l'expérimentation sont justifiables.
T
3 La boîte est-elle une bonne représentation du reservoir ?
On peut dire que oui : simuler c'est aussi mesurer (enregistrer), mais on ne mesure
pas la réalité, mais un modèle de cette réalité. Donc, la simulation n'est pas une
méthode mathématique. La simulation utilise des techniques mathématiques
(particulièrement statistique), mais simplement comme un outil pour mesurer.
Il faut noter aussi que la résolution d'un problème expérimentalement et sans faire de
simulation, exige que le système a étudier existe ce qui n'est pas toujours le cas. Or, il
arrive souvent dans la pratique, qu'on soit amené a se poser des questions sur un système
qui n'existe pas encore en vue de comprendre certains aspects de ce systeme(voire
exemple de l’usine en page 1). De meme qu'il est possible que l'on soit amené a
comprendre les conséquences d'un changement dans un système existant sans pour
Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna.
autant devoir en premier construire le nouveau système. Les deux possibilités pour
resoudre le probleme dans les deux cas sont alors : trouver la solution par simulation ou
analytiquement.
La résolution analytique d'un problème exige que l'on soit capable de décrire le système
entier, y compris la relation entre les sous-systèmes qui le composent, mathématiquement.
Ceci n'est pas toujours possible a cause de la complexité et de l'incertitude relatives au
système a étudier.
/D FRPSOH[LWp
Un système peut être si complexe, avec tellement d'interactions mutuelles entre ses sous-
systèmes ou composants, qu'il devient impossible (ou extrêmement difficile) de le décrire
en termes de relations mathématiques.
exemple : si dans le problème du reservoir présenté plus haut on stipule que le debit
de l'eau est dépendant du volume d'eau restant dans le reservoir et de la dimension
du robinet, et qu'en plus de tout cela, le robinet se dilate de 10% toutes les 4 minutes,
il est clair que la solution mathématique (analytique) devient plus difficile. On sera
dans ce cas plus porté a opter pour la methode b consistant a mesurer le temps avec
un chronometre car elle est plus simple. Maintenant imaginez un lot de reservoirs en
interaction les uns avec les autres. Ceci complique encore plus le probleme et il
devient evident qu'une approche non-analytique est preferable, parce qu'elle est
moins couteuse(mesurer est plus simple et moins couteux que calculer), ou parce que
l'approche analytique est impossible.
/
LQFHUWLWXGH
La description d'un système en termes mathématiques peut aussi être difficile. Ceci est le
cas meme si le systeme est simple (pas complexe) et que nous sommes confrontés a des
incertitudes sur le systeme.
En résumé, la résolution d'un problème conduit en premier au choix d'une méthode qui peut
etre analytique ou non-analytiques. Elle peut s'agir aussi du choix d'une méthode
expérimentale celle-ci pouvant etre directe (expérimentation sur le systeme réel) ou
indirecte (expérimentation avec un modèle). Le choix de la simulation comme méthode
(faire une expérimentation avec un modèle) sera a faire si :
- l'expérimentation sur le systeme réel n'est pas possible (systeme n'existe pas)
- l'expérimentation sur le systeme réel n'est pas sans danger (accidents, catastrophes
..ex du simulateur du vol)
- l'expérimentation sur le systeme réel est trop chère (construire une nouvelle usine et
Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna.
Les variables d’état d’un système sont toutes les informations nécessaires pour
définir ou caractériser ce qui est en train de se passer dans le système à un niveau de
détail suffisant et ce à un instant donné.
La détermination de ces variables est fonction des investigations qu’on veut faire.
Ainsi des variables identifiées comme variable d’états du système dans un cas
peuvent ne pas être les mêmes dans un autre cas ou situation et ce bien que le
système physique soit le même :
Exemple:
Dans une banque, le temps d’inoccupation des guichets n’a pas d’intérêt ou
ne constitue pas une variable d’état du système analysé si on décide
d’affecter un client au premier guichet libre et ce de manière cyclique.
Par contre si on décide d’affecter un client en priorité au guichet qui est resté
Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna.
La détermination des variables d’état d’un système n’est pas une chose facile.
Elles doivent être identifiées au niveau du processus de modélisation et normalement
à ce niveau tout oubli ou omission de variable sera facilement détecté.
Une fois les variable d’état identifiées, on peut souligner une différence
essentielle entre les modèles à événements discrets et les modèles continus en se
basant sur les variables nécessaires pour suivre l’état du système. Dans un modèle à
événements discrets, les variables d’état restent constantes sur des intervalles de
temps et changent de valeurs uniquement à certains points bien définis appelés :
Temps ou instants d’événements. Par contre les modèles continus ont des variable
d’état définies par des équations différentielles ou aux différences qui permettent aux
variables de changer de façon continue au cours du temps.
Il faut noter que dans la pratique, il existe aussi des modèles dits mixtes
événements discrets- continus
Il est possible aussi de distinguer les entités non pas en fonction de leur capacité
à exécuter des opérations mais de leur capacité de déplacement dans le système.
Les entités qui se déplacent dans le système (ex: clients) au cours de la simulation
sont qualifiées de dynamiques alors que les entités qui ne se déplacent pas et
servent simplement d’autres entités sont qualifiées de statiques (ex : serveur dans
une banque).
Les entités : ce sont des objets qui subissent des opérations et se déplacent en
général dans le système (pièces , client dans une banque, message dans un réseau,
....)
Les ressources : ce sont des objets qui exécutent des opérations et en général ne
se déplacent pas dans le système (Machine, Opérateur, Unité centrale, ...).
Cependant, il faut noter qu'il est tout a fait possible de rencontrer en pratique des
objets de type ressource qui se deplacent a l'interieur du systeme tout en exécutant
Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna.
Il existe plusieurs états possibles pour une ressource. Les deux états minimum
sont : libre ou occupée mais d’autres possibilités existent telles que : en panne ,
bloquée, en famine , ....
Exemple : un bus transportant des voyageurs. Pour les voyageurs le bus est
un objet de type ressource. Si on a plusieurs bus qui doivent desservir la
meme gare un a la fois, le bus devient une entité pour la ressource ''gare'.
Les attributs qui sont intéressant dans une investigation peuvent ne pas l’être
dans une autre. Par exemple si on a des pièces rouges et des pièces bleues à usiner,
l’attribut couleur sera certainement un attribut intéressant. Par contre si on s’intéresse
uniquement au temps de séjour dans le système par toutes les pièces, la couleur
d’une pièce peut ne pas être un attribut important.
Au cours d’une simulation, le système passe d’un état à un autre, les entités
subissent des opérations et se déplacent dans le système, les ressources exécutent
des opérations et changent d’état, le temps progresse selon une logique. Nous allons
préciser les notions qui concourent à la réalisation de tous ces changements
dynamiques.
3.3.1 Evénement
Un événement est caractérisé par une date (date d’événement) à laquelle le système
change d’état. On distingue les événements internes au système et externes appelés
Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna.
Exemple :
• Le début de service d’un client est un événement endogène du fait qu’il est
interne au système qu’on est en train de simuler.
• L’arrivée d’un client pour le service est un événement exogène du fait que ce
phénomène est en dehors de la simulation. Cependant l’arrivée d’un client au
service empiète sur le système et doit être pris en considération.
3.3.2 Activité
A chaque événement les objets concernés s’engagent dans des opérations. Ces
opérations qui sont initiées (ou terminées) à chaque événement sont appelées des
activités. Toute activité est limité à son début et à sa fin par un événement.
Exemple :
3.3.3 Processus
Exemple :
Le contrôle du temps dans une simulation se fait principalement selon l’une des
deux méthodes suivantes : Méthode à pas constant ou Méthode à pas variable
C’est une méthode simple et facile à programmer qui consiste à se fixer au début de
la simulation une unité de temps ∆t avec laquelle on incrémentera l’horloge. A chaque
incrémentation on cherche les événements qui peuvent se produire (Date d’occurrence =
[Horloge]) ou les activités qui peuvent démarrer et on les traite. Cette méthode
s’applique surtout pour les modèles décrits par des équations différentielles (continus).
Cependant, elle peut poser des problèmes pour le cas des modèles à événements discrets.
Si le pas ∆t est trop grand, on risque de sauter (ne pas prendre en compte) certains
événements. Inversement, si le pas ∆t est trop petit on risque d’effectuer un très grand
nombre de tests inutiles (car pas de changements d’état à faire) à chaque incrémentation
ce qui augmenterait les temps d’exécution.
Cette méthode est de loin la plus fréquemment utilisée vue son efficacité relativement
à la méthode à pas constant.
- les clients ou usagers : Sur lesquels sont effectués les services (pièces dans
un atelier, clients dans un magasin, informations dans un réseau de transmission, etc ... ) ;
souvent, les clients sont des objets circulants (en particulier dans les systèmes de
production).
- les ressources : Sont nécessaires pour effectuer les services ; ces ressources
peuvent être composées d'une ou plusieurs unités (nombre de machines identiques, de
personnel ayant la même compétence, de chariots, de places dans une file d'attente, etc ...
).
Remarquons que des objets peuvent être, soit des clients, soit des ressources,
selon le problème auquel on s'intéresse. Par exemple, dans un atelier de production un
chariot transportant des pieces sera en général, une ressource mais il deviendra client si on
s'intéresse au fonctionnement détaillé du réseau de transport, les ressources pour les
chariots étant alors les différents cantons du réseau qu'empruntera le chariot dans ses
parcours.
Un objet est caractérisé par un ou plusieurs attributs auxquels des valeurs peuvent
être affectées. On peut distinguer deux types : les attributs fixes qui contiennent les
caractéristiques constante de l'objet (type de machine, taux de panne, type de pièce, durée
d'usinage d'une pièce sur une machine); les attributs variables qui correspondent aux
caractéristiques évolutives dans le temps de l'objet (occupation de la machine, état de
marche, position d'une pièce, nombre de pièces en attente, etc...
De ces définitions standards découle la notion d'état. L'etat d'un objet à un instant
donné est l'ensemble des valeurs de tous les attributs variables de cet objet à cet instant.
L'etat instantané du système sera donc défini par l'ensemble des états de tous les objets à
cet instant.
1)
: Event scheduling, Next Event
2)
: Activity Scanning
3) : Process interaction
Ces trois approches de modélisation sont caractérisées par le fait qu’elles conduisent
à des modèles ayant une structure hiérarchique à 3 niveaux qui sont :
S
niveau 1 : Correspond au programme de contrôle de la simulation appelé aussi
S exécutif ou noyau
niveau 2 : Correspond aux opérations décrivant la dynamique du système
simulé. Du point de vue de l’utilisateur, ce niveau constitue le
S modèle de simulation proprement dit
niveau 3 : Comprend un ensemble de routines utilitaires
a) Le niveau 1 :
Dans le cas ou on dispose d’un langage de simulation, le noyau est une partie qui
n’est pas directement accessible au programmeur qui n’a vraiment pas à savoir tous les
détails sur le noyau. Il suffit simplement de savoir que son principe général est de
contrôler le niveau 2 de façon quasi-automatique (appel ou déclenchement des
opérations du niveau 2).
b) Le niveau 2 :
c) Le niveau 3 :
Dans cette approche, un système est modélisé en définissant les changements qui
ont lieu aux instants d’occurrence des événements. Le concepteur doit donc déterminer
les événement qui peuvent changer l’état du système et de développer ensuite la
logique associée avec chaque type d’événement.
Exemple:
Considérons comme système à modéliser une banque dans laquelle arrivent des
clients qui sont servis par un seul serveur (employé). Les clients arrivent à la
banque, se mettent en attente devant un guichet, sont servis puis quittent la
banque.
L’état du système est défini par l’état du serveur et par le nombre de clients en
attente. Ainsi, l’état reste constant sauf lorsqu’un client arrive ou lorsqu’un client quitte la
banque.
L’approche par événements consiste à décrire ce qui se passe lorsqu’un client arrive
et lorsqu’un client termine le service. Du fait que le système change d’état uniquement
aux instants de ces deux événements (Arrivée d’un client ou départ d’un client) , ces
derniers suffisent pour décrire complètement la dynamique de ce système.
Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna.
La logique associée à chacun de ces deux événements peut être décrite en spécifiant
pour chacun les actions élémentaires à réaliser.
Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna.
Evénement : Arrivée_Client
Planifier ou prévoir la prochaine Arrivée ;
Si le SERVEUR est Occupé
Alors
/* on incrémente le nombre de clients en attente */
z Clients_En_Attente ← Clients_En_Attente + 1
Sinon
/*le serveur est libre, Changer son état à Occupé */
z ETAT_SERVEUR ← Occupé
z Planifier un Evénement Fin_De_Service pour
TNOW + Durée de service du client
Fin
Evénement : Fin_De_Service
z Clients_En_Attente ← Clients_En_Attente - 1
z Planifier un Evénement Fin_De_Service pour ce client
à la date : TNOW + Durée de service du client
Sinon
/* le serveur vient de finir de servir un client et */
/* il n’ y a plus de clients en attente */
z ETAT_SERVEUR ← Libre
Fin
Il faut remarquer que ce type d’événement (Fin_De_Service) est planifié chaque fois
qu’un client s’est engagé dans le service. Lorsqu’un événement de type a lieu, ceci veut
dire que le serveur était en train de servir un client et qu’il peut s’occuper d’un nouveau
client. Pour cela, on regarde si d’autres clients attendent le serveur (Clients_En_Attente
> 0). Si tel était le cas, on décrémente le compteur Clients_En_Attente ce qui
implicitement correspond à une opération d’engagement d’un nouveau client dans le
service, et on planifie un événement de type Fin_De_Service pour ce client (en fonction
de la durée de service pour ce client). Dans le cas ou il n’ y a plus de clients en attente,
on sait que lorsque un événement Fin_De_Service se produit le serveur a terminé de
servir un client. Il faut donc libérer le serveur en initialisant mettant son état à Libre
(ETAT_SERVEUR ← Libre).
Exemple :
La fin d’un service peut provoquer l’ajout d’un événement Fin_De_Service à l’agenda
dans le cas ou la file d’attente n’est pas vide et qui concerne dans ce cas le nouvel client
pris dans la file.
Ainsi, chaque événement de la liste doit comprendre au moins les deux informations
suivantes :
Des informations sur les entités impliquées par cet événement peuvent être aussi
utiles (ex : choix d’un client dans la file).
Remarques importantes
Dans le cas d’un modèle complexe (comportant plusieurs événements), la liste des
événements à gérer peut atteindre une taille énorme ce qui aura un effet direct sur le
temps d’exécution de la simulation. Pour cela, si on a à écrire le noyau, il sera important
de tenir compte du choix des structures de données et des algorithmes à utiliser pour
implémenter et exploiter le calendrier ainsi que la liste des événements courants.
Numéro Date Date Début Date Fin Service Temps Temps passé
Client Arrivée Service (4) = (3) + d’attente Dans le système
(1) (2) (3) Durée service (5) = (3) - (2) (6) = (4) - (2)
1 3.2 3.2 7.0 0.0 3.8
2 10.9 10.9 14.4 0.0 3.5
3 13.2 14.4 18.6 1.2 5.4
4 14.8 18.6 21.7 3.8 6.9
5 17.7 21.7 24.1 4.0 6.4
6 19.8 24.1 28.4 4.3 8.6
7 21.5 28.4 31.1 6.9 9.6
8 26.3 31.1 33.2 4.8 6.9
9 32.1 33.2 35.7 1.1 3.6
10 36.6 36.6 40.0 0.0 3.4
Total : 26.1 Total : 58.1
Les colonnes (1) et (2) sont celles de la table 1. la colonne (3) contenant les dates de
début de service dépend de l’état du serveur. Elle est égale à Max( Date d’Arrivée du
client , Date de fin de service du client précédent). La colonne (4) correspondant aux
dates de fin de service et est égale à (3) + Durée de service de chaque client.
D’après les totaux des colonnes (5) et (6) on peut calculer les deux mesures de
performances :
Temps moyen passé par un client dans le système : 58.1 /10 = 5.81
Cette table résume bien les informations concernant le passage d’un client dans le
système mais ne donne pas des informations sur le serveur et la file d’attente. Pour
disposer de ces informations il va falloir examiner les types d’événements qui décrivent
les changements d’état du système : (Arrivée d’un client et Départ d’un client), l’état du
serveur, l’état de la file d’attente, etc.
Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna.
événements, nous devons tenir à jour une liste d’événements qu’on exécutera aux dates
d’occurrence de ces événements. Au cours de la simulation, des événements viendront
s’ajouter à la liste, des événements supprimés de la liste (Arrivée_Client,
Fin_De_Service). Tous les événements de la liste seront exécutés selon une séquence
ordonnée sur la base des dates d’occurrence de ces événements. Le temps de la
simulation quant à lui progresse d’une date d’événement vers celle du prochain
événement.
Ces fonctionnalités étant communes à tous les modèles adoptant cette approche, les
langages de simulation qui supportent cette approche facilitent la tâche de modélisation
du fait que la gestion de la liste, son implémentation sont transparentes (SIMSCRIPT,
GASP, ).
L'état du système: défini par une collection de variables d'état décrivant l'état du
système à a un temps particulier.
L'horloge de la simulation: variable indiquant la valeur courante du temps de la
simulation.
La liste des événements: Une liste qui contient les dates d'occurrence des événement
devant avoir lieu dans le futur.
Des compteurs Variables utilisées pour collecter des informations
statistiques: statistiques sur les performances du système.
La routine d'initialisation. Sous programme servant a initialiser le modèle de simulation
au temps zéro.
Routine de Gestion du sous programme qui détermine le prochain événement a
temps (controle du temps): partir de la liste des événements et intialise l'horloge de
simulation avec le date d’occurrence de cet événement
courant.
Routines associées aux sous programme qui met à jour l'état du système quand un
événements: type particulier d'événement se produit (il y a une routine
d'événement pour chaque type d'événement).
bibliothèque de routines ensemble de sous programmes utilisés pour générer des
utilitaires: variables aléatoires identifées comme faisant partie du
modèle de simulation.
Générateur des résultats: sous programme qui calcule des éstimations (a partir des
compteurs statistiques) des mesures de performance
désirées et génère en fin de simulation un rapport.
Le programme principal: chargé d’intialiser l’état du systeme au début de la
simulation, toute les variables utilisées au cours de la
simulation. Il invoque la routine de gestion du temps pour
déterminer le prochain événement devant avoir lieu et passe
Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna.
! "
"
PLVH D MRXU (WDW V\VWHPH
PLVH D MRXU VWDWLVWLTXHV pQpUDWLRQ GH YDULDEOHV
JpQpUDWLRQ SURFKDLQV HYHQHPHQWV DOpDWRLUH V
HW DMRXWHU D OD OLVWH
# Fin
Simulation
?
$
FDOFXOHU PHVXUHV GH SHUIRUPDQFHV VRXKDLWpHV
(GLWLRQ GHV UpVXOWDWV
%
événements futurs sont générés et ces informations sont ajoutées à la liste des
événements. Souvent il sera nécessaire de générer des variables aléatoires a partir de
distributions statistiques en vue de detertniner ces dates d’occurrences.
Lorsque tout les opérations aient été complétées, aussi bien dans la routine associée a
l’événement i ou dans le programme principal, un test est fait pour déterminer
(relativement à certaines conditions d’arret) si la simulation doit être terminée. Dans un
tel cas, le générateur des résultats de la simulation est invoqué par le programme
principal pour calculer des éstimations (des compteurs statistiques) relatives aux
mesures de performances désirées et editer un rapport contenant ces resultats. Si la fin
de la simulation n'est pas atteinte, le contrôle est repassé au programme principal et le
cycle programme-principal- Gestion du temps-Routine Evenement -Controle de Fin est
répété jusqu’a ce que les conditions d'arrêt sont satisfaites.
Enfin comme il a été mentionné dans les sections précédentes, un système est une
collection bien définie d’entités. Les entités sont caractérisées par des données
appelées attributs et ces attributs font partie de l'état du système. De plus, les entités
ayant des propriétés communes sont souvent groupées, dans des listes. Pour chaque
entité il y a un elément dans la liste qui contient les attributs de l'entité, et l'ordre dans
lequel les eléments de la liste sont maintenus dépend de certaines règles qu’on peut
spécifier. Pour l’exemple de la banque les entités sont le serveur et les clients dans la
banque. Le serveur a comme attribut ‘Etat du serveur’ qui peut etre : libre ou occupé, et
les clients qui attendent dans la file ont comme attribut le ' temps d'arrivée'. Le nombre
de clients dans la file peut aussi être considéré un attribut du serveur. Les clients dans
la file peuvent etre groupés dans une liste.
Cette approche est très populaire en G.B. et est aussi connue comme l’approche à 2
phases. Elle est moins efficace et moins naturelle que l’approche par événements et n’a
pas par conséquent été très adoptée. Un seul langage de simulation (CSL : Control &
Simulation Language) adopte cette approche.
Afin de s’assurer que toutes les activités sont prises en compte, il est nécessaire de
scruter toutes les conditions à chaque progression du temps. Ainsi, avec cette approche,
on ne répertorie plus les différents types d’événements mais les différents types
d’activités possibles avec leurs conditions de début et de fin.
temps, des tests sont faits même pour les activités qui ne peuvent pas débuter ou finir.
Elle est en général réservée aux cas ou les activités ont une durée non connue à priori.
Avec cette approche, un modèle peut être représenté graphiquement à l’aide d’un
diagramme de cycles d’activités utilisant deux symboles: le rectangle représentant un
état actif (activité en cours) et le cercle représentant un état passif (attente activité
suspendue).
Exemple :
Cette approche est la plus intuitive. Elle est utilisée par beaucoup de langages de
simulation (Simula , GPSS, SIMAN, ...) et consiste en une combinaison des avantages
des deux autres approches.
Un tel modèle est exprimé grâce à des équations mettant en relation ces variable
d’état et dont les changements au cours du temps permettent de simuler la dynamique
du système modélisé.
Lorsqu’on connaît une équation pour dS /dt, il est possible de déterminer une
expression analytique pour S en passant par le calcul d’une intégrale. La valeur de S à
l’instant t2 peut d’exprimer en fonction de celle de S à l’instant t1 comme suit :
Une autre approche consiste à formuler le modèle sous forme d’équations aux
différences (et non différentielles). Le temps dans ce cas est décomposé en pas ( ∆t)
et le changement dynamique des variables d’état est exprimé par une équation
calculant la valeur d’une variable à l’étape k comme suit :
Ces trois figures représentent les changements d’état possible qu’on peut rencontrer
dans une simulation (discret , continu , combiné)
Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna.
Durant cette étape, il est suggéré qu’un ensemble d’hypothèses soit proposées,
discutées et acceptées par l’analyste et le client de l’étude. Il faut souligner qu’à ce
niveau, on n’est pas sûr d’avance que la formulation soit très juste et il est tout à fait
possible que le problème aura besoin d’être reformulé au fur et à mesure de la conduite
du projet.
Une fois le problème formulé, il faudra définir les objectifs visés par le projet de
simulation. Ceci comprend :
z Les questions auxquelles devra apporter une réponse l’étude par simulation
qu’on veut mener
z Le personnel qui sera requis
z Le matériel et logiciel informatique
z Les divers scénarios qu’on veut investiguer, les sorties attendues,
z Les coûts de l’étude ainsi que les temps requis
z etc...
Il s’agit de construire un modèle conceptuel qui est une abstraction du système réel.
Ce modèle peut être vu comme un ensemble de relations mathématiques et logiques
concernant les composants et la structure du système.
Par exemple, on commence par construire un modèle de base incluant les serveurs,
les files d’attente et les phénomènes d’arrivée. Par la suite, on peut rajouter les
phénomènes de pannes puis les possibilité de manutention ou transports à l’intérieur du
système. Enfin le modèle est enrichi par tous les capacités spécifiques.
Le client doit être impliqué tout au long du processus de construction du modèle. Ceci
augmentera la qualité du modèle obtenu et accroît la confiance du client quant à
l’utilisation du modèle.
Enfin, on doit souligner que la construction du modèle n’est pas une théorie en soi
Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna.
mais plutôt une experience qui s’acquière et se consolide sur des problèmes réels.
Une fois le problème formulé et les objectifs visés identifiés, il faudra établir un
inventaire des besoins en données sur le système réel et le soumettre au client. Dans le
meilleur des cas, le client dispose déjà des données nécessaires qu’il conserve dans le
format adéquat et que l’analyste n’aura qu’à utliser.
Cependant dans la pratique, ce cas est vraiment très rare. En effet, très souvent le
client pense disposer de toutes les données requises mais en réalité lorsque l’analyste
prendra compte de celles-ci, elles s’avéreront très différentes de celles dont il a besoin.
Exemple :
Dans un système de reservation automatique de billets, le client dit à l’analyste : ‘‘
Ne vous inquiétez pas, nous avons toutes les données que vous désirez et sur une
période de 5 ans’’. Lorsque les données furent recueillies auprès du client, il s’avère que
ces données n’étaient que des moyennes du temps mis par les clients de l’agence aux
guichets de réservation chaque année. Or l’analyste avait besoin de mesures
individuelles et non de moyennes pour mener le projet (pour déterminer les paramètres
du modèles).
6.5 Codage
6.6 Vérification
L’étape de vérification est extrêmement importante dans tout projet de simulation. Elle
concerne le modèle opérationnel (programme). Il s’agit de s’assurer que le modèle
s’exécute sans erreurs. La vérification est primordial même pour des modèles de taille
réduite car ces derniers peuvent aussi comporter des erreurs bien qu’ils soient très petits
comparés à des modèles de systèmes réels par essence complexes.
Il est vivement recommandé d’attendre jusqu’à ce que le modèle entier soit terminé
pour commencer la vérification et que celle-ci se fasse de façon continuelle.
1)
Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna.
Le modèle doit être construit de façon modulaire et selon une approche descendante.
Il est recommandé d’établir d’abord un organigramme (dans le cas où le langage
n’offre pas le symbolisme pour construire un modèle) traduisant en termes logiques
les opérations qui doivent être réalisées par le modèle avant de passer au codage.
)
C’est à dire commenter toutes les lignes du programme, expliquer le sens et l’utilité de
toutes les données utilisées dans le programme. Normalement, une personne n’ayant
pas participé au codage devrait être en mesure de comprendre ce que fait le
programme.
Le fait de contrôler le modèle par plusieurs personnes vise à augmenter les chances
de déceler toutes les erreurs. En général, on utilise des techniques inspirées de celles
utilisées dans le test de logiciel (Inspection de code) fondées sur un travail de groupe
dont les membres sont :
Ces personnes organisent des réunions de travail au cours desquelles le M.C. est
discuté, le programme aussi. Les erreurs detectées sont documentées corrigées, et le
processu reprend jusqu’à eradication de toutes les erreurs.
Si par exemple le temps est exprimé en minutes, toutes les variables de type temps
(temps d’arrivée, durée de service, temps d’attente, etc...) doivent être exprimées
dans la même unité (et non en secondes, heures, etc..).
Si par exemple on s’aperçoit que le nombre d’entités dans une file d’attente est de
100 alors qu’on devait avoir au plus 10, il y a sûrement un problème. Ceci peut par
exemple provenir du fait que la file d’attente est associée normalement à une
ressource ou serveur ayant une capacité de deux unités (2 serveurs en parallèle)
alors que dans le modèle, cette ressource a été modélisée comme ayant une capacité
d’une seule unité.
Certains langages de simulation offre des outils de mise au point (ex: SIMAN) qui
facilitent beaucoup la vérification du modèle. Ils permettent de scruter la valeur de
n’importe quelle variable, de poser des points d’interruption, etc.
6.7 Validation
T Faire une Collecte des données sur les temps séparant les arrivées de
clients.
Exemple :
Exemple :
Les données historiques contiennent les temps séparant les arrivées de clients
(TBC) et les durées de service (TSRV) pour 5 journées. Si on désigne par Wi le
temps d’attente dans la file observé au cours de la journée i, On peut faire une
simulation en utilisant les valeurs historiques de TBCi et TSRVi (journée i) afin
d’obtenir le temps d’attente moyen dans la file Yi. La validation de ce résultat va
consister à determiner si H0 : E[Di] = 0 (ou Di = Wi - Yi) est accpetable ou non. Ceci
va demander à conduire des test d’hypothèse (Student, snédecor, Chi-deux, ...)
comme indiqué plus haut.
• Durée de la simulation
Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna.
6.11 Documentation
Si le projet à été réalisé pour un client, ce dernier est plus confiant s’il dispose
d’une documentation sur le projet. En effet, il aura la possibilité de revoir toutes les
alternatives prises en considération, les critères de comparaisons qui ont été utilisés,
les recommandations faites par l’analyste. Ceci va l’aider énormément dans la prise
de décision qui sera principalement basée sur les résultats fournis par la simulation et
rapportés dans la documentation.
6.12 Implémentation
Une méthode qui est fréquemment utilisée pour réduire tout biais (ou effet) dans
l’estimation de la moyenne à l’état stationnaire qui pourrait résulter de l’état initial ou
des conditions initiales est de retarder la collecte des statistiques jusqu’à ce que le
système se trouve dans un état de mise en train (Warm up, Mise en train, régime de
croisière)
Ceci est fait simplement en précisant le temps avant lequel les valeurs des
données ne sont pas inclues dans les estimations statistiques. L’objectif est de
réduire le biais (l’effet) des conditions initiales sur les estimations en éliminant les
valeurs collectées durant la période transitoire.
Il s’agit de trouver un compromis entre faire une simulation sur une longue
période de temps ou faire plusieurs simulations de courtes durées.
Une méthode similaire est de spécifier non pas le nombre d’entités à injecter
dans le système mais le nombre d’entités à traiter (quittent le système). Dans ce cas,
la simulation s’exécute jusqu’à ce que le nombre spécifié soit complètement traité.
Lorsque la simulation s’arrête, le système n’est pas nécessairement dans un état
Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna.
‘‘Vide et Libre’’. Lorsqu’on utilise cette méthode, on doit s’assurer que les entités qui
restent dans le système sont représentatives d’un phénomène (ex: durée de service
longue par rapport à celles traitées). Cette méthode n’est généralement pas
appropriée pour certaines politiques de gestion. Si par exemple la politique est de
traiter en priorité les entités nécessitant le moins de temps, on aura en fin de
simulation uniquement des entités ayant des temps opératoires grands qui restent
dans les files d’attente.
Une autre méthode pour contrôler la durée d’une simulation est d’utiliser des
règles de terminaison automatiques. Il s’agit de contrôler dynamiquement les résultats
de la simulation à des instants précis durant l’exécution. La simulation sera arrêtée
dès que l’estimation de la variance est dans un intervalle admissible (détermine un
intervalle de confiance).
Les données d’un modèle de simulation sont pour la plupart des variables
aléatoires dont les distributions de probabilités devront être déterminées. Ceci
dépendra de trois facteurs :
Une variable peut être supposée deterministe (ou constante). Sa valeur sera
obtenue par exemple en faisant une moyenne des données historiques Elle peut
aussi une simple estimation suite à des observations du système.
Ceci peut poser des problèmes si le modèle comporte des variables aléatoires
(stochastique) car le fait de na pas tenir compte du caractère aléatoire d’une variable
risque d’invalider les résultats de la simulation.
Lorsque le volume des données n’est pas suffisant (réduit), les méthodes
d’ajustement bien qu’applicables posent des problèmes à cause les tests
d’adéquation ne sont malheureusement pas adaptés aux cas où le nombre de
données est réduit.
Une méthode de test d’adéquation parmi les plus utilisées est celle du Chi-
Deux qui consistent à comparer les valeurs observées et espérées. Si selon une
formule précise et à comparer le résultat à une valeur de référence (table du Chi-
deux). Si le test échoue, ceci signifie que la distribution n’est probablement pas la
bonne et dans ce cas, il faudra reprendre à partir de la première étape.
Exemple: si le temps de réparation d'une machine après une panne (qu'on notera
X), pour les 100 occurrences de panne qui se sont produites est
donnée par la table suivante :
/* Par exemple, pour la première ligne, cela signifie que 27 occurrences de pannes ont
nécessité un temps de réparation x compris entre 0 et 1 heure */
Dans ce cas, une possibilité pour surpasser dans un premier temps ce handicap
est de faire des estimations subjectives concernant les données du système.
Ex : Si on estime qu’une machine met entre 3 et 8mn pour usiner une pièce,
on peut supposer grossièrement que le temps d’usinage suit une loi uniforme ayant
pour valeur minimale 3mn et pour valeur maximale 8mn. Cette loi appelée aussi ‘‘loi
du maximum d’ignorance’’ suppose que toutes les valeurs entre 3 et 8 mn sont
équiprobables.
Si on pouvait determiner parmi l’ensemble des valeurs équiprobables celle qui est
la plus équiprobable, alors on peut améliorer l’estimation. Par exemple, la machine
met entre 3 et 8mn pour usiner une pièce, mais ce temps est souvent de 5mn. Cette
Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna.
affirmation permet d’utiliser non pas une loi uniforme mais une loi triangulaire ayant
un paramètre en plus qui est le mode (la valeur la plus probable) égal à 5mn.
Les estimations subjectives ne constitutent pas une fin en soi. Lorsque les
données deviennent disponibles, ou assez suffisantes, il faudra obligatoirement
procéder à une mise à jour des distributions et de leurs paramètres.
L’analyse des résultats d’une simulation commence d’abord par la selection des
mesures de performance qu’on veut analyser. Ces mesures peuvent représenter un
temps : Time persistent (temps passé dans une file, temps de séjour dans le
système), obtenues par un comptage d’occurrences (nombre d’entités dans une file,
etc.), ou obtenues suite à une représenation tabulaire de valeurs statistiques
(moyennes, variances, etc...).
Dans une système qui se termine, la durée de la simulation est fixe. Elle peut être
spécifiée en indiquant le temps pendant on conduit la simulation, ou en spécifiant le
nombre d’entités à taiter par le système ou à injecter dans le système et qui définit
alors la condition d’arrêt de la simulation.
Exemple :
Exemple :
- Condure n simulations
- Calculer un intervalle de confiance pour ce nombre moyen en utilisant les
résultats des n simulations
- Si l’intervalle est trop large, on determine le nombre de simulation
supplémentaires à faire et on recommence les étapes précédentes en tenant
compte de toutes les observations et ce jusqu’à ce que l’intervalle devienne
accpetable.
Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna.
Dans une système qui ne se termine pas, la durée de la simulation n’est pas
finie puisque le système est en perpetuelle activité. Un bon exemple de ce type
système est celui d’une unité de production qui est exploité 24h sur 24 (régime 3x 8
heures) et 7 jours sur 7. Certains systèmes ne peuvent pas être arrétés à cause de la
matière traitée qui coute cher et risque de devenir inutilisable (fonderie). Tout arrêt
peut engendrer de la perte d’argent et ungrand retard pour remettre le système en
route.
Cette méthode vise à faire une simulation de très longue durée de sorte
que les conditions initiales n’aient q’un effet miniscule sur les résultats. Le problème
qui se pose est que cela peut demander un temps d’exécution énorme alors que
l’effet (le biais) des conditions initiales existera toujours même s’il est minime.
Il s’agit de faire en sorte que les conditions initiales soient celles de l’état
stationnaire. Elle consiste à charger les files d’attentes et les ressources avec des
entités. Ceci necessite de savoir comment se présente le système lorsqu’il atteint
l’état stationnaire. On peut soit faire des observations sur le système soit conduire des
simulations d’essais et voir graphiquement l’allure du système lorsqu’il atteint un
stationnaire. Cette méthode se complique pour les systèmes complexes ou en phase
de conception.
8 CONCLUSION
D’un point de vue externe, on a souvent tendance à voire en l’ingénieur ou l’analyste
le seul acteur d’un projet de simulation surtout si celui-ci maîtrise bien le logiciel de
simulation qui lui sert de support pour la programmation du modèle. D’un autre coté, Il est
communément reconnu que pour pouvoir utiliser correctement et intelligemment des
méthodes de simulation, il faut disposer de connaissances plus ou moins solides dans des
domaines variés (Probabilités et Statistiques , Modélisation, Programmation, etc.).
Malheureusement, il est souvent rare pour ne pas dire impossible qu’un individu seul puisse
à lui seul disposer de toutes les connaissances requises pour pouvoir mener seul un projet
de simulation. Tout projet de simulation implique donc de près ou de loin un groupe de
personnes (structuré ou non en équipe) chacune jouant un ou plusieurs rôles dans le projet.
Par conséquent, un projet de simulation quelle que soit son envergure, ne peut et ne pourra
jamais être considéré comme l’oeuvre d’une personne isolée et ce même si les attributions
de rôle dans le projet ne sont pas faites de manière explicite.
D’autre part, la simulation en tant que méthode nécessite la constrution d’un modèle
du systeme qu’on veut analyser. Pour pouvoir faire des expérimentations sur ordinateur
avec ce modèle, il va falloir le programmer en utilisant un langage. On trouve aujourd’hui
sur le marché une multitude de langages (ou logiciels ) de simulation plus sophistiqués les
uns que les autres notamment les versions sur P.C. ou station de travail. Certaines sociétés
de développement vont même jusqu’à proposer toute une gamme de produits dont chacun
est orienté vers un domaine d’application précis (FMS, AGV, etc.). C’est le cas par exemple
de la société Pritsker & Associates qui commercialise SLAM II, TESS, MAP/1,
FACTOR/AIM, SLAMSYSTEM, pour ne citer que ceux là.
Le prochain chapitre sera donc dédié a une présentation des outils de simulation.
Nous nous limiterons aux seuls langages que nous estimons intéressants a connaitre dans
le cadre de ce cours.
Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna.
1(&(66,7(
Quelle que soit la signification donnée au mot simulation, quelle que soit la conception
qu'on a de la simulation, quel que soit l'usage qu'on en fait, il est toujours nécessaire de
construire un modèle de la réalité qu'on pourra ainsi simuler. II va donc se poser le
problème de la programmation du modèle pour un calculateur donné.
Enfin l'analyse d'un grand nombre de modèles de simulation a permis de remarquer que,
sous leur apparente diversité, on retrouvait les memes concepts et qu'il etait donc possible
de degager une methode generale, une philosophie des modèles de simulation. Il devenait
donc nécessaire de créer des langages permettant de decrire et d’utiliser commodement
les quantités et les relations caracterisant les modèles de simulation de telle sorte que cette
description terminée, il soit possible de la traduire aisement pour obtenir un modèle
entierement programmé sur un type d'ordinateur. C'est pour repondre a cette double
question qu'ont été crées les langages de simulation.
'(),1,7,21
On entend par outils de simulation les constituants d'un système, appelé généralement
système de simulation, qui foumit les moyens de mettre en oeuvre, d’animer et d'observer
les modèles, de la meme façon que le système d’exploitation d'un ordinateur foumit les
moyens de mettre en oeuvre et d’executer les programmes.
D'un point de vue exteme, le principal constituant d’un système de simulation est le
langage de simulation, qui permet de decrire le modèle et les stimuli a lui appliquer au
cours du déroulement de la simulation. Typiquement, un tel langage est obtenu en
ajoutant à un langage évolué à usage général (FORTRAN, PASCAL, ALGOL, etc ... ) les
structures de données et les primitives qui facilitent la description des modèles
dynamiques. L'aspect dynamique qui caractérise les modèles de simulation est traduit par
la description des conditions de synchronisation entre processus, la quantification de la
durée des traitements et la datation des occurrences d’événements externes. Bien
entendu, les dates et les durées font référence à une horloge simulée, qui est gérée par le
système de simulation.
Un système de simulation est aussi connu dans la littérature sous diverses appellations
telles que, logiciel de simulation, langage de simulation, simulateur, outil de simulation, etc..
. Afin de lever toute ambiguïté dans la suite, nous utiliserons indifféremment l'une
quelconque de ces appellations pour désigner un système de simulation tel qu'il a été
défini plus haut.
Dans le domaine des outils de simulation, les efforts de développement ont porté sur deux
points :
- réduction des difficultés de conception des modèles par adaptation plus fine
des concepts aux applications;
Ils se traduisent par l'évolution chronologique suivante dans l'utilisation des outils de
programmation des modèles de simulation :
+LVWRULTXH
Décennie 1960-1970
C'est pendant cette période qu'apparaissent les premiers outils de simulation. Les deux
outils les plus répandus sont alors SIMSCRIPT et GPSS qui peut être considéré comme le
premier véritable langage de simulation. En parallèle se développe SIMULA, écrit à partir
du langage ALGOL, dont l'intérêt principal fût d'introduire de façon générale l'approche par
processus grâce à des notions, nouvelles à l'époque, de structuration de données et de
processus associés. Tous les principes de base de la simulation sont ainsi établis dès la
fin de cette période.
Décennie 1970-1980
Ainsi apparaissent SLAM (issu de GASP et QGERT), puis SIMAN, orienté vers les
systèmes de production et, en France, QNAP2, plus orienté, à son origine, vers les
Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna.
systèmes informatiques.
GPSS et SIMSCRIPT retrouvent une deuxième jeunesse ; GPSS par une refonte
complète (nécessitée par les ajouts successifs depuis sa création) et l'adjonction de
nouvelles primitives, et SIMSCRIPT par l'introduction de la notion de processus (depuis la
version II.5).
Presque tous les langages prennent alors le virage de la micro-informatique et
proposent des versions sur compatibles PC.
Evolution actuelle
On constate actuellement une évolution très nette vers une plus grande convivialité des
outils de simulation par l'amélioration de l'environnement de travail offert (versions micro,
peu onéreuses, avec aides graphiques, environnements de haut de gamme comme TESS
et CINEMA) et la multiplication des simulateurs spécialisés, qui combinent un
environnement très convivial avec une paramétrisation des systèmes à simuler qui les
rendent directement utilisables après un minimum d'apprentissage.
On peut signaler aussi une nouvelle classe d'outils de simulation, utilisant les langages
orientés objet , et donc l'approche objet, prolongement direct des notions qui ont été
introduites par SIMULA.
Cette approche permet de concilier les avantages des différents outils, grâce à une
base de modèles directement utilisables, des objets directement paramétrables
(instanciation) ou enrichissables, et la possibilité de créer de nouveaux objets quand la
base de modèles est insuffisante.
Les premiers langages de simulation ont vu le jour vers 1960, et étaient plus orientés
vers la représentation et la simulation des systèmes discontinus (à événements discrets).
Ils permettent de programmer des modèles sous-tendus par des concepts indépendants
des domaines d'application. Cette universalité ne peut se faire qu'à travers des fonctions
abstraites de type ressources, files d'attente, entités, etc. Parmi les langages constituant
les références et les racines des langages actuels et ayant profondément marqué le
domaine de la simulation on peut citer : GPSS, SIMSCRIPT, SIMULA, GASP, Q-GERT.
Le tableau suivant permet de regrouper les simulateurs généraux les plus connus :
Nous donnons ci-après un bref aperçu sur les langages qui nous paraissent les plus
importants compte tenu de leur usage.
é
é é
GPSS(General Purpose Simulation System) est un langage offrant une approche orientée
processus. Il a été developpé intialement chez IBM en 1961, puis plusieurs versions ont vu
le jour dont la plus récente disponible chez IBM est GPSS/V. La notoriété de la société
IBM dans le domaine de l'industrie informatique a fait que GPSS soit un langage très
populaire (surtout entre 1960 et 1970) et enseigné dans beaucoup d'universités.
GPSS est un des précurseur de l'approche de modélisation par "processus " et possède un
support graphique de représentation comme la plupart des langages actuels. Un modèle
est construit à l'aide de blocs élémentaires représentant des fonctions spécifiques
(génération d'entités, entrée ou sortie dans une file d'attente, allocation ou libération de
ressource, marquage du temps quand une entité passe, etc ... ). La première version
comprenait environ 25 blocs de base alors qu'on trouve nettement plus dans les versions
actuelles. Dans GPSS, les clients ou entités qui necessitent un service a l'interieure du
système modelisé sont appelées des transactions et leurs attributs sont appelés des
paramètrès. Les serveurs ou ressources qui fournissent le service exigées par les
transactions sont appelées des Facility (ou installations) correspondant à un serveur
unique ou Storages (Stockages), correspondant a un groupe de serveurs en parallele.
De multiples améliorations ont été apportées à GPSS qui est aujourd'hui disponible sur une
variété importante de calculateurs
GPSS/H a été développé en 1977 et commecialisé par la société Wolverine
Software(Annandale, Virginia). C'est un langage compilé offrant beaucoup d'avantages
par rapport a la version GPSS/V d'IBM (temps d'execution plus rapide, possibilités de lire et
écrire des fichiers externes, la production de rapports détaillés et pesonnalisés,
instructions de contrôle plus évoluées telles que la boucle Do, le IF-THEN-ELSE, une
panoplie de fonctions mathématiques,etc.). A cause de toutes ces capacités, la plupart
des modèles GPSS/H n'exigent pas l'ecriture de routines externes (dans FORTRAN ou
Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna.
H[HPSOH
La modélisiation de l'exemple de la banque (voire chapitre 1) avec GPSS est representé
par le diagramme a blocs suivant :
*(1(5$7(
59(;32
1/9(4
/ 6723
7(67
$'9$1&(
59(;32
6723 6(59(5
5(/($6(
7(50,1$7(
Exemple de Modèle en GPSS
creation -Injection des entités dans le
système
entrée dans la file d’attente
demande d’allocation du serveur
sortie de la la file d’attente
" Test si l’execution est arrivée a sa fin
#
occuper le serveur pendant t = durée de
service
libérer le serveur
entité quitte le système
$%&'()&*+$% ,- #+$&'+.-
faire 1 seule simulation qui dure 1000 unités
L'instruction
(ligne 4 du programme ) est une instruction de contrôle nécessaire
pour l'exécution du programme. L'instruction
(ligne 5) a pour role de générer des
transactions représentant des clients selon une loi exponentielle (RVEXPO) avec un temps
séparant les arrivées de moyenne 1.0 et utilisant le germe 1 pour le générateur de nombre
aléatoires. L'instruction (ligne 7) et L'instruction
(ligne 11), définissent une
facility appelé SERVER, correspondent au schéma d'allocation et de libération d'une
ressource nommée SERVER par une transaction. Les transactions qui arrivent quand le
serveur est occupé rejoignent une file qui est définie par GPSS automatiquement. La durée
du service d'une transaction est dans ce cas obtenu a partir d'une distribution
exponentielle avec une moyenne de 0.5 en utilisant le germe 2 pour le generateur de
nombres aleatoires. Cette durée est reellement consommée a l'instruction
# (ligne
10). La transaction est détruite (ou ejectée du système) au bloc
(ligne 12).
L'instruction ( ligne 6) et le
(ligne 8) sont utilisées pour collecter des statistiques
sur les transactions qui attendent dans la file (appelée SERVERQ) devant la ressource
SERVER. L'instruction (ligne 9) est utilisé pour déterminer quand l'execution de la
simulation doit se terminer. Si le nombre de transactions, N$LVEQ qui ont traversé le bloc
étiqueté LVEQ (ou ont quitté la file d'attente) est inferieur a 1000, la transaction
sortant de ce bloc poursuit son chemin vers le bloc
# autrement elle est dirigée au
bloc (instruction)
etiqueté STOP dans lequel le serveur est libéré. Chacune des
1000 transactions qui entrent le bloc
decremente un compteur de 1. Du fait que
le compteur pour la terminaison de la simulation a été initialisé à 1000 par l'instruction de
contrôle
(ligne 16), son passage a la valeur 0 entraine la fin de la simulation.
Les résultats standard produits par GPSS / H pour cet exemple auront l'allure suivante .
Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna.
! "
" " " "#$ $ $
48(8( 0$;,080 $9(5$*( 727$/ =(52 3(5&(17 $9(5$*( $9(5$*( 47$%/( &855(17
&217(176 &217(176 (175,(6 (175,(6 =(526 7,0(81,7 7,0(81,7 180%(5 &217(176
On peut noter que le délai d'attente moyen est 0.614 (voire " "# " pour la file
SERVERQ). De meme, le nombre moyen dans la file (voire " " pour la file
SERVERQ) est de 0.605 et l'utilisation du serveur (voire " "" pour la ressource
SERVER ) est de 0.516. Les statistiques sur l'utilisation du serveur sont fournies
automatiquement quand une ressource de type facility (comme ici SERVER) est definie
par les blocs SEIZE et RELEASE. Les autrès statistiques résultent de l'usage des blocs
QUEUE et DEPART.
GPSS/PC est une version PC de GPSS . Il a été développé en 1984 et est connercialisé
par la societé Minuteman Software (Rangez, Massachusetts). Il offre plusieurs possibilités
pour la mise au point, la detection en ligne des erreurs dans le modèle, et la capacité de
voir les transactions se déplacer à travers le diagramme a bloc a l'ecran. GPSS/PC n'est
pas un compilateur, tout changement fait au modèle est directement pris en compte sans
attendre de recornpilation. Il offre aussi differentes representations graphiques pour les
facility (installation), les storages(stockages), et des histogrammes qui seront mis à jour
dynamiquement durant l'exécution de la simulation. Il offre en standard une animation a
base de caracteres (la plus simple) et offre en option une animation graphique en trois
dimensions Cependant GPSS/PC n'est pas aussi riche que GPSS/H et il sera souvent
nécessaire de recourir a l’ecriture de routines soi-meme dans un langage hote comme
Fortran pour modeliser tout ce qui ne peut pas ou est difficilement modelisable avec
Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna.
Enfin, signalons que GPSS est un langage encore largement utilisé et son évolution le rend
incontestablement très proche des langages tels que SLAM ou SIMAN.
SLAM II (Simulation Language for Alternative Modeling) est une langage de simulaion
qui a été développé par Dennis Pegden et Alan Pritsker en 1979 et est distribué par la
société Pritsker Corporation(Indianapolis, Indiana).
SLAM offre un support graphique de modélisation dont les symboles sont des noeuds
et des arcs. Les principaux éléments de modélisation sont les Entités (munies d'attributs),
les files d'attente (ou queue), et les ressources. Un modèle à événements discrets peut
être structuré sous forme d'un réseau dans lequel circulent les entités (pièces, clients,
informations, etc ... ). Les noeuds sont utilisés pour modéliser des processus (ex - files
d'attente, serveurs, etc ... ) ou des points de décision (aiguillage, choix entre plusieurs
ressources, etc ... ). Les arcs définissent sur le réseau les chemins possibles pour les
Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna.
entités et permettent de fixer des temps de transit. Le réseau sera traduit sous forme d'une
suite d'instructions du langage SLAM (à chaque symbole graphique est associée une
instruction ou "primitive" du langage)
Enfin, il existe aussi une extension de SLAMII permettant de simuler des systèmes de
Manutention (convoyeur, AGV,...)
une instruction stipule que l'auteur accepte les valeurs par défauts des paramètrès
respectifs. La directive spécifie que le modèle contiendra 1 file d'attente, un
maximum de 1 attribut par entité, et qu'on peut avoir au maximum 100 entités présentes
dans le modèle simultanèment . Les instructions
et dans les lignes 4 et 17
indiquent le début et la fin du modèle (réseau).
La directive # $ dans la ligne 6 permet de définir une ressource appelé SERVER
ayant une capacité de 1 unité (spécifié entre parenthèses). Le second "1" indique que
lorsque le SERVEUR est libre, il servira le premier client de la file d'attente 1. Les lignes qui
commencent avec les point-virgules sont des lignes de commentaire. Le noeud $
(ligne 8) permet de créer de nouveaux clients dans le système avec un temps séparant les
arrivées suivant une distribution exponentielle (EXPON) de moyenne 1.0 et dont les valeurs
seront générées aléatoirement en utilisant le germe 1 pour le générateur de nombres
aléatoires. Le premier 1 après la parenthèse de droite précise que le premier temps
séparant les arrivées sera de 1 exactement. ( CREATE impose que le premier temps
séparant les arrivées soit fixe et non une variable aléatoire) Le 1 suivant permet de
mémoriser le temps d'arrivée de chaque entité dans l'attribut 1 de l'entité. Le noeud
(ligne 9) correspond a une mise en attente pour le SERVEUR. Si un client arrive et que le
SERVEUR est disponible, le client occupe le serveur immédiatement et le cheminement
dans le réseau se poursuit (passage à la prochaine ligne du programme). Dans le cas
contraire, le client est placé en dernier dans la file d'attente (FIFO par défaut). Le noeud
$ $ (ligne 10) calcule et enregistre le temps d'attente dans la file pour chaque client ; ce
temps étant égal au temps courant moins le temps d'arrivée du client se trouvant dans
l'attribut 1 de ce client. Le 2 à la fin de la ligne 10 permet de créer une copie de l'entité,
avec un exemplaire de l'entité qui sera dirigé vers la ligne 11 et l'autre vers la ligne 12.
L'entité arrivant a la ligne 11 correspond au client réel qui se déplace dans le système. La
branche $%, (ligne 11) permet de spécifer la consommation du temps correspondant a
la durée de service du client. Ce temps suit une distribution exponentielle avec une
moyenne de 0.5 et qui est générée aléatoirment en utilisant le germe numéro 2. Quand le
client termine son service, il est dirigé vers l'instruction ayant l'étiquette DONE (ligne 13). A
ce niveau, le noeud . permet au client de libérer le serveur et de passer a la ligne 14
pour sortir du système (terminaison). S'il y a des clients dans la file d'attente, le premier est
extrait de la file et occupe le serveur a la ligne 9, etc.
Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna.
L'entité fictive (copie) qui a été acheminé vers la ligne 12 est utilisé pour terminer la
simulation de manière appropriée. Elle est envoyé immédiatement au noeud TERMINATE
de la ligne 16 (étiqueté CNTR) qui incrémente de 1 le compteur. Quand ce compteur
atteint 1000, la simulation se termine.
),/( 67$7,67,&6
5(6285&( 67$7,67,&6
5(6285&( 5(6285&( &855(17 $9(5$*( 67$1'$5' 0$;,080 &855(17
180%(5 /$%(/ &$3$&,7< 87,/ '(9,$7,21 87,/ 87,/
1 SERVER 1 .55 .497 1 1
SIMAN (SIMulation ANalysis) a été développé par Dennis Pegden en 1982 et est
distribué par la société Systems Modeling Corporation (Sewickley, Pennsylvania) . Il peut
être considéré comme un descendant de SLAM, puisque non seulement son auteur a
participé au développement de la première version de SLAM, mais encore il adopte la
même philosophie que SLAM pour la modélisation d'un système (mêmes approches,
Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna.
mêmes principes d'interaction entre elles...). C'est un langage de simulation offrant les
deux approches de modélisation : 'orientée processus', et 'orientée événement', ou une
combinaison des deux. Dans la plupart des applications, le modèle de simulation est
développé en utilisant l'approche orientée processus. Dans le cas ou cette approche ne
suffit pas ou ne permet pas de modéliser toute la logique du système a modéliser, on peut
la combiner avec les possibilités offertes par l'approche par événement.
SIMAN a été dès son appartition largement adopté comme langage de simulation car il
fut le premier langage a être disponible en version micro-ordinateur mais aussi à cause de
primitives plus spécialement orientées systèmes de production qu’il offre. Ces primitives
permettent de définir des stations ou postes de travail, des réseaux de manutention par
convoyeur ou chariot, des gammes de fabrication, des horaires d'occupation des
ressources, etc... . Il permet aussi de définir des "sous-modèles" et de les réutiliser ce qui
permet d'éviter de dupliquer des instructions lorsque plusieurs processus de structures
identiques sont présents dans le système. Le système CINEMA développé autour de
SIMAN et dédié a la production d'animation graphique de modèle SIMAN a donné encore
plus d'atouts a SIMAN. La version la plus récente du langage est SIMAN V. Actuellement
c'est un environnement appelé ARENA intégrant les possibilité de SIMAN et de CINEMA
qui est le plus diffusé par la société.
Avec SIMAN un modèle de simulation construit selon l'approche par processus est
composé de deux parties distinctes : le modèle lui-meme (suite de macro-instuctions
SIMAN) et le cadre d'expérimentation (experimantal frame , contenant les paramètres du
modèle) qui sont stockés dans deux fichiers distincts.
Pour la modélisation selon l'approche "processus", un modèle est structuré sous forme
d'un d'un "diagramme à blocs" inspiré en grande partie de GPSS. Un diagramme est une
séquence linéaire de blocs, disposés de haut en bas à travers lequel passent les entités ;
chaque bloc représentant une fonction (création d'entités, suspension d'une activité, choix
entre plusieurs ressources...), certains pouvant représenter plusieurs. Chaque bloc est
représenté par un symbole graphique, donnant ainsi un diagramme ayant l'allure d'un
organigramme. Ce diagramme sera ensuite traduit en un programme ou a chaque symbole
du diagramme correspondra une instruction de SIMAN.
SIMAN existe en différentes versions tournant chacune sur une classe de matériel
précise (micro, station de travail, grosse machine). Cependant, avec la version PC, il est
Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna.
%(*,1
&5($7( (;(;0$5. générer des arrivées de clients
48(8( attente du serveur
6(,=( 6(59(5 demande d’allocation du serveur
7$//< ,17 enregistrer le temps d’attente dans la file
&2817 comptabiliser le nombre d’attentes
'(/$< (; occuper le serveur pendant une durée
5(/($6( 6(59(5 ',6326( libérer le serveur et quitter le système
(1'
Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna.
(les numéros de lignes ont été introduits pour faciliter l’explication du programme et ne
font donc pas partie du programme) Le bloc (ligne 2) permet de générer de
nouveaux clients dans le système avec un temps séparant les arrivées qui suit une loi
exponentiel EX(1,1) ou le le premier "1" indique que le temps moyen séparant les arrivées
(paramètre de la loi exponentielle : moyenne) est donné par le groupe de paramètrès
numéro 1 dans le cadre d’expérimenation (sa valeur est de "1.0" et se trouve a la ligne 5 du
cadre d’expérimenation dans Fig. 3.8). Le second "1" de EX(1,1) indique le germe
(Stream) a utiliser par le générateur de nombres aléatoires. Le modificateur a pour
role de stocker le temps d'arrivée d'un client dans l’attribut numéro 1 de ce client pour un
usage ultérieur.
!
" #
$ #"
%
&
'
! #
des statistiques telle que le nombre moyen et maximum dans la file d’attente 1 : et
pour le temps moyen d'occupation de la ressource 1 : ces fonctions sont designées
comme la variable
1 et la variable
2, respectivement. Donc, par exemple, la
variable 2 correspondra a l'utilisation du serveur (
). L'élément
(ligne 11)
spécifie qu’il y aura une seule exécution de la simulation a faire. Une forme plus générale
de cette instruction peut être utilisée pour spécifier plusieurs exécutions, une durée de la
simulation, et une période pour la mise en train du système (warmup période).
1 of 1
!"# EXEMPLE
$# *******
# 7/12/1999
%% & .9783E+03
$$
& $
---------------------
-------------
%&'& &&
----------------------------------------------
1 CUSTOMER DELAYS 1000 1000
Les résultats de la simulation sont donnés dans Fig. 3.9. On note que le délai moyen
passé dans la file d’attente est de : 0.49558 (voire "
$$
& $"). De même , le nombre
moyen dans la file et le temps moyen d’utilisation du serveur (calculé par l'élément DSTAT)
sont 0.50658 et 0.51872 respectivement (voire "&" ,)
& $").
On remarque que les résultats statistiques différent entre GPSS/H et SIMAN. Ceci est
dû au fait que les deux langages utilisent des générateurs de nombres aléatoires
différents. Cette remarque permet de souligner l'importance qu’il faudra accorder a
l’analyse des résultats dans tout projet de simulation.
#02,76:08
Comme on peut le constater d'après le tableau de la figure 1, la majorité des langages
sont issus de "l'école américaine". La concurrence qui existent au sein de cette même
Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna.
famille (notamment entre SLAM et SIMAN) conduit à une perpétuelle évolution des
langages. Aujourd'hui, tous ces langages offrent pratiquement plusieurs approches de
modélisation (processus, événement, continue) avec possibilité de les combiner dans un
même modèle.
Enfin, nous devons souligner que bien que le langage SIMULA connaît à l'heure actuelle
un regain d'intérêt, il reste peu utilisé dans le domaine de la simulation. En effet, SIMULA
doit être vu avant tout comme un langage général de programmation permettant en plus de
traiter des problèmes de simulation. Avec SIMULA I qui est la version initiale du langage
(extension du langage ALGOL 60), un modèle de simulation est défini avec des clients et
des serveurs engagés dans des activités qui sont des procédures ALGOL avec allocation
dynamique de mémoire. L'évolution vers SIMULA-67 est caractérisée par l'apparition des
concepts de classes et d'objets, ce qui fait de ce langage le pionnier des langages orientés
objets. Il n'a pas connu à l'époque le succès qu'il aurait mérité mais a eu une influence
considérable sur la programmation objet.
Les concepts qu'ils véhiculent sont très éloignés des préoccupations des utilisateurs
cibles (concepteurs de système de production, exploitants, etc ... ). Ils nécessitent une
formation particulière, un certain potentiel d'abstraction, voire dans certains cas
l'intervention de consultants spécialistes en simulation.
Leur intérêt pratique est justifié par le fait que les utilisateurs cibles du logiciel sont pour
la plupart spécialisés dans une technique (ou un groupe de techniques), telle que la
manutention, les cellules d'assemblage, etc.... mais ne sont pas particulièrement formés
aux langages de simulation généraux. Il serait donc plus utile de travailler avec un outil qui
recouvre une famille de problèmes, plutôt que de rebâtir à chaque fois un modèle à partir
de primitives générales abstraites.
Fig 2-2: Modélisation d'un aiguillage divergent avec simulateur général et simulateur
spécialisé (d’apres Cernault 88)
Il faut cependant souligner que ce type de simulateur est fermé. L’utilisateur ne peut
Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna.
utiliser que les régles d'ordonnancement et les régles de pilotage présentes dans le
simulateur. Il ne peut en créer d’autrès. De plus, aucun simulateur spécialisé ne peut
prétendre modéliser et simuler tous les types de systèmes de production dans leur grande
variété. De ce fait un bon simulateur spécialisé doit donc être le résultat d'une synthèse de
nombreux cas de systèmes réels de façon à contenir les régles principales de gestion et de
pilotage du domaine.
/
RIIUH HQ VLPXODWHXUV VSpFLDOLVpV
INRIA/SIMULOG - France Ateliers Flexibles
RAMSES Automation - France Ateliers Flexibles
Il faut aussi préciser que des langages généraux tel que SLAM ou SIMAN possèdent
des extensions orientées vers les systèmes de production, offrant en plus des primitives
d'usage général, des primitives pour représenter des réseaux de convoyage, des gammes
opératoires, etc... . Enfin certains simulateurs spécialisés sont couplables à des langages
généraux, ce qui permet de réaliser des modèles tirant à la fois des avantages des deux
types d'approches.
D'autre part, il faut noter qu'il existe plusieurs autres langages ou progiciels . On peut
mentionner par exemple MODSIM II et SIM++ qui sont deux langages basés sur une
approche orientée objet encourageant la reutilisation du logiciel et peuvent meme
s'executer sur des plateformes multi-processeurs d'ou la possibilité de paralleliser
l'execution d'un modèle de simulation . De meme qu'il existe de nombreux progiciels de
simulation qui ont été développés spécifiquement pour le domaine industriel. Des exemples
sont : AutoMod II, ProModel, SIMFACTORY ,WITNESS, et XCELL+.
NETWORK II.5 est un simulateur dédié pour les systèmes informatique en général et plus
particulièrement adapté pour la modélisation des réseaux locaux de communication (Local
Area Networks). Les blocs de bases offerts pour construire un modèle sont les unités de
traitements (par exemple, un CPU), les unités de transfert de données (par exemple, un
bus), les unités de stockage (exemple, une unité de disques), et les modules logiciel.
COMNET II.5, est aussi un simulateur dédié pour les réseaux de télécommunication
larges(Wide Area Networks). Les blocs de bases offerts pour construire un modèle sont la
topologie du réseau (noeuds avec leurs connexions), le traffic dans le réseau (source,
destination, et taille des messages), et les opérations dans le réseau (stratégies de routage
des messages). Ces deux simulateurs sont distribués par la societé CACI (los Angeles).
Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna.
En pratique, il est rare qu'un utilisateur ait à sa disposition plusieurs langages pour
pouvoir soulever ce problème de choix. De plus, un utilisateur expérimenté avec n'importe
quel langage de simulation peut, moyennant des efforts supplémentaires, simuler les
fonctionnements les plus complexes d'un système. On peut faire à ce niveau une analogie
avec le domaine de la programmation où, face à un problème donné, l'utilisateur choisit le
langage qui est le mieux adapté au domaine de son application (COBOL pour les
problèmes de gestion, FORTRAN pour le calcul scientifique, etc ... ). Cependant si le
langage adéquat n'est pas disponible, le problème peut toujours être résolu en utilisant un
autre langage moyennant, bien sûr, des efforts supplémentaires.
Nous avons déjà évoqué l'avantage des langages de simulation par rapport aux
langages classiques de programmation, et qui réside dans le fait que la modélisation et la
programmation par connexion de primitives standards sont beaucoup plus rapides et plus
sûres que l'écriture de sous-programmes (FORTRAN ou PASCAL) permettant de
représenter un fonctionnement identique. De même, qu'un simulateur spécialisé présente
l'avantage d'être plus souple d’utilisation qu'un langage de simulation général.
(*) AUTRES signifie ici que les simulations sont réalisées avec un langage autre que ceux
cités (simulateur spécialisé, langage informatique général, langage de simulation non
considéré par l'enquête, développement interne, etc...).
Nous pouvons constater d'après ces résultats, que GPSS et SIMSCRIPT sont les plus
utilisés aux U.S.A., et devancent nettement SLAM qui par contre est le plus utilisé en
FRANCE (25%). On peut a priori penser que les résultats relatifs à l'utilisation des
langages aux U.S.A. ne sont pas révélateurs du fait que les enquêtes auprès des
utilisateurs ont été réalisées à des dates (1983 pour (a) et 1984 pour (b) où les langages
tel que SLAM ou SIMAN étaient peu connus (spécialement SIMAN), alors que les deux
autrès (GPSS, SIMSCRIPT) étaient les plus anciens.
De plus, ces langages n'ont cessé d'évoluer, et il n'est pas étonnant de voir aujourd'hui,
GPSS ou SIMSCRIPT rivaliser avec SLAM ou SIMAN.
De même, le fait que SLAM (25%) soit plus utilisé en FRANCE que son concurrent SIMAN
(10%), laisse sous-entendre que ce dernier est moins "puissant". Or, seul SIMAN offre par
exemple la possibilité de séparer le modèle de simulation du cadre d’expérimentation , de
définir des sous-modèles, de disposer en standard de primitives orientées systèmes de
production, d'offrir des outils d'aide à l'analyse des résultats. Ceci montre davantage que
l'utilisation d'un langage n'est pas liée a priori à sa puissance, mais plutôt à sa diffusion.
faudra alors décrire la logique associée à chaque événement. Il faut remarquer aussi que
chaque simulateur permet à l'utilisateur d'avoir une vision différente du système réel à
modéliser (réseau dans SLAM, diagramme à blocs dans GPSS ou SIMAN, graphe à
événements pour les langages offrant uniquement l'approche par "événements", etc...).
Séquence de primitives
6(,=( 6(,=( 5(48(67 $:$,7 modélisant une opération sur
une ressource :
$'9$1&( '(/$< :25. $&7,9,7<
5($/($6( 5($/($6( 5(/,148,6+ )5(( ....Demande de la ressource
....Acquisition de la ressource
.....Libération de la ressource
On constate d’après ce tableau que les notions de base sont très similaires d'un
langage à l'autre. Certains simulateurs utilisent parfois la même terminologie pour désigner
des notions similaires. Sur un plan purement pratique, il existe certainement des
différences au niveau de l'implémentation de ces notions par les langages ainsi qu'au
niveau des paramètrès associés à des primitives réalisant des fonctions similaires.
Une étude en vue d’établir une liste de critères dont souhaitaient disposer les utilisateurs
au sein d’un outil de simulation avait été menée aux USA en 1994 par [Mac 94]. Les
résultats de cette étude sont à notre avis très significatifs vu la notoriété des sociétés qui
avaient participé à cette étude (IBM, Pritsker & Associates, CACI, Xerox, Aerospace, etc.)
et dont certaines ont une grande expérience dans le développement du Logiciel de
Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna.
simulation et d’autrès comme utilisatrices de ce type de logiciel. Les dix critères qui ont
été retenus par cette étude et classés par ordre de priorité sont les suivants :
Orde Critère
1 Interface H/M conviviale
2 Possibilité de disposer d’une B.D. pour organiser les données
3 Outil de mise au point (Debogueur)
4 Interaction Via une Souris
5 Section d’assistance dans la documentation du L.S.
6 Sauvegarde des modèles de simulation
7 Sauvegarde des Résultats
8 Entrée des données et des commandes par clavier
9 Librairie de modules réutilisables
10 Affichage graphique des données et Résultats Statistiques
Fig 6 : Liste des critères par ordre de priorité (d’après [Mac 94])
D’un autre coté, certains auteurs proposent des critères sur lesquels on peut se baser
pour évaluer un simulateur. Parmi l'ensemble des critères cités dans la littérature, ceux qui
semblent faire l’unanimité peuvent s’enumerer comme suit :
- Exploitabilité du produit : ces critères sont directement liés aux soins apportés par le
concepteur à la diffusion de son produit (documentation, souplesse d'utilisation, portabilité,
maintenance, possibilités d'enrichissement du simulateur, etc...)
Des études comparatives suivant différents points de vue des langages les plus connus
sont proposées par beaucoup d'auteurs. Ces études se limitent pour la plupart à l'aspect
qualitatif lié au facilités offertes par les langages pour le passage du modèle conceptuel au
programme, et/ou à l'aspect quantitatif lié aux performances d'implémentation du logiciel tel
que le temps d'exécution, l'espace mémoire requis, etc... On pourra, par exemple trouver
Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna.
L'utilisation des critères énoncés ci-dessus, avec éventuellement des résultats issus d'une
étude comparative, peuvent beaucoup aider dans le choix de l'outil le plus approprié.
Parmi ces critères, nous pensons que certains peuvent influer beaucoup sur le processus
de conception et de réalisation d'une simulation et en particulier les interfaces utilisateurs
qu'offre le simulateur.
Dans le domaine des langages de programmation, certains auteurs ont mené des
études visant à déterminer si l'utilisation d'un organigramme avait une influence sur le
processus de conception et de mise en oeuvre d'un programme sur ordinateur., Les
résultats ont montré que les programmes développés à partir d'organigrammes établis au
préalable, étaient plus structurés, réduisaient les temps de mise au point et étaient plus
facile à communiquer. Malheureusement, des études similaires n'ont pas, à notre
connaissance, été faites dans le domaine des langages de simulation. En effet, la plupart
des langages proposent un support graphique (Blocs, Réseaux, Cycles d'activité, etc ... )
pour la modélisation de leurs primitives, mais rien ne permet a priori d'affirmer que
l'utilisation d'un tel support a une influence sur le processus général de modélisation-
simulation. En l'absence de tels résultats, il serait évidement tentant de faire une analogie
avec les langages de programmation, en assimilant la représentation graphique du modèle
de simulation à un organigramme, auquel cas on aboutirait au mêmes conclusions que
celles énoncées pour les langages de programmation. Cependant il faut bien remarquer
que dans le cas d'un organigramme, les symboles utilisés sont normalisés et indépendants
du langage de programmation cible, ce qui leur confère un caractère d'universalité, alors
que le symbolisme graphique proposé par les langages de simulation n'est pas normalisé
et reste propre à chaque langage. Ainsi, dans le premier cas, l'utilisateur conçoit et
développe l'organigramme en ignorant les particularités du langage de programmation
cible. Dans le second cas, l'utilisateur est obligé de se familiariser avec le symbolisme
offert par le langage de simulation cible ( et donc avec le langage lui-même ! ) afin de
concevoir et développer un modèle de simulation. Cette différence essentielle nous
conduit à émettre des réserves quant à la généralisation des résultats énoncés pour les
langages de programmation, d'autant plus que nous avons déjà souligné le fait qu'un
utilisateur expérimenté dans n'importe quel langage de simulation pourrait, moyennant des
efforts supplémentaires simuler les fonctionnements les plus complexes d'un système, et
ceci même si le langage n'offre pas de support graphique de modélisation (cas de
SIMSCRIPT) .
un autre n'ayant pas cette particularité. Ceci s'explique par le fait que dans le premier cas,
la phase de traduction de la représentation graphique du modèle de simulation en une
suite d'instructions du langage de simulation cible peut être entièrement automatisée (ex:
BLOCKS de SIMAN fig 6) sur un matériel offrant les ressources nécessaires (logiciel
graphique, écran graphique, souris, etc ... ). Cette façon de faire présente beaucoup
d'avantages dont :
La forme de présentation de résultats statistiques qui est habituellement adoptée par les
simulateurs est la forme tabulaire, c'est à dire un ensemble de tableaux de chiffres ou
rapports (voire résultats fournis par SIMAN ou SLAMII)dont la richesse en information varie
d'un simulateur à un autre. Il est communément admis que l'analyse de résultats présentés
Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna.
sous cette forme est une tâche difficile qui demande beaucoup de temps, et le taux
d'erreurs dûes à une mauvaise interprétation a tendance à augmenter avec le volume des
résultats à analyser.
C'est ainsi que les recherches qui ont été menée dans ce domaine se sont surtout
focalisées sur l'aspect qualitatif des diagrammes présentés incluant notamment de la
couleur et du graphique haute résolution.
%0258
----------------------------------------------------------
Entity batch size 1 created
QUEUE Entity sent to next block
INSPECTO( 1) avail is 2, 1 UNIT(S) REQD
Entity alloc 1 unit(s) at block
!"# Delay by .7930E+01 time unit(s)
$%&'(
Entity batch size 1 created
QUEUE Entity sent to next block
INSPECTO( 1) avail is 1, 1 UNIT(S) REQD
Entity alloc 1 unit(s) at block
!"# Delay by .8427E+01 time unit(s)
&RQFHSWV G
XQH VLPXODWLRQ YLVXHOOH LQWHUDFWLYH 9,6
La majorité des systèmes d'animation graphique connus sont issus de l'école
américaines. Leur principale caractéristique est qu'ils sont issus d'un couplage entre un
simulateur (souvent général) et un module pour l'animation graphique. Dans cette
approche, l'intéractivité n'est pas, en général, prise en considération ou ne l'est que
partiellement.
Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna.
Les concepts de simulation visuelle interactive (V.I.S.) ont eu pour précurseur R.D.
Hurrion de l'université de Warwick (G.B.). V.I.S. peut être considérée comme une
méthodologie tirant à la fois des avantages du graphique et de l'interactivité.
&DUDFWpULVWLTXHV G
XQ V\VWqPH 9,6
Un système V.I.S. est caractérisé essentiellement par la possibilité d'interrompre une
simulation en cours afin d'apporter des modifications au modèle de simulation et/ou au
schéma d'animation. Dans les premièrs systèmes V.I.S., l'interaction était guidée par le
système qui redonnait la main à l'utilisateur chaque fois qu'une décision devait être prise ou
que des informations complémentaires étaient nécessaire pour poursuivre la simulation. A
titre indicatif , le système VISION(VISual Interactive simulatiON) développé par R.D.
Hurrion comme une extension du langage de simulation SIMON était basé sur ce type
d'interaction.
Les systèmes V.I.S. actuels n'adoptent plus cette approche et sont essentiellement
basés sur une interaction guidée par l'utilisateur. C'est donc l'utilisateur qui décide des
instants -où il doit interrompre la simulation. Pour cela, il se base sur ce qu'il voit à l'écran
et par conséquent, plus le schéma d'animation ressemble au système réel qu'il représente,
plus les réactions de l'utilisateur seront instantanées. Les premiers systèmes V.I.S. étaient
tous basés sur des animations à base de caractères (trop abstraite) qui sont difficiles à
appréhender même pour l'utilisateur le plus expérimenté. Durant ces dernières années les
systèmes ont beaucoup évolué et les animations graphiques sont pour la plupart
comparables à celles disponibles dans les systèmes comme CINEMA.
/
RIIUH HQ V\VWqPHV 9,6
Les systèmes V.I.S. ont été commercialisés pour la première fois en 1979. Il existe à
l'heure actuelle, deux systèmes qui sont parmi les plus représentatifs de cette nouvelle
génération d'outils.
animations à base de caractères très élémentaires alors que dans la dernière version
(1986) il permet en plus de prendre en compte la couleur et la possibilité de rajouter un
fond statique (décor) au schéma d'animation.
WITNESS permet grâce à une interface basée sur un ensemble de menus graphiques,
de construire un modèle de simulation, l'animer, le modifier sans quitter l'environnement de
travail. Parmi les principales fonctions accessibles on peut citer :
- Définition des éléments du modèle (Define phase) : Cette phase est utilisée
pour définir la structure du modèle en fonction des composants physiques du système de
production (machines, pièces, convoyeurs, palettes, etc ... ). L'utilisateur doit associer à
chaque nouveau élément qu'il rajoute au modèle, un nom permettant de l'identifier. Il peut
associer aux entités des attributs numériques (entier ou réel) permettant de transporter une
information propre à chacune d'elles tout au long de leur séjour dans le système (numéro
Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna.
de pièce, temps d'usinage, etc...). Ces attributs sont référencés par des noms au même
titre que les autrès éléments du modèle. De même, il est possible d'utiliser des variables
pour stocker des valeurs numériques tels que le temps opératoire d'une machine, les
temps séparant les arrivées des entités, la quantité de production, etc. Ces variables
peuvent être utilisées n'importe où dans le modèle sans aucune restriction.
En plus de l'animation graphique, WITNESS permet aussi l'édition d'un rapport sur les
statistiques d'utilisation des éléments du système (taille moyenne des files d'attente, temps
moyens passés par une pièce dans une file, pourcentage de temps qu'un convoyeur est
resté bloqué, etc ... ). De plus, si la modélisation d'un système ne peut être totalement
réalisée avec WITNESS, ce dernier offre la possibilité à l'utilisateur de développer des
sous-modèles en SEE-WHY et de les lier au modèle principal.
à des concepts graphiques que l'utilisateur manipule à l'écran sans avoir à écrire de code.
Cette approche a surtout été jugée très avantageuse dans la modélisation des systèmes
complexes. Néanmoins la classe des systèmes auxquels elle est le plus adaptée est celle
des réseaux de files d'attente. Un réseau de files d'attente peut être vu comme un
ensemble de noeuds connectés entre eux par des liens (arcs) orientés. Les liens sont
traversés par des transactions (entités) qui subissent des opérations exécutées par les
noeuds (ressources). Les réseaux de files d'attente possèdent des caractéristiques
graphiques qui les rendent facilement représentables à l'écran.
z Le flux des transactions (entités) dans le réseau peut être visualisé au fur et à
mesure du déroulement de la simulation;
La liste des systèmes qu'on peut modéliser à l'aide de ces concepts est très vaste. Les
systèmes de production constituent un domaine d'application des plus récents. Ce sont
ces derniers qui ont servi comme support à la majorité des systèmes V.I.S. développés à
ce jour. La démarche à suivre pour la construction d'un modèle V.I.S. peut être dégagée à
partir d'une liste de recommandations proposées par certains auteurs et qui sont à l'heure
actuelle communément admises malgré qu'elles ne soient pas le résultat d'une recherche
expérimentale sur le sujet. Ces recommandations ont pour rôle d'assurer une meilleure
pratique de la méthode V.I.S. et peuvent être résumées comme suit:
L'utflisateur final du modèle (ex : client de l'étude) devra avoir l'opportunité d'aider à la
construction du schéma d'animation ainsi que les interactions désirées et ce avant que le
modèle de simulation ne soit entièrement fonctionnel. Ceci permettra de couvrir au départ
tous les besoins de l'utilisateur et d'éviter par la suite une remise en cause du modèle.
Le dessin est un support très utile pour la vérification du modèle par le développeur,
ainsi que pour sa validation par l'utilisateur auquel il est destiné. De ce fait un modèle
valide sera obtenu très tôt si l'aspect visuel est développé avant le développement du
modèle de simulation. Il est donc suggéré de construire le schéma d'animation
antérieurement à l'aspect logique et mathématique du modèle.
Il est difficile et souvent impossible de prédire à l'avance tous les types d'interactions
désirées par l'utilisateur et ce aussi bien par le développeur du modèle que par l'utilisateur
lui-même. Pour cela la conception de l'interface avec le modèle V.I.S. doit être aussi
générale que possible.
Des efforts doivent être faits afin de rendre possible une réutilisation partielle ou totale
d'un modèle développé pour une application donnée, dans une autre application de même
Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna.
type. Pour cela l'utilisation de modèles génériques (paramétrables en fonction des besoins
de l'application) est une solution à explorer. Une conception modulaire du modèle V.I.S.
est aussi une démarche a priviliégier car elle permet la réutilisation partielle du modèle (un
ou plusieurs modules) dans d'autrès applications.
Il faut remarquer que dans le processus de développement d'un modèle V.I.S., c'est
l'utilisateur qui décide en fonction de l'évolution de la simulation et de ce qu'il voit à l'écran,
d'entreprendre l'action qu'il juge adéquate (modifier des paramètrès du modèle, faire éditer
des résultats numériques, etc ... pour progresser vers une solution finale.
L'avantage avec la méthode V.I.S. est la réduction des efforts de conceptualisation dans
le processus de modélisation. Dans l'approche classique il existe tout un processus
d'abstraction entre le passage du modèle conceptuel à sa spécification, alors que ceci
devient transparent avec la méthode V.I.S. puisque l'utilisateur manipule directement des
objets graphiques ayant un rapport direct avec le système réel. Le modèle de simulation
n'est donc plus une " boîte noire " et ceci contribue à augmenter sa crédibilité auprès de
l'utilisateur. Ce dernier prend une part active dans tout le processus de développement du
modèle ce qui a pour avantage d'accroitre sa confiance dans les résultats. Enfin, avec un
système V.I.S. il devient même possible de faire exécuter plusieurs modèles en parallèle
sur un même écran et comparer ainsi leurs évolutions.
&RQFOXVLRQ
Aujourd'hui, le nombre d'outils dédiés a la simulation des systèmes proposés sur le
marché se compte par centaine. Ils offrent chaque jour dans leur dernieres versions de
plus en plus de fonctionnalités. Un support comme l'animation graphique des resultats
d'une simulation est pratiquement disponible dans chaque logiciel (ou une de ses
versions). La concurrence se situe essentiellement au niveau de l'adjonction de nouvelles
possibilités en vue soit d'elargir le champs d'utilisation des outils (diversifier les domaines
d'applications) ou augmenter la convivialité du produit).
Les courants technologiques actuels sont en faveur d'une mutation des applications sur
le Web, ce qui devrait inciter les societes de developpement du logiciel de simulation a
revoir leur strategie de developpement et de diffusion. Nombreux sont les travaux qui se
Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna.
focalisent sur les possibilité d'utiliser le Web comme support pour les environnements de
simulation. Des exemples de solution proposées dans ce sens sont : la diffusion des
modèles de simulation sous forme d'applets accessibles a partir d'un naviagateur et ecrits
dans un langage de simulation basé sur Java(SimJava, Silk, etc.) ; le développement
d'environnement autour d'un langage de simulation classique (ex GPSS ou SIMAN)
résidant sur un serveur et accessible depuis un navigateur par le biais de formulaires HTML
utilisés du coté utilisateur pour soumettre un modèle de simulation et/ou ses parametrès ,
et du coté serveur pour délivrer les résultats d'une simulation quelle que soit leur forme.
Cette approche se base principalement sur l'architecture Client/Serveur du Web et la
technique des scripts CGI (Common Gateway Interface).
Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. 1
La construction d'un réseau SLAM est orientée de gauche vers la droite , avec
possibilité de mettre des flèches (activités) entre deux noeuds quelconques sans
aucune contrainte. Avec SIMAN, un diagramme est construit de manière
descendante (du haut vers le bas) sans possibilité de des liens directs entre deux
blocs (flèches). Ainsi, un diagramme prend l'allure d'un organigramme.
Toutes ces fonctions sont mises en oeuvre par le biais de modules individuels
qui communiquent ou interagissent entre eux par le biais de fichiers de données. Il
existe cinq modules (appelés processeur dans la terminologie SIMAN) qui sont :
REMARQUES :
Construction du Modèle
BLOCKS ou Editeur de Texte
MODEL
1
Fichier
Modèle
4
Fichier
Experiment Fichier
Résultats
3
EXPERIMENT OUTPUT 5
Analyse,..
•Les objets qui s’engagent dans des activités ou subissent des services sont
appelés des entités (ex : pièce , client, etc.)
Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. 4
•Les objets qui éxécutent des opérations ou services sont appelés des
ressources (ex: machine, opérateur, etc.)
Contrairement aux variables, les attributs représentent des caractéristiques d’une entité
spécifique. Par exemple : le numéro d’une pièce ou le temps d’arrivée d’une pièce dans
le système peuvent constituer des attributs de la pièce.
4.2.1 Attributs
Dans SIMAN, les attributs d’une entité sont conservés dans un tableau à une dimension
ou vecteur appelé A(.). Les éléments de ce tableau sont initialisés par l’utilisateur qui peut
leur affecter des valeurs en fonction de son application. Le nombre maximum d’attributs à
associer à une entité est aussi fonction de l’applicationa est doit être spécifié dans le cadre
d’expérimentation (instruction DISCRETE). Dans l’exemple de la banque, une manière
d’utiliser les attributs serait : utiliser l’attribut A(1) pour stocker le temps d’arrivée d’un client
dans le système, l’attribut A(2) pour stocker la durée de service du client et l’attribut A(3)
pour stocker le numéro du client. Chaque entité possèdera ses propres valeurs qu’elle
transportera en parcourant le système et qui peuvent servir pour contrôler le routage de
l’entité dans le système, la durée d’un service, etc.
En plus du tableau A(.), chaque entité possède une attribut noté M désignant le numéro
de la station courante ou actuelle ou se trouve l’entité. Il représente donc une localisation
physique dans le système telle que une station d’usinage ou une zone de stockage. Cet
attribut est surtout utilisé par les fonctions de transport d’entités (pièces) entre stations. Ce
numéro est automatiquement mis à jour lors des opérations de transfert d’entités via le
système de tranport ou de manutention (convoyeur, transporteur) vers un bloc STATION. Il
est aussi possible d’affecter explicitement une valeur à M correspondant au numéro de la
station à laquelle est arrivée l’entité et ce en utilisant un bloc ASSIGN. L’attribut M peut
aussi être utilisé comme indice pour accéder aux éléments du tableau A(.) , à ceux des
variables globales(X(.), ...), à ceux des ressources définies comme un tableau, etc.
4.2.2 Variables
• Un tableau X(.)
• Le tableau S(.)
• Le tableau D(.)
• La variable de type indice J
• La liste des paramètres P
ATTRIBUTS Description
A(I) Attribut Numéro I de l’entité active
M Attribut de l’entité représentant son numéro de la STATION actuelle
Variables Description
(*)
Utilisateurs Toutes ces variables doivent être initialisées par l’utilisateur
X(I) Variabale globale I
S(I) Variable d’état I (Pour modèles continus)
D(I) Dérivée de la Variable d’état I (Pour modèles continus)
J Variable entière de type Indice
P(IP,IS) Valeur du paramètre numéro IP dans l’ensemble des Paramètres
numéro IS
Variables Description
(*)
Système Toutes ces variables peuvent être utilisées mais sont mises à jour par SIMAN
TNOW Temps courant de la simulation
NE(I) Nombre d’entités en route vers la Station I
NQ(I) Nombre d’entités dans la file d’attente I
NC(I) Valeur courante du compteur I
NR(I) Nombre d’unités occupées de la Ressource numéro I
NT(I) Nombre d’unités occupées du Transporteur I
LC(I) Longueur des cellules occupées du Convoyeur I
MR(I) Nombre d’unités de la ressource I
MT(I) Nombre d’unités du transporteur I
Cependant certains blocs réalise non pas une seule fonction mais une série de
fonctions différentes. C'est le cas des blocs OPERATION , HOLD et TRANSFERT. Le
choix du type de fonction qu'on souhaite réaliser par l'un de ces blocs, devra donc
être spécifié comme paramètre du bloc. Pour cela, le premier paramètre du bloc
sert justement pour renseigner sur le type de la fonction à réaliser.
Il est courant de désigner l'un des blocs précédents non pas par son nom
mais par le type de fonction souhaitée. Par exemple, le bloc OPERATION permet
entre autres de retarder une entité pendant une certaine durée. Le paramètre
spécifiant qu'on désire retarder une entité sera DELAY. Dans ce cas il est courant
de désigner ce bloc par le bloc DELAY bien que DELAY n'est pas un nom de bloc.
EX :
Type de Fonction
UNIFORM(2,1)
Bloc OPERATION
Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. 7
Nous allons énumérer la liste des fonctions permises par chacun des 3 blocs
particuliers OPERATION , HOLD et TRANSFERT
Nom Description
FONCTIONS
DETECT Détecter les événements de changement
d'état pour le cas de systèmes continus
GENERALES
FINDJ Rechercher la valeur de l'index J
satisfaisant une certaine condition
Nom Description
EXIT
QUITTER un CONVOYEUR spécifié
pour
MANUTENTION
START Mettre l'état d'un CONVOYEUR spécifié à
ACTIF
Nom Description
Nom Description
2- L'ajouter au diagramme
L'ajout d'un bloc à la suite des autres blocs déjà existants se fait
automatiquement par BLOCKS. Ceci est du au fait que la structure d'un
diagramme est hiérarchique et orientée de haut en bas. Ainsi, au fur et à mesure
qu'un bloc est rajouté, il se peut que le partie du diagramme déjà saisie occupe la
totalité de la fenêtre d'édition. Dans ce cas, BLOCKS, effectue un scrolling vers le
haut de l'écran afin d'ajouter le nouveau bloc à la suite des autres.
Les blocs sont connectés entre grâce à deux symboles (appelés CONNECTORS
dans SIMAN) qui sont :
1 ↓: flèche orienté vers le bas qui est utilisée pour indiquer qu'on passe (les
entités qui circulent !) d'un bloc vers le suivant séquentiellement
Les opérandes sont spécifiques à chaque bloc. On les introduits après les
deux points terminant le nom du bloc et ils peuvent s’étaler sur plusieurs lignes.
La fin de la liste des opérandes est aussi indiquée par le caractère ' : '
REMARQUE : Dans le cas ou les modifieurs DISPOSE et NEXT sont omis, les
entités poursuivent un chemin séquentiel c'est à dire elles passe
au bloc suivant (la macro-instruction suivante).
7 EXEMPLE DE MODELE
Diagramme Explications
7.4 Discussion
Comme on peut le remarquer, le cadre d'expérimentation permet de définir
toutes les paramètre du modèle et de la simulation. Ceci inclut :
REMARQUES :
Il existe encore d'autres instructions qu'on peut utiliser pour définir un cadre
d'expérimentation. Notamment celles concernant le système de manutention
(TRANSPORTEUR, CONVOYEUR, etc...). Notre objectif étant simplement de donner
une vue générale du langage, le lecteur intéressé pourra se reporter à la
documentation du langage pour plus de détails.
Avant de présenter les étapes à suivre pour mettre en oeuvre une simulation,
on doit préciser les éléments qui constituent l'architecture fonctionnelle de
l'environnement proposé par SIMAN. On a :
Les étapes principales à suivre pour pouvoir réaliser une simulation et obtenir
des résultats sont donc les suivantes :
Une fois qu'on dispose du fichier source, il faut faire appel au à l'utilitaire
MODEL qui utilise comme entrée ce fichier source et produit en sortie une forme
compilée du modèle.
L'utilitaire MODEL impose que la première instruction qui doit débuter tout
modèle soit l'instruction BEGIN et la dernière instruction marquant la fin du
modèle soit l'instruction END. Ces instructions commence à partir de la colonne 1
et leur format est le suivant :
b) END;
Le fichier source obtenu sera utilisé comme entrée par l'utilitaire EXMPT qui
le compile et produit en sortie un fichier contenant le cadre d'expérimentation sous
une forme compilée.
Modèle
Compilé Modèle
LINKER Opérationnel
Cadre d’exp.
Compilé
• un nom de l'instruction
• un ou plusieurs opérandes séparés par une virgule
• un point virgule marquant la fin de l'instruction
EXEMPLES :
PROJECT , GESTION PRODUCTION, LISA , 1/31/1998 ;
EXEMPLES :
DISCRETE , 100 , 3 ;
EXEMPLES :
TALLIES: 1 , TEMPS DE SEJOUR ;
EXEMPLES :
RESOURCES : 1 , SERVEUR ;
Utilisée pour déclarer les paramètres des variables aléatoires utilisées dans le modèle. Le
nombre de paramètres n'étant pas le même pour toutes les variables aléatoires, SIMAN utilise un
numéro pour désigner un ensemble ou groupe de paramètres. Ainsi, lorsqu'on utilise dans le modèle
la distribution de la variable aléatoire, on lui passe comme argument un numéro désignant un
ensemble de paramètres déclarés dans le cadre d'expérimentation à l'aide de l'instruction
PARAMETERS.
• Exponentielle EX Moyenne • •
• Erlang ER Moy. Exponentielle K •
• Uniforme UN Minimum Maximum •
• Triangulaire TR Minimum Mode Minimum
• Normale RN Moyenne Ecart type •
• Lognormal RL Moyenne Ecart type •
• Gamma GA beta alpha •
• Beta BE theta phi •
• Poisson NP Moyenne • •
• Weibull WE beta alpha •
• Constante CO constante • •
Utilisée pour définir la règle de gestion des files d'attentes. Par défault , une file d'attente est
gérée selon la règle FIFO (First In - First Out : Premier Arrivé - Premier Servi). Cependant, dans
certains cas, cette règle peut ne pas être adaptée pour la gestion d'une file d'attente donnée et il serait
utile de pouvoir la changer selon le besoin du modèle. Ceci peut justement être fait grâce à
l'instruction RANKINGS.
FIFO : les entités sont rangées dans la file selon leur temps d'arrivée
dans la file et la première arrivée sera servie en premier.
LIFO : les entités sont rangées dans la file selon leur temps d'arrivée
dans la file mais la dernière arrivée sera servie en premier.
On a défini pour la file d’attente numéro 5 la règle de gestion LIFO. Pour les files d’attentes 1 à
4 on applique la règle LVF c’est à dire que les entités seront classées selon un ordre croissant de la
valeur de leur attribut numéro 3 {LVF (3)}.
Toutes les autres files seront gérées par défaut selon la règle FIFO.
Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. 30
EXEMPLES :
EXEMPLES :
TRACE;
Une trace standard est produite au temps 0 (Tdébut = 0.0 par défaut)
relativement au temps de début de la simulation. Ceci revient à dire que la trace
a lieu depuis le début de la simulation et se poursuit jusqu'à la fin de la
simulation (Tfin est par défaut infini).
(OpPHQWV GH FRQVWUXFWLRQ G
XQ GLDJUDPPH j EORFV SDUWLH PRGqOH
Nous allons présenter une liste non exhaustive de blocs à utiliser pour la
construction d'un diagramme à blocs (ou la partie Modèle). Cette liste suffit aussi
pour être à même de construire un modèle de simulation qu'il faudra soumettre à
l'utilitaire MODEL tel que expliqué plus haut.
SYMBOLE GRAPHIQUE
CREATE, NB
TBC , MC
FORMAT INSTRUCTION :
EXEMPLES :
FONCTION :
Ce bloc permet de modéliser une file d'attente. Une entité se met en file
d'attente parce que l'état du système ne lui permet pas de progresser. Par
exemple, elle demande l'occupation d'une ressource (machine, opérateur, ..) qui
n'est pas libre.
Une file d'attente est caractérisée par sa capacité maximale et par un numéro.
Normalement, lorsqu'une entité arrive dans une queue qui est pleine , cette
entité est détruite (perdue). Néanmoins SIMAN propose une option permet de
dévier (BALK ou Balking) de telles entités vers d'autres blocs. Il suffit de préciser
le label du bloc où on veut diriger les entités qui arrivent dans une queue pleine.
Une file d'attente est caractérisée aussi par sa discipline de gestion (FIFO
:premier arrivée-PremierServi , LIFO : Dernier-Arrivé-Premier Servi, HVF(K) :
High Value-First premier servi est celui ayant la plus grande valeur de l'attribut
K, LVF(K) : Low Value Fisrt premier servi sera celui qui a la plus petite valeur de
l'attribut K.ne peut plus progresser la création d'entités (injection d'entités dans
le système). Cette discipline n'est pas spécifiée dans le bloc QUEUE mais dans le
cadre d'expérimentation.
FORMAT INSTRUCTION :
REMARQUES :
Une ressource est identifiée par son nom et sa capacité qui sont spécifiés
dans le cadre d'expérimentation et non dans le modèle (ou diagramme à blocs).
L'allocation d'une ressource à une entité se fait par le biais d'un bloc de type
HOLD avec comme fonction SEIZE. Lorsque plusieurs bloc SEIZE demandent l
'allocation d'une même ressource, l'allocation se fait selon une priorité spécifiée
comme paramètre du bloc SEIZE. Lorsque le nombre d'unités de la ressource
requis par une entité est disponible, ces unités sont allouées à l'entité qui quitte
alors le bloc SEIZE. Dans le cas contraire, l'entité reste dans la file d'attente
associée au bloc QUEUE précédent le SEIZE jusqu'à ce que le nombre d'unités
soit disponible.
SYMBOLE GRAPHIQUE
SEIZE , PRIOR
RNAME , NR
FONCTION :
FORMAT INSTRUCTION :
EXEMPLES :
OPERATOR, 2
RNAME , NR
FONCTION :
Une entité peut libérer une ou plusieurs unités d'une ressource. Ceci
se fait en utilisant un bloc OPERATION avec comme fonction RELEASE et
en spécifiant le nom de la ressource et le nombre d'unités à libérer. L'état
des unités libérées est changé et passe à LIBRE (IDLE). Ces unités
deviennent donc disponible pour une éventuelle allocation à d'autres
entités qui en font la demande dans les blocs SEIZE.
FORMAT INSTRUCTION :
EXEMPLES :
RELEASE
5 unités de la ressource
OPERATOR,5 RELEASE : OPERATOR , 5;
ayant pour nom OPERATOR
est libérée.
SYMBOLE GRAPHIQUE
ASSIGN
VAR = valeur
FONCTION :
FORMAT INSTRUCTION :
EXEMPLES :
ASSIGN
La valeur 3 est affecté au premier attribut (N° 1)
de chaque entité arrivant au bloc ASSIGN. A(1) = 3
ASSIGN : A(1) = 3;
SYMBOLE GRAPHIQUE
DELAY
Durée
FONCTION :
FORMAT INSTRUCTION :
EXEMPLES :
La durée est la valeur de l'attribut A(1) de
DELAY l'entité arrivant au bloc. Cette valeur aura été
par exemple affectée à l'attribut A(1) dans un
A(1) bloc ASSIGN.
DELAY : A(1);
SYMBOLE GRAPHIQUE
TALLY
N , VAR
FONCTION :
FORMAT INSTRUCTION :
EXEMPLES :
INT signifie INTERVAL et consiste à collecter la
TALLY valeur calculée TNOW - A(2) à chaque arrivée d'une
entité au bloc. La collecte se fera dans le registre
1 , INT(2) ayant pour numéro 1. Par exemple si dans un bloc
précédent on a marqué (MARK(2) ) l'attribut 2 de
TALLY : 1, INT(2) ; l'entité, TNOW - A(2) représente alors le temps mis
par l'entité pour aller du bloc ou on a fait le marquage
jusqu'au bloc TALLY.
SYMBOLE GRAPHIQUE
COUNT
N , INC
FONCTION :
FORMAT INSTRUCTION :
EXEMPLES :
Le compteur 1 est incrémenté de 1 chaque fois qu'une
entité arrive au bloc. Si après incrémentation , la
COUNT
valeur du compteur est > ou = à la limite du
1,1 compteur (spécifiée dans l'Experimental Frame), la
simulation est arrêté.
COUNT : 1, 1 ;
Le compteur M est incrémenté avec A(1) . Si après
incrémentation , la valeur du compteur est > ou = à la
COUNT limite du compteur (spécifiée dans l'Experimental
Frame), la simulation est arrêté.
M , A(1)
COUNT : M, A(1) ;
Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. 41
FONCTION :
C Condition Néant
EXEMPLES:
Symboles graphiques :
SIGNAL
WAIT
NSIGNAL NSIGNAL
Fonction :
FORMAT INSTRUCTIONs:
EXEMPLES :
Symbole graphique :
ALTER
RNAME, Unités
Fonction :
FORMAT INSTRUCTION:
EXEMPLES :
ALTER
Symbole graphique :
REGLE
LABEL
LABEL
Fonction :
Lorsqu’une entité doit subir une opération sur une ressource et qu’il existe
plusieurs ressources différentes (noms différents) qui peuvent réaliser
l’opération, le choix ou la sélection d’une ressource parmi cet ensemble est
fait grâce au bloc SELECT. Pour cela, des crières ou règles de sélection d’une
ressource sont nécessaires. On dispose des critères suivants :
FORMAT INSTRUCTION:
EXEMPLES :
1
Lorsqu'une entité arrive au bloc QUEUE, et qu'il
existe des Machines libres , le choix de la machine
RAN à lui allouer est fait de manière aléatoire(RAN).
Dans le cas où toutes les machines sont occupées,
MACHINE1 l'entité attend dans la file N°1.
MACHINE2
MACHINE3
L'ordre d'apparition des LABELS des blocs
HOLD (SEIZE.....) dans SELECT est utilisé par
la règle POR.
SEIZE
M1
MACHINE1
QUEUE,1;
SEIZE SELECT, RAN : M1:M2:M3;
M2
MACHINE2 M1 SEIZE : MACHINE1;
M2 SEIZE : MACHINE2;
SEIZE
M3 M3 SEIZE : MACHINE3;
MACHINE3
Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. 47
Symbole graphique :
Format
Fonction :
Il arrive souvent que l’exécution d’une opération necessite la presence de plusieurs entités en même
temps. ceci est le cas par exemple d’une opération d’assemblage de pièces qui ne peut demarrer
que lorsque les pièces (entités) à assembler soient toutes présentes. Il faudra donc un mécanisme
pour synchroniser le mouvement des entités dans le système. C’est justement ce que fait le bloc
MATCH.
MATCH s’applique à deux ou plusieurs blocs QUEUE qui le précèdent et consiste à retarder les
entités dans leurs files d’attente respectives (Blocs QUEUE) jusqu’à ce que toutes ces entités
possèdent la même valeur de l’attribut de synchronisation.
Lorsqu’une entité arrive au bloc MATCH, une recherche est déclenchée dans les blocs QUEUE
precedents pour voir si chaque bloc contient une entité ayant la même valeur de l’attribut de
synchronisation. Si c’est le cas, chacune des entités résidant dans un bloc QUEUE est extraite du
bloc puis routée vers le bloc dont le LABEL est spécifié comme paramètre du bloc MATCH.
Normalement pour chaque bloc QUEUE correspond un LABEL du bloc vers lequel sera routée
l’entité prise dans la file d’attente associée au bloc QUEUE. Si ce label est omis, l’entité extraite
du bloc QUEUE est détruite.
Chaque bloc QUEUE associé à un bloc MATCH doit posséder un LABEL et utiliser comme
connecteur l’option DETACH pour empecher son utilisation par un autre bloc MATCH ou
QPICK.
Les entités de la file 1 représentent
des malades. Les entités de la file 2
représentent les dossiers. Une visite ne
peut avoir lieu que lorsque le malade
est présent ainsi que son dossier.
L'attribut N°3 sert donc d'attribut de synchronisation dans le bloc MATCH. Lorsqu'un malade arrive dans le
bloc QUEUE et qu'un dossier est aussi présent dans le bloc QUEUE associé à la file 2 et que ces deux entités
ont la même valeur de l'attribut N°3, le MATCH a lieu. Le malade est extrait du bloc QUEUE dont le LABEL
est MALADE puis routé vers le bloc ayant pour LABEL VISITE. Le dossier correspondant à ce malade et
figurant dans le bloc QUEUE dont le label est DOSSIER est extrait du bloc QUEUE puis detruit du fait
qu'aucun label n'a été spécifié pour ce bloc QUEUE.
Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. 48
PREEMPT, PR
RNAME, NA, LSEND
FORMAT INSTRUCTION:
EXEMPLES :
L'entité qui arrive au bloc essaie d’acquérir une unité de la ressource
Machine. Si la ressource est occupée et que la préemption ne peut avoir
PREEMPT lieu à cause de la priorité de préemption (1), l’entité est mise en attente
MACHINE dans la file associée au bloc QUEUE précédent jusqu’à ce que 1 unité
lui soit allouée.
PREEMPT : MACHINE;
L'entité qui arrive au bloc essaie d’acquérir une unité de la
ressource CPU. La priorité de préemption est spécifiée
dans l’attribut A(1) de l’entité. Le temps de traitement
restant de l’entité à laquelle sera retirée le CPU est stocké
PREEMPT, A(1) dans l’attribut 2 de l’entité qui sera alors routée vers le bloc
CPU , 2, RELANCER ayant pour Label RELANCER.
Le bloc PREEMPT est une spécialisation du bloc HOLD qui permet de modéliser l’allocation d’une ressource
par préemption. Ceci siginifie que cette ressource peut être déjà occupée par une entité qui en a disposé dans un
bloc SEIZE - DELAY ou dans un autre bloc PREEMPT. Dans ce cas, il se peut qu’on lui retire cette ressource
pour l’allouer à une autre entité qui arrive au bloc PREEMPT. Le processus de préemption est contrôlé par un
paramètre de priorité spécifié comme opérande du bloc PREEMPT. Lorsqu’une entité détient une ressource
qu’elle s’est faite alloué dans un bloc SEIZE, toutes les entités arrivant à un bloc PREEMPT et demandant à
acquérir cette ressource sont prioritaires sur cette entité et ce quelque soit la priorité spécifiée. Par contre lorsque
la ressource a été allouée à une entité dans un bloc PREEMPT, toutes les entités arrivant à un bloc PREEMPT et
demandant à acquérir cette ressource ne peuvent l’acquérir que si leur priorité est supérieure à celle de cette entité
(spécifiée comme paramètre du PREEMPT).
Lorsqu’une Ressource a été retirée à une entité suite à un PREEMPT, cette entité est remise dans la file d’attente
associée au bloc QUEUE prédédent le bloc SEIZE ou PREEMPT dans lequel s’était faite l’allocation. Cette entité
sera placée en tête de file et se verra allouer la ressource dès que celle-ci devienne disponible. Il est possible de
diriger explicitement l’entité vers un autre bloc au lieu du bloc QUEUE qui est pris par défaut. Ceci peut être fait
en spécifiant le label du nouveau bloc ainsi que le numéro d’attribut dans lequel stocker le temps de service
restant comme paramètres du bloc PREEMPT.
Le nombre d’unités d’une ressource qui est alloué par un bloc PREEMPT est toujours 1. L’ utilisation habituelle
du bloc PREEMPT est pour les ressources ayant une capacité de 1 unité. Dans le cas où la ressource a une capacité
> 1 unité, c’est toujours à la dernière unité allouée de cette ressource que s’appliquera le PREEMPT.
Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. 49
Lorsqu’on a modéliser une ressource à laquelle sont associées plusieurs files d’attente contenant chacune un
type d’entité, va se poser le problème de choix de la file dans laquelle prendre une entité pour lui allouer la
ressource. Ce cas est modélisé grâce au bloc QPICK
Une autre situation où on est amené à choisir une file d’attente parmi plusieurs est celle d’une entité qui arrive à
une ressource à laquelle sont associées plusieurs files d’attente. Un problème de choix de la file dans laquelle
insérer l’entité se pose aussi. Ce cas est modélisé grâce au bloc PICKQ.
La règle à utiliser pour la selection d’une file d’attente (QUEUE SELECTION RULE) doit être spécifiée comme
paramètre du bloc (PICKQ ou QPICK). SIMAN offre un ensemble de règles de sélection d’une file d’attente
(caractérisée par le bloc QUEUE correspondant) qui sont :
• CYC : Choix cyclique. On choisit le premier bloc QUEUE suivant celui qu’on a slectionné juste avant.
• RAND : Choix Aléatoire. On choisit aléatoirement un bloc QUEUE parmi l’ensemble des blocs
disponibles.
• POR : Choix selon l’ordre d’apparition. Contrairement au choix aléatoire, ici on choisit le premier bloc
QUEUE disponible.
• LNQ : (Largest Number in QUEUE). Choisir le bloc QUEUE ayant le plus grand d’entités dans la file.
Utiliser la règle POR en cas de conflit.
• SNQ : (Smallest Number in QUEUE). Choisir le bloc QUEUE ressources ayant le plus petit nombre
d’entités dans la file. Utiliser la règle POR en cas de conflit.
• LRC : (Largest Remaining Capacity). Choisir le bloc QUEUE ayant le plus grand nombre
d’emplacements vides dans la file. Utiliser la règle POR en cas de conflit.
• SRC : (Smallest Remaining Capacity). Choisir le bloc QUEUE ayant le plus petit nombre
d’emplacements vides dans la file. Utiliser la règle POR en cas de conflit.
• UR(K) : (User Rule). Choisir le bloc QUEUE N° UR ou UR est un numéro calculé par une routine écrité
par l’utilisateur sous forme de Fonction Fortran UR(L,K).
• ER(N) : (Experimental Rule). Choisir un bloc QUEUE en fonction de la règle N définie dans le cadre
d’expérimentation (Experimental Frame: RULES).
Dans le cas du choix de la file dans laquelle insérer une entité avec le bloc PICKQ, il se peut que toutes les
files soient pleines. Par défault, l’entité qui arrive est détruite. Cependant, il est possible d’éviter cette
destruction en spécifiant le label du bloc vers lequel diriger cette entité lorsque toutes les files sont pleines.
C’est ce qu’on appelle le BALKING (ou dévier , rediriger). Le label de ce bloc sera alors un opérandre du
bloc PICKQ.
Les blocs QPICK et PICKQ sont utilisés avec au moins 2 blocs QUEUE. Les labels des blocs QUEUE sont
spécifiés comme paramètres du bloc QPICK ou PICKQ. L’entité choisie par le bloc QPICK est routée vers le
block HOLD ou SELECT qui suit immédiatement le bloc QPICK. Dans le cas de PICKQ, l’entité qui arrive à
ce bloc est dirigée vers le bloc QUEUE choisi en fonction de la règle de selection ou est routée vers le bloc de
BALKING si toutes les files sont pleines. L’ordre d’énumération des Labels des blocs QUEUE dans
l’instruction QPICK ou PICKQ établit une priorité qui sert pour l’application de la règle de selection POR
décrite plus haut.
Dans la combinaison des blocs QUEUE-HOLD qui permet de modéliser une ressource à une seule file d’attente ,
la connection entre ces deux blocs est faite selon l’ordre d’apparition des blocs dans le modèle. Pour le cas
d’un bloc QUEUE et d’un bloc QPICK, la connection est faite par le biais des Labels des blocs QUEUE et
non par l’ordre ou le séquencement des blocs dans le modèle. Ainsi chaque bloc QUEUE devant être associé à
QPICK devra avoir un LABEL. Les mêmes remarques sont valables aussi pour le cas du bloc PICKQ.
Par convention, un bloc QUEUE ne peut être connecté qu’à un seul autre bloc dans le modèle. Dans ce cas , si
un bloc QUEUE est associé à un bloc QPICK, il ne devra pas être associé à un autre bloc. Ceci siginifie que
ce bloc QUEUE ne doit pas être connecté à un bloc HOLD ou SLECT et aussi que son Label ne doit pas
être utilisé comme opérande d’un autre bloc (QPICK, MATCH). Afin de prevenir la connection implicite
faite par SIMAN entre un bloc et le suivant , il est necessaire de spécifer qu’on détache ce bloc QUEUE
utilisé par QPICK de son successeur dans le modèle. Ceci se fait grâce à l’option (CONNECTEUR)
DETACH qu’on spécifie dans le bloc QUEUE concerné. Ainsi, ce bloc ne sera pas connecté à son
successeur et reste cependant associé au bloc QPICK par le biais de son LABEL.
Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. 50
BLOCS : QPICK (Prise d'une entité dans une file d'attente choisie
parmi plusieurs)
Symbole :
QSR
LABEL1 T
LABEL2 T
FORMAT INSTRUCTION:
BLOCS : PICKQ (Routage d'une entité vers une file d'attente choisie
parmi plusieurs files )
Symbole : QSR
LBALK
LABEL1
LABEL2
FORMAT INSTRUCTION:
Fin de ce chapitre
Dr Brahim BELATTAR. LISA. D partement d'Informatique. Facult des Sciences de l'Ingnieur. Universit de Batna. 1
@RISK PALISADE General purpose, Financial, oil and Win 95/98, NT, 3.x,
Corporation cost analysis gas, health care Mac OS
Call Center The Model Call center work Call centers Windows 95/NT
MAESTRO Builders force staffing and
Inc. technology
evaluation.
Dr Brahim BELATTAR. LISA. D partement d'Informatique. Facult des Sciences de l'Ingnieur. Universit de Batna. 2
JobTime Plus JobTime Used for simulation- Manufacturing DOS, Windows 3.x,
Systems based advanced applications in Win 95/98, NT Client
Inc. planning and the small- to and NT Server
scheduling. medium-sized job
shops,
pharmaceuticals,
media
duplication,
assemble to
order, engineer to
order. Can also
be used to
schedule complex
training
campaigns.
Extend & BPR Imagine General, queing, Engineering, Windows 95, 98, NT
& That Inc. manufacturing, science, 3.1; Mac 68020+,
Manufacturing costing analysis, manufacturing, Power Mac
business, industrial business,
and commercial government,
modeling service
industries,
education
GPSS/H Wolverine General, General (not Win 3.x, 95, 98, NT;
Software manufacturing, industry-specific) OS/2; DOS; Solaris
Corporation transportation,
computing
systems/networks,
mining, logistics,
queuing, etc.
ithink Analyst High Suited for high-level All markets. Windows, Mac
5.1.1 Performanc strategic modeling, Suited to any
e Systems does have discrete application where
Inc. functionality the user seeks to
understand the
behavior of a
system & test
their assumptions
about the impacts
of changes they
may make to
those systems.
Optima 2.5 Micrografx Optima is a process Telecom- Windows 3.1, 95, 98,
Inc. analysis application munications, NT 3.51 or later
offering high-end financial services,
simulation pharmaceutical,
capabilities. Used for manufacturing,
BPR, TQM, etc. health care, and
more
Manufacturing,
Taylor ED
F&H Manufacturing, distribution,
Logistics Win 95, Win NT
Suite
Simulations material handling warehousing,
financial, service
WITNESS 9.0 Lanner Business process Manufacturing, Windows 3.1, 95, NT,
Group Inc. reengineering, plant automotive, 98
layout, scheduling, defense,
queuing, cost pharmaceuticals,
analysis chemicals,
electronics,
hydrocarbon
Model
Graphic Building Input Run-time
Model via Distri- Code Reuse Debug
Con- Pro- bution Output (objects, Tem- (Inter-
struc- gram- Fitting Analysis plates, sub- active
Product tion ming Support Support models) debugger)
ALPHA/Sim y - - y y y
AMS: y - y y y -
Semiconductor
Arena y y y y y y
@RISK - - - - - -
AutoMod y y y y y y
C Library - y - - y -
Call Center y - - y - -
MAESTRO
CB Predictor - - - y - -
JobTime Plus y y - y y y
COMNET III y - - - - -
DecisionPro 3.0 y y y y y y
Deneb/Quest y y y y y y
ExpertFit - - y - - -
Extend y y y y y y
Extend & y y y y y y
Manufacturing
FACTOR/AIM y - - y y y
GPSS/H - y y - - y
GPSS/PC - y - y - y
H/SCHED - y - y y -
Dr Brahim BELATTAR. LISA. D partement d'Informatique. Facult des Sciences de l'Ingnieur. Universit de Batna. 9
IBM Supply y - y y y -
Chain Simulator
ithink Analyst y - - y y y
5.1.1
MAST - - - - - -
Simulation
Environment
MedModel y y y y y y
micro-GPSS y y - y - -
Micro Saint y y - y y y
MODSIM III y y y y y y
NAG Fortran - y - - y -
Library, Mark
18
NAG Fortran 90 - y - - y -
Library
NAG Fortran - y - y - -
SMP Library
NAG Parallel - y - - y -
Library
Optima 2.5 y n y y y y
PASION32 y y - y y -
ProcessModel y - y y y y
ProModel y y y y y y
Proof - - - - - -
Animation
PS-ENGINE y y y y y -
QueGauss - y - y - -
ServiceModel y y y y y y
SIGMA y y y y y y
Silk y y - - y y
SimGauss - y - y - -
SIMNON 3.0 - y - - y -
SIMPLE++ y y y y y -
SIMPROCESS y y y y y -
SIMUL8 y y - y y y
Dr Brahim BELATTAR. LISA. D partement d'Informatique. Facult des Sciences de l'Ingnieur. Universit de Batna. 10
SLX - y y y y y
Stat::Fit - - y - - -
Taylor ED y y y y y y
Logistics Suite
Visual y y - y y y
Simulation
Environment
WITNESS 9.0 y - - y y y
WorkFlow y - y y - y
Analyzer
Dr Brahim BELATTAR. LISA. D partement d'Informatique. Facult des Sciences de l'Ingnieur. Universit de Batna. 11
****************************************************************************
**
Is animation List
Can the Can animation by post compatible
output be viewed processor/ animation
Product be animated in real-time trace file software, if any
ALPHA/Sim y n n N/A
AMS: y y n
Semiconduc
tor
Arena y y y
@RISK n - -
AutoMod y y y
C Library - - -
Call Center n y n
MAESTRO
CB n n n N/A
Predictor
COMNET y y n N/A
III
DecisionPro n n n
3.0
ExpertFit - - -
FACTOR/AI y y n
M
H/SCHED y y -
IBM Supply y y n
Chain
Simulator
MAST y y y
Simulation
Environmen
t
MedModel y n n
Micro Saint y n n
MODSIM y y n
III
NAG n - -
Fortran
Library,
Mark 18
NAG n - -
Fortran 90
Library
NAG - - -
Fortran SMP
Library
NAG - - -
Parallel
Library
Optima y y n
2.5
PASION32 y n y
ProcessMod y n n
el
ProModel y n n
Dr Brahim BELATTAR. LISA. D partement d'Informatique. Facult des Sciences de l'Ingnieur. Universit de Batna. 13
PS-ENGINE y y n
QueGauss - - -
ServiceMod y n n
el
Silk y y n
SimGauss n - -
SIMNON n n n
3.0
SIMPROCES y y n
S
SIMUL8 y y n
Stat::Fit n n n
Visual
Simulation
y y n None
Environmen
t
WITNESS
y y -
9.0
WorkFlow
y y n
Analyzer
Dr Brahim BELATTAR. LISA. D partement d'Informatique. Facult des Sciences de l'Ingnieur. Universit de Batna. 14
****************************************************************************
**
Arena Version 3.5 includes a Arena Business Edition is the newest member of
project bar & navigation the Arena product family. Designed specifically
tree to help you visualize for process analysts, it features a Visio stencil &
the organization of your flowchart module for defining your process, a
model; model hierarchy & spreadsheet interface for entering data, plus
submodels; a Visio link reports.
that lets you associate any
Visio shape with an Arena
module; & connector
animation.
Call Center Quantify the impact of Call Center MAESTRO allows managers to
MAESTRO using one group of agents quickly 1) analyze the effect of call volume
with General Skills" vs. and/or staffing level on service quality; 2)
using multiple groups of visualize the effect of forecasted call volume on
agents where each group staff utilization, and 3) quantify the benefit of
has a "Specialized skill." additional technology.
COMNET III New add-on modules: COMNET III accurately predicts LAN, WAN, and
application profiler, enterprise network performance. COMNET III
distributed software enables users to reduce risk by experimenting
module, satellite and with diverse network alternatives before
mobile module. implementing their plans.
Crystal Ball This is a suite of products Crystal Ball Pro is a powerful yet easy-to-use
Pro that includes Crystal Ball, suite of forecasting and risk analysis tools that
the Developers Kit, the enhance spreadsheet modeling. It gives you the
Extenders, & OptQuest. ability to perform Monte Carlo analysis
OptQuest is the only combined with optimization on your
commercially available spreadsheet models.
tool that offers global
optimization for
spreadsheets under
conditions of uncertainty.
Dr Brahim BELATTAR. LISA. D partement d'Informatique. Facult des Sciences de l'Ingnieur. Universit de Batna. 16
DecisionPro Version 3.0 adds over 100 DecisionPro is a general-purpose modeling and
3.0 new features, giving users simulation tool. It supports Monte Carlo
more control over model simulation, decision tree analysis, linear
presentation and programming, forecasting, math programming,
improving simulation and Web-based expert system development.
performance. Simulations
run up to 60 times the
speed of similar
spreadsheet models.
Deneb/Quest AS/RS; Value-added Full range of CAD translators; import work cell
costing; VRML1.0; AVI, from other Deneb simulation products.
MPEG movie output; Read/write to external files and processes.
saving & retrieving groups
of elements; directly
reading CATIA geometry;
Pro/
ENGINEER and
Unigraphics translators
available on PC
Extend & Make the most of new Provides an integrated financial & operational
BPR features such as animated approach for modeling & evaluating business
online tutorials that show processes. Includes high-level reengineering
how to build and run capabilities such as batching & cycle timing.
Extend models, optional Plus, built-in activity-based costing & automated
connection line animation, stat. analysis
updated blocks &
numerous new functions
that prove Extend is the
simulation software for
the next millenium.
Extend & BPR The acknowledged The ultimate in simulation flexibility helps you
& standard for dynamic maximize your improvement efforts.This
Manufacturing modeling and simulation product can help managers reduce costs,
now features animated manufacturing professionals streamlining
online tutorials that show operations, and engineers designing new
you how to build & run components.
Extend models, fine
control of block location,
optional connection line
animation, progressive
block improvements.
MODSIM III Web-based simulation; MODSIM III is the most powerful, object-
database connectivity; oriented simulation language in the world. It is
distributed simulation designed for modeling complex and large
systems by software engineers.
NAG Fortran Mark 18 of the Fortran NAG provides a robust, reusable library of the
Library, Mark Library has extended the most sought-after numerical routines for
18 areas of ordinary successful math. modeling. Y2K compliant.
differential equations,
partial differential
equations, interpolation,
optimization, sparse linear
algebra and OR
NAG Fortran Two new chapters: Matrix The NAG Fortran f190 Library was designed to
90 Library & Vector Operation & capitalize on the increased functionality, power
Multivariate Analysis; new & simplicity of Fortran 90. Fortran 90 offers
modules: Kelvin functions, improved productivity & is compliant with both
norms of a matrix, Fortran 90 & Fortran 95. Also Y2K compliant.
constrained nonlinear
least squares, and more;
18 new documented
procedures
Dr Brahim BELATTAR. LISA. D partement d'Informatique. Facult des Sciences de l'Ingnieur. Universit de Batna. 19
NAG Fortran Maximization of the This numerical library is optimized for use on
SMP Library processing potential of Symmetric Multi-Processor (SMP) computers &
SMP machines in the key contains the full functionality of the NAG Fortran
areas of linear algebra, Library. Y2K compliant.
FFTs & multivariate
statistics.
SIGMA Optional standard process SIGMA was the first Windows simulation lang. &
flowcharting format, exclusively uses direct system API calls to
multiple sessions, optimize use of memory & execution speed.
simultaneous execution Fully interactive model development, animation,
and replication of models, & testing. SIGMA's completely general Event
development of reusable Graph method is easy to learn
simulation tools.
Automatic C code
generation to support
simple spreadsheet
interfaces for
experimentation.
Silk Java Beans modeling & Silk merges familiar process-oriented modeling
animation component; with the Java language for object-oriented,
Java Development Kit Internet-capable simulation. Animated
(JDK) 1.2; Java simulation models can be placed on a web site
Foundation classes & executed within standard browser software.
(JFK)/Swing support
SIMNON 3.0 Dev. platform is Win 32; Faster handling by Block DDE and RPC - server;
Double precision built in color syntax; demo available on
calculation (64 bytes); www.sspa.se
external systems to be /simnon
connected to Simnon can
be written in Fortran
and/or C++.
SIMUL8 Ability to convert Visio SIMUL8 offers you the latest in workflow
flow chart diagrams into modeling. Simply build your system by dragging
simulation models; objects (machines, buffers, conveyors, people,
enhanced user interface tools) onto the screen and connecting them.
for Visual Logic Editor, Learn why industry leaders like Ford are buying
Excel, VB/VBA; user- SIMUL8 in packs of 100.
configurable toolbars;
template facility with
password security; plug-
ins for modeling,
transportation object
Taylor ED
Logistics Suite
Dr Brahim BELATTAR. LISA. D partement d'Informatique. Facult des Sciences de l'Ingnieur. Universit de Batna. 22
Visual Fully & truly object- VSE's toolset includes Editor, Simulator, Output
Simulation oriented; model Analyzer & Teacher. VSE provides state-of-the-
Environment developement from art object-oriented technology with message
libraries of reusable passing, inheritance & encapsulation. Libraries
components without of reusable model components can be built.
programming; dynamic
object decomposition;
hierarchical model
architecture; graphical &
picture-based; input data
specification; multiple
animation viewers
WITNESS 9.0 Hierarchical model Virtual and easy to use, WITNESS Release 9
structure; easy-to-reuse offers a powerful and highly flexible engine to
components, power and handle the most complex scenarios. The product
free conveyors, part provides the capability to model virtually any
arrival schedules in working environment and inexpensively perform
spreadsheet format, what if" analyses."
reporting formats,
designer element sets,
tree style" element
selector and long names"
Arena
Arena simulation software creates animated computer models that accurately
represent virtually any system. First released in 1993, Arena is a flexible and
powerful tool. It has an object-oriented design and the unique ability to be tailored
to any application area. Arena also is very easy to use; with its point and click
interface and fill in the blank dialogue boxes, there is never a need for
programming.
http://www.sm.com/arena.htm
AweSim!
AweSim! a totally new general purpose simulation system, designed and developed
to utilize the latest in simulation and Windows technology. AweSim!makes
simulation easy. Built on over 20 years of simulation experience it predicts the
performance of complex systems. AweSim! works and can work for you!
http://www.wintek.com/pcorp/awesim.htm
Platforms: Win3.1, Win95, WinNT
Extend
Extend is a dynamic, iconic simulation environment with a built-in development
system for extensibility. It enables you to simulate discrete event, continuous, and
combined discrete event/continuous processes and systems. Virtually anything you
could possibly imagine can easily be built by using Extend's libraries of pre-built
blocks. No programming is necessary; however, you may if you so desire.
Everything you need for model building is here ... the authoring environment and
development system are built in.
http://www.imaginethatinc.com/aboutext.htm
Platforms: Mac Win3.1, Win95, WinNT
Extend+Manufacturing
Dr Brahim BELATTAR. LISA. D partement d'Informatique. Facult des Sciences de l'Ingnieur. Universit de Batna. 24
Extend+BPR is combines the Extend program with a manufacturing process model
that gives you a tool to make significant changes in your industrial or commercial
operation. This dynamic modeling tool assists in the prediction of system
bottlenecks, determination of buffer lengths, build times, and process timing so
costs can be justified before resources are committed, options can be analyzed, and
operating procedures documented. Extend+Manufacturing has been designed
specifically for Industrial Engineers, Operations Researchers, and Manufacturing
Analysts for operations improvement, information processing, service industries,
distribution systems, material handling, transportation systems, and most other
discrete event processes.
GPSS/H Professional
GPSS/H is a general-purpose tool for building models of discreet-event systems.
Unlike some simulation software which forces you to fit your application into a rigid,
inflexible framework, GPSS/H is versatile enough to handle the problems and
intricacies of a wide variety of systems. GPSS/H gives you the building blocks to
make your simulation as detailed as you want. A GPSS/H model is easy to use,
modify, maintain, and transfer to other platforms.
GPSS/PC
GPSS/PC is an efficient implementation of the popular simulation language GPSS
(General Purpose Simulation System). GPSS/PC is more than a programming
language, it is a complete simulation environment specifically designed for
interactive use on today's high speed microprocessors. The program uses graphics
and animation to model various types of simulation environments.
iThink
iThink, which is an adaptation of STELLA, is a powerful and flexible package for
building and simulating business and organizational processes. The software, which
includes extensive conceptual and technical documentation, has emerged as a key
tool for addressing business issues of all types, ranging from strategic planning to
business process re-engineering.
MAST
MAST is a software tool designed, developed and implemented for the study of
Dr Brahim BELATTAR. LISA. D partement d'Informatique. Facult des Sciences de l'Ingnieur. Universit de Batna. 25
flexibility. It combines state-of-the-art manufacturing models using rough-cut
analysis (also known as rapid modeling) with simulation and color graphic
animation. MAST enables you to evaluate manufacturing capacity, identify
bottlenecks and answer "what if" questions such as the effects of new production
requirements or changes in labor allocations. All this and more can be achieved
without programming, modeling or text editing.
MODSIM III
The Modular Simulation language, MODSIM III, is an object oriented, strongly
typed, general purpose, high level programming language. MODSIM III provides
both object oriented programming and discrete event simulation capabilities in one
language. It is used to build large, process-based simulation models with modular
and object oriented development techniques.
CACI http://www.caciasl.com/modsim.html
SIMPROCESS
SIMPROCESS is a hierarchical and integrated process simulation tool that radically
improves your productivity for process modeling and analysis. SIMPROCESS is
designed for BPR and IT professionals of industrial and service enterprises who
need to reduce the time and risk it takes to service customers, fulfill demand, and
develop new products. Unlike other tools, SIMPROCESS integrates process
mapping, hierarchical event-driven simulation, and activity-based costing into a
single tool.
CACI http://www.caciasl.com/simprocess.html
SIMSCRIPT II.5
SIMSCRIPT II.5 is a powerful, free-form, English-like simulation language
designed to greatly simplify writing programs for simulation modelling. Programs
written in SIMSCRIPT II.5 are easily read and maintained. They are accurate,
efficient, and generate results which are acceptable to users. Unlike other
simulation programming languages, SIMSCRIPT II.5 requires no coding in other
languages. SIMSCRIPT II.5 has been fully supported for over 33 years.
CACI http://www.caciasl.com/simscript.html
Platforms: Win95, WinNT, UNIX
SIMUL8
SIMUL8 is a Windows based visual discrete event simulation software tool that
provides bottom line performance measures and insights into how any configuration
Dr Brahim BELATTAR. LISA. D partement d'Informatique. Facult des Sciences de l'Ingnieur. Universit de Batna. 26
of machines and people will perform in combination with one another. While
SIMUL8 is very easy to use it also provides all the features that even simulation
specialists require.
http://www.visualt.com/sim8home.htm
SLAM II
SLAM II is a simulation program used in research at various universities. It is being
used at the University of Flordia and the University of Cincinnati.
Pritsker Corporation
http://www.wintek.com/pcorp/
http://www.circa.ufl.edu/circa/handouts/vms/slam2/slam2.html
STELLA
STELLA is a powerful and flexible package for building and simulating models of
dynamic systems and processes. Using a simple set of building block icons, you can
construct a map of a process or issue of any kind. The diagram automatically
generates equations, used for simulation, allowing you to bring your map to life.
Output can be viewed as graphs, tables, diagram animation or QuickTime movies.
Multi-run sensitivity analysis allows you to explore a variety of what-if scenarios as
you (or your students) explore the interdependencies of the system under scrutiny
High Performance
http://www.hps-inc.com/stella.html
Platforms: Mac, Win3.1
Taylor II
Taylor II is a full capability discrete event simulation Package. It includes advanced
statistical capability for input analysis and the ability to design experiments for
multiple replication/scenario analysis.
Three levels of 2D animation and true 3D wire frame animation and true 3D shaded
solids modeling (with light source definition) for unsurpassed model presentation.
True XYZ representation enabling you to model and animate elements,
transporters, conveyors, and parts at any XYZ point location. Conveyors and paths
can have rounded, angled, or inclined movement. Hierarchical modeling which
allows you to save whole models as clusters which can be deleted, moved, or scaled
as a single object.
Dr Brahim BELATTAR. LISA. D partement d'Informatique. Facult des Sciences de l'Ingnieur. Universit de Batna. 27
F&H Simulations
http://www.taylorii.com/