Enseignements

Simulation

Simulation a evenements discrets

Seance de TP 6

Le sujet du TP, noté, vous sera communiqué (et expliqué) durant la seance de Cours.

La page de Eric Brunneton

Pour ce TP, vous aurez besoin de code suivant:

package digital;

import GenCol.entity;
import genDevs.modeling.content;
import genDevs.modeling.message;
import simView.ViewableAtomic;

public class Ptrans extends ViewableAtomic {

        private boolean grid_;
        private boolean source_;
        private boolean sink_;
        public static entity zero = new entity("zero");
        public static entity un = new entity("un");


        public Ptrans(){
                super("Ptrans");
                source_ = true;
                grid_ = false;

                addInport("src");
                addInport("cmd");
                addOutport("sink");
                addTestInput("src",un);
                addTestInput("src",zero);
                addTestInput("cmd",un);
                addTestInput("cmd",zero);
                addTestInput("src",un,1.0);
                addTestInput("src",zero,1.0);
                addTestInput("cmd",un,1.0);
                addTestInput("cmd",zero,1.0);
        }

        public Ptrans(String name,boolean autosrc) {
                super(name);
                source_ = autosrc;
                grid_ = false;

                if (! autosrc)
                        addInport("src");
                addInport("cmd");
                addOutport("sink");
        }

        public void initialize() {
                sink_ = source_ && ! grid_;
                holdIn("active",0.0);
        }

        public void deltint() {
                passivate();
        }

        public void deltext(double e,message x){
                Continue(e);

                for (int i=0; i< x.getLength();i++) {
                        if (messageOnPort(x,"src",i)) {
                                entity val = x.getValOnPort("src", i);
                                if (((val.equals(zero)) && source_) ||
                                                ((val.equals(un)) && ! source_)){
                                        source_ = (val.equals(un));
                                }
                        }

                        if (messageOnPort(x,"cmd",i)) {
                                entity val = x.getValOnPort("cmd", i);
                                if (((val.equals(zero)) && grid_) ||
                                                ((val.equals(un)) && ! grid_)){
                                        grid_ = (val.equals(un));
                                }
                        }


                }

                sink_ = source_ && ! grid_;
                holdIn("active",0);
        }

        public static entity bool_entity(boolean val){
                if (val) return un;
                else return zero;
        }

        public message out( )
        {
                /* Construire la valeur de sortie. */
                entity   e = bool_entity(sink_);
                /* Construire la sortie simple */
                content  c = makeContent("sink",e);
                /* Construire un message vide */
                message  m = new message();
                /* Remplir le message avec une premiere (unique) sortie */
                m.add(c);
                return m;
        }

        /**
         * Cette methode permet d'ajouter des informations dans
         * la bulle qui s'affiche quand on passe la souris au dessus du composant
         * dans la fenetre graphique.
         */

        public String getTooltipText(){
                return super.getTooltipText()
                    +"\n"+"src: " + source_+"\n"+"cmd: " + grid_;
        }
}

Rendez-vous sur cette page pour la correction de l’exercice de la seance de TP 4.

Séance de TP 5

Ex 1 : premier DEVS couple

Finir les exercices de la semaine derniere a propos de l’exemple: la derniere question a justement pour objectif de faire un DEVS couple.

Ex 2 : Boite-noire-isation

Executez le modele efp du package SimpArc. Remarquez que le modele ef apparait comme atomique. Pourtant c’est un modele hiererachique. Regardez le code et triuvez ce qu’il faut changer pour rendre le contenu du DEVS couple ef visible. Faites ensuite la manipulation inverse de facon a rendre le contenu du composant d invisiable.

Ex 3 : Etude d’un modele DEVSJava

Etudiez le modele multiServer du package SimpArc. Commencez par le modifier de facon a ce qu’il contienne 4 processeurs. Essayez ensuite de decrire formellement, en utilisant la notation mathematique, le comportement des composants atomiques de ce modele.

Séance de TP 4

Cette semaine nous allons (enfin) passer a la programation. Comme pour la seance de TP1, commencez par lancer eclipse. Notez que sur les machines fedora, eclipse doit se trouver quelque part en /usr/local/bin. Vous pouvez ajouter ce chemin dans votre variable PATH et relancer un terminal.

Une fois que vous avez démarré eclipse, ouvrez le projet DEVJava que vous avez créé lors de la première séance de TP et faites les exercices suivants:

Ex 1 : Créer un nouveau package

Avant de pouvoir créer vos propre DEVS, il faut créer un package pour éviter de mélanger votre code avec le code original.

Dans la fenetre de gauche de eclipse, cliquez avec le bouton droit sur le répertoire src contenant les sources. Puis cliquez sur “New…” et choisissez “Package”.

Appelez ce package comme vous voulez, par exemple votre prénom.

Ex 2 : Créer une nouvelle classe

L’objectif est maintenant de créer une nouvelle classe dans le package que vous venez de créer:

cliquez avec le bouton droit sur le nouveau package, puis sur “New” e choisissez “Class”. Attention lisez-bien: donnez lui le nom “monDEVS”, mais avant de cliquer sur “Finish”, remplacez le contenu de la case “Superclass” par “Viewable” (au lieu de “java.lang.Object”). Avant de valider, cliquez sur le bouton “Browse” afin de compléter le nom (qui devrait être “simView.ViewableAtomic”).

Enfin, vous pouvez cliquer sur finish.

Ex 3 : un exemple avec une classe connue

Avant de se lancer dans le développement d’un composant DEVS, il faut se familiariser plus avec l’environement java.

Consultez ce fichier java. Créez la classe correspondante de nom “odBuffer” dans votre package, et recopiez-y le contenu de ce fichier java.

