Atomic model development

From VLE

Jump to: navigation, search

The following pages describe the development of DEVS atomic model behavior.

Relation between DEVS and VLE's API

VLE implements the DEVS abstract simulators and more precisely the DSDE which merge Parallel DEVS and DS-DEVS.

DEVS = \langle X, Y, S, init, \delta_{ext}, \delta_{int}, \delta_{con}, \lambda, ta \rangle

  • Les fonctions issues de DEVS trouvent leurs représentations dans VLE :
Fonction VLE Fonction DEVS
vle::devs::Dynamics::init(...) init()
vle::devs::Dynamics::internalTransition(...) \delta_{int} : S \rightarrow S
vle::devs::Dynamics::timeAdvance(...) ta : S \rightarrow \mathbb{R}_0^+ \cup \infty
vle::devs::Dynamics::externalTransition(...) \delta_{ext} : Q \times X^b \rightarrow S
vle::devs::Dynamics::output(...) \lambda : S \rightarrow Y^b
vle::devs::Dynamics::confluentTransition(...) \delta_{con}(s, \emptyset) = \delta_{int}

L'API du modèle atomique VLE

In VLE, a DEVS atomic model is represented as a object which inherits of the <tt>vle::devs::Dynamics class.

  • La première partie de l'interface fonctionnelle repose sur des méthodes de VLE et du langage de programmation C++ : le constructeur et le destructeur. Obligatoires pour chaque modèle.
Dynamics(const vle::devs::DynamicsInit& init,
         const vle::devs::InitEventList& events);
 
~Dynamics();
- constructeur - destructeur -


  • Les fonctions init et finish sont appelées, quant à elles, respectivement à la création ou à la destruction du modèle.
devs::Time init(const devs::Time& time);
 
void finish();
- init - finish -


void internalTransition(const devs::Time& time);
- transition interne -


  • L'avancement du temps, seule fonction permettant de faire avancer la simulation en indiquant la durée dans laquelle un modèle reste dans un état :
devs::Time timeAdvance() const;
- avancement du temps -


  • La gestion des événements externes et donc du couplage entre différents modèles est géré par les trois fonctions suivantes.

La première est la fonction de transition externe qui réagit aux perturbations, la seconde résout le problème lorsqu'un événement interne et un ou plusieurs événements externes arrivent sur un modèle à la même date. Enfin, la fonction de sortie permet d'émettre des événements à l'attention des modèles connectés.

devs::Event::EventType confluentTransitions(
                        devs::InternalEvent& internal,
                        devs::ExternalEventList& extEventlist) const;
 
void externalTransition(const devs::ExternalEventList& event,
                        const devs::Time& time);
 
void output(const devs::Time& time,
            devs::ExternalEventList& output) const;
- transition externe - sortie - conflit -


  • DEVS est une spécification d'un formalisme à événement discret. Nous avons ajouté à cette spécification des fonctions supplémentaires pour aider le modélisateur dans sa tâche de modélisation en lui épargnant la gestion des plans d'expériences, de l'observation et des fonctions des questions réponses.
value::Value observation(const devs::ObservationEvent& event) const;
 
void request(const devs::RequestEvent& event,
             const devs::Time& time,
             devs::ExternalEventList& output) const
- initialisation - observation - question-reponse -

Ensemble de l'API de la classe devs::Dynamics : constructeur, destructeur, init, finish, initialisation, transition interne, avancement du temps, transition externe, sortie, conflit, observation, question-reponse


This page was last modified on 22 March 2011, at 09:37. This page has been accessed 627 times.