UNIVERSITE DE BATNA Faculté des Sciences de l’Ingénieur Département d’Informatique Modélisation & Simulation sur Ordinateur Docteur Brahim BELATTAR Doctorat Nouvelle thèse en informatique Diplômé de l'Université Claude BERNARD de Lyon I-France Maître de Conférence au Département d’Informatique Faculté des Sciences de l’Ingénieur Université de Batna Année universitaire 2003/2004 Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. SIMULATION DES SYSTEMES : UNE INTRODUCTION 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 : • • • • Concevoir et analyser des systèmes industriels Evaluer du hardware et du logiciel pour un système d'exploitation d'ordinateur Evaluer un nouveau système d'armes militaire ou tactique Déterminer des politiques d'ordonnancement pour un système de production • Concevoir des systèmes de communications et leurs protocoles • Concevoir et améliorer des installations de transport tel qu'autoroutes, aéroports, métros, ou ports, etc. • Evaluer des politiques de gestion pour les organisations de service tel qu'hôpitaux, bureaux de poste, etc. • Analyser des systèmes financiers ou économiques 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. 2. NOTIONS DE SYSTEME , MODELE et SIMULATION Les trois notions de système, Modèle et Simulation sont intrinsèquement liées. Nous allons définir de manière plus ou moins précise chacune d’elles avant de présenter les concepts de base des techniques de simulation. 2.1 NOTION DE SYSTEME Le mot ‘‘système’’ couvre un champ d’application immense et de nombreuses définitions lui ont été attribuées dans la littérature. En voici une liste non exhaustive : • Ensemble de composants reliés entre eux • Ensemble organisé d’éléments fonctionnels • Combinaison de parties qui se coordonnent, pour concourir à un résultat de manière à former un ensemble (Larousse) • Combinaison d’hommes, de machines, de matériaux et d’informations destinée à satisfaire un objectif donné 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 : c’est un tout composé de parties ordonnées chaque partie a ses lois et une certaine indépendance les parties ont des liens ou relations entre elles cet ensemble change au cours du temps il est influencé par le milieu dans lequel il existe et qui réagit sur lui l’ensemble est le plus souvent soumis à des contraintes l’ensemble a ses lois propres et n’existe que pour atteindre un but Ces caractéristiques font ressortir qu’un système est défini par : • la connaissance de ses parties ou composants • la connaissance des lois propres de chaque composant Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. • la connaissance des lois d’interaction qui déterminent son but 2.1.1 Définition d'un système Comme définition d'un système nous retenons celle donnée par l'AFCET et qui s'énonce comme suit : "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." La complexité d'un système provient du fait qu'il peut comporter beaucoup de sous-systèmes interconnectés et pouvant avoir des objectifs en conflit. L'analyste doit disposer de méthodes et d'outils capables de représenter ces systèmes, sans recourir à une simplification grossière, origine d'une perte d'information ; ni à la construction de modèles complexes, inexplicables par la suite à cause d'un manque de documentation, de problèmes de validation des modèles, ou de portabilité de programme. 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 Chacune de ses parties a ses lois (règles de fonctionnement) et est partiellement indépendante des autres mais aussi fonction des autres et réagit sur elles. La connaissance des lois d’interaction et leur application à l’ensemble va influer directement sur le but à atteindre (rentabilité, investissement, bénéfice,...) par le système. L’identification des frontières du système avec son environnement (milieu) permettent de délimiter la portée du système. Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. Fig1 : le systéme et son environnement 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 : - élargir le système de façon à les inclure - les ignorer (si on juge que leurs effets sont négligeables) - les considérer comme des entrées du système 2.2 MODELE ET MODELISATION La modélisation consiste à construire une représentation simplifiée d'un système appelée généralement : modèle. 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. Exemple : Un projet de construction d’un avion comprend les étapes suivantes 1) Dessine un avion prototype puis on construit un modèle grandeur nature mais Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. en utilisant du bois et du contre-plaqué Ce modèle va servir pour étudier (expliquer) certains aspects de l’avion (disposition des sièges, encombrement des cabines, ...) 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. 2) On construit des modèles réduits de l’avion en utilisant les vrais matériaux. Ces modèles vont servir à expliquer certains aspects (test résistances des matériaux, vitesses en vol , à l’atterrissage, ....) 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. Les principaux avantages de manipuler un modèle plutôt que le système qu’il modélise sont : Un modèle évite la construction d’un système qui n’existe pas Un modèle évite de faire des expérimentation directes sur un système existant (problèmes de sécurité , ou économiques) 2.2.2 Processus de modélisation Le processus de construction d’un modèle de simulation peut être schématisé comme suit : Fig2(a) : Processus de Modélisation (Voir les explications dans le § étapes d’une simulation) Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. Un autre schéma distinguant entre modele conceptuel et modele programmé sur ordinateur est le suivant : Fig2(b) : Processus simplifié de Modélisation Le modèle conceptuel est une représentation (mathématiques logique, verbale, etc ... du système réel (ou retenu pour une étude particulière). Il est obtenu dans une phase d'analyse et de modélisation. Le modèle programmé est la mise en oeuvre du modèle conceptuel sur un calculateur. Il est obtenu dans une phase de programmation et de mise en oeuvre. Les enseignements sur le système réel sont obtenus à la suite d'expérimentations sur le modèle programmé dans une phase d'expérimentation. 2.2.3 Construction d'un modèle La construction d'un modèle consiste, à partir d'une représentation mentale du système liée à une certaine connaissance qu'en a acquis le modélisateur, à développer un modèle sous forme de programme d'ordinateur ou sous forme plus communicable, aisément translatable en programme d'ordinateur. Ainsi, c'est au modélisateur que revient, guidé par les méthodes d'analyse et les outils conceptuels, un certain nombre de choix dont dépend le succès de l'étude: • Définition des frontières du modèle et donc des variables internes, d'entrées et de sorties nécessaires ; • Appréciation du niveau de détails à incorporer dans le modèle • Choix des techniques de modélisation. Deux méthodes complémentaires sont couramment employées pour la construction d'un modèle : - l'affinage progressif (descendante): Appelée aussi méthode de modélisation par accumulation de degrés de complexité. Elle procède par itérations vers des niveaux de complexité croissante. Ce processus évolutif permet de prendre en compte les insuffisances du modèle à une étape donnée, de les améliorer à l'étape suivante, tout en évitant d'entrer dans un niveau de détails superflu. - l'accumulation de sous-modèles (ascendante): Utilisée lorsque le système à étudier est de taille importante. Les sous-modèles sont issus d'un découpage du Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. système en sous-systèmes distincts. La complexité du système est alors mieux maîtrisée mais l'étape d'intégration conduit à des problèmes d'interfaces souvent délicats. De plus, la démarche étant ascendante, il faut veiller à ne pas sur-ou-sous-évaluer certains facteurs. 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) 2.2.4 Classification des modèles De nombreux critères peuvent être employés pour classifier les modèles. simulation, on s’attache généralement a distinguer les types de modèles suivants : En 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). Les modèles symboliques : ou abstraits sont une abstraction mathématisée de la réalité. Ils sont en général exécutés sur un calculateur, qu’il soit analogique ou digital. Une autre distinction concerne la prise en compte des aléas dans le modèle. Dans certains cas, qualifiés de déterministes, leur influence est considérée comme négligeable. Le plus souvent, ils doivent être représentés car ils jouent un rôle significatif (exemple typique : les pannes de machines dans un atelier). On a alors affaire à des modèles stochastiques. Une troisième dichotomie sépare les modèles statiques et les modèles dynamiques. Dans les modèles statiques, le temps n’intervient pas (exemple : modèle comptable permettant de calculer un profit en fin d’exercice à l’aide d’un tableur). Dans les modèles dynamiques, le temps est un facteur essentiel du comportement et de l’état du système (exemple : réacteur chimique régi par des équations différentielles). Enfin, à l’intérieur des modèles dynamiques, on distingue les modèles discrets, dans lesquels l’état du système ne change qu’à certaines dates (exemple : une file d’attente devant un guichet), et les modèles continus ou ce changement est permanent (cas du réacteur déjà cité). Un modèle qui contient à la fois des composantes discrètes et continues est dit modèle mixte. 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. 2.3 NOTION DE SIMULATION Etymologiquement, le terme ‘‘simulation’’ est dérivé du mot latin ‘‘SIMULARE’’ qui veut dire : copier , feindre , faire paraître comme réelle une chose qui ne l’est point. 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 : • Décrire et analyser la dynamique d’un système • Répondre aux questions de type «What If ? » sur le système réel • Aider à la conception d’un système réel 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 : • Expérience conduite sur un calculateur à l’aide d’un modèle • Méthode numérique pour résoudre un problème en imitant la réalité • Représentation dynamique de la réalité obtenue en construisant un modèle et en le manipulant pendant un temps donné 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 : " La simulation est l'étude du comportement dynamique d'un système, grâce à un modèle que l'on fait évoluer dans le temps en fonction de règles bien définies, à des fins de prédiction". De là on peut dire que le terme de simulation pourrait être caractérisé par les mots clefs suivants : Un élément fondamental qui est le modèle Le modèle est manipulé (sur ordinateur), cette manipulation fournissant des solutions Les solutions trouvées sont celles du modèle et non du système modélisé Son but est de choisir parmi les solutions celle qui semble être la meilleure La simulation peut aussi être vue comme la conduite d’une expérimentation indirecte (sur le modèle et non sur le système) dans le but de comparer plusieurs façons de procéder. Elle ne résout pas le problème posé en trouvant la bonne solution. Elle aide seulement à prendre parmi plusieurs solutions la meilleure possible. Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. 2.3.2 Expérimentation directe et indirecte Fig 3(a) Expérimentation directe et indirecte Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. Fig3 (b): Expérimentation directe et indirecte 2.3.3 Quand simuler La simulation est souvent caracrtérisée dans la litterature comme la methode de dernier ressort. Ceci veut dire que si on a la possibilité de resoudre le probleme posé avec des Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. 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 Fig4(a) : approches pour étudier un système 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. Objectifs : On souhaite connaitre le temps que mettera le reservoir pour se vider. On peut envisager résoudre ce problème par différentes méthodes. Les plus significatives sont : 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 ) b. En effectuant des mesures 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. Ces trois méthodes induisent les quatre questions suivantes : 1. Est-ce qu'on simule seulement quand on ne peut pas calculer? 2. Est-ce que l'expérience avec la boîte n'est pas beaucoup faire pour une question si simple? 3. Peut-on supposer que la boîte est une bonne représentation du rservoir ? 4. Est-ce que Simuler c'est aussi mesurer? T 1 quand est-ce que nous devons simuler? Cette question a trait au probleme lui-meme et au choix d'une methode pour le resoudre. En général, il y a deux voies pour résoudre un problème: analytiquement et expérimentalement. Pour l'exemple du reservoir la première solution est obtenue par une methode analytique (un calcul selon une formule), la seconde et la troisième sont des solutions obtenue par des methodes expérimentales. Il faut remarquer a ce niveau que les méthodes analytiques donnent souvent une solution optimale, alors que les méthodes expérimentales mènent souvent à une bonne solution , mais pas nécessairement a la solution optimale. 2 T L'expérimentation avec la boîte n'est pas beaucoup faire pour une question si simple? 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. 3 T La boîte est-elle une bonne représentation du reservoir ? cette question a trait a un aspect tres important en simulation , à savoir celui de la vérification et de la validation d'un modele. Elle vise a etablir si le comportement du modèle correspond avec celui de la réalité (i.e. le reservoir). modélisée compte tenu des objectifs visés (temps de vidange du reservoir). 4 T Est-ce que Simuler c'est aussi mesurer? 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 soussystè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. exemple : Supposons que le reservoir a comme caractéristique spéciale, le fait que le robinet se bloque quelquefois. On ignore a quel instant le robinet se bloque, ce que l'on sait c'est qu'il se bloque c'est tout. Ainsi il devient impossible de résoudre le problème initial (analytiquement ou non-analytiquement). Il est bien sur possible de mesurer, mais qui nous dit que le prochain résultat sera le même?. Ce problème peut être résolu seulement si nous savons un peu plus au sujet du blocage du robinet. Par exemple, si nous avons une information statistique, telle qu'une distribution de la probabilité de bloquage du robinet, alors nous avons un problème solvable. La question sera alors de choisir entre une méthode de resolution analytique ou non-analytique. 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. découvrir que la conception n'est pas bonne) Ainsi, le processus du choix de la simulation comme une méthode de résolution peut etre schématisé comme suit : Fig4(b) : Démarche de choix d’une méthode de simulation 3. CONCEPTS LIES A LA METHODE DE SIMULATION Nous allons nous intéresser uniquement à la simulation dite ‘‘à événements discrets’’ en vue de préciser une terminologie que pas mal d’auteurs présentent chacun à sa manière, ce qui prête des fois à confusion. Ceci fait, nous nous intéresserons aux approches de modélisation des systèmes à événements discrets. 3. 1 VARIABLES D’ETAT D’UN SYSTEME 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. le plus longtemps inoccupé, alors le temps d’inoccupation des guichets devient une variable d’état du système. 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 3.2 ENTITES, RESSOURCES, ATTRIBUTS Les entités désignent des objets du système modélisé. Le terme en lui-même peut désigner aussi bien des objets passifs qui subissent des opérations que des objets actifs qui réalisent des opérations. 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). Une autre distinction pourrait être faite en fonction du caractère permanent ou temporaire d’une entité dans le système. Une entité permanente est une entité qui reste dans le système même lorsque la simulation est terminée (ex: machine , serveur). Une entité temporaire est une entité qui subit des opérations et quitte le système dès qu’elle termine ses opérations. La distinction qui nous paraît moins ambiguë et facilement compréhensible est celle désignant des termes spécifiques les entités passives ou temporaire et les entités actives ou permanentes. On distingue dans un modèle à événements discrets deux types d’objets : 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. l'opération (chariot transportant une piece dans un atelier). Une ressource peut être composée d’une ou de plusieurs unités (machine en plusieurs exemplaires, plusieurs serveurs réalisant en // la même opération, ...). Les ressources peuvent servir une ou plusieurs entités dynamiques au même moment. Une entité peut réquisitionner une ou plusieurs unités d’une ressource. Dans le cas ou le nombre d’unités n’est pas disponibles, l’entité se met en attente ou entreprend d’autres actions (se diriger vers une autre ressource, éjectée du système, ....). Si par contre l’entité est autorisée à disposer de la ressource, elle le fait pendant un certain temps puis libère la ressource. 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 , .... Remarque : Il est important de remarquer qu’un objet peut changer de type au cours de la simulation (i.e. il peut être une ressource et devenir entité s’il avait à subir une opération sur une autre ressource. 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'. Un objet (entité ou ressource) est caractérisé par un ou plusieurs attributs auxquels on peut affecter des valeurs. Ainsi les attributs peuvent être considérés comme des variable locales à l’objet. On distingue cependant, deux types d’attributs : contiennent les caractéristiques constantes de l’objet (durée de service, date d’arrivée dans le système, couleur d’une pièce, ...) Variables : contiennent les caractéristiques changeantes de l’objet (état d’une ressource, longueur de la file associée à une ressource, temps d’usinage restant pour une entité...) Fixes : 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. 3.3 Evénement , Activité , Processus 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. aussi événements endogènes et événements exogènes. 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. Il est important de souligner que l’identification d’un événement comme étant significatif ou non dans le contexte des objectifs visés par le modèle est strictement du ressort de l’analyste. 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 : • Le début de service d’un client va initier les opérations : extraire client de la file, servir le client 3.3.3 Processus Un processus est le regroupement d’une séquence d’événements dans l’ordre chronologique dans lequel ces événements se produiront. Comme les événements peuvent initier des activités, un processus peut inclure aussi des activités. Exemple : • L’arrivée d’un client , sa mise en file d’attente, son début de service , peuvent constituer un processus associé au client. 3.3.4 Relation entre Evénement, Activité, Processus Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. Fig5 : Relation entre Evenement, Activité et Processus Un événement a lieu a un point isolé (instant précis) sur l’axe du temps au moment duquel des décisions sont prises pour débuter ou finir une activité. Une activité a lieu à un instant donné et se termine à un autre instant fonction de sa durée. Un processus est une séquence d’événements ordonnés dans le temps et peut comporter plusieurs activités. 3.4 Contrôle du temps dans une simulation 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 0pWKRGH j SDV FRQVWDQW appelée aussi : Time slicing , par horloge, orientée temps, Synchrone 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. 0pWKRGH j SDV YDULDEOH appelée aussi : orientée événements, pilotée par les événements, par échéancier, sans horloge, asynchrone, Next event Cette méthode est beaucoup plus économique en terme de temps de calcul. On répertorie dans un échéancier (calendrier , agenda) par ordre chronologique, la liste des événements avec leurs dates d’occurrence. L’incrémentation du temps de la simulation se fait d’une date d’événement à une autre. Cette méthode est de loin la plus fréquemment utilisée vue son efficacité relativement à la méthode à pas constant. $3352&+(6 '( 02'(/,6$7,21 '(6 6<67(0(6 $ (9(1(0(176 ',6&5(76 4.1 Composants d'un modele a evenements discrets Un modèle est caractérisé par un aspect statique lié à la structure du système Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. modélisé, et par un aspect dynamique lié à l'évolution du système au cours du temps. 4-1-1 Partie statique Un modèle à événements discrets est composé d'objets ou entités (pièces, machines, etc ... ) avec lesquelles s'effectuent au cours du temps, des services qui peuvent être actifs (activités ou opérations) ou passifs (attente), et de relations entre ces objets (possibilité pour une pièce de passer sur une machine ... ). On distingue en général deux types d'objets : - 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. 4-1-2 Partie dynamique L'aspect dynamique d'un modèle réfère aux mécanismes de changements d'état. Lorsque le temps évolue, des interactions se produisent entre les objets qui composent le modèle et ceux-ci changent alors d'état. Ces changements d'état peuvent se faire de façon continue, discrète, ou une combinaison des deux. C'est ainsi qu'on parle de modèles "continus", modèles à "événements discrets", et modèles "combinés événements discretscontinus". 4-2 Construction d'un modele a evenements discrets Pour construire un modèle de simulation à événements discrets, le concepteur doit choisir une approche de modélisation. Dans la pratique, il existe trois grandes approches Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. (World View) pour modéliser un système. Si le concepteur a à sa disposition un langage de simulation, dans ce cas l’approche à utiliser est implicite puisque chaque langage offre normalement une (ou plusieurs approches). Si par contre, le concepteur utilise un langage de programmation général (Fortran, ...), alors le choix d’une approche est sous son entière responsabilité. Dans tous les cas, l’approche utilisée fournit un mécanisme conceptuel pour bien articuler la description sous forme d’un modèle. Les trois approches les plus connues sont : 1) 2) 3) : Event scheduling, Next Event : Activity Scanning : Process interaction Ainsi, un modèle à événements discrets peut être décrit soit : • en définissant les changements d’état qui ont lieu à chaque événement • en décrivant les activités dans lesquelles s’engagent les entités • en décrivant les processus à travers lesquels passent les entités 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 S S niveau 1 : niveau 2 : niveau 3 : Correspond au programme de contrôle de la simulation appelé aussi exécutif ou noyau Correspond aux opérations décrivant la dynamique du système simulé. Du point de vue de l’utilisateur, ce niveau constitue le modèle de simulation proprement dit Comprend un ensemble de routines utilitaires a) Le niveau 1 : Le noyau est responsable du séquencement des opérations (événements, activités, processus) qui ont lieu au fur et à mesure que la simulation progresse. Ainsi, le noyau contrôle le niveau 2 et comprend des routines chargées de : - Identifier quand aura lieu le prochain événement - S’assurer que les bonnes opérations aient lieu à cet instant 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). Par contre avec un langage de programmation général(Fortran, Pascal, C,...), il faudra écrire soit même le noyau et il faudra dans ce cas maîtriser tous les détails de fonctionnement du noyau. b) Le niveau 2 : Ce niveau est à la charge du programmeur est constitue le modèle de simulation du Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. point de vue du programmeur. C’est donc un ensemble d’instructions dont la structuration dépend de l’approche de modélisation adoptée. Il s’agira de routines décrivant des événements dans le cas d’une approche par événements, de routines décrivant des activités dans le cas d’une approche par activités ou de routines décrivant des processus dans le cas d’une approche par processus. c) Le niveau 3 : Comprend un ensemble de routines utilitaires appelées par le niveau 2. Il s’agit de routines pour générer des nombres aléatoires, collecter des statistiques, produire des résultats sous forme de rapport, etc... Le programmeur fait appel à ces routines au moment de l’écriture du niveau 2. 4.2-1 APPROCHE PAR EVENEMENTS 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. La simulation est alors effectuée en exécutant la logique associée à chaque événement selon une séquence ordonnée en fonction des dates d’occurrence de ces événements. C'est pour cela que cette approche est qualifiée d'approche par ‘’planification d'événement’’ car les temps des événements futurs sont codés explicitement dans le modèle et sont planifiés pour se produire au fur et a mesure que la simulation progresse. 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. Fig6 : Exemple avec file d’attente 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 ; le SERVEUR est Occupé Si 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 Fin événement Arrivée_Client La planification du prochain événement Arrivée_Client permet d’avoir une succession d’arrivées de clients. Ainsi, une fois le premier événement Arrivée_Client initié, on aura une suite d’événements de ce type qui auront lieu. Le traitement du client courant (qui vient d’arriver) dépend de l’état du système à l’instant où le client est arrivée. Si le serveur est occupé, les clients qui arrivent doivent attendre, dans ce cas l’état du système est changé en incrémentant le nombre de clients en attente. Dans le cas ou le serveur est libre, le client peut immédiatement se faire servir. Dans ce cas, l’état du système est changé en mettant l’état du serveur à Occupé. En plus, on doit planifier l’événement correspondant à la fin du service pour ce client (Fin_De_Service) dont la date d’occurrence sera déterminée en fonction de la durée de service de ce client (TNOW + Durée_de_Service , ou Durée_de_Service correspond au temps que mettra le serveur pour servir le client ou TNOW est le temps courant de la simulation). Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. Evénement : Fin_De_Service Ejecter le client du système ; Si Clients_En_Attente > 0 Alors /* on décrémente le nombre de clients en attente */ /* on engage un nouveau client dans le 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 */ Fin Fin événement z ETAT_SERVEUR ← Libre Fin_De_Service 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). La logique des deux événements Arrivée_Client et Fin_De_Service va nécessiter deux routines dans le niveau 2. Si on suppose que l’ordre de traitement des clients en attente n’est pas important, on peut schématiser à l’aide des organigrammes suivants la logique associée à chacun des deux événements afin de montrer ou se situe la communication entre les 3 niveaux. Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. Fig7 : Organigramme de la routine Arrivée_Client Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. Fig8 : Organigramme de la routine Fin_De_Service Dans l’approche par événements, les tâches principales du noyau seront : 1) Contrôler le temps : déterminer la date du prochain événement et initialiser l’horloge avec cette date 2) Identifier les événements : déterminer quels sont les événements qui doivent avoir Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. lieu au temps courant (horloge) 3) Exécuter les événements : déclencher les événements identifiés comme devant avoir lieu Pour pouvoir réaliser ces tâches, le noyau devra utiliser une liste d’événements qui constituera une sorte d’agenda dans lequel sont répertoriés les événements qui ont été planifiés. Ces événements sont ajoutés et détruits au fur et à mesure que la simulation progresse. Exemple : L’arrivée d’un client provoquera l’ajout d’un événement Fin_De_Service à l’agenda (appelé aussi calendrier ou échéancier). Elle provoque aussi l’ajout d’un événement Arrivée_Client correspondant au prochain client 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 : • la date d’occurrence de l’événement • l’identification de l’événement (en général un numéro) Des informations sur les entités impliquées par cet événement peuvent être aussi utiles (ex : choix d’un client dans la file). Au fur et à mesure que la simulation progresse, le noyau va exécuter un cycle à 2 phases: 1) contrôle du temps : cette phase comprend a) la détermination de la date du prochain événement en examinant le calendrier (liste des événements) b) l’initialisation de l’horloge avec la date du prochain événement c) la construction d’une liste des événements courants comprenant tous les événements dont la date d’occurrence est égale à l’horloge 2) Exécution des événements courants Les événements courants sont exécutés sous le contrôle du noyau. Aucun événement ne peut être déclenché sans le noyau. Ceci garantit que l’enchaînement logique des événements est entièrement contrôlé par le noyau. Une fois un événement exécuté, il est détruit (du calendrier et de la liste des événements courants) Ce cycle est répété jusqu’à la fin de la simulation. Un organigramme simplifié du noyau pourrait être : Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. Fig9 : Organigramme général du noyau 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. 4-2-2 Simulation manuelle de l’exemple client On va supposer les dates d’arrivée des clients et la durée de service de chaque connues et sont : Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. Numéro Client Date Arrivée 1 3.2 2 10.9 3 13.2 4 14.8 5 17.7 6 19.8 7 21.5 8 26.3 9 32.1 10 36.6 Numéro Client (1) 1 2 3 4 5 6 7 8 9 10 Date Arrivée (2) 3.2 10.9 13.2 14.8 17.7 19.8 21.5 26.3 32.1 36.6 Date Début Service (3) 3.2 10.9 14.4 18.6 21.7 24.1 28.4 31.1 33.2 36.6 Durée de Service 3.8 3.5 4.2 3.1 2.4 4.3 2.7 2.1 2.5 3.4 Date Fin Service (4) = (3) + Durée service 7.0 14.4 18.6 21.7 24.1 28.4 31.1 33.2 35.7 40.0 Temps d’attente (5) = (3) - (2) 0.0 0.0 1.2 3.8 4.0 4.3 6.9 4.8 1.1 0.0 Total : 26.1 Temps passé Dans le système (6) = (4) - (2) 3.8 3.5 5.4 6.9 6.4 8.6 9.6 6.9 3.6 3.4 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 d’attente moyen par client : 26.1 /10 = 2.61 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. Date Evénement 0.0 3.2 7.0 10.9 13.2 14.4 14.8 17.7 18.6 19.8 21.5 21.7 24.1 26.3 28.4 31.1 32.1 33.2 35.7 36.6 40.0 Numéro Client 1 1 2 3 2 4 5 3 6 7 4 5 8 6 7 9 8 9 10 10 Type Evénement début Arrivée Départ Arrivée Arrivée Départ Arrivée Arrivée Départ Arrivée Arrivée Départ Départ Arrivée Départ Départ Arrivée Départ Départ Arrivée Départ Nombre dans la file 0 0 0 0 1 0 1 2 1 2 3 2 1 2 1 0 1 0 0 0 0 Tot : 17 Nombre dans le système 0 1 0 1 2 1 2 3 2 3 4 3 2 3 2 1 2 1 0 1 0 Tot : 33 Etat du Serveur libre occupé libre occupé occupé occupé occupé occupé occupé occupé occupé occupé occupé occupé occupé occupé occupé occupé libre occupé libre Temps Libre du Serveur 3.2 0 3.9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.9 0 Tot : 8.0 D’après les totaux des colonnes (4) , (5) et 7 on peut calculer : % de Temps libre du serveur : [ 8.0/40.0] * 100 = 0.2 * 100= 20% :3 Taille Max de la file Nbre de clients Max en même temps dans le système : 4 Une représentation graphique de ces résultats donnerait : Fig10 : Representation graphique des résultats Cet exemple nous montre que pour réaliser une simulation selon une approche par 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. Si le modélisateur emploie un langage de programmation général (Fortran) pour coder le modèle, beaucoup d’efforts de programmation lui seront nécessités pour gérer la liste des événements et traiter les événements dans un ordre chronologique. 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, ). 4-2-3 Composantes d'un modéle de simulation a événements discrets Les modèles de simulation a événements discrets ont tous plusieurs composantes en communs et l’organisation logique de ces composantes permet d’aider le codage, la mise au point, et la mise a jour du programme traduisant le modèle de la simulation. En particulier, les composantes suivantes se rerouvent dans la plupart des modéles de simulation a événements discrets adoptant l'approche par ‘‘événement’’: L'état du système: L'horloge de la simulation: La liste des événements: Des compteurs statistiques: La routine d'initialisation. Routine de Gestion du temps (controle du temps): Routines associées événements: bibliothèque utilitaires: de aux routines Générateur des résultats: Le programme principal: défini par une collection de variables d'état décrivant l'état du système à a un temps particulier. variable indiquant la valeur courante du temps de la simulation. Une liste qui contient les dates d'occurrence des événement devant avoir lieu dans le futur. Variables utilisées pour collecter des informations statistiques sur les performances du système. Sous programme servant a initialiser le modèle de simulation au temps zéro. sous programme qui détermine le prochain événement a partir de la liste des événements et intialise l'horloge de simulation avec le date d’occurrence de cet événement courant. sous programme qui met à jour l'état du système quand un type particulier d'événement se produit (il y a une routine d'événement pour chaque type d'événement). ensemble de sous programmes utilisés pour générer des variables aléatoires identifées comme faisant partie du modèle de simulation. 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. 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. le contrôle à la routine associée a cet événement. Il controle aussi si la fin de la simulation est atteinte et invoque dans ce cas le générateur de resultats L’enchainement logique des différentes composantes est illustré dans la Figure suivante : PLVH D MRXU (WDW V\VWHPH PLVH D MRXU VWDWLVWLTXHV JpQpUDWLRQ SURFKDLQV HYHQHPHQWV HW DMRXWHU D OD OLVWH # ! " " pQpUDWLRQ GH YDULDEOHV DOpDWRLUH V Fin Simulation ? $ FDOFXOHU PHVXUHV GH SHUIRUPDQFHV VRXKDLWpHV (GLWLRQ GHV UpVXOWDWV % Fig : Mise en oeuvre d’une simulation selon l’approche orientée événement La simulation commence au temps T=0. A cet instant le programme principal invoque la routine d'initialisation où l'horloge de simulation est mise à zéro, l'état du système, les compteurs statistiques, et la liste des événements sont initialisés. La routine d’intialisation redonne le contrôle au programme principal, qui invoque la routine de gestion du temps pour déterminer quel type d'événement est imminent. Si un événement de type i est le prochain devant avoir lieu, l'horloge de la simulation est avancée au temps d’occurrence de l'événement i et le contrôle est rendu au programme principal. Le programme principal invoque la routine associée a l'événement i dans laquelle on a typiquement trois choses a faire : (1) l'état du système est mis à jour pour prendre en compte les effets fait qu'un événement de type i s'est produit; (2) des informations sur les mesures de performance du système sont collectées en mettant à jour les compteurs statistiques; et (3) les dates d’occurrences des Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. é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. L'organigramme de la mise en oeuvre d'une simulation a événements discrets basée sur une approche par evénements 'Event scheduling' est assez simple surtout lorsque le codage du modèle est fait dans un langage tel que FORTRAN, Pascal, ou C. 4.3 APPROCHE PAR ACTIVITES 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. Elle est très similaire à la programmation logique par règles de production : Si condition(s) Alors Action(s). Le concepteur décrit les activités dans lesquelles les objets du système s’engagent et prescrit les conditions qui causent le début ou la fin d’une activité. Les événements de début ou de fin d’une activité ne sont pas planifiés par le concepteur mais sont initiés à partir des conditions spécifiés pour l’activité. Au fur et à mesure que le temps de la simulation progresse, les conditions de début ou de fin d’une activité sont examinées (scrutées). Si ces conditions sont satisfaites alors les actions appropriées sont exécutées. 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. C’est une approche gourmande en temps de calcul puisque à chaque progression du Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. 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 : L’exemple de la banque pourrait être représenté par le diagramme : Fig 11 : Representation par un diagramme de cycles d’activités 4.4 APPROCHE PAR PROCESSUS 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 processus est une séquence d’opérations (événements ou activités) à travers lequel passe une entité durant son séjour dans le système. 5. MODELES DE SIMULATION CONTINUS - MODELES COMBINES Un modèle de simulation continu permet de décrire l’état du système par un ensemble de variables dites variables d’état qui changent de valeurs de manière continue au cours du temps. 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é. En général, un modèle continu est formulé sous forme d’équations différentielles permettant d’exprimer pour une variable d’état S son taux de changement en fonction du temps. Exemple: Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. La première équation spécifie la taux de changement ( dS(t) /dt) de S comme une fonction de S et de t. La seconde équation spécifie les conditions initiales pour la valeur de S ( pour t=0). L’objectif d’un modèle de ce type est donc de déterminer les changements de S au cours du temps. 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 : Le problème qui va se poser est comment calculer l’intégrale sur ordinateur. On utilise en général des méthodes d’intégration numériques ( Range-Kutta) qui consistent à subdiviser le temps (variable indépendante) en pas (Slice , time slicing) et calculer par approximation la valeur de la variable d’état. Plus le pas est petit et l’ordre d’approximation grand , plus le résultat sera précis. Lorsqu’on connaît une équation pour dS /dt, il est possible de déterminer 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 : Dans ce cas on n’aura pas à calculer d’intégrale. Néanmoins dans la pratique, la dynamique de la plupart des systèmes non discrets (fonderie, métallurgie, chimie, ....) se modélise selon la première approche (équations différentielles). Les langages de simulation qui offrent la possibilité de modéliser des systèmes continus, mettent à la disposition du programmeur (modélisateur) un support (structures de données) pour coder directement ces équations. Dans la réalité, beaucoup de systèmes possèdent un aspect discret et un aspect continu, ces deux aspects interagissant entre eux. Ces systèmes peuvent être modélisés par des modèles dits ‘‘combinés’’. Les langages offrant cette possibilité mettent à la disposition du concepteur des outils pour programmer ou modéliser les interactions. Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. Fig12 : changements d’état dans une simulation 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. 6 LES ETAPES D’UN PROJET DE SIMULATION Les étapes qui constituent tout projet de simulation peuvent être schématisées par l’organigramme suivant : Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. 6.1. Formulation du problème Toute projet de simulation commence d’abord par l’énoncé du problème à résoudre. Si cet énoncé est fait par les personnes qui ont rencontré le problème, l’analyste doit faire très attention de façon à comprendre clairement le problème. Si par contre, l’énoncé est fait par l’analyste, il est très important aussi que les personnes pour lesquelles il doit résoudre le problème (clients de l’étude) comprennent et se mettent d’accord sur la formulation qui a été faite. 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. 6.2. Fixation des objectifs Une fois le problème formulé, il faudra définir les objectifs visés par le projet de simulation. Ceci comprend : z z z z z z Les questions auxquelles devra apporter une réponse l’étude par simulation qu’on veut mener Le personnel qui sera requis Le matériel et logiciel informatique Les divers scénarios qu’on veut investiguer, les sorties attendues, Les coûts de l’étude ainsi que les temps requis etc... 6.3. Construction du modèle 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. On doit en principe commencer par un modèle de base simple et l’affiner au fur et à mesure de façon à obtenir le modèle répondant aux objectif visés. On doit souligner l’importance d’impliquer le client dans cette étape. 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. Il n’est pas nécessaire de construire du premier coup un modèle excessivement complexe qui augmentera les coûts et les délais de réalisation sans pour autant accroître la qualité des résultats. 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. 6.4 Collecte des données 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). Il faut remarquer que sur l’organigramme, les étapes de construction du modèle et de collecte des données sont placées au même niveau. Ceci signifie en fait que ces deux étapes peuvent progresser en parallèle. 6.5 Codage Il s’agit de traduire le modèle conceptuel obtenu à l’étape 3 dans une forme acceptable par l’ordinateur (i.e. programme appelé aussi modèle opérationnel). Pour cela, il va falloir utiliser un langage de simulation parmi ceux disponibles. Certains langages de simulation offrent l’avantage de séparer entre le cadre d’expérimentation (Experimental Frame) qui contient toutes les données et les informations pour exécuter la simulation. Il devient alors possible de faire différentes expérimentations sur le même modèle en changeant uniquement le cadre d’expérimentation (données d’expérimentation). C’est le cas avec SIMAN. 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. Les recommandations pour résussir cette étape sont : 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 : T T T T Le modérateur Le concepteur Le programmeur Le testeur : ou chef de groupe : qui a développé le modèle conceptuel : qui a traduit le M.C. en programme : responsable de la vérification 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. %) # $ & $$ Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. Certains langages de simulation permettent de visualiser sous forme d’animation graphique tous les changements d’états qui se produisent au fur et à mesure que la simulation progresse. Il devient alors plus facile de detecter les anomalies ou erreurs dans le modèle. Par exemple, une ressource qui ne change jamais d’état est signe d’anomalie. Elle peut être la conséquence d’une erreur de programmation ou de modélisation. Le plus important est que l’erreur devient visible à l’écran et donc plus facile à l’écran. 6.7 Validation La validation consiste à s’assurer que le modèle conceptuel est une représentation fidèle du système réel. Il s’agit en fait de savoir si le modèle peut être substitué au système réel pour le but de l’expérimentation. Dans le cas ou le système existe, la façon idéale de valider le modèle conceptuel est de comparer ses sorties avec celles du système. Malheureusement, on n’a pas toujours cette possibilité surtout dans les projets de conception de nouveaux systèmes. Les techniques de validation utilisées en simulation peuvent être calssées en deux catégories : les techniques subjectives et les techniques objectives. 6.7.1 Techniques de validation subjectives Les techniques les plus importantes sont : 6.7.1.1 Validation d’apparence (face validation) C’est la première validation à faire et qui consiste à soumettre le modèle conceptuel à des personnes familières du système réel modélisé. Ces personnes seront chargées de porter des critiques sur le modèle concpetuel, le but étant de s’assurer que toutes les suppositins ou hypothèses faites dans le modèle sont correctes. La crédibilité du modèle augmente au fur et à mesure que les anomalies détectées dans le modèle sont corrigées. 6.7.1.2 Analyse de sensibilité (Sensitivity analysis) Il s’agit de tester si un changement dans les données d’entrée du modèle, entraîne un changement prévisible dans les sorties. Par exemple, si le taux d’arrivée des clients croit, le temps d’attente dans la file devrait croitre aussi. Il s’agira en fait de determiner si le modèle réagit correctement aux changements de valeurs de certaines données d’entrées et que cette réaction est bien celle à laquelle on s’attendait. 6.7.1.3 Test des conditions extrêmes Il s’agit de tester si le modèle se comporte normalement lorsque les données d’entrée sont à leurs valeurs maximales. Par exemple, si le taux d’arrivée des clients est fixé à sa valeur maximale, cette valeur aura -t-elle comme effet en sortie un accroissement du temps d’attente dans les files, du temps de séjour des clients dans Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. le système, du nombre de clients dans les files, etc... 6.7.1.4 Validation des hypothèses Il y a deux types d’hypothèses (suppositions) qu’on peut faire concernant le modèle concpetuel : des hypothèses structurelles liées au fonctionnement du système modélisé et des hypothèses sur les données du modèle. z z Les hypothèses structurelles peuvent être validées en observant le système, en les discutant avec le personnel qualifié. Il faut préciser qu’une personne seule ne peut en aucun cas connaître à elle seule tout sur le système réel et on sera amené impérativement à consulter plusieurs personnes de différentes spécialités (opérateur sur machine, ingénieur, chef d’atelier, administrateur, etc...) Les hypothèses ou suppositions concernant les données du modèle doivent aussi être validées. Ceci dépend évidemment de la nature de la donnée. Si on a supposé par exemple que le temps séparant les arrivées des clients est une varaible indépendante qui suit une distribution exponentielle, la validation d’une telle hypothèse consistera à : T T T T Faire une Collecte des données sur les temps séparant les arrivées de clients. Effectuer un test statistique pour s’assurer d’indépendance de cette variable est acceptable. que l’hypothèse Estimer le paramètre de la distribution supposée (exponentielle dont le paramètre est une moyenne). Effectuer un test d’adéquation (goodness-of-fit) pour s’assurer que l’hypothèse d’une distribution exponentielle est aussi acceptable. 6.7.1.5 Tests de Turing Il s’agit de comparer les sorties du modèle à celles du systèmes réel. Cette technique consiste à préparer un nombre N de résultats en faisant des expérimentations avec le modèle. On prépare aussi N résultats à partir d’observations du système réel. Ces résultats sont présentés sous le même format et contiennent les mêmes types de mesures. On les soumet à une personne familière du système (donc habituée à ces types de mesures). Si cette personne arrive à distinguer les résultats issus de la simulation de ceux issus des observations du systèmes réel, alors le modèle est consédré comme inadéquat. Dans le cas contraire, on considère que le modèle de conceptuel est une représentation fidèle du système réel et peut le remplacer en vue de réaliser des expérimenations. 6.7.2 Techniques de validation Objectives Ces techniques sont basées sur l’utilisations de méthodes statistiques en vue de valider les résultats produits par une simulation. Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. 6.7.2.1 Validation des sorties (test d’hypothèses) Cette technique consiste à comparer les sorties du modèle avec celles du système. Ceci suppose donc que le système existe déjà. Une méthode de comparaison très utilisée est celle basée sur le t-test dont le principe est le suivant : Exemple : Si la mesure de performance à valider est : le temps d’attente moyen d’un client devant un guichet de service. Après observation du système durant 5 jours, on s’aperçoit que le temps moyen mesuré est égal à 3 mn. On effectue 5 simulations avec le modèle (une simulation pour une journée) qui donnent comme résultats pour le temps d’attente moyen : 1.63 , 2.22 , 3.12 , 1.09 , 2.11 mns. Il s’agit alors de tester si l’hypothèse : H0 : E[Xi] = 3 mns est acceptable ou non (H1: E[Xi] ≠ 3 mns) ou Xi est la variable aléatoire correspondant au temps d’attente moyen durant la ième simulation. La méthode statistique à utiliser est celle utilisant la distribution de Student qui s’applique au cas des petits échantillons (comme ici). Il s’agira de calculer le paramètre t de la distribution et de se fixer le niveau de confiance à accorder au résultat (95% ou 99%, ...), de regarder dans la table donnant t si la moyenne espérée 2 (3mn) est à retenir ou à rejeter. (Voir aussi le test du χ ) 6.7.2.2 Validation par les données historiques Il s’agit de conduire des simulations en utilisant les données historiques du système au lieu d’utiliser des données artificielles. On devrait s’attendre alors à ce que les sorties du modèle et celles du système soient en parfaite concordance. Pour valider cette hypothèse puisque les sorties sont par nature aléatoire, on aura besoin de conduire des test d’hypothèse (Student, snédecor, Chi-deux, ...). 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. 6.8 Conception d’un cadre d’expérimentation Il s’agit de définir pour chaque scénario devant être simulé ou expérimenté un certains nombre de paramètres tel que : • Durée de la simulation Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. • nombre de simulation à faire (Réplications) • état initial du modèle • règles de gestion des files d’attente • etc. 6.9 Exécution de la simulation et Analyse des résultats Le modèle opérationnel ou programmé est le support principal pour réaliser une simulation sur ordinateur. Il sera analysé et interprété par le simulateur qui délivre en sortie des résultats purement statistiques (moyenne, variance, écart type , minimum, maximum,...). L’analyse de ces résultats aura pour objectifs d’estimer les mesures de performances des scénarios qu’on a expérimenté. 6.10 Exécutions supplémentaires A ce niveau, on dispose d’un ensemble de résultats provenant des différentes simulations qu’on a réalisé ainsi que d’une analyse de ces résultats. Il s’agira de déterminer sur la base de cette analyse si d’autres simulations doivent être faites, si d’autres scénarios non prévus doivent être expérimentés afin de s’assurer que le modèle répond bien aux objectifs visés dans l’étape 2. 6.11 Documentation La documentation est nécessaire pour différentes raisons et concerne aussi bien le modèle que les résultats de la simulation. Si le modèle aura un jour à être réutilisé par d’autres personnes, la documentation les aidera à comprendre le fonctionnement du modèle et leur facilite toutes modifications ou mises à jour du modèle. 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 L’objectif de toute simulation est de proposer pour un problème plusieurs solutions. Le choix de la meilleure solution devra être fait par l’analyste qui la justifiera dans la documentation et la propose (et ne l’impose pas) au client. La décision de retenir cette solution pour une éventuelle implémentation reste donc une responsabilité du client. C’est ainsi que la qualité et la richesse de la documentation peut avoir une grande influence sur cette étape. De plus, l’implication du client tout au long de la conduite du projet augmente les chances d’une implémentation de la solution retenue. Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. 7 PROBLEMES STATISTIQUES LIES A LA SIMULATION L’analyse des résultats d’une simulation consiste en général à estimer la valeur de la moyenne de la réponse fournie par la simulation ainsi que l’estimation de sa variance. Ces deux estimations sont influencées par les conditions initiales avec lesquelles on commence l’expérimentation (i.e. la simulation. Ces conditions comprennent : T T T T L’état initial ou de début de la simulation (file vide ou non, serveurs libres ou occupés,...) Le temps à partir duquel on commence la collecte des statistiques La durée de la simulation Le nombre de simulations à faire 7.1 Etat initial Dans tout modèle de simulation, l’état initial avec lequel on commence la simulation doit être spécifié. Le plus simple et probablement le plus communément utilisé est : un état initial dit ‘‘Vide et Libre’’ , c’est à dire un état dans lequel toutes les files d’attente sont vides et tous les serveurs (ou ressources) sont libres au début de la simulation. La validité d’un tel état dépend de la nature du système modélisé et du fait qu’on s’intéresse au comportement du système dans son régime transitoire ou son état stationnaire. L’état stationnaire ne signifie pas une absence de variabilité dans la réponse produite par la simulation mais signifie que cette variabilité n’est plus affectée par l’état initial ou les conditions initiales. Fig14 : Etat transitoire et Etat stationnaire d’un systeme Lorsque l’objectif est d’analyser le comportement d’un système lorsqu’il est à l’état stationnaire, on peut améliorer l’estimation de la moyenne en commençant la simulation dans un état autre que ‘‘Vide et Libre’’. Ce nouvel état doit être représentatif du début de la stationnarité du système. On peut le déterminer en conduisant une première simulation (essai) et en observant graphiquement le résultat afin de savoir à quel moment le système passe dans un état stationnaire. Par contre, si on veut analyser le comportement du système à l’état transitoire, il faut que les conditions initiales (état initial) de début de la simulation doivent refléter l’état initial du système. 7.2 Troncature des données Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. 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. Cependant en éliminant une partie des données, on pourrait accroître l’estimation de la variance de la moyenne observée. Ainsi, la troncature permet d’améliorer la qualité de l’estimation de la moyenne au prix d’une possible augmentation de la variabilité des résultats de la simulation(Variance). La méthode la plus utilisée pour déterminer le point ou l’instant à partir duquel on fait une troncature est de réaliser une simulation d’essai (pilot simulation) et d’examiner la réponse graphiquement. L’instant sera alors choisi comme celui à partir duquel la réponse du système semble avoir atteint un état stationnaire. Il existe aussi d’autres méthodes qui tentent de formaliser la procédure de troncature sous forme de règles qui peuvent être incorporées dans le programme de simulation lui-même et dont le but et de déterminer automatiquement le point de troncature. 7.3 Durée de la simulation - nombre de réplications 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. Dans le premier cas, on obtient généralement une meilleure estimation de la moyenne à l’état stationnaire du fait que le biais induit par les conditions initiales n’est introduit que peu de fois et moins de données seront tronquées. Cependant, on disposera d’un nombre réduit d’échantillons ce qui augmente en général la variance de la moyenne. L’exécution de plusieurs simulations de courtes durées (réplications) a comme inconvénient d’augmenter le biais du au conditions initiales car il est introduit à chaque exécution. Plus le biais est grand, plus il est important de faire des simulations de longue durée afin de réduire son effet sur les résultats. Différentes méthodes existent pour spécifier la durée d’une simulation. La plus générale est de spécifier le temps au bout duquel la simulation doit s’arrêter. l’inconvénient de cette méthode est que le nombre d’échantillons qui sera collecté est aléatoire et peut varier d’une exécution à une autre. Une méthode qui permet de contrôler la taille de l’échantillon est de spécifier le nombre d’entités à injecter dans le système (100 pièces, 50 clients,...).Dans ce cas, la simulation s’exécute jusqu’à ce que le nombre spécifié soit complètement traité. Ainsi, la simulation s’arrête avec un système se trouvant dans un état ‘‘Vide et Libre’’. 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). 7.4 Données du modèle 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 : T T T Le volume de données disponibles Les données disponibles sont réelles ou de simples estimations Les variables sont indépendantes ou non Dans le cas d’une variable indépendante des autres, on a le choix entre: T Supposer la variable deterministe (non aléatoire) T Ajuster une distribution de probabilité à la variable T Utiliser la distribution empirique 7.4.1 Ne pas tenir compte de l’aléatoire 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. Ex : Si on dispose d’une machine qui usine les pièces en un temps égal exactement à 1,5 mn. Si on suppose que la machine nécessite un changement d’outils dont la fréquence suit une distribution exponentielle de moyenne 12 mn. Si on suppose aussi que le temps nécessaire pour changer d’outils est une variable aléatoire qui suit une distribution exponentielle de moyenne 3 mn. Une simplification de cette situation serait de considérer que la machine opère en un temps constant T = 1,5 + approximation (fréquence de changement) + approximation (temps de changement), et ignorer l’aspect aléatoire. Cette simplification aura de lourdes conséquences sur d’autres mesures de performances du système tel que : le temps d’attente moyen devant la machine ou le Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. nombre moyen de pièces en attente devant la machine. 7.4.3 Ajuster une distribution de probabilité à la variable Lorqu’on dispose d’un volume de données suffisant (100 ou plus), il sera possible d’ajuster une distribution de probabilité théorique à ces données en utilisant une méthode statistique convenable. Le choix d’une distribution parmi d’autres devra être justifié en effectuant un test d’adéquation (goodness-of-fit) dont les principes pourraient être trouvés dans les ouvrages de statistiques. Il faut remarquer qu'il existe aussi des logiciels conçus pour réaliser automatiquement un ajustement (ex: ExpertFit). 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. La connaissance des caractéristiques de certains phénomènes peut aussi aider (ou guider) dans le choix d’une distribution. Ceci est vrai par exemple pour les phénomènes d’arrivées (arrivées de clients, de pièces, d’appels téléphoniques, ..), dans lesquels lorsqu’on est sûr que les arrivées se produisent l’une après l’autre (pas en même temps) et sont complètement aléatoires et indépendantes les unes des autres, alors le processus suit une loi de Poisson. C’est un résultat connu théoriquement et on peut montrer dans un tel processus que le nombre d’arrivées pendant une période t suit une distribution de Poisson et que le temps séparant les arrivées suit une distribution exponentielle. L’ajustement d’une distribution de probabilité aux données se fait en trois étapes qui sont : &KRL[ G·XQH GLVWULEXWLRQ La première chose à faire c’est d’identifier si le phénomène est discret ou continu. Les données discrètes résultent d’un processus de comptage (nombre de clients qui arrivent dans une banque toutes les heures, nombre de pièces qui arrivent sur une machine pendant un certain temps, nombre de changements d’outils effectués sur une machine en une journée,etc.). Les données continues résultents d’un processus de mesure (temps mis par un client pour être servi, temps mis par une pièce pour quitter le système, poids d’une pièce brute, etc.). Du fait que les distribution de probabilités se répartissent en distributions discrètes (Poisson, Binomiale, Géométrique,..) et distributions continues (Uniforme, Exponentielle, Normale, Triangulaire, etc.), cette première étape permettra donc de choisir le bon type de distribution (on ne peut pas choisir une distribution continue si les données sont de type discrèt). (VWLPHU OHV SDUDPqWUHV GH OD GLVWULEXWLRQ FKRLVLH Chaque distribution possède des paramètres propres. Par exemple , une distribution de Poisson est caractérisée par un seul paramètre qui est la moyenne, une distribution Normale est caractérisée par deux paramètres : une Moyenne et un Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. Ecart type, etc. Il s’agira donc de trouver pour la distribution choisie les paramètres qui la caractérisent. (IIHFWXHU XQ WHVW G·DGpTXDWLRQ JRRGQHVVRI)LW Une méthode de test d’adéquation parmi les plus utilisées est celle du ChiDeux 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 Chideux). 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. 8WLOLVHU OD GLVWULEXWLRQ HPSLULTXH Lorsqu'on dispose d'un volume de données très réduit, une tentative d'ajustement d'une distribution de probabilité à ces données n'est pas appropriée. De même si après avoir essayé toutes les possibilités d'ajustement d'une distribution aux données disponibles en utilisant les techniques conventionnelles, on n'aboutit a aucun résultat satisfaisant, alors il est toujours possible d'utiliser la distribution dite 'empirique' car utilisant les données telles qu'elles se présentent. 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 : Temps réparation 0.0 < x ≤ 1.0 1.0 < x ≤ 2.0 2.0 < x ≤ 3.0 3.0 < x ≤ 4.0 4.0 < x ≤ 8.0 Total fréquences de panne observées 27 13 31 18 11 100 /* 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 */ L’allure graphique de cette distribution de frequences serait : Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. En comparant visuellement cette courbe à celles des distributions de probabilités théoriques connues, on s'apercevra que sa forme n'est semblable a aucune des courbes de ces distributions. Ainis aucune distribution ne peut etre ajustée a ces données en utilisant les techniques conventielles. On peut alors decider d'utiliser les données telles qu'elles se présentent. Ceci veut dire qu'au cours de la simulation si nous aurons besoin d'un valeur pour x (un temps de réparation) il faudra faire un tirage a partir de la distribution continue représentée par le tableau précedent. Ceci requière de definir une fonction d'interpolation qui permet de retourner des valeurs toujours comprise entre 0 et 8 et qui tiennent compte de l'allure de la dispersion des valeurs observées dans la réalité. 3DV GH GRQQpHV GLVSRQLEOHV Il existe plusieurs situations où on peut être amené à conduire une simulation mais on ne dispose pas de données. Ceci est vrai dans les projets de conception (le système n’existe pas donc les données d’observation n’existent pas), ou dans des projets où la collecte des données revient cher. 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. 7.5 Expérimentation et analyse des résultats 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...). La simulation d’un modèle stochastique (contenant de l’aléatoire) produits en sortie des résultats aléatoires. Una analyse statistique de ces résultats s’impose donc. Les questions auxquelles il faudra apporter une réponse sont : Determiner la durée de la simulation. savoir interpréter les résultats savoir analyser les différences entre les résultats issus de plusieurs simulations différentes (replications) La réponse a toutes ces questions dépend de la nature du système modélisé. L’analyse des résultats dépend de la nature du système. Dans la pratique, on distingue les systèmes qui se terminent (leur fin est connue terminating systems) et les systèmes sans fin (qui ne se terminent pas ; Non terminating systems). .1 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 : - Une banque ouvre de 8h à 17h - Un guichet de vente de billets de stade ferme dès que les tickets sont tous vendus. Par définition, un système de ce type a des conditions initiales fixes et un mécanisme marquant la fin de la simulation. Le système revient dans son les conditions initiales avant de se remettre en route (en général ‘libre et vide’). L’objectif de la simulation dans ce cas est d’analyser le comportement du système pour une certaine durée qu’on se fixe. Du fait que les conditions initiales ne changenet pas, et Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. la durée de la simulation est fixe, le seul paramètre à contrôler est le nombre de simulations à faire (réplications). Ainsi, la procédure d’analyse des résultats va consister à conduire un certain nombre de simulations, choisir la mesure de performance à analyser, calculer la variance de cette mesure et determiner si l’intervalle de confiance est dans des limites acceptables. Exemple : Si on veut estimer le nombre moyen de clients dans la file d’attente, on doit : - 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. .2 &DV G·XQ V\VWqPH TXL QH VH WHUPLQH SDV 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. L’objectif d’une simulation de ce type de système est d’analyser le comportement du système lorsqu’il atteint un état stationnaire sur le quel les conditions intiales n’ont plus d’effet. Pour cela, une bonne analyse du système à l’état stationnaire nécessite l’élimination des effets des conditions initiales sur les résultats. Il existe pour cela trois méthodes : 1T )DLUH XQH VLPXODWLRQ WUqV ORQJXH (Swanping) 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. 2T &RPPHQFHU OD VLPXODWLRQ j SDUWLU GH O·HWDW VWDWLRQQDLUH (Preloading) 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. 3T 6XSSUHVVLRQ GH OD SKDVH WUDQVLWRLUH (Deletion) C’est la phase qui est influencé par les conditions initiales. Il s’agit donc de determiner la durée de cette phase de telle sorte à ne commencer la collectes des observations qu’après écoulment de cette phase. Il existe des méthodes statistiques pour determiner la période transitoire mais la plus pratique est de représenter graphiquement la mesure de performance qui nous inetresse au cours de la simulation et de voir à quel moment un état stationnaire est atteint. La procedure à suivre pour l’analyse des résultats de la simulation pour le cas d’un système qui ne se termine pas serait donc : D) Conduire quelques simulations d’essais pour determiner la durée de la phase transitoire E) Faire n simulations en éliminant la phase transitoire F) calculer un intervalle de confiance pour la mesure de performance qui nous interesse en utilisant les observations issues des n replications. Si l’intervalle est trop grand, on doit determiner le nombre de simulations supplémentaires à faire en vue de réduire l’intervalle de confiance. On réalise les simulations Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. supplémentaires et on reprend en C avec toutes les observations. 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é. La complexité des modèles rend souvent impossible une programmation en langage machine ou en langage assembleur, car elle est trop longue et trop couteuse ; la programmation en un langage très general comme FORTRAN ou PASCAL est souvent possible et represente un progres certain mais n'est malheureusement pas adaptée, car d’une part 1'ecriture d'un modèle de simulation reste souvent longue et fastidieuse, d'autre part le modèle resultant est souvent loin d'etre performant et il est difficile de separer l'elaboration du modèle de son ecriture en vue de l'exploitation. 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. 3DQRUDPD GHV ODQJDJHV GH VLPXODWLRQ Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. 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; - diminution des coûts de programmation et d’exploitation par l'emploi d’outils plus "évolués". Ils se traduisent par l'évolution chronologique suivante dans l'utilisation des outils de programmation des modèles de simulation : - langages informatiques généraux (FORTRAN, PASCAL, etc...) - langages adaptés (SIMULA et bibliothèques de sous-programme :GASP IV, FORTSIM , etc.) - langages de simulation. En ce qui concerne les langages de simulation, il existe actuellement, en complément des simulateurs généraux (ou a usage général), des simulateurs dits ‘‘spécialisés’’ et ‘‘dédiés’’ car s'adaptant très bien a des domaines d'application précis (systèmes de production, réseaux de communication, systèmes de manutention, etc.) +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 Il n'y a pas eu de bouleversement considérable; SIMSCRIPT et GPSS offrent de nouvelles versions qui n'apportent pas de possibilités particulières. Il convient également de noter les premiers travaux de Alain B. Pritsker avec la lignée des langages GASP, langage par évènements, et QGERT qui associe des primitives graphiques à des processus. On peut signaler aussi , en Angleterre, l'apparition du langage ECSL basé sur l'approche par activités. Début Décennie 1980-1990 L'émergence des problèmes d'automatisation de la production manufacturière provoquent un très net regain d'intérêt pour la simulation et fait évoluer de façon considérable l'offre dons le domaine. 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. Cette approche est particulièrement intéressante dans le domaine de l'ingénierie, où des personnes de compétences et fonctions très diverses peuvent utiliser une même base de modèles ou l'enrichir moyennant une connaissance du langage objet sous-jacent; elle permet également de développer rapidement des simulateurs spécialisés et des modélisations plus flexibles que celles qui sont développées actuellement. /HV ODQJDJHV GH VLPXODWLRQ JéQéUDX[ 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 : 6LPXODWHXU 6,06&5,37 3D\V USA 'DWH 1963 6,08/$ Norvège 1966 *366 USA 1968 *$63 USA 1974 4*(57 USA 1977 Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. 6/$0 USA 1979 41$3 France 1980 &$36(&6/ Grande Bretagne 1980 6,0$1 USA 1982 Fig. 2-1 : Liste des langages de simulation 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/V est le produit standard d'IBM - GPSS/H est une version développée par Wolverine Software Corporation dont les efforts ont porté sur les points suivants : rapidité d’exécution, enrichissement des instructions, interface d’E/S, aides de mise au point et de recherche d'erreurs, etc... - GPSS/PC C'est une version compatible PC développé en 1984 et connercialisé par la societé Minuteman Software (Rangez, Massachusetts). Elle comporte un intéressant environnement interactif de simulation avec possibilité d’animation. 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. autrès langues). En plus de GPSS/H, la meme société commercialise un progiciel d'animation appelé PROOF permettant de faire des animations graphiques en temps différé des modèles de simulation a evenements discrets a partir d'un fichier de trace d'execution. GPSS/H comporte plus de 60 instructions standards dont la plupart ont une représentation graphique sous forme de bloc dont la forme est revelatrice de l'opération exécuté par la l'instruction correspondante. La construction d'un modèle GPSS consistera generalement a combiner un ensemble de blocs ou symboles obtenant ainsi un diagramme a blocs qui représente le cheminement des entités à travers le système. Ce diagramme sera ensuite traduit par l'utilisateur sous forme de programme composé d'un ensemble d'instruction GPSS en vue de son exécution sur ordinateur. Le diagramme a blocs en lui-même peut être utilisé comme support de communication lors de discussions sur le modèle. 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 48(8( 6(59(54 6(,=( 6(59(5 '(3$57 /9(4 1/9(4 / 7(67 6(59(54 6723 $'9$1&( 59(;32 6723 7(50,1$7( 6(59(5 5(/($6( La traduction de ce diagramme sous forme de programme GPSS (modèle de simulation operationnel) conduit au programme listé ci-dessous : Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. 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. " SERVER 0.516 " " ! " "#$ $ $ 1000 0.523 AVAIL 48(8( 0$;,080 &217(176 $9(5$*( &217(176 727$/ (175,(6 =(52 (175,(6 3(5&(17 =(526 $9(5$*( $9(5$*( 7,0(81,7 7,0(81,7 SERVERQ 8 0.605 1000 454 45.4 0.614 1.124 " " " % " % " 1 2 OFF OFF 100000 200000 101001 200999 1001 999 0.71 0.69 47$%/( 180%(5 &855(17 &217(176 0 FIGURE 3.5 Résultats de la simulation avec GPSS/H 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. GPSS/PC. Ses possibilités de generation de variables aléatoires sont limitées. GPSS/PC n'est pas complètement compatible avec les versions mini-ordinateur et mainframe de GPSS mais offre les mêmes éléments de modelisation de base (i.e., transactions et facility ou installations) que GPSS/H. 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. /H ODQJDJH 6,06&5,37 SIMSCRIPT est un langage général de programmation, orienté vers la simulation. Comme langage de simulation, il offre l'approche par "événements" , et ne possède pas de support graphique de représentation. Un modèle n'est alors qu'un programme, c'est à dire une suite d'instructions. Dans ce programme on structure les données (entités et leurs attributs) dans un entête (appelé PREAMBLE dans la terminologie du langage) ; une fois la structure de données établie, on utilise des modules standards (CREATE, DESTROY, REMOVE, SCHEDULE, etc ... ) pour décrire et manipuler les événements gérés par un échéancier. L'occurrence d'un événement provoque l'appel d'un sous-programmme décrivant le changement d'état correspondant. Les événements peuvent être déclenchés par le monde extérieur (ex : arrivée d'une pièce), ils sont dits exogènes, ou déclenchés par un autre événement interne (ex : entrée d'une pièce sur une machine déclenchée par l'événement de sortie de la pièce précédente) et dans ce cas ils sont dits endogènes. Un programme principal ou maître (appelé MAIN) permet d'établir les conditions initiales et de lancer la simulation. SIMSCRIPT possède une grande puissance de calcul scientifique et des possibilités de traitement de listes, et peut être plus efficace que FORTRAN s'il est utilisé comme simple langage de programmation (le langage permet d'écrire des programmes qui n'ont rien à voir avec la simulation ). La version la plus récente du langage est SIMSCRIPT Il.5. distribuée par la société CACI-Los Angeles. Celle-ci offre l'approche par "processus" ou l'approche par "événements" ou une combinaison des deux. /H ODQJDJH 6/$0 *éQéUDOLWéV VXU OH ODQJDJH 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). Avec SLAM, un système à événements discrets peut être modélisé en utilisant l’approche par "processus", l'approche par "événements" ou une combinaison des deux. SLAM permet aussi de modéliser des systèmes continus grâce a des équations différentielles ou aux différences. Pour les systèmes dits combinés, SLAM offre la possibilité de combiner les deux approches de modélisation: à événements discrets et continue. 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) SLAM II est disponible dans plusieurs versions, dépendant de la plate-forme matérielle et des fonctionnalités offertes. Le langage de base est disponible pour toutes les catégorie d'ordinateur, mais ne permet pas de disposer d'une animation graphique. Cependant, il existe une version micro-ordinateur de SLAM II appelée SLAMSYSTEM offrant un environnement de travail très convivial et qui s'intègre parfaitement a l'environnement WINDOWS de Microsoft. SLAMSYSTEM permet entre autrès d'animer graphiquement le modèle de simulation et d'avoir une présentation graphiques des résultats de la simulation (courbes, histogrammes, camemberts,..). L'envrionnement le plus complet proposé par la société est le couple SLAMII/TESS disponible pour des stations de travail, mini-ordinateurs, et mainframes. En plus des capacités graphiques semblable à celles de SLAMSYSTEM (animation, présentation graphique des résultats), cet environnement s'articule autour d'une base de données permettant de gérer les entrées/sorties du modèle et de réaliser un ceratin nombre de fonctions statistiques sur les résultats d'une simulation comme le calcul d'intervalles de confiance. Avec SLAMSYSTEM ou SLAMII/TESS, l'utilisateur peut construire interactivement le modéle sous forme de réseau directment a l'écran qui sera automatiquement traduit en un programme source directement exécutable par SLAMII. Ceci permet d'augmenter la vitesse et la précision de la contruction d'un modèle. Enfin, il existe aussi une extension de SLAMII permettant de simuler des systèmes de Manutention (convoyeur, AGV,...) ([HPSOH GH 0RGéOLVDWLRQ DYHF 6/$0 La modélisation de l'exemple de la banque peut etre représentée par le réseaux SLAM suivant : La traduction de ce réseau sous forme de programme informatique exprimé dans les instructions et la syntaxe de SLAM est le suivant (les numéros de ligne ne font pas partie du programme et sont introduits pour faciliter les explications). L'instruction *(1 (général) de la ligne 1 spécifie lauteur du programme, le nom du projet, la date, le nombre d'exécutions ou replication a faire (ici 1), et la longueur en caractères d'une ligne du rapport qui contiendra les résultats (ici 72). Les virgules consécutives dans Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. 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). ! " # $ % & ' Definition de la ressource Creation des clients Attente du serveur Collecter statistique Attente file Occuper le serveur Entité fictive vers comptage CNTR Libérer le serveur départ du client Fin simulation si 1000 clients Servis ( $ )*& + ' & ' % $ $& ' , -## $%,)*&+!' $%, $ ! " $ ( . % 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. 6/$0 ,, 6800$5< 5(357 %< .................. 581 180%(5 6,08/$7,21 352-(&7 EXEMPLE '$7( 01/01/1999 .9171E+03 &855(17 7,0( 67$7,67,&$/ $55$<6 &/($5(' $7 7,0( 1 2) 1 OOOOE+00 67$7,67,&6 )25 9$5,$%/(6 %$6(' 21 2%6(59$7,21 '(/$< ,1 48(8( 0($1 9$/8( 67$1'$5' '(9,$7,21 &2()) 2) 9$5,$7,21 0,1,080 9$/8( 0$;,080 9$/8( 12 2) 2%6 .608E+00 .100E+01 .165E+01 .000E+00 .589E+01 ),/( 67$7,67,&6 ),/( 180%(5 /$%(/7<3( $9(5$*( /(1*7+ 67$1'$5' '(9,$7,21 0$;,080 /(1*7+ &855(17 /(1*7+ $9(5$*( :$,7 7,0( 1 2 AWAIT CALENDAR .662 1.555 1.354 .497 9 3 0 2 .608 .285 5(6285&( 67$7,67,&6 5(6285&( 180%(5 5(6285&( /$%(/ &855(17 &$3$&,7< $9(5$*( 87,/ 67$1'$5' '(9,$7,21 0$;,080 87,/ &855(17 87,/ 1 SERVER 1 .55 .497 1 1 5(6285&( 180%(5 5(6285&( /$%(/ &855(17 $9$,/$%/( $9(5$*( $9$,/$%/( 0,1,080 $9$,/$%/( 0$;,080 $9$,/$%/( 1 SERVER 0 .4452 0 1 FIGURE 3.. Résultats de la simulation du modèle SLAM II Les résultats de la simulation sont donnés dans la Fig. 3.18. On note que le délai d'attente moyen dans la file est de 0.608 (voire "67$7,67,&6 )25 9$5,$%/(6 %$6(' 21 2%6(59$7,21"), et qui est calculé par le noeud COLCT. (Voire aussi "$9(5$*( :$,7,1* 7,0(" pour la file d'attente 1) La longueur moyenne de la file (voire "$9(5$*( /(1*7+" pour la file 1) est de 0.662 alors que le temps moyen d'utilisation du serveur (voire "$9(5$*( 87,/" pour la ressource numéro 1) est de 0.55. Ces mesures statistiques sont calculés automatiquement et fournis dans le rapport quand on utilise le noeud AWAIT. /H ODQJDJH 6,0$1 *pQpUDOLWpV VXU OH ODQJDJH 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. Dans le cadre d'expérimentation, on utilise des sortes de directives appelées dans la terminologie SIMAN des éléments (ELEMENTS en SIMAN) pour spécifier la valeur d'un paramètre particulier (par exemple, durée moyenne de service) pour la simulation en cours, définir le type et la capacité d'une ressource , et spécifier le type de statistique qu'on veut collecter au cours de la simulation. La séparation qui est faite entre la partie modèle, qui définit les caractéristiques de fonctionnement du système, et la partie expérimentale qui définit tous les paramètrès du modèle ainsi que les conditions de simulation (horizon, conditions de prélèvement de statistiques, etc ... ) offre l’avantage de tester l'influence de différents paramètrès sans avoir à modifier le modèle de simulation. SIMAN offre aussi un module appelé OUTPUT Processor permettant de réaliser un certains nombre de fonctions statistiques sur les résultats d’une simulation tels que : calcul d’un intervalle de confiance, effectuer des test d'hypothèse sur les données produites par l’exécution d’une simulation. Ce module permet aussi de produire des présentations graphiques des résultats telles que des courbes, des histogrammes, etc. De plus, il donne la possible de choisir les traitements a appliquer aux données après avoir déroulé la simulation. 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. possible d'utiliser un preprocessor (module) interactif appelé BLOCKS pour construire graphiquement a l’écran le modèle de simulation sous forme de diagramme a blocs. Le diagramme est traduit automatiquement en un programme (i.e. une suite de macroinstructions SIMAN). Un autre module semblable appelé ELEMENTS sert pour construire interactivement le cadre d’expérimentation. Toutes ces possibilités ne font qu’améliorer la vitesse et la précision du processus de développement d’un modèle de simulation. Les principaux blocs pour la modélisation dans SIMAN se rapportent aux entités (avec leurs attributs), files d’attente (ou Queues), et aux ressources. ([HPSOH GH PRGqOH DYHF 6,0$1 La modélisation de l’exemple de la banque selon l’approche orientée processus de SIMAN peut etre représentée par le diagramme a blocs de la figure 3. Figure 3.9 (a) Le modèle sous forme de diagramme a blocs La traduction de ce diagramme sous forme de programme SIMAN est donnée sur la figure 3. %(*,1 &5($7( (; (; 0$5. 48(8( 6(,=( 6(59(5 7$//< ,17 &2817 '(/$< (; 5(/($6( 6(59(5 ',6326( (1' générer des arrivées de clients attente du serveur demande d’allocation du serveur enregistrer le temps d’attente dans la file comptabiliser le nombre d’attentes occuper le serveur pendant une durée libérer le serveur et quitter le système Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. Figure 3.9 (b) Le modèle sous forme de programme (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. Quand un client arrive dans le système, il traverse temporairement le bloc (ligne 3) et entreprend d’allouer la ressource appelée SERVER (ligne 4) qui est défini a la ligne 4 du cadre d’expérimentation. Par défaut, la ressource SERVER est composée d’une seule unité (un seul serveur). Si le serveur est disponible, le délai d’attente du client dans la file (égal a zéro) est calculé et enregistré par le bloc a la ligne 5 (il est égal au temps courant moins le temps d'arrivée du client mémorisé dans l’attribut 1 du client). Le bloc (ligne 6) incrémente de 1 le compteur 1 pour indiquer qu’une nouvelle attente a été observée. Quand ce compteur atteint la valeur 1000, tel que spécifié par l'élément dans la ligne 8 du cadre d’expérimenation, la simulation s’arrete. Le client consomme réellement sa durée de service au bloc (ligne 7) auquel cas, les durées de service sont générés aléatoirement a partir d’une distribution exponentielle EX(2,2) de moyenne 0.5 telle que indiquée par le groupe de paramètrès 2 dans le cadre d’expérimentation(ligne 6 ) et ou Le second "2" de EX(2,2) indique le germe (Stream) a utiliser par le générateur de nombres aléatoires. Si le serveur est occupé quand le client arrive, ce client est placé dans la file d’attente ( dans la ligne 3). Lorsque le client termine son service, il libère le SERVEUR (ligne 8) et est ejecté du système grace au modificateur du programme (ligne 8). S'il y a encore des clients dans la file, le premier est extrait de la file, et entreprend les memes opérations que celles expliquées ci-dessus. " $ % & ' ! # #" ! # Figure 3.9 (c) Le cadre d’expérimentation L'élément (ligne 2) du cadre d’expérimentation indique le nom du projet, le nom de l'auteur, et la date. L'élément (ligne 3) spécifie les besoins en espaces mémoire pour le modèle, qui est ici de 100 entités (clients) pouvant séjourner simultanément dans le système, un maximum de 1 attribut par entité, et 1 file d’attente. Les éléments dans les lignes 4 à 6 ont été expliqués ci-dessus. L'élément (ligne 7) définit le label ou étiquette " " a associer au compteur statistique introduit dans le modèle de simulation a la ligne 5 grace au bloc . L'élément (ligne 9 et 10) sert a calculer Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. 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 DELA Y IN QUEUE .49558 .80138 .00000 4.04199 1000 &" ,) & $ ------------------------------ %&'& () %% & *& & (&& $ $ &% ----------------------------------------------------------------------------------------------------------------------1 NUMBER IN QUEUE 2 SERVER UTIL. .50658 .51872 1.14931 .49965 %&'& && ---------------------------------------------1 CUSTOMER DELAYS 1000 Figure 3.9 .00000 .00000 10.0000 1.00000 978.28 978.28 ------------- 1000 SIMAN : Résultats de la simulation 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. Les efforts de recherches et de développement issus de l'école anglaise se sont surtout distingué par une nouvelle vision des méthodes de simulation baptisée : la simulation visuelle interactive, et dont le précurseur est R.D. HURRION. Ceci n'a pas empêché pour autant le développement de langages de simulation dont CAPS/ECSL offrant l’approche par activités est à l'heure actuelle le plus connu. En FRANCE, le langage de référence reste QNAP (Queuing Network Analysis Program) développé par l' INRIA et BULL. C'est un outil qui permet la construction, la manipulation et l'analyse quantitative de modèles de systèmes ayant la structure générale d'un réseau de stations de service ( architecture d'ordinateurs, réseaux de communication, systèmes de production, etc ... ). Dans sa dernière version QNAP2, le langage offre à l'utilisateur un langage interactif orienté objet permettant de construire le modèle, d'en effectuer l'analyse et éditer les résultats. Le langage QNAP2 hérite donc de toutes les caractéristiques des langages orienté objet (définition de nouveaux objets à partir de ceux existants, héritage de propriétés, etc.). 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. /LPLWHV GHV ODQJDJHV GH VLPXODWLRQ JpQpUDX[ Les langages de simulation généraux (SLAM, SIMAN, GPSS, etc ... ) ont pour principal avantage de pouvoir modéliser quasiment n’importe quel problème. Cependant, malgré les améliorations perpétuelles qu'ils n'ont cessé de subir, il faut soulever quelques lacunes qui freinent encore leur utilisation. 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. Le développement et la mise au point d'un programme sont assez peu conviviaux. En effet, pour développer un programme, l'utilisateur doit créer un fichier source contenant les instructions traduisant le modèle de simulation, le compiler, faire l'édition de liens puis l'exécuter. Les erreurs de syntaxe sont détectées dans la phase de compilation, et les erreurs d’exécution au cours de l'exécution du modèle de simulation. Ainsi, pour corriger une erreur quelconque, toutes ces phases doivent être répétées, ce qui confère à ces outils une lourdeur d'utilisation. De même que les résultats d’une simulation étaient souvent limités (surtout sur les grosses machines) à une suite de tableaux de chiffres qu'il est difficile et astreignant d'analyser. Il faut cependant souligner que les versions sur PC sont généralement plus dotés en termes de fonctionnalités telle que : la présentation graphique Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. des résultats ou l’ animation graphique de la simulation. Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. /HV VLPXODWHXUV VSpFLDOLVpV Contrairement aux langages de simulation généraux, les simulateurs spécialisés restreignent leur champ d’application à un domaine particulier (pour le cas des systèmes de production : ateliers flexibles, réseaux de manutention, etc ... ). C'est ainsi que les primitives qu'ils proposent pour la modélisation d'un système ont une raisonnance directe avec le domaine plutôt que des notions abstraites telles que : ressource, file d’attente, entité, etc... &DUDFWpULVWLTXHV SULQFLSDOHV Un simulateur spécialisé est un outil de simulation offrant un langage de description (ou un système d'entrées interactif de données) dans lequel les instructions (ou primitives) sont des objets du système a modéliser. Les primitives offertes sont, dans ce cas, des agrégats de processus élémentaires (files d'attente, ressources, activités, etc ... ) représentant un objet particulier du système (machine, stock, convoyeur, palette, etc ... dans le cas de système de production) et son comportement. 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. $YDQWDJHV HW LQFRQYpQLHQWV Un des avantages des simulateurs spécialisés est la réduction des efforts de conceptualisation à fournir dans l'étape de modélisation. La figure 2-3 permet de montrer la simplicité de représentation d'un même problème (ici la modélisation d'un aiguillage divergent du réseau de manutention) en utilisant un simulateur spécialisé "réseaux de manutention", et un langage de simulation général (ici SLAM II). Fig 2-2: Modélisation d'un aiguillage divergent avec simulateur général et simulateur spécialisé (d’apres Cernault 88) On remarque qu'avec SLAM, la modélisation utilise de l'ordre de 6 noeuds, alors qu'avec le simulateur spécialisé celle-ci tient en une seule primitive facile à mémoriser. 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 Il peut exister autant de simulateurs spécialisés que de familles de systèmes à événements discrets. Actuellement il existe beaucoup de simulateurs de ce type dans le commerce. Le tableau de la figure 2-3 regroupe quelques exemples de simulateurs spécialisés avec leurs domaines d'application respectifs. Simulateur Sociétés Domaine Pritsker Associates - USA systèmes de production INRIA/SIMULOG - France Ateliers Flexibles SERI/RENAULT Automation Circuits de manutention RAMSES Automation - France Ateliers Flexibles CACI-Los Angeles - USA Réseaux locaux LAN CACI-Los Angeles - USA Réseaux Télécom WAN Fig 2-3 : Liste de quelques simulateurs spécialisés 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. )DFWHXUV D FRQVLGpUHU GDQV OH FKRL[ G XQ ODQJDJH Beaucoup d’auteurs ont traité les problèmes posés par le choix d'un outil lorsqu'on veut résoudre un problème par la simulation. Le but de ce paragraphe est de montrer les facteurs sur lesquels se basent les utilisateurs pour effectuer leur choix. 3UREOqPHV OLpV j O XWLOLVDWLRQ G XQ ODQJDJH La programmation du modèle conceptuel nécessite un langage. Or, on a vu que le développement du modèle conceptuel passe par une étape d'analyse à l'issue de laquelle on doit définir pour chaque constituant du système physique, le degré de détail minimum nécessaire, compte tenu du problème posé. Lorsqu'un sous-ensemble du système physique a été retenu pour l'étude, il faut faire le choix de l'outil informatique le mieux approprié pour assurer le passage d'un modèle conceptuel à un programme d'ordinateur. 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. &KRL[ GHV XWLOLVDWHXUV Si on se place au niveau des langages de simulation généraux, il serait intéressant de connaître quels sont les facteurs qui guident le choix de tel ou tel langage dans la réalisation d'une simulation. En d'autrès termes, existent-ils des langages qui sont plus utilisés que d'autrès, et si c'est le cas quels sont les caractéristiques qui les privilégient par rapport aux autrès. A titre indicatif, des statistiques sur les taux d’utilisation des langages de simulation (en FRANCE et aux U.S.A. ) ont donné les résultats suivants : Fig. :Utilisation des simulateurs en FRANCE [Ammar 87] Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. Fig. 5 : Utilisation des simulateurs aux U.S.A. (a): d'après [ Banks 85], (b) : d'après [Mittra 84] (*) 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. 6LPLODULWpV HQWUH /DQJDJHV GH VLPXODWLRQ Dans le domaine de la simulation à événements discrets, les langages de simulation qui existent sur le marché, offrent presque tous une ou plusieurs approches de modélisation pour construire un modèle de simulation à événements discrets. Certains auteurs ont montré qu'un même problème de simulation à événements discrets peut être résolu en utilisant différents simulateurs. Ceci est en grande partie dû au fait que ces simulateurs ont en commun une ou plusieurs approches de modélisation. L'approche qui est généralement la plus utilisée est l'approche dite par "processus". Cependant le problème peut aussi être résolu en utilisant un simulateur n'offrant pas cette approche comme c'est le cas de SIMSCRIPT (dont les premières versions n'offrait que l'approche par "événements") où il Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. 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...). Si on considère les simulateurs offrant une approche par "processus" (généralement disposant d'un support graphique pour la modélisation de leurs primitives), on peut remarquer qu'il existe beaucoup de similarités entre leurs primitives de modélisation. Ceci montre que le problème du simulateur n'est pas un handicap pour le développement d'un modèle de simulation à événements discrets. Le tableau suivant montre quelques similarités entre des notions utilisées dans quatre langages de simulation parmi les plus connus à l'heure actuelle *366 6,06&5,37 6/$0 7UDQVDFWLRQ (QWLW\ 3URFHVV (QWLW\ )DFLOLWLHV 6WRUDJHV 5HVRXUFH 5HVRXUFH 5HVRXUFH &KDLQ )LOH 6HW )LOH *(1(5$7( &5($7( $&7,9$7( $Q &5($7( 6(,=( $'9$1&( 5($/($6( 6,0$1 6(,=( '(/$< 5($/($6( 5(48(67 :25. 5(/,148,6+ $:$,7 $&7,9,7< )5(( Notion utilisée pour désigner tout objet pouvant subir des services Notion utilisée pour désigner tout objet pouvant exécuter un service Structure utilisée pour gérer les objets en attente d'un service Primitive d'injection d'entités dans le système Séquence de primitives modélisant une opération sur une ressource : ....Demande de la ressource ....Acquisition de la ressource .....Libération de la ressource Fig. 4- 1: Quelques similarités entre les langages de simulation 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 1 2 3 4 5 6 7 8 9 10 Critère Interface H/M conviviale Possibilité de disposer d’une B.D. pour organiser les données Outil de mise au point (Debogueur) Interaction Via une Souris Section d’assistance dans la documentation du L.S. Sauvegarde des modèles de simulation Sauvegarde des Résultats Entrée des données et des commandes par clavier Librairie de modules réutilisables 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...) - Puissance du produit : ces critères définissent l'aptitude du simulateur à décrire les entités physiques de base du système a modeliser (ex: système de production) et les phénomènes caractérisant leur fonctionnement et leur gestion (ressources, entités ou clients, activités, files d'attente, blocages, choix entre plusieurs activités, etc...) - Etablissement du modèle ces critères déterminent l'accessibilité du simulateur à des utilisateurs non spécialistes (représentation graphique du modèle, simplicité de représentation des entités physiques les plus courantes telles que : machines, stocks, etc... évitant au maximum l'abstraction et les difficultés de conceptualisation, approche structurée et évolutive du modèle, etc...) ; - Programmation et mise au point du modèle : ces critères nécessitent une transparence du système informatique sur lequel est implanté le simulateur, possibilité d'avoir une approche modulaire pour construire un modèle (réutilisation de sous-modèles, création de bibliothèques de sous-modèles, etc ... ), un dialogue de qualité avec le simulateur (TRACE, sorties graphiques, messages d'erreurs, etc...) ; - Exploitation des résultats : le simulateur doit disposer d'outils permettant d'aider à l'analyse des résultats de la simulation (calcul statistiques sur les variables, éditions graphiques des résultats, possibilités de stocker des modèles et de les expérimenter avec des jeux de données différents, rapidité d'exécution de la simulation, 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. une comparaison entre : • GPSS et SIMSCRIPT dans [Ehrmann 70] •SLAM, GPSS, SIMAN, SIMSCRIPT dans [Banks 85] •GPSS, SLAM, SIMAN, QNAP2 dans [Cernault 88] •SLAM, GPSS, SIMSCRIPT dans [Pritsker 79]. 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. ,PSDFWV GHV LQWHUIDFHV JUDSKLTXHV GDQV OHV VLPXODWHXUV Il est admis que le graphisme peut rellement aider à simplifier le processus de développement et de mise au point d'un modèle de simulation. Cette aide se situe aussi bien en entrée, qu'en sortie du simulateur. ,QWHUIDFH JUDSKLTXH HQ HQWUpH GX VLPXODWHXU 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élisationsimulation. 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) . En revanche sur un plan purement informatique, il est évident qu'un langage de simulation muni d'un support graphique pour la modélisation, serait privilégié par rapport à Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. 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 : • élimination des erreurs de programmation, • diminution des délais de développement des projets, • convivialité du simulateur. Fig 6 : Interface du module BLOCKS de SIMAN ,QWHUIDFH JUDSKLTXH HQ VRUWLH GX VLPXODWHXU L'utilisation d'un support graphique dans l'interface de sortie du simulateur constitue aussi un aspect très important. Nous entendons par interface de sortie, la nature des résultats fournis à l'utilisateur ainsi que la forme sous laquelle ils lui sont présentés par le simulateur. Il s'agit rnajoritaù-ement de résultats numériques permettant de représenter de manière agrégée ou détaillée le comportement dynamique du système modélisé et de ses différents composants. Nous essayerons d'analyser ce problème sous deux angles différents c'est à dire : • L'utilisation du graphisme pour la présentation des résultats statistiques de la simulation ; • L'utilisation du graphisme pour la visualisation du comportement dynamique du modèle (animation graphique). 3UpVHQWDWLRQ JUDSKLTXH GHV UpVXOWDWV VWDWLVWLTXHV 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. L'utilisation du graphique comme support de présentation des résultats statistiques est une technique qui a été adoptée depuis longue date par les simulateurs. En effet, presque tous les simulateurs offraient des fonctions standards permettant de générer des formes graphiques simples sans nécessiter de matériel spécial. Le dessin est généralement obtenu à partir de caractères alphanumériques et peut être affiché sur un écran ou édité sur une imprimante alphanumérique. Cette solution, facile à mettre en oeuvre, continue à être largement utilisée et spécialement sur les gros ordinateurs. Cependant elle ne permet pas d'utiliser la couleur, et par exemple, le dessin d'un histogramme circulaire reste une opération pratiquement impossible à réaliser. 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 9LVXDOLVDWLRQ GX FRPSRUWHPHQW G\QDPLTXH GX V\VWqPH Nous n'avons analysé jusqu'ici que le problème de l'adjonction de diagrammes aux résultats statistiques,d'une simulation et l'intérêt que cela pouvait représenter au niveau de l'interface de sortie du simulateur. Il faut cependant remarquer que les résultats d'une simulation peuvent aller de valeurs moyennes de certaines variables d'état du système jusqu'à la liste exhaustive des événements qui ont lieu dans le système. Les résultats synthétiques sont utilisés pour le calcul des indices de performances du système par contre on se sert généralement de la liste des événements à des fins de mise au point ou pour Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. déterminer les conséquences immédiates d'une décision de pilotage. Dans ce deuxième cas, l'utilisateur avait à reconstituer à partir d'une liste séquentielle d'événements, une image mentale des interactions qui ont eu lieu entre les différents composants au cours de la simulation . Cette tâche est très difficile surtout quand on sait qu'une trace d'exécution d'une simulation peut s'étendre sur plusieurs pages de listing. Il fallait donc recourir à une autre forme de présentation permettant à la fois de condenser cette masse d'informations alphanumériques et de rendre compte de chaque changement d'état au moment où il se produit et de façon mieux perceptible par l'utilisateur. ---------------------------------------------------------- !"# $%&'( !"# 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) .............................................. A suivre .................................. Fig .... Un exemple de Trace d'execution d'une simulation Compte tenu de la nature des objets composants un modèle de simulation à événements discrets (entités, pièces, machines, ressources, etc ... ), la solution la plus naturelle serait donc d'associer au système qu'on désire simuler une représentation imagée, quel que soit son type (iconique, symbolique, etc ... ), dont les éléments seraient en correspondance avec les composants de ce système, et sur laquelle on appliquerait des transformations ou des changements chaque fois que le système change d'état au cours de la simulation. Ainsi on pourrait observer visuellement l'évolution de l'état du système au cours de la simulation et se concentrer uniquement sur l'analyse de ce qu'on voit et réagir à toute les situations au moment ou elles ont lieu. Cest cette technique qu'on appelle couramment une "animation graphique de la simulation". &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é. 0RWLYDWLRQV SRXU 9,6 L'étude par simulation de plusieurs cas de systèmes réels, a montré qu'il était pratiquement impossible d'encapsuler dans un même modèle de simulation toutes les règles de conduite du système réel. Certaines situations non prévues à l'avance peuvent se produire au cours de la simulation et ne peuvent être contrôlées que par le ou les responsable(s) de production. Il fallait donc développer des outils de simulation capables de passer le contrôle à l'utilisateur chaque fois qu'une décision devait être prise. Cette interaction avec une simulation en cours nécessite la connaissance de l'état courant du système afin d'envisager une quelconque décision. C'est ainsi qu'une illustration de l'exécution de la simulation sous forme d'une animation graphique à l'écran apparût comme la solution idéale. Grâce à cette approche, il devient même possible de tester des algorithmes d'ordonnancement programmés à l'avance avant de les implanter sur le site. &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. /H V\VWqPH 6((:+< Le système SEE-WHY se présente sous forme d'une librairie de routines FORTRAN permettant de réaliser toutes les fonctions nécessaires à la simulation (gestion de l'horloge, de l'échéancier, génération des nombres aléatoires, etc ... ) ainsi que celles nécessaires à l'interactivité et à l'animation. Dans sa version initiale, SEE-WHY n'offrait que des Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. 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. Avec SEE-WHY, un modèle de simulation est développé selon l'approche de modélisation dite "par événements" qui consiste à décrire sous forme d'un programme FORTRAN toute la logique de fonctionnement correspondant à chaque événement Pour cela, le système SEE-WHY met à la disposition du programmeur la librairie de routines (citée plus haut) qui lui permet de coder le modèle de simulation ainsi que tous les aspects liés à l'interaction et à l'animation graphique. L'interaction avec le système au cours de la simulation permet à l'utilisateur de changer n'importe quel paramètre du modèle de simulation ou du schéma d'animation et de voir l'effet de ce changement instantanément à l'écran (Consulter et changer n'importe quel attribut d'une entité, déplacer une entité d'une file d'attente vers une autre, Changer la position d'un élément du schéma d'animation sur l'écran , etc... Le système offre aussi à l'utilisateur la possibilité d'écrire sa propre procédure d'interaction qui sera activée chaque fois que ce dernier interagit avec le système. Cette procédure aura pour rôle de demander à l'utilisateur les types de changements qu'il désire apporter au modèle afin de faire les appels nécessaires aux routines SEE-WHY prévues à cet effet. Cette approche est d'un grand intérêt pratique car elle permet de programmer une interface sur mesure pour l'utilisateur final du modèle. /H V\VWqPH :,71(66 Ce système est inspiré en grande partie de SEE-WHY et était initialement connu sous le nom de FORSIGHT. Il a été développé en 1981 sur un micro-ordinateur IBM PC-AT. Aujourd'hui, il est commercialisé sous le nom de WITNESS, et peut être considéré comme le leader des systèmes V.I.S. sur le marché. A la différence de SEE-WHY dont le domaine d'application est très général, WITNESS est plutôt un système V.I.S. dédié aux systèmes de production. Un modèle de simulation est construit à partir des notions de pièce, machine, convoyeur, palettes, etc.... qui sont des notions très caractéristiques des simulateurs spécialisés. WITNESS adopte une approche totalement différente de l'approche traditionnelle consistant à développer le modèle de simulation, le compiler, faire l'édition de liens et ensuite l'exécuter. Dans WITNESS la construction du modèle se fait de façon progressive en rajoutant à chaque étape un composant ou un groupe de composants du système de production. Le modèle obtenu à chaque étape peur être exécuté immédiatement sans nécessiter de compilation. Cest donc là une caractéristique très importante car elle met bien en évidence l'intérêt d'une simulation interactive par rapport aux approches traditionnelles. 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. - Construction du schéma d'animation (Display Phase) : Chaque élément du modèle de simulation peut être représenté par une icône graphique qui sera positionnée à l'écran grâce à une souris. Les icônes peuvent être crées pour le besoin spécifique de l'application ou choisies dans la librairie du système qui contient en standard 20 icônes prédéfinies. Le positionnement des icônes peut être effectué dans l'une des quatre fenêtrès offertes par WITNESS et dont une seule est active à chaque instant . Ceci est très pratique surtout pour la modélisation des gros systèmes qu'on peut alors décomposer en sous-systèmes dont chacun peut être visualisé dans une fenêtre différente. - Définition des paramètres du modèle (Detail Phase) : Cette phase permet de définir les paramètrès associés à chaque élément du modèle (type de machine, longueur d'un convoyeur, taille des lots, etc..). Tous les paramètrès liés à la temporisation des opérations doivent aussi être définis à ce niveau (temps opératoire d'une machine, vitesse d'un convoyeur, temps séparant les arrivées des pièces, temps moyen entre les pannes, etc..). La spécification d'un paramètre quelconque se fait à travers une série de questionsréponses avec le système. Enfin le flux des pièces dans le système est défini grâce à des régles prédéfinis dans WITNESS Chaque élément du modèle (machine, convoyeur, palette, etc ... ) possède des régles dites d'entrée et de sortie permettant soit de lui charger une pièce ou de le décharger d'une pièce.WITNESS offre sept (7) régles de base pouvant être combinées pour permettre la modélisation de routages très complexes. 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. ,QWpUrWV SUDWLTXHV G XQH PpWKRGH 9,6 Le développement d'un modèle de simulation selon l'approche traditionnelle diffère totalement de l'approche adoptée avec un système V.I.S. . Un système de simulation classique auquel on adjoint des interfaces graphiques que ce soit sous forme de préprocesseur pour la génération automatique du modèle de simulation, et/ou sous forme de module dédié à l'animation graphique de la simulation ne peut en aucun cas être assimilé à un système V.I.S. La différence vient du fait que dans un système V.I.S., la simulation, l'animation graphique et l'interaction avec le système forment un environnement intégré où chaque aspect a une importance dans le processus de développement et de mise au point du modèle de simulation. C'est ainsi que le cycle de vie traditionnel d'un modèle de simulation n'est plus adapté pour décrire un modèle de type V.I.S. L'approche traditionnelle est héritée des langages classiques de programmation. Pour développer et mettre au point un modèle de simulation, l'utilisateur devait souvent répéter plusieurs fois les mêmes étapes (saisie du modèle, compilation, édition de lien, exécution). La méthode V.I.S. peut être considérée comme une méthode de programmation graphique des modèles de simulation. En effet, le modèle de simulation est construit grâce Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. à 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 L'interconnexion (la topologie) des noeuds est facile à représenter sur un é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; z L'évolution des statistiques peut être visualisée sous forme graphique ou numérique au cours de la simulation ou en fin de 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. Contrairement à l'approche classique, le cycle de développement d'un modèle V.I.S. n'est pas figé et dépend étroitement du système utilisé. Cependant, à partir des recommandations précédentes, on peut énumérer les principales étapes de développement qui doivent exister quelque soit le système V.I.S. utilisé : z Construction de l'aspect visuel du modèle en utilisant les fonctions offertes par le système V.I.S. (menus, éditeur graphique, etc... z Spécification des paramètrès du modèle (par exemple à travers une série de questions-réponses guidée par le système) z Exécution du modèle de simulation z Mise au point et vérification du modèle par interactions avec le système en utilisant comme support l'animation graphique; z Validation du modèle en effectuant des exécutions sur des périodes plus longues. La phase de mise au point peut être reprise si les résultats ne sont pas satisfaisants. 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 PRESENTATION DU LANGAGE SIMAN 1 PHILOSOPHIE GENERALE DU LANGAGE SIMAN est largement inspiré de SLAMII du fait que son auteur C.D. PEDGEN fût un des membres de l'équipe ayant développé SLAM. La première caractéristique de SIMAN est qu'il sépare entre modèle et cadre d'expérimentation (Experimental Frame). Ceci offre l'avantage de pouvoir simuler un même modèle avec différents cadres d'expérimention. Les approches de modélisation proposée par SIMAN sont l'approche par Interaction de processus et l'approche par événements. Ainsi , un modèle de simulation à événements discrets peut être modélisé selon l'une ou l'autre de ces deux approches ou une combinaison des deux. SIMAN permet aussi de modéliser des systèmes 'continus' en adoptant la même approche que SLAM c'est à dire grâce à un ensemble d'équations différentielles ou d'équations aux différences. Ainsi, il devient possible comme dans SLAM de modéliser aussi des systèmes combinés 'DISCRET-CONTINUS'. 2. MODELISATION DES SYSTEMES A EVENEMENTS DISCRETS La première approche pour modéliser de tels systèmes est l'approche par 'processus' avec laquelle un modèle est construit sous forme d'un diagramme à blocs dans lequel chaque bloc permet de modéliser une opération particulière du système modélisé. Chaque bloc est représenté graphiquement par un symbole et correspond à primitive ou macro-instruction du langage (Création d'entités, File d'attente, etc.). 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. Un diagramme à blocs peut être construit manuellement puis traduit en un programme équivalent (suite de macro-instruction). Certaines versions de SIMAN proposent un utilitaire BLOCKS qui permet de construire interactivement un diagramme à blocs en manipulant directement les symboles graphiques correspondant aux blocs. Le programme équivalent au diagramme ainsi construit sera généré automatiquement par l'utilitaire BLOCKS. La deuxième approche pour modéliser un système à événements discrets est l'approche par événements. Le programmeur doit dans ce cas écrire un ensemble de routines (Subroutines Fortran) dont chacune est chargée de traiter les changements d'états correspondant à l'occurrence d'un événement. Cette approche peut être utilisée pour construire totalement un modèle ou bien exploitée à partir d' un digramme à blocs en vue d'augmenter ce diagramme par des fonctionnalités spécifiques au système modélisé et qui ne sont pas supportés par les blocs Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. 2 disponibles ou remplacer les fonctionnalités de certains blocs par d'autres plus spécifiques. En général, l'écriture de routines de traitement des événements fait appel à un ensemble de sous-programmes offert par SIMAN sous forme d'une librairie de sousprogrammes. Ces sous-programmes permettent de réaliser des opérations de bas niveau (insertion d'une entité dans une file, recherche d'entités ayant un attribut particulier, etc.) 3. ARCHITECTURE FONCTIONNEL DE SIMAN SIMAN offre trois fonctions distinctes : • Fonction de construction d'un modèle • Fonction de construction d'un cadre d'expérimentation • Fonction d'analyse des résultats 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 : 1. Le processeur de construction d'un modèle sous forme de diagramme à blocs (BLOCKS). Le résultat généré est un fichier appelé 'Fichier Modèle' et correspond à ce qu'on est habitué à appeler un modèle de simulation. 2. Le processeur de construction d'un cadre d'expérimentation pour un modèle. (EXPRMT). Le résultat généré est un fichier appelé 'Fichier d'expérience : Experiment File'. 3. L'éditeur de liens (LINKER) chargé de lier le modèle et le cadre d'expérimentation pour produire un programme appelé 'Fichier Programme : Program File'. 4. Le simulateur proprement dit (SIMAN) chargé d’exécuter le programme et produire des résultats dans un fichier appelé 'Fichier des Sorties : Output File'. 5. Le processeur de traitement des sorties ou résultat (OUTPUT) chargé d'analyser , de formatter et d'éditer les résultats contenus dans le fichier des sorties. REMARQUES : Dans le cas de l'utilisation de l'approche par événements, les routines écrites par le programmeur devront être compilées, puis une phase d'éditions de liens (LINK) permettra de les lier avec un module objet SIMAN.OBJ (fournie avec le logiciel et est en quelque sorte une version ouverte du SIMAN) produisant ainsi un exécutable SIMAN.EXE qui constituera le processeur décrit dans le point 4 plus haut. C'est donc cette nouvelle version de SIMAN.EXE qui constitue le simulateur. Ce travail doit être fait avant d’exécuter le programme de simulation obtenu en 3. Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. 3 Construction du Modèle BLOCKS ou Editeur de Texte MODEL 1 Fichier Modèle 4 2 LINK Fichier Programme Fichier Experiment SIMAN Exécution Rapport Standard Fichier Résultats 3 EXPERIMENT Construction du Cadre d’Expérimentation (Editeur de Texte) OUTPUT Analyse,.. 5 Rapports 4 Entités - Attributs et Variables dans SIMAN 4.1 Entités Dans le cas des modèles de simulation à événements discrets, la terminologie utilisée dans SIMAN pour désigner les objets du modèle est la suivante : •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.) 4.2 Attributs et Variables A tout moment, l’état du système est défini par les valeurs prises par des variables et des attributs. Les variables représentent des caractéristiques globales du système et ne sont donc pas liées à une entité spécfique. Par exemple : le nombre d’entités dans une file d’attente , l’état d’une ressource seront des variables. 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 Les variabales globales accessibles à l’utilisateur sont : • Un tableau X(.) • Le tableau S(.) • Le tableau D(.) • La variable de type indice J • La liste des paramètres P La variable J permet de réaliser un adressage indirect des tableaux. L’indice d’un élement d’un tableau est de la forme K , J±K , M±K ou K est un entier. Par exemple les écritures : X(3), X(M), X(J), X(J+2), X(J-10) , X(M+6) et X(M-1) sont toutes valides et permettent d’avoir accés à un élément du tableau de variables X(.). Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. 5 Pour montrer l’utilisation de la variable J considérons l’exemple d’un un atelier dans lequel des pièces doivent subir des séquences d’opérations sur 4 machines. Afin de contrôler le routage des pièces dans l’atelier, on peut affecter aux attributs A(1), A(2), A(3) et A(4) les numéros des machines en fonction de la séquence des opérations que devra subir une pièce sur ces machines. Afin de connaître à tout moement le numéro de la machine sur laquelle est en train de passer une pièce, on peut utiliser l’attribut A(5). Initialement A(5) serait égal à 1 et l’attribut A(1) désigne le numéro de la machine éxécutant la première opération. Chaque fois qu’une pièce termine l’opération sur une machine, on incrémente A(5). On pourra alors connaître le numéro de la machine courante en affectant à J la valeur de A(5) (J=A(5)) , puis en accédant au numéro de la machine (pouvant être dans A(1), A(2), A(3)ou A(4) ) grâce à l’écriture A(J). 4.2.3 Liste des Attributs et Variables ATTRIBUTS A(I) M Variables Utilisateurs X(I) S(I) D(I) J P(IP,IS) Variables Système TNOW NE(I) NQ(I) NC(I) NR(I) NT(I) LC(I) MR(I) MT(I) Description Attribut Numéro I de l’entité active Attribut de l’entité représentant son numéro de la STATION actuelle Description (*) Toutes ces variables doivent être initialisées par l’utilisateur Variabale globale I Variable d’état I (Pour modèles continus) Dérivée de la Variable d’état I (Pour modèles continus) Variable entière de type Indice Valeur du paramètre numéro IP dans l’ensemble des Paramètres numéro IS Description (*) Toutes ces variables peuvent être utilisées mais sont mises à jour par SIMAN Temps courant de la simulation Nombre d’entités en route vers la Station I Nombre d’entités dans la file d’attente I Valeur courante du compteur I Nombre d’unités occupées de la Ressource numéro I Nombre d’unités occupées du Transporteur I Longueur des cellules occupées du Convoyeur I Nombre d’unités de la ressource I Nombre d’unités du transporteur I 5. BLOCS COMPOSANT UN DIGRAMME Un diagramme à blocs permet de décrire le mouvement des entités circulant dans le système. Chaque bloc est représenté par un symbole graphique dont la forme indique sa fonction. Le cheminement dans le diagramme est établit au moyen de flèches reliant les blocs entre eux. Les flèches permettent donc de contrôler le cheminement des entités d'un bloc à l'autre et ce à travers tout le diagramme. Comme dans tout modèle à événements discrets, une entité représente un objet concret ou abstrait circulant dans le système. ça peut être une pièce dans un Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. 6 atelier, un client dans une banque, un message dans un réseau de communication, etc. De même que chaque entité peut posséder des attributs auxquels on peut assigner (ou affecter) des valeurs dans le but de la distinguer des autres entités ou de mémoriser certaines informations qui lui sont propres (Temps d'arrivée, durée de service, etc.). Au fur et à mesure que l'entité circule dans le système, elle peut être retardée, détruite, combiner avec d'autres pour ne former qu'une seule entité, etc., ceci dépendant des blocs qu'elles traverse. SIMAN propose 10 blocs de base distincts , chacun possédant son propre symbole graphique , un nom propre et une fonction propre aussi. Ceci est le cas pour les blocs : QUEUE , STATION , BRANCH , PICKQ , QPICK , SELECT et MATCH. 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 DALAY Durée du Retard UNIFORM(2,1) Bloc OPERATION Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. NOM OPERATION TRANSFERT HOLD SYMBOLE FONCTION Ce bloc permet de modéliser une grande variété de fonctionnalités qui peuvent être : - Générales : assignation de valeurs aux attributs, créations d'entités, retarder une entité pendant une durée déterminée, appel de sousprogramme écrits par l'utilisateur, etc.. - Associées aux ressources : changement de capacité d'une ressource - relatives à la manutention : activation, libération d'un convoyeur ou un chariot - relatives aux statistiques : spécifier les observations à collecter sur le système. Ce bloc permet de modéliser le transfert d'entités entre les stations par un moyen de manutention. Ce bloc permet de modéliser toute situation dans laquelle le mouvement d'une entité doit être retardé. Le retard peut être dû à : - Attente d'un signal ou la satisfaction d'une condition - Libération d'une ressource ou d'un dispositif de manutention (Chariot, ...) - Regroupement d'un nombre déterminé d'entités dans la file d'attente qui précède le bloc HOLD 7 Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. NOM QUEUE STATION SYMBOLE FONCTION Ce bloc permet de modéliser une file d'attente dans laquelle les entités mises en attente à un bloc HOLD ou MATCH seront conservées. Ce bloc permet de créer une interface entre les composants du modèle et le système de transport ou de manutention. Cette possibilité n'existe pas dans SLAM. BRANCH Ce bloc permet de faire un routage selon une condition, une probabilité ou déterministe. Une branche matérialise don le chemin que doit emprunter une entité. 8 Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. NOM SYMBOLE FONCTION Ce bloc permet de sélectionner une file d'attente parmi un ensemble de files qui le suivent (BLOCS QUEUE) en vue de diriger une entité vers la file choisie. PICKQ Ce bloc permet de sélectionner une ressource parmi plusieurs associées à des blocs OPERATION. SELECT QPICK MATCH Il y a une analogie avec une des fonctions du noeud SELECT de SLAM. T T T T Ce bloc permet de sélectionner des entités dans un ensemble de files d'attente (blocs QUEUE) qui le précèdent. La sélection se fait selon un critère que l'on doit spécifier. Il y a une analogie avec une des fonctions du noeud SELECT de SLAM. Ce bloc permet de retenir des entités dans les files d’attente qui le précédent jusqu’à ce qu’il y ait des entités qui possèdent la même valeur d’un attribut dans chacune des file d’attente. Il est analogue au noeud MATCH de SLAM. 9 Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. 10 5.2 Fonctions offertes par les blocs OPERATION, HOLD et TRANSFERT Une caractéristique commune à tous les blocs offert par le langage SIMAN (sans distinction aucune) est que chaque bloc possède des opérandes qui contrôlent la fonction réalisée par le bloc. Par exemple le bloc DELAY a comme opérande la durée, le bloc création d'entités (CREATE) a comme opérandes : le temps séparant les créations, le nombre d'entités à créer à chaque fois et le nombre maximum d'entités à créer. Nous allons énumérer la liste des fonctions permises par chacun des 3 blocs particuliers OPERATION , HOLD et TRANSFERT 5.2.1 Fonctions offertes par le bloc OPERATION Nom Description ASSIGN Affecter des valeurs aux attributs CREATE Créer des entités DELAY Retarder une entités pendant une durée DETECT Détecter les événements de changement d'état pour le cas de systèmes continus FONCTIONS EVENT Déclencher un événement spécifié GENERALES FINDJ Rechercher la valeur de l'index satisfaisant une certaine condition J SIGNAL Envoyer un signal pour terminer le retard dans lequel s'est engagé une entité (par un DELAY). SPLIT Décomposer un groupe (d'entités) en éléments individuels COUNT Incrémenter un compteur spécifié Fonctions Statistiques TALLY Prélever (collecter) une observation sur une valeur spécifiée Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. Nom ASSIGN Description Affecter des valeurs aux attributs ACTIVATE Mettre l'état d'un transporteur spécifié à ACTIF EXIT QUITTER un CONVOYEUR spécifié FONCTIONS FREE QUITTER un TRANSPORTEUR spécifié HALT Mettre l'état d'un spécifié à INACTIF pour SYSTEME DE TRANSPORTEUR MANUTENTION START Mettre l'état d'un CONVOYEUR spécifié à ACTIF STOP Mettre l'état d'un CONVOYEUR spécifié à INACTIF SPLIT Décomposer un groupe (d'entités) en éléments individuels Changer la capacité d'une ressource Fonctions ALTER Ressources RELEASE Libérer un nombre spécifié d'unités d'une ressource COPY Copier les attributs d'une entité dans une file d'attente spécifiée SEARCH Chercher une file d'attente pour une entité satisfaisant une condition spécifiée REMOVE Supprimer une entité d'une file d'attente spécifiée Fonctions pour Files d'Attente 11 Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. 5.2.2 Fonctions offertes par le bloc HOLD Nom SCAN Retarder l'entité jusqu'à ce condition spécifiée soit satisfaite. WAIT Retarder l'entité jusqu'à ce qu'un signal soit reçu depuis un bloc SIGNAL. SCAN Retarder l'entité jusqu'à ce condition spécifiée soit satisfaite. WAIT Retarder l'entité jusqu'à ce qu'un signal soit reçu depuis un bloc SIGNAL. ACCESS Retarder l'entité jusqu'à ce que le nombre requis de cellules du convoyeur soit disponible et alloué à l'entité. REQUEST Retarder l'entité jusqu'à ce que 1 TRANSPORTEUR soit alloué à l'entité et arrive à la station ou se trouve l'entité. COMBINE Retarder l'entité jusqu'à ce qu'un nombre spécifié d'entité soit présent dans la file d'attente qui précède. Une fois présentes, ces entités sont combinés en un ensemble solidaire et une entité représentant cet ensemble ou SET est créée. Les entités originales sont détruites du SET. GROUP Retarder l'entité jusqu'à ce qu'un nombre spécifié d'entité soit présent dans la file d'attente qui précède (Bloc QUEUE). Une fois présentes, ces entités sont combinés en un ensemble solidaire mais temporaire et une entité représentant cet ensemble ou SET est créée. Les entités originales ne sont pas détruites et peuvent être reproduites grâce au bloc SPLIT. Fonctions Conditionnelles Fonctions Conditionnelles Description Fonctions qu'une qu'une de Manutention Fonctions pour Ensemble ou Groupe 12 Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. 13 5.2.3 Fonctions offertes par le bloc TRANSFERT FONCTIONS Nom Description CONVEY Transporter une entité à l'aide d'un convoyeur vers une station précise. Le temps de convoyage est déterminé par la distance entre les stations et la vitesse du convoyeur. ROUTE Router une entité vers une station précise. Le temps de routage est spécifié comme opérande DE MANUTENTION TRANSPORT Transporter une entité à l'aide d'un TRANSPORTEUR vers une station précise. Le temps de transport est proportionnel à la distance entre les stations. 6. METHODES DE CONSTRUCTION D'UN MODELE A L'AIDE D'UN DIAGRAMME Un modèle de simulation à événements discrets peut être construit selon deux modes : z En mode interactif grâce à un utilitaire z En mode BATCH c.a.d. Manuel grâce à un Editeur de Texte 6.1 MODE INTERACTIF Cette méthode nécessite l'utilisation d'un utilitaire spéciale appelé BLOCKS qui fait fonction d'éditeur interactif de diagrammes. Son avantage pratique c'est qu'il facilite la tâche de l'utilisateur car il génère automatiquement à partir d'un diagramme construit à l'écran , le modèle programmé (ou Modèle opérationnel ou suite de macro-Instructions) correspondant. Pour construire un diagramme, les étapes à faire sont : 1- Sélectionne un bloc devant composer le diagramme dans un menu contenu la liste des blocs offerts par SIMAN 2- L'ajouter au diagramme 3- Fournir les paramètres éventuels du bloc Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. 14 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. On peut associer à un bloc un identificateur (8 Caractères). Ce dernier peut servir par exemple pour faire des branchements vers ce bloc à partir d'un autre bloc, ou pour référencer ce bloc dans un autre bloc. Au fur et à mesure de l'ajout des blocs, BLOCKS affecte à chacun un numéro de séquence qui sera affiché à gauche du bloc. Ce numéro peut par exemple être utilisé pour éditer un bloc individuellement dans le cas où on veut faire des modifications sur ce bloc. Les blocs sont connectés entre grâce à deux symboles (appelés CONNECTORS dans SIMAN) qui sont : 1 ↓: 2. 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 LABEL qui permet d’indiquer que les entités seront dirigées vers le bloc dont le LABEL est indiqué et non pas séquentiellement. Dans le cas ou aucun connecteur n'est rattaché à un bloc, un symbole (ou connecteur ) spécial est rajouté automatiquement. Ce symbole est : ⊥ et indique que les entités qui sortiront du bloc auquel a été ajouter ce symbole seront détruites. Cependant, il faut souligner que l'ajout de connecteurs à un bloc ne s'applique pas au bloc TRANSFERT c'est à dire qu'on ne doit pas rajouter de connecteur à ce type de bloc. En effet, les fonctions du bloc TRANSFERT sont par définition des fonctions de routage d'entités vers une destination précise (STATION). Cette dernière sera donc nécessairement un paramètre du bloc même et c'est pour cela que l'ajout d'un connecteur n'est vraiment pas utile puisqu'on sait déjà où va l'entité. En plus des connecteurs, on peut ajouter à un bloc un symbole de marquage (appelé MARK symbol dans SIMAN) qui a l'allure suivante : A Ce symbole permet de mémoriser le temps d'arrivée de l'entité au bloc dans un attribut spécifique (ici A par exemple) de cette entité. Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. 15 6.2 MODE BATCH Dans ce mode la construction d'un modèle 'équivalent d'un diagramme à blocs', est d'utiliser un éditeur de texte quelconque et de saisir manuellement la suite de macro-instructions correspondant chacune à un bloc. Pour faire ce travail, on doit normalement dessiner sur papier le diagramme puis passer à l'étape de traduction manuelle du diagramme. Pour cela on doit nécessairement connaître la syntaxe et la structure des macro-instructions. Une macro-instruction ou plus simplement une primitive du langage SIMAN est structurée en 5 champs : Label du Bloc Nom du Bloc Opérandes Marque Connecteur & Commentaires ; Le label du bloc tient sur 8 caractères au maximum et commence donc à la colonne 1. Le Nom du bloc commence à partir de la colonne 10 ou même après (ce qui laisse au moins un blanc entre le label et le nom du bloc) et est séparé du champ suivant par le caractère ' : ' 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 ' : ' Les marques et connecteurs appelés dans SIMAN des 'Modifiers' sont introduits après la lise des opérandes (après le :) et sont séparés entre eux par une virgule ','. Il existe en fait 3 type de Modifieurs : z z z DISPOSE : mot clé qui indique que les entités sortant du bloc sont détruites MARK(A) : mot clé qui indique que le temps d'arrivée de l'entité au bloc doit être mémorisé dans l'attribut A de cette entité NEXT(QUEUE5) : mot clé qui indique que les entités sortant du bloc doivent être routées vers le bloc ayant pour étiquette ou Label : QUEUE5 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). La fin de la macro-instruction effective est indiquée par le caractère point virgule ( ; ) qui sera donc placé juste après le dernier modifieur. Le commentaire associé à la macro-instruction sera placé après le point virgule marquant la fin effective de celle-ci. Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. 16 7 EXEMPLE DE MODELE 7.1 Description du Système à Modéliser Le système à modéliser consiste à contrôler des pièces. Si une pièce est jugée non conforme , elle doit passer sur une autre machine pour subir un ajustement ou rectification. Après avoir subie cette opération, elle doit à nouveau passer au contrôle. Les pièces qui sont jugées bonnes après contrôle (qu'elles aient subit un ou plusieurs ajustement ou pas du tout) quittent le système. On suppose que suite à des observations effectuées sur le système, on a estimé que 15% des pièces contrôlées sont bonnes et le reste (85%) subit au moins une fois un ajustement. On suppose aussi les durées des opérations de contrôle et celle de rectification suivent des lois uniformes. De même que le temps séparant la création des entités suit une loi uniforme. Nous préciserons le sens des paramètres de ces lois (UN(1,1) , UN(2,1) et UN(3,1) plus loin. Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. Diagramme CREATE Explications Création des pièces et Marquage du temps d’arrivée dans l’attribut 1 1 UN(1,1) Attendre la machine de contrôle dans la file 1 1 CONTROLE Passer sur la machine de contrôle SEIZE Rester sur la machine de contrôle pendant une durée égale au temps de service : généré à partir d’une distribution uniforme. MACHINE1 DELAY UN(2,1) Libérer la machine de contrôle Selon le résultat du contrôle se brancher avec une probabilité de 0.15 vers la machine de rectification et avec une probabilité de 0.85 vers la sortie. RELEASE MACHINE1 1 MACHINE2 WITH, .15 WITH, .85 RECTIFIE QUITTER 2 SEIZE Attendre la machine rectification dans la file 2 de Passer sur rectification de la machine Rester sur la machine de rectification pendant une durée égale au temps de rectification (généré à partir d’une distribution uniforme) MACHINE2 DELAY UN(3,1) Libérer la machine de rectification et Retourner à la machine de contrôle RELEASE MACHINE2 MACHINE1 ⊥ QUITTER TALLY Collecter des statistiques sur le temps passé par les entités dans le système. 1, INT(1) Remarque : Beaucoup de paramètres de ce modèle seront spécifiés dans le cadre d’expérimentation associé au modèle. Ce sera notamment le cas pour les paramètres des distributions utilisées (Uniforme). 17 Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. 18 7.2 Programme SIMAN correspondant au diagramme BEGIN; CONTROLE RECTIFIE QUITTER Arrivée des pièces CREATE : UN( 1,1) : MARK(1) ; Attente Machine1 QUEUE ,1; SEIZE : MACHINE1;Acquérir Machine1 DELAY : UN( 2,1) ; Occuper Machine1 pendant un temps = à la durée du contrôle Libérer Machine1 RELEASE : MACHINE1; ALLER Soit vers le bloc dont Label est : BRANCH, 1 ; RECTIFIE avec une Probabilité= 0.15 WITH , .15, RECTIFIE ; QUITTER avec une Probabilité= 0.85 WITH , .85, QUITTER ; Attente Machine2 QUEUE , 2; SEIZE : MACHINE1;Acquérir Machine2 DELAY : UN( 2,1) ; Occuper Machine2 pendant un temps = à la durée de rectification RELEASE : MACHINE2 : NEXT(CONTROLE) ; Libérer Machine2 et Retour au contrôle Collecter des statistiques sur le TALLY : 1 , INT(1) : DISPOSE; temps de séjour d'une pièce dans le système et détruire les entités qui sortent END; 7.3 Cadre d'expérimentation pour le modèle BEGIN; PROJECT , CONTROLE DE PIECES , AUTEUR , 5/1/1998 DISCRETE , 30, 1, 2; PARAMETERS : 1, 3.5 , 7.5 : 2 , 6.0 , 12 : 3, 20 , 40 ; RESOURCES : 1 , MACHINE1 , 2 : 2 , MACHINE2 ; TALLIES : 1 , TEMPS DE SEJOUR; DSTAT : 1, NQ(1), FILE CONTROLE : 2 , NQ(2), FILE RECTIFIE : 3, NR(1), UTILIZ M1 : 4 NR(2), UTILIZ M2 ; TRACE; REPLICATE, 1 , 0 , 100; END; 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 : - Les valeurs des paramètres des distributions de variables aléatoires grâce à l'instruction PARAMETERS - Les caractéristiques des ressources (numéro, nom, capacité initiale) grâce à l'instruction RESOURCES - Les caractéristiques des résultats désirés grâce à des instructions telles que : TALLIES, CSTAT, DSTAT, COUNTERS,RESOURCES Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. 19 - Le nombre de simulation à faire , la durée d'une simulation , les initialisations à faire, etc. et ce grâce à l'instruction REPLICATE - La spécification de l'option de TRACE, qui permet d'obtenir une trace d'exécution et ce grâce à l'instruction TRACE 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. 8 ETAPES DE MISE EN OEUVRE D'UNE SIMULATION 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 : z BLOCKS.EXE z MODEL.EXE z EXMPT.EXE z LINKER.EXE z SIMAN.EXE z OUTPT.EXE : Utilitaire pour l'édition interactive de diagrammes à blocs : Utilitaire pour compilation d'un modèle ; produit comme résultat un fichier : Utilitaire pour compilation d'un cadre d'expérimentation ; produit comme résultat un fichier : Utilitaire pour faire l'édition de liens entre un modèle compilé et son cadre d'expérimentation aussi compilé ; produit comme résultat le modèle opérationnel de simulation (ou exécutable) : SIMULATEUR SIMAN qui utilise comme entrée le modèle opérationnel de simulation résultant de l'étape d'éditions de liens , exécute ce modèle et produit en sortie les résultats statistiques désirés. : Utilitaire permettant d'appliquer un certain nombre d'operations statistiques aux résultats d'une simulation. Les étapes principales à suivre pour pouvoir réaliser une simulation et obtenir des résultats sont donc les suivantes : 8.1 CONSTRUCTION DU MODELE Cette étape que nous avons expliqué plus haut consiste à construire le modèle soit selon le mode interactif soit selon le mode BATCH. Dans les deux cas, le résultat de cette étape sera un fichier source contenant la suite de macroinstructions et qui peut être vue aussi comme un digramme à blocs. En effet puisque dans le cas où on utilise le mode interactif, la traduction du diagramme en un fichier source contenant une suite équivalente de macro-instruction est faite automatiquement par l'utilitaire BLOCKS. Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. 20 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. Fichier Source MODEL Modèle Compilé Ex : si on suppose qu'on a utilisé l'éditeur EDIT de DOS (ou sous n'importe quel autre éditeur) pour créer le fichier source c'est à dire saisir la suite de macro-instructions représentant notre modèle et qu'on a enregistré ce fichier sous le nom TOTO.TXT, La compilation de ce fichier afin d'obtenir une forme interne du modèle qui constituera l'entrée de l'éditeur de liens, on fera : C> SIMAN> MODEL TOTO.TXT MODTOTO TOTO.TXT est le nom du fichier source et MODTOTO est le nom du fichier résultat (modèle compilé). L'utilitaire MODEL rajoute automatiquement une extension au fichier résultat MODTOTO 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 : a) BEGIN, BSEQ , ISEQ, ILIST ; ou les paramètres ont les significations suivantes : BSEQ : Entier indiquant le numéro à attribuer au premier bloc du modèle. Si le paramètre est omis, les blocs sont numérotés à partir de 10 (premier bloc aura pour N° 10) ISEQ : Incrément à rajouter au numéro du bloc précédent pour obtenir le numéro du bloc courant (Ceci s'applique à tous les blocs sauf le premier dont le numéro est indiqué par BSEQ (ou 10 par défaut). Si ISEQ est omis l'incrément est fixé par défaut à 10. ILIST : paramètre égal à YES ou NO est permet de spécifier si on souhaite obtenir un listing du résultat de la compilation (par défaut égal à YES). b) END; L'instruction END n'a pas de paramètres. Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. 21 8.2 Construction d'un cadre d'expérimentation Le fichier source contenant la suite des instructions spécifiant le cadre d'expérimentation du modèle est construit en utilisant un éditeur de texte quelconque et en respectant la syntaxe des instructions. Le jeu d'instruction à utiliser est totalement différent de celui des macro-instructions qu'on utilise pour construire un modèle (ou diagramme à blocs). Le fichier 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. Fichier Source EXMPT Cadre d’expérimenta. Compilé Ex : si on suppose qu'on a utilisé l'éditeur EDIT de DOS (ou sous n'importe quel autre éditeur) pour créer le fichier source contenant les instructions définissant le cadre d'expérimentation. Si le fichier s'appelle TITI.TXT C> SIMAN> EXMPT TITI.TXT CADRTITI TITI.TXT est le nom du fichier source et CADRTITI est le nom du fichier résultat (cadre d'expérimentation compilé). L'utilitaire EXMPT rajoute automatiquement une extension au fichier résultat CADRTITI 8.3 Création du modèle opérationnel ou Exécutable Les deux fichiers compilés , celui produit par l'utilitaire MODEL et celui produit par EXMPT vont servir d'entrée à l'éditeur de liens LINKER propre à SIMAN (à ne pas confondre avec le LINK de DOS ou de n'importe quel compilateur!) qui produit comme résultat ce qu'on a appelle le modèle opérationnel ou exécutable. Modèle Compilé LINKER Modèle Opérationnel Cadre d’exp. Compilé Ex : L'éditions de liens des fichiers résultant des exemples précédents donne : C> SIMAN> LINKER MODTOTO CADRTITI EXECMOD MODTOTO et CADRTITI sont les 2 fichiers d'entrée du LINKER. EXECMOD est le fichier dans lequel le LINKER produira le résultat de l'édition de liens. EXECMOD sera donc le modèle opérationnel ou exécutable. Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. 22 8.4 Exécution du Modèle - Expérimentation Le modèle exécutable obtenu à la suite de l'édition de liens est utilisé comme entrée par le simulateur SIMAN qui l'éxécute alors et produit en sortie les résultats statistiques voulus. Ex : L'exécution du modèle EXECMOD se fera comme suit : C> SIMAN> SIMAN EXECMOD 9 Eléments de construction d'un Cadre d'expérimentation Comme nous l'avons souligné, la construction d'un cadre d'expérimentation consiste en l'édition d'un fichier source contenant un ensemble de directives (ou instructions ) permettant de spécifier toutes les conditions pour exécuter le modèle de simulation. Une directive ou instruction (appelées ELEMENT dans SIMAN) consiste en : • 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 Certaines instructions peuvent posséder plusieurs groupes d'opérandes qui se répètent. Ces groupes sont alors séparé par le caractère ':' et à chaque groupe est associé un numéro (1er , 2ième , ...). Pour certaine instructions , ce numéro d'ordre des groupes a de l'importance alors que pour d'autre non. Un opérande peut être obligatoire ou optionnel selon le cas et l'instruction. Dans le cas d'un opérande optionnel, lorsqu'il est omis, c'est la valeur par défaut qui est utilisée. 9.1 Principales instructions Nous allons présenter une liste d' instructions qui sont parmi les plus importantes. Leur connaissance suffit amplement pour être à même de construire un cadre d'expérimentation. Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. 9.1 Instruction PROJECT Utilisée pour attribuer un titre (ou label) au rapport contenant les résultats statistiques édités par SIMAN en fin de simulation. PROJECT FORMAT INSTRUCTION: PROJECT , TITRE , AUTEUR , MOIS/JOUR/ANNEERE ; OPERANDE VALEUR DEFAUT TYPE Titre du projet (20 caractères MAx.) TITRE des Blancs Nom de l'auteur (20 caractères MAx.) AUTEUR des Blancs date MOIS/JOUR/ANNNE 1/1/2000 EXEMPLES : PROJECT , GESTION PRODUCTION, LISA , 1/31/1998 ; 9.2 Instruction DISCRETE Utilisée pour définir les variables associées à un modèle à événements discrets représenté soit par un diagramme à blocs ou par une approche de type événements. FORMAT INSTRUCTION: DISCRETE DISCRETE , MAXENT , MAXATRB , NFILES, NSTA ; OPERANDE MAXENT TYPE VALEUR DEFAUT Nombre maximum d'entités qui peuvent être présentes dans le système en même temps (entier) MAXATRB NFILES NSTAT Nombre maximum d'attributs associés à une entité (entier) Nombre de file d'attentes dans le système (entier) Nombre de stations dans le système (entier) 0 0 0 0 EXEMPLES : DISCRETE , 100 , 3 ; Le nombre maximum d'entités est de 100 et chaque entité possède 3 attributs qu'on pourra désigner dans le modèle (ou diagramme) par A(1) , A(2) et A(3). 23 Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. 9.3 Instruction TALLIES Permet d'attribuer des identificateurs (labels ou entête) aux statistiques collectées au cours de la simulation et qui vont apparaître sur les résultats. Elle permet aussi de définir les unités de périphériques sur lesquelles auront lieu les sorties. Cette instruction est a utiliser lorsque dans le modèle (ou diagramme à blocs) on a utilisé un bloc TALLY (ou bien lorsqu'on a fait appel à la subroutine TALLY dans le cas d'une approche par événements). FORMAT INSTRUCTION: TALLIES TALLIES : N , ID , UNITE : repeats...............; OPERANDE TYPE VALEUR DEFAUT N Numéro du régistre (entier) ID Identificateur (16 caractères Max.) des Blancs UNITE Numéro de l'unité périphérique sur laquelle enregistrer les observations individuelles (Incrémentée à chaque exécution ) Pas d'observ. Individuelles Néant EXEMPLES : TALLIES: 1 , TEMPS DE SEJOUR ; L'identificateur du registre 1 est TEMPS DE SEJOUR. Il n' y a pas de sauvegarde des observations individuelles (car pas de n° d'unité). TALLIES: 1 , T. DANS FILE : 2 , T. ENTRE ARRIVEE , 11; L'identificateur du registre 1 est T. DANS FILE . Il n' y a pas de sauvegarde des observations individuelles pour la variable associée à ce registre (car pas de n° d'unité). L'identificateur du registre 2 est T. ENTRE ARRIVEE. Il y a sauvegarde des observations individuelles sur l'unité N° 11 (qui peut être associée à un fichier sur disque ou disquette). 24 Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. 9.4 Instruction COUNTERS Permet d'attribuer des identificateurs (labels ou entête) aux compteurs utilisés dans les modèles à événements discrets. Cette instruction est a utiliser lorsque dans le modèle (ou diagramme à blocs) on a utilisé un bloc COUNT (ou bien lorsqu'on a fait appel à la subroutine COUNT dans le cas d'une approche par événements). FORMAT INSTRUCTION: COUNTERS COUNTERS : N , ID , LIMITE : repeats...............; OPERANDE TYPE VALEUR DEFAUT N Numéro du compteur (entier) ID Identificateur (16 caractères Max.) LIMITE La valeur limite du compteur qui sert pour stopper la simulation. Néant des Blancs ∞ EXEMPLES : COUNTERS : 1 , CLIENTS SERVIS ; L'identificateur du compteur N° 1 est CLIENTS SERVIS. La valeur limite de ce compteur est fixée à 500. Dès que le compteur atteint (ou dépasse) cette limite, la simulation s'arrête. COUNTERS : 1 , PIECES ROUGES : 2 , PIECES JAUNES , 50; L'identificateur du compteur N° 1 est PIECES ROUGES. Sa valeur limite est infinie. L'identificateur du compteur N° 2 est PIECES JAUNES. Sa valeur limite est fixée à 50. Dès que le compteur 2 atteint (ou dépasse) 50 , la simulation s'arrête. L'identificateur du registre 1 est T. DANS FILE . Il n' y a pas de sauvegarde des observations individuelles pour la variable associée à ce registre (car pas de n° d'unité). L'identificateur du registre 2 est T. ENTRE ARRIVEE. Il y a sauvegarde des observations individuelles sur l'unité N° 11 (qui peut être associée à un fichier sur disque ou disquette). 25 Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. 9.5 Instruction RESOURCES Utilisée pour déclarer une ressource utilisée dans un diagramme à blocs. Les ressources peuvent être de deux types : les ressources simples et les ressources indicées (sous forme d'un vecteur). Dans ce qui suit, nous allons présenter uniquement le type simple. On peut déclarer une ou plusieurs ressources dans une même instruction RESOURCES. Dans ce cas, les paramètres associées à chaque ressource (numéro, nom , capacité initiale) seront séparés entre eux par une virgule et séparés des autres par ':' FORMAT INSTRUCTION: RESOURCES RESOURCES : Numéro , Nom , Capacité : repeats ............ ; OPERANDE Numéro Nom Capacité TYPE Numéro de la ressource (entier) Nom de la ressource (8 caractères Max.) Nombre initial d'unités (entier) VALEUR DEFAUT Néant Néant 1 EXEMPLES : RESOURCES : 1 , SERVEUR ; La ressource porte le numéro 1 et pour nom SERVEUR. Sa capacité initiale est de 1 unité (valeur par défaut). RESOURCES : 1 , FRAISEUSE , 4 : 2 , TOUR; La ressource portant le numéro 1 a pour nom FRAISEUSE et sa capacité initiale est de 4 unités. La ressource portant le numéro 2 a pour nom TOUR et sa capacité initiale est de 1 unité (valeur par défaut). La variable système (de SIMAN) NR(I) permet de connaître le nombre d'unités occupées de la ressource portant le numéro I. La variable système (de SIMAN) MR(J) permet de connaître le nombre d'unités actuel (courant) de la ressource portant le numéro J. 26 Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. 9.6 Instruction REPLICATE Permet de spécifier le nombre de simulations à réaliser, le temps de début de la première simulation, la durée maximale de chaque exécution et les initialisations à faire entre deux exécutions consécutives. Dans le cas ou cette instruction n'est pas utilisée, alors une il y aura une seule exécution de la simulation dont la fin devra être contrôlée à l'intérieur du modèle de simulation. Il existe deux types d'initialisations qu'on peut demander : • Initialisation du système au début de chaque exécution : On peut initialiser ou non le système avant de commencer l'exécution d'une nouvelle simulation (réplication) grâce à une paramètre de l'instruction qu'on positionne à YES ou NO. Dans le cas ou on choisit l'option YES (initialiser), SIMAN remet toutes les variables et les files d'attente à leur état initial avant de commencer la simulation. Ainsi toutes les simulations demandées (réplications) débuteront dans les mêmes conditions. Si par contre, l'option choisie est NO (ne pas initialiser), l'état du système n'est pas réinitialisé entre deux exécutions consécutives. Ainsi, les conditions de terminaison de la nième exécution serviront de conditions initiales pour l'exécution suivante. • Ignorer les Observations collectées durant une réplication On peut ignorer ou conserver les observations collectées au cours de l'exécution d'une simulation en le spécifiant grâce à un paramètre de l'instruction qu'on positionne à YES ou NO. Dans le cas ou on choisit l'option YES (Ignorer), toutes les observations collectées dans la précédente réplication sont ignorées et ne sont pas prises en compte pour l'exécution d'une nouvelle simulation. Ainsi, les statistiques fournies en sortie concernent une seule réplication. Si par contre, l'option choisie est NO (Ne pas Ignorer), les observations des différentes réplications ne sont pas ignorées et seront utilisées pour produire les résultats statistiques. Ces résultats sont donc basés sur les observations faites dans la dernière réplications ainsi que celles faites dans toutes les précédentes. FORMAT INSTRUCTION: REPLICATE REPLICATE : NRUNS , Tdébut , TMaxRun, INITSYS, INITSTAT; OPERANDE NRUNS Tdébut TMaxRun INITSYS INITSTAT EXEMPLES : TYPE VALEUR DEFAUT Nombre de simulations à faire (entier) Temps début de la première simulation (Réel) Durée Maximale de chaque simulation (Réel) Initialisation du système (YES ou NO) IGNORER les Observations (YES ou NO) 1 0.0 ∞ YES YES REPLICATE , 1 , 0 , 1000 ; Une seule exécution qui commence au temps 0 et se termine au temps 1000. REPLICATE , 10 , 0 , 200 , NO; Ici on demande 10 exécutions, la première commençant au temps 0. Chaque exécution dure au maximum 200 unités de temps et il n 'y aura pas réinitialisation du système entre les exécutions. 27 Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. 9.7 Instruction PARAMETERS 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. Les distributions de probabilités offertes par SIMAN sont : Distribution • • • • • • • • • • Nom EX ER UN TR RN RL GA BE NP WE Exponentielle Erlang Uniforme Triangulaire Normale Lognormal Gamma Beta Poisson Weibull • Distribution Empirique DP • Constante CO FORMAT INSTRUCTION: P1 Paramètr es P2 P3 Moyenne Moy. Exponentielle Minimum Minimum Moyenne Moyenne beta theta Moyenne beta • K Maximum Mode Ecart type Ecart type alpha phi • alpha • • • Minimum • • • • • • Probabilité Cumuléé ,Valeur........ constante • • PARAMETERS PARAMETERS : N,P, ....P : repeats...............; OPERANDE TYPE VALEUR DEFAUT N Numéro d'un ensemble ou groupe de paramètres Néant P Valeur d'un paramètre (réelle) Néant EXEMPLES : PARAMETERS : 5 , 3.0 , 1.2 : 4 , 0.3 , 1 , 0.9 , 2 , 1.0 , 3 ; On a défini deux ensembles ou groupes de paramètres. L'un ayant le numéro 5 et le deuxième pour numéro 4. L’ensemble numéro 5 a deux paramètres dont les valeurs sont 3.0 et 1.2. Si on utilise par exemple le numéro de cet ensemble comme argument d’une distribution normale , alors le paramètre 3.0 sera consiédrée comme la moyenne de la distribution et le paramètre 1.2 comme l’écart type. Utilisé avec la distribution Uniforme, 3.0 sera considéré comme le minimum et 1.2 comme le maximum (ce qui peut engendrer une erreur Minimum > maximum !). Pour l’ensemble ayant pour numéro 4, s’il est utilisé avec une distribution empirique, cela signifie que la variable aléatoire prend pour valeurs 1 , 2 et 3 avec les probabilités cumulées 0.3 , 0.9 et 1.0 respectivement. On remarque donc que la valeur d’un paramètre est interprétée en fonction de son ordre d’apparition dans le groupe de paramètres et de la distribution qui référence ce groupe. 28 Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. 9.8 Instruction RANKINGS 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. Les règles de gestion possibles sont : 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. LVF(K) : les entités sont rangées selon un ordre croissant de la valeur de l'attribut numéro K de l'entité. Ainsi l'entité qui sera servie en premier est celle dont la valeur de cet attribut est la plus petite. HVF(K) : les entités sont rangées selon un ordre decroissant de la valeur de l'attribut numéro K de l'entité. Ainsi l'entité qui sera servie en premier est celle dont la valeur de cet attribut est la plus grande. FORMAT INSTRUCTION: RANKINGS RANKINGS : N , REGLE : .............; OPERANDE DEFAUT TYPE N Numéro de la file d'attente ou ensemble de files auxquelles appliquer la règle spécifiée REGLE Règle de gestion : FIFO , LIFO , LVF(K) ou HVF(K) K étant un entier EXEMPLES : VALEUR Néant Néant RANKINGS : 5 , LIFO : 1-4 LVF(3); 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. 29 Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. 9.9 Instruction DSTAT Utilisée pour obtenir des statistiques liées au paramètre temps (Timepersistent) sur des variables d'un modèle à événements discrets. A chaque variable sera associé un numéro qui désigne un régistre dans lequel seront maintenues les statistiques sommaires (Moyenne, variance, ecart type, ...) pour la variable correspondante. FORMAT INSTRUCTION: DSTAT DSTAT : N , DVAR , ID , UNITE : repeats...............; OPERANDE VALEUR DEFAUT Numéro associé à la statistique(entier) N DVAR TYPE Néant Nom de la variable pour laquelle on veut collecter des statistiques liées au temps [X(K), NE(K) , NQ(K) , NR(K), NT(K), LC(K), MR(K) ou MT(K) ] Identificateur (16 caractères Max.) (entête sur le rapport de sortie) ID UNITE Numéro de l'unité périphérique sur laquelle enregistrer chaque changement de la variable Unité est incrémenté à chaque nouvelle exécution) Néant des Blancs Pas de Sauvegarde EXEMPLES : DSTAT : 1 , NQ(1) , QUEUE 1 : 2 , NR(1) , UTILIZ. MACHINE; La variable numéro 1 représente le nombre d'entités dans la file 1 (NQ(1)). L'identificateur qui sera utilisé comme entête lors de l'édition des statistiques concernant cette variable est QUEUE 1. La variable numéro 2 représente le nombre d'unités de la ressource 1 qui sont occupées (NR(1)). L'identificateur qui sera utilisé comme entête lors de l'édition des statistiques concernant cette variable est UTILIZ. MACHINE. 30 Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. 9.10 Instruction TRACE Utilisée pour obtenir une trace d'exécution de la simulation. Dans le cas d'un modèle à événements discrets (diagramme à blocs), la trace fourni des informations détaillées sur le mouvement des entités à travers les blocs du diagramme, les valeurs prises par les variables, les ressources allouées, etc. Dans le cas d'une approche par événements, la trace fournit des informations sur les occurrences des événements ainsi que toutes les opérations réalisées lors du traitement d'un événement. On peut en plus des informations fournies en standard par SIMAN dans une trace, demander la trace des valeurs de variables spécifiques (jusqu'à 4 variables : NQ(), S(), ...). Un tel rapport de trace sert principalement à des fins de mise au point et de vérification d'un modèle. FORMAT INSTRUCTION: TRACE TRACE : Tdébut, Tfin, Condition, VAR ,.....VAR; OPERANDE VALEUR DEFAUT TYPE Tdébut Temps de début de la trace (Relatif au temps de début de la simulation) 0.0 Tfin Temps de fin de la trace (Relatif au temps de début de la simulation) ∞ Condition pour exécuter la trace (si Condition = vrai tracer sinon rien) Condition Var Nom de la variable ou attribut à tracer (maximum 4 variables) Pas de variables Tracées 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). TRACE, 0 , 10 , M.EQ.1.OR.M.EQ.2, A(1), NQ(1), S(1) , M; Cette trace commence au temps 0 (Tdébut = 0) et dure pendant 10 unités de temps. La trace n'a lieu que si la condition (M.EQ.1.OR.M.EQ.2) est vraie. On demande en plus de la trace standard, de tracer aussi les variables A(1) , NQ(1) , S(1) et M. 31 Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. 32 (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. BLOC : CREATE (Création d'entités) SYMBOLE GRAPHIQUE CREATE, NB TBC , MC FONCTION : Ce bloc permet la création d'entités (injection d'entités dans le système). FORMAT INSTRUCTION : CREATE, NB , : TBC , MC : MODIFIERS ; PARAMETRE TYPE VALEUR DEFAUT NB Nombre d'entités à créer à chaque fois Entier > 0 ou X(K) k étant 1 entier 1 TBC Time Between création: durée entre les créations (expression) ∞ MC Nombre maximum d'entités à créer ∞ EXEMPLES : CREATE EX(1,1) Il y a création d'une entité à chaque fois. La première entité est créée au temps égal à 0. Le temps séparant les créations suit une distribution exponentielle. Le nombre maximum de créations est infini. CREATE , EX(1,1); CREATE, X(1) UN(2,1) , 12 Le nombre d'entités à créer à chaque fois est de X(1). Le premier lot d'entités est créée au temps égal à 0. Le temps séparant les créations suit une distribution uniforme. Le nombre maximum de créations est de est de 12. CREATE , X(1) : UN(2,1), 12; Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. BLOC : QUEUE (File d'attente ) SYMBOLE GRAPHIQUE IFL , QC LBALK 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 : QUEUE, IFL , QC , LBALK : MODIFIERS ; PARAMETRE TYPE Numéro de la file (entier : K , M+K ou M-K ) Capacité de la file (A(I), X(I) ou I) IFL QC LABLK Label du bloc vers lequel diriger les entités si la file est pleine VALEUR DEFAUT Néant ∞ Détruire l'entité EXEMPLES : 1 QUEUE, 1 ; 1, 3 Le numéro de la file est 1. Sa capacité est infinie. Le numéro de la file est 1 et sa capacité est de 3. Les entités qui arriveront alors que la file est pleine seront détruites. QUEUE, 1, 3 ; 1, X(3) VERIF QUEUE, 1, X(3), VERIF ; Le numéro de la file est 1 et sa capacité est fournie par de la valeur courante de la variable SIMAN X(3). Les entités qui arriveront alors que la file est pleine seront dirigées vers le bloc ayant pour étiquette VERIF. 33 Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. REMARQUES : La modélisation d'un phénomène qui engendre la création d'une file d'attente se fait en utilisant un bloc de type HOLD. Un tel bloc doit donc être toujours precédé par au moins un bloc QUEUE afin de retenir les entités devant attendre qu'un changement d'état ait lieu. La combinaison la plus simple de ces deux blocs serait : Cette combinaison peut servir à modéliser une variété de situations dans lesquelles une entité se met en attente d'un changement d'état du système. De même, il est possible de faire précéder un bloc HOLD par plusieurs blocs QUEUE et non pas un seul (voir le bloc QPICK). La combinaison la plus courante est celle modélisant une demande d'allocation d'une ressource par une entité. C'est le bloc qu'on appelle SEIZE du nom de la fonction réalisée (SEIZE) et qui n'est en fait qu'un bloc HOLD (Voir les explications données plus haut concernant le bloc HOLD). Notion de RESSOURCE dans SIMAN : Le terme ressource désigne tout objet du système pouvant exécuter un service pour le compte d'une entité. Une ressource est donc allouée à une entité qui en fait la demande et est caractérisé par son état qui peut être : Libre (IDLE) ou Occupé (Busy). Elle possède aussi une capacité qui est le nombre d'unités de la ressource. Ainsi une entité peut demander l'allocation de plusieurs unités de la ressource en même temps. De même qu'une particularité intéressante de cette notion de ressource, est que plusieurs entités distinctes peuvent disposer simultanément de la ressource, chaque entité disposant d'un certain nombre d'unités. Des exemples d'objet d'un système qu'on peut modéliser comme une ressource sont : Machine, opérateur, Outils (d'une machine à outils), etc. 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. La priorité d'allocation d'une ressource peut être spécifiée comme un entier, un attribut de la première entité se trouvant dans la file d'attente ou comme la valeur de la variable globale X(I) de SIMAN. Dans tous les cas , la préférence est donnée à l'entité ayant la plus petite valeur de la priorité. 34 Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. BLOC : SEIZE (Allocation d'une Ressource) SYMBOLE GRAPHIQUE SEIZE , PRIOR RNAME , NR FONCTION : Ce bloc permet d'allouer une ressource à une entité. L'entité reste dans la file d'attente (bloc QUEUE précédent ce bloc SEIZE) jusqu'à ce que le nombre d'unités demandé et la priorité (en cas de conflit avec d'autre entités qui demandent aussi l'allocation de la même ressource) lui permettent de traverser le bloc SEIZE. Une entité qui traverse le bloc SEIZE est donc une entité qui a pu disposer des unités qu'elle a demandé. L'état de ces unités passe à Occupé (BUSY). FORMAT INSTRUCTION : SEIZE , PRIOR : RNAME , NR : MODIFIERS ; PARAMETRE PRIOR RNAME NR TYPE Priorité d’allocation de la Ressource (A(I) , X(I) , ou I : I étant un entier) Nom de la Ressource Nombre d'unités à allouer (A(I), X(I) ou I : I est un entier) VALEUR DEFAUT 1 Néant 1 EXEMPLES : 1 SEIZE Les entités attendent dans la file n°1 et demandent d'allouer 2 unités de la ressource ayant pour nom : OPERATOR SEIZE : OPERATOR, 2 ; OPERATOR, 2 1 SEIZE, A(1) SERVEUR Les entités attendent dans la file n°1 et demandent d'allouer 1 unité de la ressource ayant pour nom : SERVEUR. La priorité du SEIZE , A(1) : SERVEUR ; bloc SEIZE par rapport aux autres est égale à la valeur de l'attribut A(1) de la première entité de la file 1. 35 Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. BLOC : RELEASE (Libération d'une Ressource) SYMBOLE GRAPHIQUE RELEASE 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 : RELEASE : RNAME , NR : MODIFIERS ; PARAMETRE RNAME NR TYPE Nom de la Ressource (voir instruction RESOURCE du cadre d'expérimentation) Nombre d'unités à libérer (A(I), X(I) ou I : I est un entier) VALEUR DEFAUT Néant 1 EXEMPLES : RELEASE SERVEUR Une unité de la ressource ayant pour nom SERVEUR RELEASE : SERVEUR; est libérée. RELEASE OPERATOR,5 RELEASE : OPERATOR , 5; RELEASE DISQUE, A(1) RELEASE : DISQUE, A(1) ; 5 unités de la ressource ayant pour nom OPERATOR est libérée. Le nombre d'unités de la ressource ayant pour nom DISQUE qui sont libérées est spécifié dans l'attribut n° 1 de l'entité (A(1)). 36 Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. BLOC : ASSIGN (Affectation de valeur à une variable ou à un Attribut) SYMBOLE GRAPHIQUE ASSIGN VAR = valeur FONCTION : Ce bloc permet d'affect une valeur à une variable ou à un attribut FORMAT INSTRUCTION : ASSIGN : VAR = valeur : MODIFIERS ; PARAMETRE VAR TYPE VALEUR DEFAUT Nom de la variable A(I), X(I), S(I) , D(I) , P(I,K), J, M valeur une expression Néant Néant EXEMPLES : La valeur 3 est affecté au premier attribut (N° 1) de chaque entité arrivant au bloc ASSIGN. ASSIGN A(1) = 3 ASSIGN : A(1) = 3; La valeur qui sera affectée à la variable X(1) sera calculée en générant une valeur à partir d'une distribution exponentielle à laquelle on additionne 0.2. le résultat est affecté à X(1) ASSIGN X(1)= EX(1,1) +0.2 ASSIGN : X(1) = EX(1,1) + 0.2; 37 Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. BLOC : DELAY (Consommation de temps par une entité) SYMBOLE GRAPHIQUE DELAY Durée FONCTION : Ce noeud permet de modéliser une activité dans laquelle s'engage une entité et qui consomme du temps (ex: subir une opération sur une ressource). FORMAT INSTRUCTION : DELAY : Durée : MODIFIERS ; PARAMETRE Durée TYPE VALEUR DEFAUT une expression spécifiant la durée (constante, expression arithmétique impliquant des variables SIMAN) 0.0 EXEMPLES : DELAY A(1) La durée est la valeur de l'attribut A(1) de l'entité arrivant au bloc. Cette valeur aura été par exemple affectée à l'attribut A(1) dans un bloc ASSIGN. DELAY : A(1); DELAY La durée est égale à la valeur donnée par l'évaluation de l'expression X(M+1) + 0.3 DELAY : X(M+1) + 0.3; 38 Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. BLOC : TALLY (Collecte d'observations = Pointage) SYMBOLE GRAPHIQUE TALLY N , VAR FONCTION : Ce bloc permet de collecter la valeur d'une variable à chaque arrivée à ce bloc. Les valeurs collectées sont additionnées dans un registre identifié par son numéro N spécifié comme argument du bloc. Des statistiques telle que la moyenne, variance, minimum , maximum ainsi que le nombre d'observations relevées sont aussi maintenues. Il est possible de collecter les observations individuelles qu'on conservera dans un fichier. FORMAT INSTRUCTION : TALLY : N , VAR : MODIFIERS ; PARAMETRE N VAR TYPE Entier représente le numéro d'un registre La valeur à collecter (Expression , INT(K) ou BET(K) ) VALEUR DEFAUT Néant Néant INT(K) : Collecte de TNOW - A(K) BET(K) : Collecte de TNOW - X(K) EXEMPLES : INT signifie INTERVAL et consiste à collecter la 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 l'entité, TNOW - A(2) représente alors le temps mis TALLY : 1, INT(2) ; par l'entité pour aller du bloc ou on a fait le marquage jusqu'au bloc TALLY. TALLY TALLY 2 , BET(1) TALLY : 2, BET(1) ; BET signifie BETWEEN et consiste à collecter la valeur calculée TNOW - X(1) à chaque arrivée d'une entité au bloc et initialisation de X(1) avec TNOW. La collecte se fera dans le registre ayant pour numéro 2. Les valeurs collectées représente les temps entre les arrivées successives au bloc. 39 Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. BLOC : COUNT (Collecte d'observations par incrémentation de compteur) SYMBOLE GRAPHIQUE COUNT N , INC FONCTION : Ce bloc permet d'incrémenter un compteur N avec un pas (INC) à chaque arrivée d'une entité au bloc. Ce bloc peut aussi être utilisé pour contrôler la fin de la simulation. En effet , après incrémentation du compteur, sa valeur est automatiquement comparée à une limite qui est spécifiées dans le cadre d'expérimentation (Experimental Frame). Si la valeur du compteur est ≥ à cette limite, la simulation s'arrête. FORMAT INSTRUCTION : COUNT : N , INC : MODIFIERS ; PARAMETRE N TYPE Entier représente le numéro d'un registre (compteur) Le pas d'incrémentation (A(I) , X(I) ou I ) INC VALEUR DEFAUT Néant 1 EXEMPLES : COUNT 1,1 Le compteur 1 est incrémenté de 1 chaque fois qu'une entité arrive au bloc. Si après incrémentation , la valeur du compteur est > ou = à la limite du compteur (spécifiée dans l'Experimental Frame), la simulation est arrêté. COUNT : 1, 1 ; COUNT M , A(1) COUNT : M, A(1) ; Le compteur M est incrémenté avec A(1) . Si après incrémentation , la valeur du compteur est > ou = à la limite du compteur (spécifiée dans l'Experimental Frame), la simulation est arrêté. 40 Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. BLOC : BRANCH (branchement vers un bloc non séquentiel) MAXTAKE SYMBOLE GRAPHIQUE IF, Cond With, P ELSE ou ALWAYS Label1 Label2 Label3 FONCTION : Ce bloc permet de faire faire des branchements conditionnel ou probabiliste vers d'autres blocs. Il offre un moyen plus sophistiqué de contrôle du flux des entités. Il existe 3 types de branchements : - Probabiliste (WITH, P) : dans ce cas la branche est sékectionnée avec une probabilité P. La somme des probabilités de ce type de branche doit être comprise entre 0 et 1. - Conditionnel (IF , Condition) : la branche est sélectionnée si la condition est vraie. - Déterministe (ELSE ou ALWAYS) : la branche est sélectionnée si un nombre maximum de MAXTAKE branches n'a pas été sélectionnées. Un branchement se fait toujours vers un autre bloc dont on fournit le label. FORMAT INSTRUCTION : PARAMETRE MAXTAKE P C Label1 , .. TYPE BRANCH , MAXTAKE : IF , Cond , Label1 : WITH, P , Label2 : ELSE (ou ALWAYS) : Label3 ; VALEUR DEFAUT ∞ Nombre de branches maximum à emprunter (sur chaque branche sera routée une copie de l 'entité qui arrive au bloc à créer Probabilité de selection d'une branche (Constante ou expression entre 0 et 1) Condition Labels des blocs vers lesquels se brancher Néant Néant Néant 41 Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. EXEMPLES: 2 IF, A(1).EQ.1 With, A(2) ELSE NEXT REFAIRE EXIT BRANCH , 2 : IF , A(1).EQ.1 , NEXT : WITH, A(2) , REFAIRE : ELSE , EXIT ; ALWAYS MACHINE1 ALWAYS MACHINE2 BRANCH : ALWAYS , MACHINE1 : ALWAYS , MACHINE2; On emprunte 2 branches aux maximum. La première branche est empruntée si la condition A(1).EQ.1 est vraie. Dans ce cas une copie de l’entité est routée vers le bloc ayant pour label NEXT. Le choix de la deuxième branche est probabiliste. Cette branche sera donc empruntée avec une probabilité égale à l’attribut A(2) de l’entité. Une copie de l’entité sera routée vers le bloc ayant pour Label REFAIRE. La dernière branche est de type deterministe et sera empruntée si au moins une des branches précédentes n’aura pas été empruntée. Dans ce cas, une copie de l’entité sera routée vers le bloc ayant pour Label EXIT. Dans cet exemple, les deux branches sont deterministes. La valeur par défaut de MAXTAKE étant infinie, les deux branches seront donc empruntée et une copie de l’entité sera routée vers le bloc ayant pour label MACHINE1et une autre copie vers le bloc ayant pour label MACHINE2 . 42 Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. BLOCS : WAIT et SIGNAL (Attente de durée indéfinie) Symboles graphiques : SIGNAL WAIT NSIGNAL NSIGNAL Fonction : Contrairement au bloc DELAY qui permet de modéliser les phénomènes d’attente dont on connait à l’avance la durée, le bloc WAIT permet quant à lui de modéliser les phénomènes d’ attente dont la durée n’est pas connue et est fonction de l’évolution de l’état du système. Ce bloc WAIT fonctionne en conjonction avec un autre bloc SIGNAL qui permet d’envoyer un signal en vue de débloquer les entités qui se sont mises en attente par un bloc WAIT. FORMAT INSTRUCTIONs: WAIT : NSIGNAL : MODIFIERS; SIGNAL : NSIGNAL : MODIFIERS; OPERANDE VALEUR DEFAUT TYPE NSIGNAL Nuémro du signal à attendre (entier) (A(I), X(I) ou I) Néant EXEMPLES : QUEUE , 1; 1 WAIT : A(1); WAIT Une entité qui arrive au bloc WAIT se met en attente du signal dont le numéro est égal à l'attribut A(1) de l'entité. La file d'attente dans laquelle les entités attendront est la file N° 1. A(1) SIGNAL 2 SIGNAL : 2; Lorsqu'une entité arrive à ce bloc, toutes les entités se trouvant dans la file N°1 et dont l'attribut A(1) est égal à 2 quittent la file d'attente et traversent WAIT 43 Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. BLOCS : ALTER (Modification de la capacité d'une Ressource) Symbole graphique : ALTER RNAME, Unités Fonction : Ce bloc permet de modifier la capacité (nombre d’unités) d’une ressource. FORMAT INSTRUCTION: ALTER : RNAME , Unités : MODIFIERS; OPERANDE RNAME Unités TYPE VALEUR DEFAUT Nom de la ressource Nombre d'unités à ajouter ou retrancher de la capacité courante de la ressource (A(I), X(I) ou I) Néant Néant EXEMPLES : ALTER SERVEUR, -2 Le nombre d'unités de la ressource SERVEUR est decrémenté de 2 unités. ALTER : SERVEUR , -2; ALTER FRAISEUSE, A(1) Le nombre d'unités de la ressource FRAISEUSE est changé avec une valeur égale à l'attribut A(1) de l'entité qui arrive au bloc ALTER. Ce changement peut être une incrémentation (A(1) > 0) ou l'inverse. ALTER : FRAISEUSE , A(1); 44 Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. BLOCS : SELECT (Selection d'une Ressource parmi plusieurs) 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 : • CYC • RAND : Choix cyclique. On choisit la ressource disponible qui suit immédiatement celle qu’on a alloué juste avant. Au niveau du modèle, il s’agira du bloc SEIZE ou PREEMPT (associé à une resource) qui suit le bloc SEIZE ou PREEMPT vers lequel on a dirigé une entité lui allouant ainsi cette ressource. : Choix Aléatoire. On choisit aléatoirement la ressource disponible (nombre d’unités disponible suffisant). Au niveau du modèle, il s’agira de choisir un bloc SEIZE ou PREEMPT vers lequel diriger l’entité. • POR : Choix selon l’ordre d’apparition. Contrairement au choix aléatoire, ici on choisit la première ressource disponible (nombre d’unités disponible suffisant). • LNB : (Largest Number Busy). Choisir parmi les ressources ayant le plus grand d’unités occupées, la première dont le nombre d’unités encore libres est suffisant. • SNB : (Smallest Number Busy). Choisir parmi les ressources ayant le plus petit nombre d’unités occupées, la première dont le nombre d’unités encore libres est suffisant. • LRC : (Largest Remaining Capacity). Choisir parmi les ressources ayant la capacité la plus grande (en nombre d’unités) , la première dont le nombre d’unités encore libres est suffisant. • SRC : (Smallest Remaining Capacity). Choisir parmi les ressources ayant la capacité la plus petite (en nombre d’unités) , la première dont le nombre d’unités encore libres est suffisant. • UR(K) : (User Rule). Choisir une ressource en fonction d’un paramètre UR calculée par une routine écrité par l’utilisateur(Subroutine FORTRAN). • ER(N) : (Experimental Rule). Choisir une ressource en fonction d’un règle N définie dans le cadre d’expérimentation (Experimental Frame: RULES). 45 Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. FORMAT INSTRUCTION: SELECT : REGLE , LABEL : LABEL : ........LABEL; OPERANDE TYPE VALEUR DEFAUT REGLE Règle de sélection d'une ressource LABEL Label d'un bloc HOLD (voir les types de fonctions possibles : SEIZE , PREEMPT , ...) POR Néant EXEMPLES : 1 RAN Lorsqu'une entité arrive au bloc QUEUE, et qu'il existe des Machines libres , le choix de la machine à lui allouer est fait de manière aléatoire(RAN). Dans le cas où toutes les machines sont occupées, l'entité attend dans la file N°1. MACHINE1 MACHINE2 MACHINE3 M1 M2 SEIZE L'ordre d'apparition des LABELS des blocs HOLD (SEIZE.....) dans SELECT est utilisé par la règle POR. MACHINE1 SEIZE MACHINE2 QUEUE,1; SELECT, RAN : M1:M2:M3; M1 SEIZE : MACHINE1; M2 SEIZE : MACHINE2; M3 SEIZE MACHINE3 M3 SEIZE : MACHINE3; 46 Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. BLOC : MATCH (Synchronisation du mouvement des entités) Symbole graphique : Format MATCH, MA : QLBL , LABEL : ..........QLBL, LABEL; MA T T : N° attribut de synchronisation (défaut : néant) QLBL : Label d'un bloc QUEUE (défaut : Néant) LABEL: label du bloc destination correspondant à ce bloc QUEUE (défaut : Détruire) 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. T T 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. En supposant qu'à chaque malade est associé un numéro qui a été affecté à l'attribut N°3 A(3). On suppose aussi qu'à l'attribut N°3 de l'entité représentant le dossier du malade a été affecté le numéro du malade correspondant (ASSIGN). 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. 47 Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. 48 BLOC : PREEMPT (Allocation de Ressource par Preemption) Symbole graphique : PREEMPT, PR RNAME, NA, LSEND FORMAT INSTRUCTION: PREEMPT, PR : RNAME , NA , LSEND : MODIFIERS....; OPERANDE TYPE VALEUR DEFAUT PR Priorité de préemption (entier A(I), X(I) ou I) 1 RNAME Nom de la ressource Néant NA Néant Nuémro de l'attribut dans lequel stocker le temps restant de l’entité à laquelle on a retiré la ressource LSEND Label du bloc vers lequel diriger l'entité à laquelle Bloc QUEUE associé au bloc SEIZE on a retiré la ressource ou PREEMPT précédent EXEMPLES : PREEMPT MACHINE 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 lieu à cause de la priorité de préemption (1), l’entité est mise en attente dans la file associée au bloc QUEUE précédent jusqu’à ce que 1 unité lui soit allouée. PREEMPT : MACHINE; PREEMPT, A(1) CPU , 2, RELANCER 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é dans l’attribut 2 de l’entité qui sera alors routée vers le bloc ayant pour Label RELANCER. PREEMPT , A(1) : CPU , 2 , 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 FILES D’ATTENTE PARALLELES 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. BLOCS : QPICK (Prise d'une entité dans une file d'attente choisie parmi plusieurs) Symbole : QSR LABEL1 LABEL2 T T FORMAT INSTRUCTION: QPICK , QSR : LABEL1:.......:LABELn; OPERANDE TYPE QSR VALEUR DEFAUT (Queue Selection Rule) Règle de selection de la file (CYC, RAN, POR, SNQ, ...) Label de chacun des bloc QUEUE précédents LABELi EXEMPLE AVEC QPICK : POR FILE1 FILE2 T T SEIZE MACHINE POR Néant La ressource Machine est allouée aux entités résidant dans les files d’attente 1 et 2 correspondant aux blocs QUEUE ayant pour labels FILE1 et FILE2. La règle de selection de la file d’attente qui sera utilisée par QPICK est la règle POR qui signifie que la priorité est fonction de l’ordre d’énumération des labels dans QPICK. Ici c’est la file 1 correspondant au label FILE1 qui sera choisie en priorité. Les entités de la file 2 ne seront donc selectionnées que si la file 1 est vide. On remarque l’utilisation du connecteur DETACH avec les deux blocs QUEUE afin d’émpecher que ces blocs soient connectés à d’autres. 50 Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. BLOCS : PICKQ (Routage d'une entité vers une file d'attente choisie parmi plusieurs files ) Symbole : QSR LBALK LABEL1 LABEL2 FORMAT INSTRUCTION: PICKQ , QSR, LBALK : LABEL1:.......:LABELn; OPERANDE TYPE QSR LBALK LABELi VALEUR DEFAUT Règle de selection de la file (CYC, RAN, ...) Label du bloc vers lequel router l’entité si files pleines Label de chacun des bloc QUEUE suivants EXEMPLE AVEC PICKQ : SNQ EXIT FILE1 FILE2 ),/( SEIZE CABINE1 ),/( SEIZE CABINE2 POR Détruire l’entité Néant Les entités qui arrivent au bloc PICKQ seront dirigées vers l’un des blocs QUEUE ayant pour lables FILE1 et FILE2. La règle de selection de la file d’attente qui sera utilisée par PICKQ est la règle SNQ qui signifie de choisir la file contenant le plus petit nombre d’entités. Dans le cas ou les deux files sont à leur capacité maximale (qui est de 50) , l’entité qui arrive est redirigée (Balked) vers le bloc ayant pour label EXIT. Si ce label n’a pas été spécifié, l’entité aurait été détruite (option par défaut). 51 Dr Brahim BELATTAR. LISA. Département d'Informatique. Faculté des Sciences de l'Ingénieur. Université de Batna. 52 Fin de ce chapitre Dr Brahim BELATTAR. LISA. D partement d'Informatique. Facult des Sciences de l'Ingnieur. Universit de Batna. ANNEXE A : Liste 1999 des progiciels de simulation diffus e par the Institute for Operations Research and the Management Sciences. Lionheart Publishing, Inc. 2555 Cumberland Parkway, Suite 299, Atlanta, GA 30339 USA URL: http://www.lionhrtpub.com Product ALPHA/Sim Vendor Typical Applications ALPHATECH Business process Inc. reengineering, service delivery, manufacturing systems, military command & control, more Primary Markets Military, manufacturing, health care, service industry AMS: Semiconductor Manugistics Used in the Semiconducto Inc. component semiconductor r industry for capacity manufacturing Operating System(s) IBM PC: Windows NT; Sun Workstation: Solaris, Sun OS Y2K compliant versions of operating systems planning, factorylevel planning & floor scheduling. Win 95/NT Arena Systems Business process Modeling analysis, discrete Corporation event simulation, modeling Manufacturing, logistics, supply chain, services @RISK PALISADE General purpose, Corporation cost analysis Financial, oil and Win 95/98, NT, 3.x, gas, health care Mac OS AutoMod AutoSimulat Shop scheduling, ions manufacturing, warehousing and distribution, work cell layout Manufacturing, aerospace, automotive, pharmaceuticals NT or Win 95 C Library Numerical General Algorithms Group Finance, industries, universities, laboratories UNIX and Windows NT Call Center MAESTRO The Model Builders Inc. Call centers Windows 95/NT Call center work force staffing and technology evaluation. 1 Dr Brahim BELATTAR. LISA. D partement d'Informatique. Facult des Sciences de l'Ingnieur. Universit de Batna. CB Predictor Decisioneeri Project likely ng Inc. revenue figures and cash flows, forecast product demand for inventory control, project next year's sales Any forecaster or Windows 95, 98, or NT 4.0 planner, in any industry, could use this product. JobTime Plus JobTime Used for simulationbased advanced planning and scheduling. Manufacturing DOS, Windows 3.x, applications in Win 95/98, NT Client and NT Server the small- to medium-sized job shops, pharmaceuticals, media duplication, assemble to order, engineer to order. Can also be used to schedule complex training campaigns. COMNET III CACI Products Company Data communications, telecommunications, network design, network planning All Windows 95/98/NT, UNIX, HP/UX, SGI Crystal Ball Pro Decisioneeri Business planning ng Inc. and analysis, cost/benefit analysis, risk management, petroleum exploration Financial services, oil and gas, pharmaceutical, environmental analysis Windows 95, 98, or NT4.0 DecisionPro 3.0 Vanguard Busines financial Software modeling, decision Corporation modeling Management consulting, manufacturing, legal Windows 95, 98, NT Systems Inc. NT/95/98 Manufacturing, warehousing and distribution Deneb/Quest Deneb Manufacturing, material handling, discrete material flow analysis ExpertFit Fitting probability Manufacturing, Windows 3.1, 95, 98, distributions to data defense, NT communications, services, health care Robotics Inc. Averill M. Law & Associates 2 Dr Brahim BELATTAR. LISA. D partement d'Informatique. Facult des Sciences de l'Ingnieur. Universit de Batna. Extend Imagine That Inc. Engineering design, scientific analysis, custom programming Extend & BPR Imagine That Inc. Process modeling, Business, Windows 95, 98, NT ABC, workflow, cycle government, 3.1; Mac 68020+, Power Mac time, strategic telecomanalysis, technology munications, insertion analysis banking, health care, education, financial services Science, Windows 95, 98, NT, engineering, 3.1; Mac 68020+, Power Mac electronics, education, health care, environmental studies, defense/aerospac e Extend & BPR Imagine & That Inc. Manufacturing General, queing, manufacturing, costing analysis, business, industrial and commercial modeling Extend & Imagine Manufacturing That Inc. Industrial and Materials Windows 98, 95, NT commercial handling, 3.1, Mac 68020+, Power Mac modeling, JIT, networks, queueing, costing, manufacturing, logistics, throughput transportation, analysis government/milit ary, service industries Engineering, science, manufacturing, business, government, service industries, education Windows 95, 98, NT 3.1; Mac 68020+, Power Mac FACTOR/AIM SYMIX/Prits Manufacturing Manufacturing Windows 95, NT 4.0 GPSS/H Wolverine General, Software manufacturing, Corporation transportation, computing systems/networks, mining, logistics, queuing, etc. General (not Win 3.x, 95, 98, NT; industry-specific) OS/2; DOS; Solaris GPSS/PC DOS Minuteman Simulation for Manufacturing, Software optimization or transportation, analysis of design - health care, general communications, general - wide range of applications ker Division decision support 3 Dr Brahim BELATTAR. LISA. D partement d'Informatique. Facult des Sciences de l'Ingnieur. Universit de Batna. H/SCHED Haverly Systems Inc. Refinery scheduling, Petroleum crude oil scheduling, refining product blending scheduling, distribution scheduling Windows 95/98/NT IBM Supply Chain Simulator IBM Supply chain analysis, cost analysis, inventory optimization Windows NT Distribution, transportation, manufacturing ithink Analyst High Suited for high-level All markets. 5.1.1 Performanc strategic modeling, Suited to any e Systems Inc. does have discrete functionality Windows, Mac application where the user seeks to understand the behavior of a system & test their assumptions about the impacts of changes they may make to those systems. MAST Simulation Environment CMS Research Inc. Manufacturing, machine tool companies Windows 95/NT MedModel PROMODEL Health care, Corporation capacity analysis, facility design, optimization Health care Windows, NT micro-GPSS Ingolf Stahl General purpose discrete events simulation Educational (business and engineering) DOS, Windows, Web systems Micro Saint Win 95/98/NT Micro General, health Human Analysis & care, human factors, factors/ergonomi Design Inc. manufacturing cs MODSIM III CACI Products Company NAG Fortran Numerical Library, Mark Algorithms 18 Group Transportation, air traffic, military, logistics, telecommunications All Windows, Sun Solaris, HPUX, SGI General Financial, government & educational research UNIX, Linux, NT, HPUX, AIX, DOS, IRIX, Solaris, Sun OS 4 Dr Brahim BELATTAR. LISA. D partement d'Informatique. Facult des Sciences de l'Ingnieur. Universit de Batna. NAG Fortran 90 Library Numerical General Algorithms Group Programmers and Linux, NT, HP-UX, software AIX, IRIX, Solaris, Sun OS, other UNIX developers, scientists and engineers NAG Fortran SMP Library Numerical General Algorithms Group Finance, laboratories, industry NAG Parallel Library Numerical General Algorithms Group Science, UNIX, AIX, IRIX, Solaris, UNICOS engineering, financial analysis & research Optima 2.5 Micrografx Inc. Optima is a process TelecomWindows 3.1, 95, 98, NT 3.51 or later analysis application munications, offering high-end financial services, simulation pharmaceutical, capabilities. Used for manufacturing, BPR, TQM, etc. health care, and more PASION32 Stanislaw Raczynski Simulation IRIX, Solaris, UNIX & NT Manufacturing, engineering, education, operation research Windows 95 and Borland's Delphi 3 ProcessModel PROMODEL General, process Manufacturing, financial call centers, health care Windows, NT ProModel PROMODEL Manufacturing, Corporation facility design, process optimization, material handling, supply chain Manufacturing Windows, NT Proof Animation Wolverine Manufacturing, Software material handling, Corporation transportation, general General Windows 95/98/NT PS-ENGINE Prosolvia AB PS-ENGINE Plant Design; PS-ENGINE Assembly; PSENGINE Layout; PSENGINE Review Midsized operations with their main focus in discrete manufacturing Windows NT QueGauss Aptech Systems Inc. General queing simulation Engineering, health care, financial DOS, Win NT/95/98 Corporation improvement, reengineering 5 Dr Brahim BELATTAR. LISA. D partement d'Informatique. Facult des Sciences de l'Ingnieur. Universit de Batna. ServiceModel PROMODEL General, service Windows, NT Financial, call centers, airlines, restaurants SIGMA Custom General discrete Simulations event simulations; simulation education; supports all modeling paradigms Manufacturing All versions of Microsoft Windows factory and equipment modeling, health care, and banking operations Silk ThreadTec Inc. Manufacturing, communications, general Manufacturing, communications Any Java-compatible OS SimGauss Aptech Systems Inc. General dynamic simulation of differential equations Engineering, health care, financial DOS, Win NT/95/98 SIMNON 3.0 SSPA Maritime Consulting AB Differential and difference EQ; simulation of dynamic systems Technical schools, Windows developing industries SIMPLE++ Tecnomatix Simulation, Manufacturing, Windows NT/95, UNIX Technologie production planning, transportation, s Inc. scheduling, petro-chemicals, forecasting, financial services, optimization, object- telecomoriented munications, programming automotive, aerospace, electronics SIMPROCESS CACI Products Company SIMUL8 Windows 95/98/NT Visual General purpose Manufacturing, Thinking discrete-event visual distribution, Internationa simulation tool health care, l business process reengineering, financial SLX Wolverine Manufacturing, Software material handling, Corporation transportation, general Corporation apps., queuing, costing, optimization Business process All General Windows 95/98/NT Windows 95, 98, NT 6 Dr Brahim BELATTAR. LISA. D partement d'Informatique. Facult des Sciences de l'Ingnieur. Universit de Batna. Stat::Fit Geer Mountain Software Corp. Distribution Fitting for general simulation applications Taylor ED Logistics Suite F&H Manufacturing, Simulations material handling Visual Simulation Environment Orca Computer Inc. General Win 95, 98, NT 4.0 All manufacturing, health care, financial, quality and reliability, service industries, etc. Manufacturing, distribution, Win 95, Win NT warehousing, financial, service Generically Windows 95/98/NT applicable for use 4.0, Openstep/Mach in any market. Unix WITNESS 9.0 Lanner Business process Group Inc. reengineering, plant layout, scheduling, queuing, cost analysis Manufacturing, Windows 3.1, 95, NT, 98 automotive, defense, pharmaceuticals, chemicals, electronics, hydrocarbon WorkFlow Analyzer Meta Business process Software reengineering, Corporation workflow analysis Financial services, government Windows NT/95 7 Dr Brahim BELATTAR. LISA. D partement d'Informatique. Facult des Sciences de l'Ingnieur. Universit de Batna. ***************************************************************************** * Model Building Input via DistriProbution gramFitting ming Support Graphic Model Construction Product Run-time Debug Code Reuse Output (objects, TemAnalysis plates, subSupport models) (Interactive debugger) y - - y y y AMS: y Semiconductor - y y y - Arena y y y y y y @RISK - - - - - - AutoMod y y y y y y C Library - y - - y - Call Center MAESTRO y - - y - - CB Predictor - - - y - - JobTime Plus y y - y y y COMNET III y - - - - - Crystal Ball Pro - y y y - 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 & BPR y y y y y y Extend & BPR & y Manufacturing y y y y y Extend & Manufacturing y y y y y y FACTOR/AIM y - - y y y GPSS/H - y y - - y GPSS/PC - y - y - y H/SCHED - y - y y - ALPHA/Sim 8 Dr Brahim BELATTAR. LISA. D partement d'Informatique. Facult des Sciences de l'Ingnieur. Universit de Batna. IBM Supply y Chain Simulator - y y y - ithink Analyst 5.1.1 y - - y y y 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 Library, Mark 18 - y - - y - NAG Fortran 90 Library y - - y - NAG Fortran SMP Library - y - y - - NAG Parallel Library - y - - y - 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 9 Dr Brahim BELATTAR. LISA. D partement d'Informatique. Facult des Sciences de l'Ingnieur. Universit de Batna. SLX - y y y y y Stat::Fit - - y - - - Taylor ED Logistics Suite y y y y y y Visual Simulation Environment y y - y y y WITNESS 9.0 y - - y y y WorkFlow Analyzer y - y y - y 10 Dr Brahim BELATTAR. LISA. D partement d'Informatique. Facult des Sciences de l'Ingnieur. Universit de Batna. **************************************************************************** ** Product Is animation by post processor/ trace file Can the Can animation output be viewed be animated in real-time List compatible animation software, if any ALPHA/Sim y n n N/A y AMS: Semiconduc tor y n Arena y y y @RISK n - - AutoMod y y y C Library - - - Call Center n MAESTRO y n CB Predictor n n n N/A JobTime Plus y n y Wolverine Proof COMNET III y y n N/A Crystal Ball n Pro n n N/A DecisionPro n 3.0 n n Deneb/Que y st y y ExpertFit - - - Extend y y y Proof animation (animation also built into program) Extend & BPR y y y Proof animation (animation also built into program) y Extend & BPR & Manufacturi ng y y Proof animation (animation also built into program) y Extend & Manufacturi ng y y Proof animation (animation also built into program) VRML 2.0 11 Dr Brahim BELATTAR. LISA. D partement d'Informatique. Facult des Sciences de l'Ingnieur. Universit de Batna. FACTOR/AI y M y n GPSS/H y n y Proof animation GPSS/PC y y y Proof animation H/SCHED y y - IBM Supply y Chain Simulator y n y y n y MAST Simulation Environmen t y y y n n micro-GPSS y n y Micro Saint y n n MODSIM III y y n NAG Fortran Library, Mark 18 n - - NAG Fortran 90 Library n - - NAG Fortran SMP Library - - NAG Parallel Library - - - Optima 2.5 y y n PASION32 y n y ProcessMod y el n n y n n ithink Analyst 5.1.1 MedModel ProModel N/A - internal feature to ithink Proof animation (Wolverine Software) 12 Dr Brahim BELATTAR. LISA. D partement d'Informatique. Facult des Sciences de l'Ingnieur. Universit de Batna. y y y PS-ENGINE y y n - - - ServiceMod y el n n SIGMA y y y Silk y y n SimGauss n - - SIMNON 3.0 n n n SIMPLE++ y y - SIMPROCES y S y n SIMUL8 y y n SLX y y y Stat::Fit n n n Proof Animation QueGauss This is animation software. Graphical model generates standard C code for full control of output format. Devise from Division (VR) Uses proof animation; supports real-time and postprocessor mode y y y All animations, graphics, and statistics are selfcontained and fully integrated in the package. Visual Simulation y Environmen t y n None WITNESS 9.0 y y - WorkFlow Analyzer y y n Taylor ED Logistics Suite 13 Dr Brahim BELATTAR. LISA. D partement d'Informatique. Facult des Sciences de l'Ingnieur. Universit de Batna. **************************************************************************** ** Product ALPHA/Sim Major New Features Comments For spring 1999: Addition of ports on box nodes (encapsulation feature to assist in model reuse). This release will run on Windows 95/98, NT & UNIX (Solaris). ALPHA/Sim is a general-purpose, discrete-event simulation tool based on Petri nets. The graphical modeling environment provides a simple yet powerful set of model building blocks, making it easy to learn & use productively. AMS: Transport modeling, Semiconductor stocker to equipment, interstep transfers, whole lot binning/ classification, batching multiple products, improved batch sequential modeling, constrained lot starts, split lots & setup changes in burn-in, planning with engineering lots Arena @RISK AutoMod 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 reports. submodels; a Visio link that lets you associate any Visio shape with an Arena module; & connector animation. Performs risk analysis via Monte Carlo simulation. Features sensitivity and scenario analysis. Part of DecisionTools Suite. Model Communications AutoSimulations Inc., headquartered in Module - enables user to Bountiful, Utah, develops, markets & supports transfer model data simulation & scheduling software products for among multiple models or the manufacturing and material handling with external applications industries. The company has over 1,300 through Windows sockets; installations worldwide. 3-D graphical simulation software - Enables rapid & accurate modeling of complex manfctg. & material; Photoeye 14 Dr Brahim BELATTAR. LISA. D partement d'Informatique. Facult des Sciences de l'Ingnieur. Universit de Batna. C Library NAG has made major additions to the optimization chapter, improved thread-safety and Y2K compliance. A collection of over 300 sophisticated subroutines for mathematical & statistical computation. Call Center MAESTRO Quantify the impact of using one group of agents with General Skills" vs. using multiple groups of agents where each group has a "Specialized skill." Call Center MAESTRO allows managers to quickly 1) analyze the effect of call volume and/or staffing level on service quality; 2) visualize the effect of forecasted call volume on staff utilization, and 3) quantify the benefit of additional technology. CB Predictor 100 percent Microsoft Excel compatibility, bestof-breed forecasting algorithms, userdefinable confidence parameters, customizable forecast reporting engine, pivot tables for easy data management CB Predictor incorporates the most advanced methods of Time-Series Forecasting (TSF) into an easy-to-use Microsoft Excel add-in. TSF techniques analyze historical data to predict future performance. CB Predictor taps into this cache & produces forecasts. JobTime Plus Year 2000 compliance, Demand is modeled by defining template Visual Drag & Drop production routings that show how to make a Schedule Board, Theory of given part. The route is a sequence of Constraints compatibility, operations, specifying work center, setup time, Backward Pass Simulation, unit cycle time, move time, & other modeling fields. Built-in features included. interface to MRP/ERP systems, material/ inventory constraints COMNET III New add-on modules: application profiler, distributed software module, satellite and mobile module. COMNET III accurately predicts LAN, WAN, and enterprise network performance. COMNET III enables users to reduce risk by experimenting with diverse network alternatives before implementing their plans. Crystal Ball Pro This is a suite of products that includes Crystal Ball, the Developers Kit, the Extenders, & OptQuest. OptQuest is the only commercially available tool that offers global optimization for spreadsheets under conditions of uncertainty. Crystal Ball Pro is a powerful yet easy-to-use suite of forecasting and risk analysis tools that enhance spreadsheet modeling. It gives you the ability to perform Monte Carlo analysis combined with optimization on your spreadsheet models. 15 Dr Brahim BELATTAR. LISA. D partement d'Informatique. Facult des Sciences de l'Ingnieur. Universit de Batna. DecisionPro 3.0 Version 3.0 adds over 100 DecisionPro is a general-purpose modeling and 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, and Web-based expert system development. improving simulation 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 from other Deneb simulation products. costing; VRML1.0; AVI, Read/write to external files and processes. MPEG movie output; saving & retrieving groups of elements; directly reading CATIA geometry; Pro/ ENGINEER and Unigraphics translators available on PC ExpertFit Batch-mode processing, distribution viewer, homogeneity testing of several data sets, improved histograms with a scroll bar for interactively updating the interval widths, support for simulation software products AutoSched AP, SImPROCESS, SIMUL8 , & SLX ExpertFit will automatically & accurately determine which of 39 probability distributions best represents a data set in seconds. It will then put the selected distribution into the proper format for 33 simulation products. Extend The acknowledged standard for dynamic modeling and simulation now features animated online tutorials that show you how to build & run Extend models, fine control of block location, optional connection line animation, progressive block improvements. Other powerful features include unlimited layers of hierarchy, customizable animation, hot links to Microsoft Office, one-click output analysis, automatic report generation, userdefinable attributes, interactive model execution. 16 Dr Brahim BELATTAR. LISA. D partement d'Informatique. Facult des Sciences de l'Ingnieur. Universit de Batna. Extend & BPR Make the most of new Provides an integrated financial & operational 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 & standard for dynamic Manufacturing modeling and simulation The ultimate in simulation flexibility helps you maximize your improvement efforts.This product can help managers reduce costs, now features animated manufacturing professionals streamlining online tutorials that show operations, and engineers designing new components. you how to build & run Extend models, fine control of block location, optional connection line animation, progressive block improvements. Extend & Take advantage of new Industrial strength modeling system w/ Manufacturing features such as animated customizable interfaces. Contains specialized online tutorials that show how to build and run Extend models, fine control of block location, optional connection line animation, & numerous new functions. FACTOR/AIM GPSS/H Manufacturing organizations around the world use AIM for process design, process improvement, prod. planning, & prod. scheduling. AIM allows you to build models without programming and extends its manufacturing capabilities to include modeling cost. Parameterized error messages GPSS/PC H/SCHED blocks for processing, batching, trans., routing & other industrial processes. Combines sophisticaed stat. anlysis with preemption, reneging & more. Extremely powerful and scalable generalpurpose simulation language. Maintains lightning-fast performance even on large/complicated models. No limits" software." We plan to release a Windows version of GPSS based on our GPSS World OS 2 version. Improves Gantt, time line and process flow displays; total integration with planning & crude assay management H/SCHED is a suite of process industry scheduling applications for refinery, crude oil and product movement scheduling. H/SCHED helps to develop alternative plans through the use of simulation tools, interactive Gantt charts, & decision tables. 17 Dr Brahim BELATTAR. LISA. D partement d'Informatique. Facult des Sciences de l'Ingnieur. Universit de Batna. IBM Supply Chain Simulator Web-based client-server interface for running multiple scenarios It's a solution, not a shrink-wrapped package. Must be combined with consulting services and/or training. ithink Analyst Released 32-bit version 5.1.1 that simulates up to 4 times faster than v 5.0. Also allows users to open more than one copy of the software & added improved support for copying & pasting structure. Added QuickTime 3.0 support. MedModel Built-in optimization, improved speed micro-GPSS WebGPSS, developed in Streamlined version of GPSS, cutting learning Java, for doing simulations time in half. Described in Simulation Made Simple with micro-GPSS on the Web, with GUI allowing for building programs by clicking on block symbols with new graphics, in June 1999 Micro Saint Designed for the healthcare industry, MedModel has the ability to improve healthcare processes overnight. Typical applications include facility redesign, capacity analysis, cost reduction & staffing plans. Micro Saint is the only software to include optimization in the base price product. MODSIM III Web-based simulation; database connectivity; distributed simulation NAG Fortran Library, Mark 18 Mark 18 of the Fortran NAG provides a robust, reusable library of the Library has extended the most sought-after numerical routines for successful math. modeling. Y2K compliant. areas of ordinary differential equations, partial differential equations, interpolation, optimization, sparse linear algebra and OR NAG Fortran 90 Library Two new chapters: Matrix The NAG Fortran f190 Library was designed to & 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 Fortran 90 & Fortran 95. Also Y2K compliant. norms of a matrix, constrained nonlinear least squares, and more; 18 new documented procedures MODSIM III is the most powerful, objectoriented simulation language in the world. It is designed for modeling complex and large systems by software engineers. 18 Dr Brahim BELATTAR. LISA. D partement d'Informatique. Facult des Sciences de l'Ingnieur. Universit de Batna. NAG Fortran SMP Library Maximization of the processing potential of SMP machines in the key areas of linear algebra, FFTs & multivariate statistics. NAG Parallel Library Significant improvements The NAG Parallel Library is a collection of in routine handling: parallel routines written in Fortran 77 for the quadrature, minimizing & solution of numerical & statistical problems maximizing a function; targeted primarily at distributed memory machines. Y2K compliant. matrix operations & distribution; eigenvalues & eigenvectors; simultaneous linear equations; linear equations; least square problems; sparse linear algebra;more Optima 2.5 Web export in HTML and GIF format; FlowCharter import filter; hierarchical component viewer; intellimouse support PASION32 Hi-res graphics, completely Windows 95 ProcessModel New ProcessModel 3.0, improved interface, guarantee and optimization This numerical library is optimized for use on Symmetric Multi-Processor (SMP) computers & contains the full functionality of the NAG Fortran Library. Y2K compliant. General purpose, Delphi-based simulation systems. Supports queuing models, continuous, ODE, bond graphs, signal flow, animation ProcessModel is an easy-to-use simulation tool for improving business processes. This revolutionary technology allows virtually anyone to benefit from using simulation. If you can create a flow chart of the process, you can improve it with ProcessModel. ProModel One-year guarantee; built-in optimization Proof Animation Real-time capability; AVI General purpose, Windows-based animation capture; WAV playback software which can be used with a wide variety of discrete event simulation software. ProModel, a leader in the simulation software industry, offers the only simulation tool with built-in optimization. Imagine being able to find solutions to your problems faster than ever before. Improve manufacturing processes faster than ever before. 19 Dr Brahim BELATTAR. LISA. D partement d'Informatique. Facult des Sciences de l'Ingnieur. Universit de Batna. 20 PS-ENGINE PS-ENGINE is developed to be a powerful yet easyto-use simulation tool. Simulation models are created by using drag and drop, making work quick and easy. No programming is required. The software is VBA enabled. QueGauss 32-bit Windows capability QueGauss extends Gauss to provide queing simulation. Models written using this extension have full access to the speed and high-level functions provided by Gauss. The interactive nature of Gauss makes it quick and easy to develop and test models. ServiceModel One-year guarantee; ServiceModel is the only simulation tool costing, optimization and designed specifically for the service industry. improved user interface With this powerful simulation tool, you can decrease customer waiting times, improve processes & decrease costs with the click of a button. SIGMA Optional standard process flowcharting format, multiple sessions, simultaneous execution and replication of models, development of reusable simulation tools. Automatic C code generation to support simple spreadsheet interfaces for experimentation. SIGMA was the first Windows simulation lang. & exclusively uses direct system API calls to optimize use of memory & execution speed. Fully interactive model development, animation, & testing. SIGMA's completely general Event Graph method is easy to learn Silk Java Beans modeling & animation component; Java Development Kit (JDK) 1.2; Java Foundation classes (JFK)/Swing support Silk merges familiar process-oriented modeling with the Java language for object-oriented, Internet-capable simulation. Animated simulation models can be placed on a web site & executed within standard browser software. SimGauss 32-bit Windows capability SimGauss extends Gauss to provide dynamic system simulation. Models written using this extension have full access to the speed and high-level functions provided by Gauss. The interactive nature of Gauss makes it quick and easy to develop and test models. PS-ENGINE provides a powerful simulation tool for the manufacturing industry. With this product, simulation becomes - for the first time - a valuable and easy-to-use everyday tool for the manufacturing industry. Dr Brahim BELATTAR. LISA. D partement d'Informatique. Facult des Sciences de l'Ingnieur. Universit de Batna. SIMNON 3.0 Dev. platform is Win 32; Double precision calculation (64 bytes); external systems to be connected to Simnon can be written in Fortran and/or C++. SIMPLE++ Faster handling by Block DDE and RPC - server; built in color syntax; demo available on www.sspa.se /simnon SIMPLE ++, a fully object-oriented, graphical & integrated discrete events simulation environment, is used to optimize manufacturing systems as well as business processes. SIMPLE ++ is also unique in enabling the reuse of the simulation model for online SIMPROCESS Interfaces with Workflow Management tools, BPR tools SIMPROCESS integrates process mapping, hierarchical, event-driven simulation, and activity-based costing into a single tool. SIMUL8 Ability to convert Visio flow chart diagrams into simulation models; enhanced user interface for Visual Logic Editor, Excel, VB/VBA; userconfigurable toolbars; template facility with password security; plugins for modeling, transportation object SIMUL8 offers you the latest in workflow modeling. Simply build your system by dragging objects (machines, buffers, conveyors, people, tools) onto the screen and connecting them. Learn why industry leaders like Ford are buying SIMUL8 in packs of 100. SLX HLA compatibility Layered simulation development tool. Can be customized to fit a wide variety of applications. Has unique extensibility mechanisms. Stat::Fit Distribution Viewer Stat::Fit statistically fits input data to analytical Allows the user to see how distributions. The Auto::Fit function parameters affect the automatically fits continuous and discrete shapes of distributions; distributions, providing relative comparisons Derounding Functions - to between distribution types. expand rounded data for greater fitting accuracy Taylor ED Logistics Suite 21 Dr Brahim BELATTAR. LISA. D partement d'Informatique. Facult des Sciences de l'Ingnieur. Universit de Batna. 22 Visual Simulation Environment Fully & truly objectoriented; model developement from libraries of reusable components without programming; dynamic object decomposition; hierarchical model architecture; graphical & picture-based; input data specification; multiple animation viewers VSE's toolset includes Editor, Simulator, Output Analyzer & Teacher. VSE provides state-of-theart object-oriented technology with message passing, inheritance & encapsulation. Libraries of reusable model components can be built. WITNESS 9.0 Hierarchical model structure; easy-to-reuse components, power and free conveyors, part arrival schedules in spreadsheet format, reporting formats, designer element sets, tree style" element selector and long names" Virtual and easy to use, WITNESS Release 9 offers a powerful and highly flexible engine to handle the most complex scenarios. The product provides the capability to model virtually any working environment and inexpensively perform what if" analyses." WorkFlow Analyzer Interface to FileNet Visual Workflow, Plexus FloWare, DST Systems AWD; model repository and MetaWeb Dr Brahim BELATTAR. LISA. D partement d'Informatique. Facult des Sciences de l'Ingnieur. Universit de Batna. ANNEXE B : 23 Sites INTERNET de progiciels de simulation Avec une breve decsription du progiciel 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 Platforms: Win95, WinNT 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! AweSim! is the first Windows simulation product to support multiple concurrent animations from a single model. See entities flow over a network diagram in one window, while another window shows a realistic animation of the model's status. And another window shows the key performance measures - updated as the simulation executes. 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. Parallel Performance http://www.ppgsoft.com/wo_h.html Platforms: MS-DOS, Win3.1 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. Platforms: MS-DOS, Win3.1 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. High Performance http://www.hps-inc.com/ithink.html Platforms: Mac, Win3.1 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. CMS Research, Inc. http://www.powernetonline.com/~cmsres/mast.htm Platforms: Win95, Win98, WinNT 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. Visual Thinking International http://www.visualt.com/sim8home.htm Platforms: Win95, WinNT 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 Platforms: Mac, Win3.1, Win95, WinNT, UNIX 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. F&H Simulations http://www.taylorii.com/ 27