Cours environnement VLE 0.6



Documents pareils
Introduction...3. Objectif...3. Manipulations...3. Gestion des utilisateurs et des groupes...4. Introduction...4. Les fichiers de base...

Bases Java - Eclipse / Netbeans

BIRT (Business Intelligence and Reporting Tools)

Installation et compilation de gnurbs sous Windows

as Architecture des Systèmes d Information

Guide pratique de CSPM, l'outil de suivi des performances du système Version française du Complete System Performance Monitor HOWTO

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Configurer la supervision pour une base MS SQL Server Viadéis Services

TP1 : Initiation à Java et Eclipse

Introduction...3. Objectif...3. Manipulations...3. La Sauvegarde...4. Les différents types...4. Planification...4. Les outils...5

Avant-propos. VERSION Compilation du document à l aide de PDFLATEX Philippe Charlier. 1 Version actuelle : SPIP http ://

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Alexandre Buge Epitech 5 Promo Soutenance de stage du 01/03/2004 au 31/08/2004

Plan du cours. Historique du langage Nouveautés de Java 7

Introduction à la programmation concurrente

Votre premier projet Android

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

OpenPaaS Le réseau social d'entreprise

Convers3 Documentation version Par Eric DAVID : vtopo@free.fr

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Programmation avec des objets : Cours 7. Menu du jour

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License,

Manuel d'exploitation de l'application Vitamin version 1.0

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

Tp 1 correction. Structures de données (IF2)

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

TP 1. Prise en main du langage Python

Iyad Alshabani SysCom - CReSTIC Université de Reims 17/02/2011 1

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Alfstore workflow framework Spécification technique

Serveur DNS et DHCP couplé à LDAP Debian GNU/Linux

Surveillance de Scripts LUA et de réception d EVENT. avec LoriotPro Extended & Broadcast Edition

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Auto-évaluation Programmation en Java

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework

.NET - Classe de Log

Objets et Programmation. origine des langages orientés-objet

Tutoriel QSOS. Version /02/2013

M2-Images. Rendu Temps Réel - OpenGL 4 et compute shaders. J.C. Iehl. December 18, 2013

Construire des plug-ins pour SAS Management Console SAS 9.1

Cours de Programmation 2

Héritage presque multiple en Java (1/2)

Programmer en JAVA. par Tama

Tous les logiciels cités dans ce document sont des marques déposées de leurs propriétaires respectifs

Programmation par les Objets en Java

Guide d installation de SugarCRM Open Source version 4.5.1

Apprendre Java et C++ avec NetBeans

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Listes de validation dans OpenOffice Calc

Paginer les données côté serveur, mettre en cache côté client

Déploiement OOo en environnement Windows Terminal Server

Génération de code binaire pour application multimedia : une approche au vol

Chapitre VI- La validation de la composition.

27/11/12 Nature. SDK Python et Java pour le développement de services ACCORD Module(s)

Exporter des écritures. Importer des écritures. Depuis EBP Comptabilité.

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

AUVRAY Clément (168187) HOMBERGER Alexandre (186897) GLADE. Langages, outils et méthodes pour la programmation avancée Page 1 sur 12

Maarch V1.4

Organiser les informations ( approche technique )

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

Java Licence Professionnelle CISII,

Programmation en Java IUT GEII (MC-II1) 1

Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications

pythonocc: une plateforme de développement agile d applications CAO.

Présentation du langage et premières fonctions

Manuel du client de bureau distant de KDE

Ingénierie Dirigée par les Modèles. Editeurs de modèles. (Eclipse Modeling Tools) Jean-Philippe Babau

Testez votre installation. Créer un répertoire vide

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Création d un service web avec NetBeans 5.5 et SJAS 9

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Création d objet imbriqué sous PowerShell.

Tutoriel code::blocks

D E S C R I P T I O N D E S É L É M E N T S C L E F S D ' U I M A

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Manuel du Desktop Sharing

Comment Accéder à des Bases de Données MySQL avec Windows lorqu'elles sont sur un Serveur Linux

4. Outils pour la synchronisation F. Boyer, Laboratoire Lig

Cours 1: Java et les objets

Q-Checker pour V6 Release 2.1

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

Once the installation is complete, you can delete the temporary Zip files..

Eclipse atelier Java

Rapport de Mini-Projet en ArcGIS Engine

Programme Compte bancaire (code)

Plateforme PAYZEN. Définition de Web-services

SERVEUR DÉDIÉ DOCUMENTATION

Projet de programmation (IK3) : TP n 1 Correction

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

Serveur d'archivage 2007 Installation et utilisation de la BD exist

Transcription:

Cours environnement VLE 0.6 Gauthier Quesnel INRA (Institut National de la Recherche Agronomique) G. Quesnel (INRA) Cours VLE 1 / 73

Description de VLE 1 Environnement M&S complet Environnement / Framework Cycle de M&S 2 Caractéristiques techniques Composants : VFL Les greffons ou plug-ins 3 Fonctionnement Exécution d une simulation Développement de modèles G. Quesnel (INRA) Cours VLE 2 / 73