Ex 4 : tester l’execution d’une classe

Rappelez-vous de la premiere seance de TP: pour tester un classe, il faut cliquer avec le bouton droit sur le fichier “coreDEVS3_1.jar” que se trouve dans les “Referenced Libraries” (enfin normalement, sinon, demandez a l’enseignant de vous aider) puis choisir soit open, soit “Run as” puis “Java application”.

Quand vous avez reussi a lancer DEVSjava, il vous faut le configurer de facon a retrouver votre package. Quand il est configuré, vous etes prets a tester…

Ex 5 : mon premier DEVS en solo

Completez le code de la classe monDEVS de facon a implementer le composant generateur vu en cours, puis testez son execution.

Ex 6 : un autre DEVS bien connu

Creez un nouveau DEVS qui implement le modele du processeur vu en cours et testez-le.

Ex 7 : pour les courageux

Essayez d’assembler tout cela pour reproduire l’exemple du cours. Pour cela vous pouvez fouiller dans les exemples fournis pour chercher des exemples. Regardez par exemple le contenu du package SimpArc…

Séance de TP 3

Cette semaine encore nous ferons quelques exercices sur le papier avant, la semaine prochaine de passer a la programmation.

Ex 1 : Etude de comportement

Faites les schemas chronologiques decrivant le compotement du DEVS couplé vu en cours et de ses constituants.

Ex 2 : Composant generateur

Ce composant ne produit aucune reponse quand une valeur est fournie en entree. En sortie, il produit simplement la valeur 1 a intervalle de temps régulier, fixé (paramètre du modèle, noté periode).

Tracez les courbes représentant X, S, t et Y en fonction du temps. Puis donnez la spécification formelle de ce composant: DEVS={X, Y, S, delta_int, delta_ext, lambda, ta)

Ex 3 : Composant compteur binaire

Ce composant produit en sortie une valeur 1, chaque fois qu’il recoit deux valeur 1 en entree. Pour cela, il conserve un compteur (modulo 2) des “un” qu’il a vu passer sur l’entree. Quand il recoit un “un” qui rend le compteur pair, il passe dans une phase “active” de facon a produire la sortie immediatement.

Tracez les courbes représentant X, S, t et Y en fonction du temps. Puis donnez la spécification formelle de ce composant: DEVS={X, Y, S, delta_int, delta_ext, lambda, ta)

Seance de TP 2

Pour cette séance nous n’aurons pas besoin des machines, nous allons concevoir des composants DEVS sur le papier.

Composant 1 : Composant passif

C’est le plus simple des composants. Il est appelé passif car quelle que soit l’entrée il ne fournit pas de sortie.

Tracez les courbes représentant X, S, t et Y en fonction du temps. Puis donnez la spécification formelle de ce composant: DEVS={X, Y, S, delat_int, delta_ext, lambda, ta)

Composant 2 : Composant de stockage

Ce composant recoit des valeur reelles en entrée. Lorsque la valeur en entrée est différente de zéro, le composant stocke la valeur. Lorsqu’elle vaut zéro, le composant passe en mode réponse pour un certain délai. A l’issue de ce délai, la valeur stockée est placée en sortie. Dans le cas ou une valeur est fournie en entrée lors de la phase de réponse, la valeur en entrée est ignorée et la phase de réponse se poursuit jusqu’à la fin du délai initialement prévu.

Tracez les courbes représentant X, S, t et Y en fonction du temps. Puis donnez la spécification formelle de ce composant: DEVS={X, Y, S, delat_int, delta_ext, lambda, ta)

Seance de TP 1

L’objectif de cette seance est de decouvrir l’outil de simulation DEVSJava developpé conjointement par ASU et UoA.

Ce logiciel fonctionne avec Java version 1.5. L’objectif de cette seance sera d’installer le logiciel, puis d’experimenter les differents modeles proposes dans les exemples fournis.

La copie de ce logiciel n’etant pas libre, il n’est oas possible de vous le mettre a disposition sur cette page, mais vous pouvez vous rendre sur celle-ci a l’aide du mot de passe qui vous sera communique par votre enseignant.

Procedure d’installation:

  1. Telechargez les fichiers de la page de telechargement sur votre compte dans un repertoire DEVSjava
  2. lancer l’environnement de programmation Java Eclipse (ou NetBeans)
  3. Creer un nouveau “workspace” pour les TPs de simulation
  4. Creer un nouveau projet
  5. Ouvrez le menu de configuration du projet
  6. ajoutez le fichier jar Core DEVSJAVA dans la liste des Libriairies du projet (selectionner java build path dans la partie gauche, puis l’onglet librairie, puis ajouter une librairie externe)
  7. importez les exemples (menu file: import, puis choisir archive file dans la categorie general)

Configuration

  1. Ouvrez l’element Referenced librairies dans la fenetre package explorer, de facon a faire apparaitre le fichier jar coreDEVSjava.
  2. selectionnez ce fichier jar avec la souris
  3. lancez DEVS java a l’aide du menu bouton droit de la souris, choisissez “Run as”, choisissez java application, puis selectionnez le choix SimView
  4. Eclipse signale des erreurs, mais continuez
  5. la fenetre graphique du DEVSjava doit apparaitre.
  6. cliquez sur le bouton config
  7. entrez le chemin “src/” pour les fichiers sources, et “bin/” our les fichiers class
  8. dans la 3e partie de la fenetre de configuration, entrez en toutes lettres le nom suivant: “Continuity”
  9. Essayez de decouvrir comment faire tourner un exemple (attention tous les choix ne fonctionnent pas…)

Page d’Accueil

Enseignements 2017-18

Enseignements Antérieurs

Recherche…

edit SideBar

Blix theme adapted by David Gilbert, powered by PmWiki