VPZFrom VLE
VPZIntroductionThe VPZ (VLE Project file Zipped), is an XML file format use in VLE to represent:
Description of the VPZ<xml> <?xml version="1.0"?> <!-- Soit vous utilisez la dtd localisée sur le site web --> <!DOCTYPE vle_project PUBLIC "-//VLE TEAM//DTD Strict//EN" "http://www.vle-project.org/vle-0.8.0.dtd"> <vle_project author="..." date="..." version="..."> <structures> <model name="topmodel" type="coupled"> <in> <port name="..." /> <port name="..." /> </in> <out> <port name="..." /> <port name="..." /> </out> <submodels> <model name="a" type="atomic" dynamics="dynamicA" conditions="conditionA" observables="obsA"> <!-- Nouveaux attributs qui font les liens vers les balises de dynamique et d'expérience pour supprimer la barrière des nom unique dans la hiérarchie de modèles. À noter la suppression des ports init et state dans la définition de structures des modèles atomiques. Ils sont déplacés dans la définition de l'expérience. --> <in> <port name="..." /> <port name="..." /> </in> <out> <port name="..." /> <port name="..." /> </out> </model> <model name="b" type="atomic"> <in> <port name="..." /> <port name="..." /> </in> <out> <port name="..." /> <port name="..." /> </out> </model> </submodels> <connections> <connection type="input|output|internal"> <origin model="..." port="..." /> <destination model="..." port="..." /> </connection> </connections> </model> </structures> <dynamics> <!-- ici, une simple liste de dynamique, à noter le changement de nom de l'attribut, formalism devient library. Les attributs 'library' et model permettent de specifier le nom du modèle qui se trouve dans la bibliothèque dynamique. Deux possibilités sont offertes pour définir un modèles DEVS : utiliser la méthode DECLARE_DYNAMICS(example::counter) avec la définition XML suivante : --> <dynamic name="dynamicA" library="libcounter" location="host:port"/> <!-- Où utiliser de multiples modèles dans une même bibliothèque dynamique : --> <dynamic name="dynamicB" library="big" model="toto" /> <dynamic name="dynamicB" library="big" model="titi" /> <dynamic name="dynamicB" library="big" model="tutu" /> <!-- Dans ce cas, il faut utiliser la macro : DECLARE_NAMED_DYNAMICS(toto, example::toto) DECLARE_NAMED_DYNAMICS(tutu, example2::tutu) DECLARE_NAMED_DYNAMICS(titi, example3::titi) --> </dynamics> <experiment name="" duration="" seed="" combination="linear|total"> <!-- seed permet ici, d'initialiser la graîne du générateur aléatoire mais uniquement pour les simulations. Pour les plans, il faut passer par les réplicas. --> <replicas seed="" number="" /> <conditions> <condition name="conditionA"> <!-- la condition qui pose les ports d'initalisation et le plan. --> <port name="..."> <double>34.23</double> <double>33.23</double> <double>32.23</double> <double>31.23</double> </port> </condition> </conditions> <views> <outputs> <output name="outputa" format="distant|local" location="host:port" plugin="text|rdata|csv|cairo..." /> <!-- L'attribut format possède deux valeurs, distant pour une connection avec un démon OOV ou EOV, l'attribut location doit alors fournir le 3-uples "machine:port:dossier". Si l'attribut format vaut local la balise location peut ne pas exister, si elle existe, elle fournit un chemin où les fichiers de sortie seront écris. L'attribut plugin indique à VLE où aux démons EOV et OOV, le type d'affiche voulu. Les plugin texte courant sont csv, rdata et text. --> <output name="outputb" format="distant" location="127.0.0.1:8000:/tmp" plugin="text|rdata|csv|cairo..." > <!-- Paramétrage du greffons de sortie. --> </output> </outputs> <observables> <observable name="obsA"> <port name="x"> <attachedview name="measureA" /> </port> <port name="y" /> <port name="z" /> </observable> <observable name="obsB"> <port name="x" /> <port name="y"> <attachedview name="measureA" /> </port> <port name="z" /> </observable> </observables> <view name="viewA" type="timed|event|finish" output="outputa" timestep="0.5" /> <!-- L'attribut timestep n'est nécessaire que pour le type timestep. - timed : résultat de la simulation par par de temps. - event : après chaque transition interne ou externe. - finish : après l'appel de la fonction finish de tous les modèles. --> </views> </expriment> </vle_project> </xml> Description of valuesVLE uses the libvlevalue library to provided datas for DEVS external transition and observation, for experimental conditions and some plug-in. The XML syntax is:
<integer>10</integer>
<double>20.003</double>
<boolean>true</boolean> <boolean>1</boolean>
<string> aaa bbbbb cc ddddd eee ddd fff ggg hhhhhhh iiiiii jj kkkkk lll mmmmmm nnn oo ppppppppp qqqqqq rrr sss ttt uuu vvv wwww x yyyy zzz. </string>
<table width="4" height="2"> 0 1 2 3 4 5 6 7 </table>
<tuple> 1 2 3 4 5 6 7 8 9 10 11 12 </tuple>
<set> <string>totot</string> <integer>123</integer> </set>
<map> <key name="tutu"> <integer>123</integer> </key> <key name="tata"> <double>123.654987</double> </key> </map>
<matrix rows="" columns="" rowmax="" columnmax="" rowstep="" columnstep=""> ... <!-- rows * columns values --> </matrix>
<xml> <![CDATA[ [...] ### free data ]]> </xml> |