Le passage de DEVS à VLE 4 Liens entre DEVS et VLE Comment développer un modèle atomique? 5 Comportement par défaut 6 Description de l API Description de l API du modèle atomique Description de l API des données 7 Spécificités VLE : Conditions & Observations G. Quesnel (INRA) Cours VLE 3 / 73

L interface graphique de VLE 8 Introduction 9 Description des boîtes de dialogues 10 Vidéos 11 Remarques G. Quesnel (INRA) Cours VLE 4 / 73

Exemple complet 12 Exerice 1 TP0 13 Générateur et compteur G. Quesnel (INRA) Cours VLE 5 / 73

Première partie I VLE G. Quesnel (INRA) Cours VLE 6 / 73

Plan 1 Environnement M&S complet Environnement / Framework Cycle de M&S 2 Caractéristiques techniques Composants : VFL Les greffons ou plug-ins 3 Fonctionnement Exécution d une simulation Développement de modèles G. Quesnel (INRA) Cours VLE 7 / 73

VLE : un environnement complet Environnement / Framework Qu est ce que l environnement VLE : Une bibliothèque de modélisation et de simulation DEVS C++ : VFL extensions équations différentielles : QSS et DESS extension équations aux différences extension réseaux de Petri : High Level PetriNet extension automates cellulaires, 1, 2 ou 3 dimensions extension équations différentielles spatialisées Un simulateur DEVS : vle Une interface graphique de modélisation : gvle Une interface graphique de visualisation : eov Un paquet R : rvle Un paquet Python : pyvle Définition VLE est un environnement de M&S qui consiste en un ensemble de logiciels permettant de modéliser, simuler et d analyser des systèmes. G. Quesnel (INRA) Cours VLE 8 / 73

VLE : un environnement complet Environnement / Framework Qu est ce que l environnement VLE : Une bibliothèque de modélisation et de simulation DEVS C++ : VFL extensions équations différentielles : QSS et DESS extension équations aux différences extension réseaux de Petri : High Level PetriNet extension automates cellulaires, 1, 2 ou 3 dimensions extension équations différentielles spatialisées Un simulateur DEVS : vle Une interface graphique de modélisation : gvle Une interface graphique de visualisation : eov Un paquet R : rvle Un paquet Python : pyvle Définition VLE est un environnement de M&S qui consiste en un ensemble de logiciels permettant de modéliser, simuler et d analyser des systèmes. G. Quesnel (INRA) Cours VLE 8 / 73

VLE : un environnement complet Le cycle de modélisation modélisation modèle formel implémentation modèle vle plan expérience analyses résultat simulation instances du plan G. Quesnel (INRA) Cours VLE 9 / 73

VLE : un environnement complet Le cycle de modélisation modélisation modèle formel implémentation modèle vle plan expérience analyses résultat simulation instances du plan G. Quesnel (INRA) Cours VLE 9 / 73

VLE : un environnement complet Le cycle de modélisation modélisation modèle formel implémentation modèle vle plan expérience analyses résultat simulation instances du plan Environnement VLE : notre but Offrir aux modélisateurs l accès à DEVS, pour la modélisation (de modèles hétérogènes), la simulation (sur grille de calculs), et l analyse des sorties, et si possible en proposant une intégration dans leurs outils. G. Quesnel (INRA) Cours VLE 9 / 73

Plan 1 Environnement M&S complet Environnement / Framework Cycle de M&S 2 Caractéristiques techniques Composants : VFL Les greffons ou plug-ins 3 Fonctionnement Exécution d une simulation Développement de modèles G. Quesnel (INRA) Cours VLE 10 / 73

Les composants VLE : Virtual Laboratory Environment Composants une bibliothèque de codes informatiques : fonctions, types, classes, etc. Plugins ou greffons est un composant dit léger, permet d étendre un autre composant. Remarques VLE est basé sur les composants : les VFL, VLE Foundation Libraries sont un ensemble de bibliothèques Certaines bibliothèques de VLE peuvent être étendues par des greffons Les bibliothèques, en C/C++, ont pour extension.so sous GNU/Linux et.dll sous Windows. G. Quesnel (INRA) Cours VLE 11 / 73

Les composants importants devs extension oov vle value vpz graph FIG.: VFL : Virtual Laboratory Environment Foundation Libraries G. Quesnel (INRA) Cours VLE 12 / 73

Les composants importants VFL : Virtual Laboratory Environment Foundation Libraries value données transportables sur les événements graph représentation du graphe de modèles hiérarchiques DEVS vpz représentation objet du format de fichiers VPZ devs noyau de simulation DEVS (temps, événements, simulator etc). extension extensions DEVS proposées (QSS, DESS, PetriNet etc.) manager simulation, multi-simulation, plan d expériences Règles À chaque bibliothèque est associée un namespace C++, par exemple, vle::devs::dynamics ou vle::graph::atomicmodel G. Quesnel (INRA) Cours VLE 13 / 73

Les composants VFL : Virtual Laboratory Environment Foundation Libraries data objet de connexion aux bases de données, fichiers csv etc. oov les sorties de simulation, fichiers, base de donnée, etc. utils ensemble de code portable geometry des classes pour la manipulation de données dans l espace translator outils de construction de graphe Remarques Un développeur de... modèles DEVS n a besoin que des bibliothèques vle::value, vle::devs modèles à base d équations aux différences, n a besoin que de la bibliothèques vle::extension::differenceequation de plate-forme pourrait avoir besoin de toutes les bibliothèques G. Quesnel (INRA) Cours VLE 14 / 73

Les composants Les greffons ou plug-ins modèles modèles modèles extensions csv outputs simulateur vle devs rdata modèles modèles texte modèles FIG.: Les greffons ou plugins du simulateur VLE G. Quesnel (INRA) Cours VLE 15 / 73

Plan 1 Environnement M&S complet Environnement / Framework Cycle de M&S 2 Caractéristiques techniques Composants : VFL Les greffons ou plug-ins 3 Fonctionnement Exécution d une simulation Développement de modèles G. Quesnel (INRA) Cours VLE 16 / 73

Fonctionnement Exécution d une simulation obs. Ordre d exécution 1 charge vpz 2 récupère graph fichier vpz graph 3 récupère init 4 récupère obs init. 5 crée un coordinateur vle coord 6 lance la simulation G. Quesnel (INRA) Cours VLE 17 / 73

Fonctionnement Développement de modèles Découpage entre code informatique / graphes, plan d expérience Code informatique La traduction en code informatique des modèles DEVS dans l API de VLE Graphe de modèle Un fichier XML de description de la hiérarchie de modèles et du plan d expérience Pourquoi cette séparation? Une volonté de séparer le code informatique de la hiérarchie Un même code informatique pour : plusieurs graphes / plusieurs expériences La hiérarchie de modèles sera éditée avec GVLE G. Quesnel (INRA) Cours VLE 18 / 73

Deuxième partie II DEVS vers VLE G. Quesnel (INRA) Cours VLE 19 / 73

Plan 4 Liens entre DEVS et VLE Comment développer un modèle atomique? 5 Comportement par défaut 6 Description de l API Description de l API du modèle atomique Description de l API des données 7 Spécificités VLE : Conditions & Observations G. Quesnel (INRA) Cours VLE 20 / 73

Liens entre DEVS et VLE VLE est un environnement de modélisation et simulation DEVS il implémente les simulateurs abstraits de B. P. Zeigler et un lot d extensions Deux points importants : les modèles atomiques seront des objets C++ le graphe de connexions, les initialisations et les observations des modèles seront dans un fichier XML : VPZ G. Quesnel (INRA) Cours VLE 21 / 73

Description du modèle atomique dans VLE Liens entre DEVS et VLE Définition Un modèle DEVS est représenté dans l environnement VLE comme un objet d une classe qui hérite de devs::dynamics Exemple avec un modèle inactif class ModeleInactif : public devs:: Dynamics // ModeleInactif hérite { // de devs::dynamics public: ModeleInactif(const graph:: AtomicModel& atom, // le constructeur const devs:: InitEventList& inits) : // obligatoire devs:: Dynamics(atom, inits) // à redefinir { } virtual ~ModeleInactif() // le destructeur obligatoire à { } // redéfinir }; G. Quesnel (INRA) Cours VLE 22 / 73

Description du modèle atomique dans VLE Liens entre DEVS et VLE Définition Un modèle DEVS est représenté dans l environnement VLE comme un objet d une classe qui hérite de devs::dynamics Exemple avec un modèle inactif class ModeleInactif : public devs:: Dynamics // ModeleInactif hérite { // de devs::dynamics public: ModeleInactif(const graph:: AtomicModel& atom, // le constructeur const devs:: InitEventList& inits) : // obligatoire devs:: Dynamics(atom, inits) // à redefinir { } virtual ~ModeleInactif() // le destructeur obligatoire à { } // redéfinir }; G. Quesnel (INRA) Cours VLE 22 / 73

Plan 4 Liens entre DEVS et VLE Comment développer un modèle atomique? 5 Comportement par défaut 6 Description de l API Description de l API du modèle atomique Description de l API des données 7 Spécificités VLE : Conditions & Observations G. Quesnel (INRA) Cours VLE 23 / 73

Description du modèle atomique dans VLE Comportement par défaut? idle Le modèle ne possède qu un seul état Résultat Par défaut, le modèle représenté par la classe devs::dynamics propose un comportement sans autonomie et sans réaction. Nous restons dans la philosophie objet, c-à-d. de spécialisation en héritant de cette classe pour l améliorer. G. Quesnel (INRA) Cours VLE 24 / 73

Description du modèle atomique dans VLE Comportement par défaut? idle ta = La durée dans cet unique état est infinie Résultat Par défaut, le modèle représenté par la classe devs::dynamics propose un comportement sans autonomie et sans réaction. Nous restons dans la philosophie objet, c-à-d. de spécialisation en héritant de cette classe pour l améliorer. G. Quesnel (INRA) Cours VLE 24 / 73

Description du modèle atomique dans VLE Comportement par défaut? idle ta = Y = Aucun événement externe n est pris en compte Résultat Par défaut, le modèle représenté par la classe devs::dynamics propose un comportement sans autonomie et sans réaction. Nous restons dans la philosophie objet, c-à-d. de spécialisation en héritant de cette classe pour l améliorer. G. Quesnel (INRA) Cours VLE 24 / 73

Description du modèle atomique dans VLE Comportement par défaut? idle ta = Y = Aucun événement externe n est pris en compte Résultat Par défaut, le modèle représenté par la classe devs::dynamics propose un comportement sans autonomie et sans réaction. Nous restons dans la philosophie objet, c-à-d. de spécialisation en héritant de cette classe pour l améliorer. G. Quesnel (INRA) Cours VLE 24 / 73

Plan 4 Liens entre DEVS et VLE Comment développer un modèle atomique? 5 Comportement par défaut 6 Description de l API Description de l API du modèle atomique Description de l API des données 7 Spécificités VLE : Conditions & Observations G. Quesnel (INRA) Cours VLE 25 / 73

Description de l API Description de l API : vle::dynamics DEVS = X, Y, S, init, δ int, δ ext, δ conf, λ, ta API vle::dynamics // les attributs du modèle private: double x; double y; State state; etc. Remarques Ces attributs ne sont modifiables que dans la fonction init, δ int et δ ext Tous les attributs sont possibles, types, classes etc. G. Quesnel (INRA) Cours VLE 26 / 73

Description de l API Description de l API : vle::dynamics DEVS = X, Y, S, init, δ int, δ ext, δ conf, λ, ta API vle::dynamics::init virtual devs:: Time devs:: Dynamics:: init( const devs:: Time& time); Remarques Appelée au démarrage de la simulation (une fois tous les modèles construits) Retourne la durée pendant laquelle le modèle reste dans l état initiale Par défaut, retourne une durée infinie G. Quesnel (INRA) Cours VLE 26 / 73

Description de l API Description de l API : vle::dynamics DEVS = X, Y, S, init, δ int, δ ext, δ conf, λ, ta API vle::dynamics::internaltransition virtual void devs:: Dynamics:: internaltransition( const devs:: Time& time); Remarques Appelée à l échéance d un ta et après λ Permet de modifier l état du modèle G. Quesnel (INRA) Cours VLE 26 / 73

Description de l API Description de l API : vle::dynamics DEVS = X, Y, S, init, δ int, δ ext, δ conf, λ, ta API vle::dynamics::externaltransition virtual void devs:: Dynamics:: externaltransition( const devs:: ExternalEventList& event, const devs:: Time& time); Remarques Appelée lorsque le modèle reçoit au moins un événement externe Permet de modifier l état du modèle La fonction de sortie λ n est pas appelée G. Quesnel (INRA) Cours VLE 26 / 73

Description de l API Description de l API : vle::dynamics DEVS = X, Y, S, init, δ int, δ ext, δ conf, λ, ta API vle::dynamics::confluenttransitions virtual devs:: EventType devs:: Dynamics:: confluenttransitions( const devs:: Time& time, const devs:: ExternalEventList& events) const; Remarques Appelée lorsqu une δ int et une δ ext ont lieu en même temps Fournit la possibilité de préférence sur la transition à effectuer en premier Retourne un élément d une énumération : INTERNAL ou EXTERNAL G. Quesnel (INRA) Cours VLE 26 / 73

Description de l API Description de l API : vle::dynamics DEVS = X, Y, S, init, δ int, δ ext, δ conf, λ, ta API vle::dynamics::output virtual void devs:: Dynamics:: output( const devs:: Time& time, devs:: ExternalEventList& output) const; Remarques Appelée après l échéance d un ta et avant une δ int Récupère dans le paramètre output des événements externes G. Quesnel (INRA) Cours VLE 26 / 73

Description de l API Description de l API : vle::dynamics DEVS = X, Y, S, init, δ int, δ ext, δ conf, λ, ta API vle::dynamics::timeadvance virtual devs:: Time devs:: Dynamics:: timeadvance() const; Remarques Appelée après les fonctions de transition δ int ou δ ext Retourne la durée pendant laquelle un modèle reste dans l état fourni par l appel à δ int ou δ ext Par défaut, retourne une durée infinie G. Quesnel (INRA) Cours VLE 26 / 73

Description de l API Description de l API : vle::dynamics DEVS = X, Y, S, init, δ int, δ ext, δ conf, λ, ta X et Y // X est disponible dans la fonction de transition interne void devs:: externaltransition( const devs:: Time& time, const devs:: ExternalEventList& events); // Y est disponible dans la fonction de sortie virtual void devs:: Dynamics:: output( const devs:: Time& time, devs:: ExternalEventList& output) const; G. Quesnel (INRA) Cours VLE 26 / 73

Description de l API Description de l API : vle::dynamics La classe vle::devs::dynamics possède une méthode rand() devs:: Time devs:: Dynamics:: init(const devs:: Time& time) { rand().get_bool(); // true, false } rand().get_int(); // [0..4294967296[ rand(). get_int_rage(int begin, int end); // [begin.. end[ rand(). get_int_range_excluded(int begin, int end); // ]begin.. end[ rand().get_double(); // [0..1[ rand(). get_double_range(double begin, double end); // [begin.. end[ rand(). get_double_included (); // [0..1] rand(). get_double_included(double begin, double end); // [begin.. end] rand(). get_double_range_excluded(double begin, double end); rand(). normal(double standarddeviation, double average); rand(). log_normal(double standarddeviation, double average); rand(). von_mises(double kappa, double mu); G. Quesnel (INRA) Cours VLE 27 / 73

Description de l API Description de l API : vle::value VLE s appuie sur un système de données pour échanger des informations entre modèles et entre composants : la fonction λ doit retourner une liste d événements pouvant transporter des données la fonction δ ext reçoit une liste d événements pouvant transporter des données la fonction δ state doit envoyer une liste de données aux observateurs utilisation d une bibliothèque de données simple et souple G. Quesnel (INRA) Cours VLE 28 / 73

Description de l API Description de l API : vle::value map set composition de values table integer boolean tuple types composés value types simples double string xml FIG.: Les différentes values disponibles G. Quesnel (INRA) Cours VLE 29 / 73

Description de l API Description de l API : vle::value Quelques exemples value:: Boolean b = value:: BooleanFactory:: create(true); value:: Integer i = value:: IntegerFactory:: create (123); value:: Double d = value:: DoubleFactory:: create (123.321); value:: String s = value:: StringFactory:: create("hello world!"); value:: Xml x = value:: XmlFactory:: create("hello world!); Toutes les données sont des value value:: Value i1 = value:: BooleanFactory:: create(true); value:: Value i2 = value:: IntegerFactory:: create (123); value:: Value i3 = value:: DoubleFactory:: create (123.321); value:: Value i4 = value:: StringFactory:: create("hello world!"); value:: Value i5 = value:: XmlFactory:: create("hello world!); G. Quesnel (INRA) Cours VLE 30 / 73

Description de l API Description de l API : vle::value Comment traduire une value non typée vers la value typée value:: Boolean b = value:: tobooleanvalue(i1); value:: Integer i = value:: tointegervalue(i2); value:: Double d = value:: todoublevalue(i3); value:: String s = value:: tostringvalue(i4); value:: Xml x = value:: toxmlvalue(i5); Comment récupérer la donnée C++ cachée bool b = value:: toboolean(i1); int i = value:: tointeger(i2); double d = value:: todouble(i3); std:: string = value:: tostring(i4); std:: string = value:: toxml(i5); G. Quesnel (INRA) Cours VLE 31 / 73

Description de l API Description de l API : vle::value Les tableaux de value value:: Set s = value:: SetFactory:: create(); s->addvalue(value:: StringFactory("hello world!")); s->addvalue(value:: DoubleFactory (123.321)); value:: string vle_str = value:: tostringvalue(s->getvalue (0)); std:: string str = value:: tostring(vle_str); // str == "hello world!" value:: Double vle_int = value:: todoubevalue(s->getvalue (1)); double d = value:: todoublevalue(vle_int); // i == 123.321 Il existe d autres méthodes : cf. doc. G. Quesnel (INRA) Cours VLE 32 / 73

Description de l API Description de l API : vle::value Les tableaux associatifs : (nom, value) value:: Map m = value:: MapFactory:: create(); m.addvalue("nom", value:: StringFactory:: create("toto")); m.addvalue("age", value:: IntegerFactory:: create (11)); m.addvalue("taille", value:: DoubleFactory:: create (1.40)); value:: Set s = value:: SetFactory:: create(); s->addvalue(value:: DoubleFactory (07.5)); s->addvalue(value:: DoubleFactory (11.0)); m.addvalue("notes", s); std:: string nom = value:: tostring(m. getvalue("nom")); int age = value:: tointeger(m. getvalue("age")); Il existe d autres méthodes : cf. doc. G. Quesnel (INRA) Cours VLE 33 / 73

Plan 4 Liens entre DEVS et VLE Comment développer un modèle atomique? 5 Comportement par défaut 6 Description de l API Description de l API du modèle atomique Description de l API des données 7 Spécificités VLE : Conditions & Observations G. Quesnel (INRA) Cours VLE 34 / 73

Spécificités VLE : Conditions & Observations Conditions & Observations Conditions un modèle possède des ports d initialisation les ports d initialisation possèdent des données les données sont définies en dehors du code source Observations un modèle possède des ports d observations les ports d observations sont connectés à des vues les vues sont connectées à des sorties fichiers, bd etc. M : disponible dans le constructeur du modèle δ obs : une fonction d observation G. Quesnel (INRA) Cours VLE 35 / 73

Spécificités VLE : Conditions & Observations Conditions expérimentales Définitions Une condition : un ensemble de (ports, valeurs) et un nom Cnd = nom, {(port, valeurs)} Un modèle : un ensemble de condition M = {Cnd} Conclusion Une même condition peut être appliquée à plusieurs modèles, par exemple, les automates cellulaires L ensemble des conditions d un modèle est disponible dans le constructeur de celui-ci G. Quesnel (INRA) Cours VLE 36 / 73

Spécificités VLE : Conditions & Observations Conditions expérimentales : exemples Exemples Une condition définissant une position et un label : Cnd pos = pos, {( x, 123.321), ( y, 23.32), ( label, A )} Une condition définissant un tableau : Cnd array = val, {( val, {1, 2, 3, 4, 5, 6, 7, 8, 9, 0})} G. Quesnel (INRA) Cours VLE 37 / 73

Spécificités VLE : Conditions & Observations Conditions expérimentales : exemples Exemple d utilisation des conditions class Model : public devs:: Dynamics { public: ModeleInactif(const graph:: AtomicModel& atom, // le constructeur const devs:: InitEventList& inits) : // obligatoire devs:: Dynamics(atom, inits) // à redefinir { } }; double x = value:: todouble(inits.get("x")); // 123.321 double y = value:: todouble(inits.get("y")); // 23.32 std:: string label = value:: tostring(inits.get("label")); // "A" Tuple t = value:: totuplevalue(inits.get("val")); // 1, 2, 3,... G. Quesnel (INRA) Cours VLE 38 / 73

Spécificités VLE : Conditions & Observations Observations Comment définir de manière globale qui observer et comment? Définition Utilisation d un système de vues : une vue a un type : timed, event ou finish timed observations à pas de temps, nécessite un paramètre event observations à chaque changement d état du modèle finish observations à la fin de la simulation une vue est connectée à des fichiers de sorties, bases de données etc. les modèles ont des ports d observations un port d observation peut être connectée à une ou plusieurs vues G. Quesnel (INRA) Cours VLE 39 / 73

Spécificités VLE : Conditions & Observations Comment gérer les observations pour les modèles Exemple d observation class Model : public devs:: Dynamics { public:... value:: Value observation(const devs:: ObservationEvent& event) const { if (event.onport("state") { // retourne la donnée contenue dans la variable return value:: DoubleFactory:: create(rh); } return value:: Value(); } }; G. Quesnel (INRA) Cours VLE 40 / 73

Troisième partie III GVLE G. Quesnel (INRA) Cours VLE 41 / 73

Plan 8 Introduction 9 Description des boîtes de dialogues 10 Vidéos 11 Remarques G. Quesnel (INRA) Cours VLE 42 / 73

Introduction Interface graphique de modélisation DEVS GVLE Gui for the VLE Interface graphique de modélisation DEVS : Manipulation de la structures du modèle : ajouts, suppressions de modèles ou de connexions copier coller importation exportation Saisie les conditions expérimentales Saisie les modèles à observer Exécution de simulations Indépendante du noyau de simulation : S appuie sur les VFL Son rôle Cacher la manipulation des fichiers XML VPZ G. Quesnel (INRA) Cours VLE 43 / 73

Introduction Interface graphique de modélisation DEVS FIG.: L interface graphique GVLE - (Linux) G. Quesnel (INRA) Cours VLE 44 / 73

Plan 8 Introduction 9 Description des boîtes de dialogues 10 Vidéos 11 Remarques G. Quesnel (INRA) Cours VLE 45 / 73

Description des boîtes de dialogues Fenêtre principale Rôle de la palette d outils Rôle menu charge, sauve les projets sous forme de fichiers VPZ affiche, cache les fenêtres exécute les simulations Sélection de modèle atomique, ouverture de modèle couplés Ajout de modèles atomiques Ajout de connexions Ajout de modèle couplés Suppression d objets G. Quesnel (INRA) Cours VLE 46 / 73

Description des boîtes de dialogues Vue d un modèle couplé Rôle Montre le contenu d un modèle couplé (verts les modèles couplés) Importe un fichier VPZ Exporte ce modèle couplé dans un fichier VPZ En fonction de l outil sélectionné Sélection de modèle atomique, ouverture de modèle couplés, déplacement Ajout, suppression de modèles atomiques ou couplés, connexions G. Quesnel (INRA) Cours VLE 47 / 73

Description des boîtes de dialogues Hiérarchie de modèles Montre la hiérarchie de modèles Les feuilles : modèles atomiques Les nœuds : les modèles couplés Exporte ce modèle couplé dans un fichier VPZ G. Quesnel (INRA) Cours VLE 48 / 73

Plan 8 Introduction 9 Description des boîtes de dialogues 10 Vidéos 11 Remarques G. Quesnel (INRA) Cours VLE 49 / 73

Vidéos Introduction FIG.: Description rapide de l interface graphique de GVLE G. Quesnel (INRA) Cours VLE 50 / 73

Vidéos Création d un modèle atomique FIG.: Description de l ajout et de la configuration d un modèle atomique : ports d entrée, sortie, comportement, conditions expérimentales et observations G. Quesnel (INRA) Cours VLE 51 / 73

Vidéos Gestion de la hiérarchie de modèle FIG.: Description de la hiérarchie de modèles : création de modèles couplés, copier - coller, importation - exportation G. Quesnel (INRA) Cours VLE 52 / 73

Plan 8 Introduction 9 Description des boîtes de dialogues 10 Vidéos 11 Remarques G. Quesnel (INRA) Cours VLE 53 / 73

Conclusion Rapports de bogues / demandes GVLE est une interface récente qui comporte un lot de bogues et de fonctionnalités manquantes : Mailing lists : vle-users@lists.sourceforge.net Bug tracking system : http://vle.univ-littoral.fr/flyspray Mais aussi : IRC : chat avec les utilisateurs et développeurs de VLE. vle.univ-littoral.fr port 9999 G. Quesnel (INRA) Cours VLE 54 / 73

Quatrième partie IV Exemple complet G. Quesnel (INRA) Cours VLE 55 / 73

Plan 12 Exerice 1 TP0 13 Générateur et compteur G. Quesnel (INRA) Cours VLE 56 / 73

Exemple complet Exemple basé sur l exercice 1 du TP0 Pour rappel, le graphe d états du modèle DEVS : init idle ta = 0 ta = 1 Remarques Deux états : INIT et IDLE INIT : une durée de 0 unité de temps IDLE : une durée de 1 unité de temps Une transition immédiate entre INIT et IDLE Une transition de IDLE à IDLE Pas de sortie Aucune gestion des événements externes G. Quesnel (INRA) Cours VLE 57 / 73

Exemple complet Exemple basé sur l exercice 1 du TP0 Arborescence du dossier tp0 le dossier racine Remarques reserve.cpp le fichier source C++ du modèle réservoir CMakeLists.txt le fichier cmake de compilation (fourni) Le nom de la bibliothèque dynamique sera celle du dossier : libtp0.so ou tp0.dll $ cmake -DCMAKE_INSTALL_PREFIX=$HOME/usr $ make install $ cmake -G "MinGW Makefiles" \ -DCMAKE_INSTALL_PREFIX ="% HOMEDRIVE%% HOMEPATH%\\ vle" $ mingw32 -make install G. Quesnel (INRA) Cours VLE 58 / 73

Exemple complet Constructeur et destructeur S = (RH) Constructeur et destructeur class Reserve : public class devs:: Dynamics { double RH; public: Reserve(const graph:: AtomicModel& atom, const devs:: InitEventList& event) : devs:: Dynamics(atom, event) { } virtual ~Reserve() { } }; G. Quesnel (INRA) Cours VLE 59 / 73

Exemple complet Fonction init δ init () = (100.0) ta(init) = 0.0 Fonction init virtual devs:: Time init(const devs:: Time& time) { RH = 100.0; return 0; } G. Quesnel (INRA) Cours VLE 60 / 73

Exemple complet Fonction d avancement du temps ta(idle) = 1.0; Fonction d avancement du temps virtual devs:: Time timeadvance() const { return 1; } G. Quesnel (INRA) Cours VLE 61 / 73

Exemple complet Fonction de transition interne δ int ((RH + in flow out flow 0)) : S(RH) = (RH + in flow out flow ) δ int ((RH + in flow out flow < 0)) : S(RH) = 0 Fonction de transition interne virtual internaltransition(const devs:: Time& time) { double value = RH + 7-10; if (RH < 0) { RH = 0; } else { RH = value; } } G. Quesnel (INRA) Cours VLE 62 / 73

Exemple complet Observons le modèle Nous autorisons l observation de la variable RH sur les événements posés sur le port d état «state» Observation virtual value:: value observation( const devs:: ObservationEvent& event) const { if (event.onport("state")) { return value:: DoubleFactory:: create(rh); } } // Si le modèle est questionné sur un autre port, nous // ne fournissons aucune information return value:: Value(); G. Quesnel (INRA) Cours VLE 63 / 73

Exemple complet Paramétrons le modèle depuis le VPZ // À la fin du fichier, nous déclarons le modèle via la commande : DECLARE_NAMED_DYNAMICS(nom1, Reserve); Où : nom1 est une chaîne de caractères qui identifie le modèle Reserve Reserve le nom de la classe G. Quesnel (INRA) Cours VLE 64 / 73

Exemple complet Le fichier Vpz G. Quesnel (INRA) Cours VLE 65 / 73

Exemple complet Le fichier Vpz G. Quesnel (INRA) Cours VLE 65 / 73

Exemple complet Le fichier Vpz G. Quesnel (INRA) Cours VLE 65 / 73

Exemple complet Le fichier Vpz G. Quesnel (INRA) Cours VLE 65 / 73

Exemple complet Le fichier Vpz G. Quesnel (INRA) Cours VLE 65 / 73

Exemple complet Le fichier Vpz G. Quesnel (INRA) Cours VLE 65 / 73

Exemple complet Paramétrons le modèle depuis le VPZ Modifions le modèle pour prendre en compte des paramètres extérieurs : RH init : la réserve d eau in flow : l apport à chaque pas de temps out flow : la perte à chaque pas de temps class Reserve : public class devs:: Dynamics { double RH, RHinit, inflow, outflow; public: Reserve(const graph:: AtomicModel& atom, const devs:: InitEventList& events) : devs:: Dynamics(atom, event) { RHinit = utils:: todouble(events.get("rhinit")); inflow = utils:: todouble(events.get("inflow")); outflow = utils:: todouble(events.get("outflow")); } G. Quesnel (INRA) Cours VLE 66 / 73

Exemple complet Paramétrons le modèle depuis le VPZ Modification des fonctions init et transition interne virtual devs:: Time init(const devs:: Time& time) { RH = RHinit; return 0; } virtual internaltransition(const devs:: Time& time) { double value = RH + inflow - outflow; if (RH < 0) { RH = value; } else { RH = 0; } } G. Quesnel (INRA) Cours VLE 67 / 73

Exemple complet Le fichier Vpz G. Quesnel (INRA) Cours VLE 68 / 73

Exemple complet Le fichier Vpz G. Quesnel (INRA) Cours VLE 68 / 73

Exemple complet Compilation et exécution $ cd reservoire $ cmake -DCMAKE_INSTALL_PREFIX=$HOME/usr $ make install $ vle reservoir.vpz JustRun: run 1 simples simulations in one thread [equation.vpz] - Open file...: ok - Coordinator load models...: ok - Clean project file...: ok - Coordinator initializing...: ok - Simulation run...: ok - Coordinator cleaning...: ok Win32 $ cmake -G "MinGW Makefiles" -DCMAKE_INSTALL_PREFIX="%HOMEDRIVE%%HOMEPATH%\vle" $ mingw32-make install G. Quesnel (INRA) Cours VLE 69 / 73

Plan 12 Exerice 1 TP0 13 Générateur et compteur G. Quesnel (INRA) Cours VLE 70 / 73

Exemple complet Fonction de sortie λ : Y beep =, Y x = {( x, 10.1 )}, Y pos = {( x, 10.1), ( y, 10.2)} Fonction de sortie virtual void Generateur::output(const devs::time& time, const ExternalEventList& output) { output.addevent(buildevent("beep")); output.addevent(buildeventwithadouble("portx", "x", 10.1)); devs::externalevent* evt = new devs::externalevent("pos"); evt «attribute("x", 10.1) «attribute("y", 10.2); output.addevent(evt); } G. Quesnel (INRA) Cours VLE 71 / 73

Exemple complet Fonction de sortie λ : Y beep =, Y x = {( x, 10.1 )}, Y pos = {( x, 10.1), ( y, 10.2)} Fonction de sortie virtual void Generateur::output(const devs::time& time, const ExternalEventList& output) { output.addevent(buildevent("beep")); output.addevent(buildeventwithadouble("portx", "x", 10.1)); devs::externalevent* evt = new devs::externalevent("pos"); evt «attribute("x", 10.1) «attribute("y", 10.2); output.addevent(evt); } G. Quesnel (INRA) Cours VLE 71 / 73

Exemple complet Fonction de sortie λ : Y beep =, Y x = {( x, 10.1 )}, Y pos = {( x, 10.1), ( y, 10.2)} Fonction de sortie virtual void Generateur::output(const devs::time& time, const ExternalEventList& output) { output.addevent(buildevent("beep")); output.addevent(buildeventwithadouble("portx", "x", 10.1)); devs::externalevent* evt = new devs::externalevent("pos"); evt «attribute("x", 10.1) «attribute("y", 10.2); output.addevent(evt); } G. Quesnel (INRA) Cours VLE 71 / 73

Exemple complet Fonction de transition externe virtual void Compteur:: externalevent(const devs:: Time& time, const devs:: ExternalEventList& events) { for (const devs:: ExternalEventList:: const_iterator it = events.begin(); it!= events.end(); ++it) { if ((*it)->onport("in")) { // récupère {("x", 10.1), ("y", 10.2)} double x = (*it)->getdoubleattributevalue("x"); double y = (*it)->getdoubleattributevalue("x"); } } // test si l événement vient d un modèle nommé " generateur" if ((* it)->getsourcemodelname() == " generateur") {... } } // events est un tableau d événement externes usigned int sz = events.size(); for (unsigned int i = 0; i < 0; ++i) {... } G. Quesnel (INRA) Cours VLE 72 / 73

Cours environnement VLE 0.6 Auteurs Gauthier Quesnel quesnel@users.sourceforge.net Licence Copyright (C) 2008 - INRA Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". G. Quesnel (INRA) Cours VLE 73 / 73