Vle 2.0

VLE 2.0.0 alpha2

The second alpha of VLE is available. Highlights are: Qt Project support, best Win32 support, new editor in GVLE and many improvements, i386/x86_64 rvle support. More details on the VLE 2.0 page. Binary and source package and Git are up-to-date. VFL, VLE, mvle, cvle cmake: add a make uninstall rules test: remove access to template directory test: Fix the package test share: fix template installation in /usr vle: add experimental linux qmake support mailmap: update gvle: update aboutbox gvle: add Ctrl+Q shortcut to quit vle: fix the VLE_STRINGIFY macro gvle: add line number and syntax highlight for C++ win32: fix several warning with i386/x86_64 architecture pkgs: add generic models in vle.

Qt Creator suport

The next vle-2.0.0-alpha2 will support the Qt Creator IDE to allow easy development of VLE and/or plug-ins. The patch allows support of the Qt Creator IDE via qmake program and the vle.pro file at root of the repository. Qt Creator is a cross-platform IDE that includes productivity tools to speed up development time. Thanks to qmake, an Official support for MacOS10 should appear in future releases. CMake remains the official project generator but qmake allow quick development of GVLE or GVLE’s plug-ins.

VLE 2.0.0 alpha1

The first alpha stable version of VLE is available. This version introduces new stable API, new GUI, new features. More details on the VLE 2.0 page. The source are available in Github. Please try it! Public API changes are important C++11⁄14 is now the default for the API and all public pointer are managed with std::unique_ptr and std::shared_ptr to limit user memory management. Many public API are move into the darkness.

Atomic model

VLE implements the DEVS abstract simulators and more precisely the DSDE which merge Parallel DEVS and DS-DEVS. In VLE, a DEVS atomic model is represented as a object which inherits of the vle::devs::Dynamics C++ class. class MyModel : public vle::devs::Dynamics { public: MyModel(const DynamicsInit& init, const vle::devs::InitEventList& events) : vle::devs::Dynamics(init, events) {} ~MyModel() override = default; // Process the initialization of the model by // initializing the initial state and return // the duration (or timeAdvance) of the initial // state.

Configuration file

Description The VLE configuration file provides preferences that users can set. You can find this file into the VLE_HOME directory: VLE_HOME/vle-2.0.conf. There are shared for all the projects on your computer. Each line represents one preference, the format is the following variable=value. The difference preferences are listed below: gvle.editor.auto-indent=true gvle.editor.font=Monospace 10 gvle.editor.highlight-brackets=true gvle.editor.highlight-line=true gvle.editor.highlight-syntax=true gvle.editor.indent-on-tab=true gvle.editor.indent-size=4 gvle.editor.show-line-numbers=true gvle.editor.show-right-margin=true gvle.editor.smart-home-end=true gvle.graphics.atomic-color=#0000ffff0000 gvle.graphics.background-color=#ffffffffffff gvle.graphics.connection-color=#000000000000 gvle.graphics.coupled-color=#00000000ffff gvle.graphics.font=Monospace 10 gvle.graphics.font-size=10 gvle.graphics.foreground-color=#000000000000 gvle.graphics.line-width=3 gvle.graphics.selected-color=#ffff00000000 gvle.packages.auto-build=true vle.

Debug and Log model

Debug model To debug your model, you may use the debug option when you right click on an atomic model under GVLE. Default, the debug file is located at $VLE_HOME/vle-2.0.log but it can be redirected to the standard output with the command line option --log-to- stdout or --log-to-stderr. Warning, in order to have the debug service available, make sure that vle is built with the debug option for example like this(Unix case):

Distributions

A distribution is a set of packages available on an URL and a description file packages.pkg. For an example, you can look at the VLE distribution. How to use a distribution To use a package distribution you have to add a remote URL into your vle.conf file (see the remote preferences of the vle.conf documentation. Be careful to add only URLs that you trust in. For example to add an URL of a distribution http://mydistrib/, update the following line:

Extensions

VLE provides several vle::devs::Dynamics subclass to simplify the development of atomic models. These sub-classes provides behavior like: finite state automaton, ordinary differential equation solver, Petrinet, planning and decision making etc. Some extensions also provide graphical interfaces and C ++ code generators. Extensions available vle.output provides output plug-ins. These plugins are in charge of recording the outputs of simulations in files (using a csv, a R data or gnuplot format).

GVLE

GVLE is the graphical user interface to VLE for designing models. It is based on QT5. It offers some of the features that the command line interface.

Kernel

In VLE, we have implemented the DSDE abstract simulator developed by Fernando J. Barros which enables parallelization of atomic models and dynamic structure changes during simulation. We also introduced an observation framework in the DEVS kernel simulator of VLE.

VPZ file format

The VPZ file uses a DTD (Document Type Definition) to define the syntax (http://www.vle-project.org/vle-2.0.dtd). In this page we give an example of VPZ file with some explanations. You should not modify VPZ files unless you know what you are doing. GVLE is the GUI application for editing these files. XML format for VPZ <!DOCTYPE vle_project PUBLIC "-//VLE TEAM//DTD Strict//EN" "http://www.vle-project.org/vle-2.0.dtd"> <vle_project author="..." date="..." version="..."> <structures> <model name="topmodel" type="coupled"> <in> <port name=".

counter

A simple model that counts events received in any input port. First, we create a new package with the following command: mkdir -p cd $HOME/vle/tutorial cd $HOME/vle/tutorial vle-2.0 -P examples create We add the file counter.cpp and update the CMakeLists.txt file in the src directory. #include <vle/devs/Dynamics.hpp>#include <vle/value/Double.hpp> namespace example { class Counter : public vle::devs::Dynamics { public: Counter(const vle::devs::DynamicsInit& model, const vle::devs::InitEventList& events) : vle::devs::Dynamics(model, events) , m_counter(0), {} ~Counter() = default; vle::devs::Time init(vle::devs::Time& time) override { return 0; } vle::devs::Time timeAdvance() const override { return vle::devs::infinity; } void externalTransition(const vle::devs::ExternalEventList& events, vle::devs::Time time) override { m_counter += events.

VLE 2.0 alpha coming soon

The new stable version of VLE, now called 2.0 is coming soon. This version introduces new stable API, new GUI, new features. More details on the VLE 2.0 page. The source are available in Github. Please try it! Public API changes are important C++11⁄14 is now the default for the API and all public pointer are managed with std::unique_ptr and std::shared_ptr to limit user memory management. Many public API are move into the darkness.

upgrade from vle 1.2 to vle 2.0

WARNING: The vle-2.0 is not yet released. This page is under construction. Upgrade your package developped under vle-1.2 To update the packages developped with vle-1.2 : you should first save your package before trying to update it. the modifications to perform on your package proposed here rely on the fact that you did not modified the mentioned files. Update the cmake scripts. a) In the directory mypkg/cmake, remove all files and add all files are here: https://github.

upgrade from vle 1.1 to vle 1.2

Upgrade your package developped under vle-1.1 To update the packages developped with vle-1.1 : you should first save your package before trying to update it. the modifications to perform on your package proposed here rely on the fact that you did not modified the mentioned files. You can use the python script VLE_INSTALL_DIR/share/convert-vpz11-vpz12.py or you can perfom manually the modifications listed below. Update the vpz files into mypkg/exp/ a) using a text editor, remove the xml tag for duration and begin, e.

VLE-2.0: Counter-Generator model

#include <vle/dsde/generic.hpp>#include <vle/dsde/dsde-debug.hpp> typedef vle::DoubleTime MyTime; typedef vle::PortList <std::string> MyPort; typedef vle::dsde::Engine <MyTime> MyDSDE; using AtomicModel = vle::dsde::AtomicModel <MyTime, MyPort, MyPort>; using GenericCoupledModel = vle::dsde::GenericCoupledModel <MyTime, vle::dsde::TransitionPolicyThread <MyTime>>; using CoupledModelThread = vle::dsde::CoupledModel <MyTime, MyPort, MyPort, MyPort, MyPort, vle::dsde::TransitionPolicyThread <MyTime>>; using CoupledModelMono = vle::dsde::CoupledModel <MyTime, MyPort, MyPort, MyPort, MyPort, vle::dsde::TransitionPolicyDefault <MyTime>>; struct Counter : AtomicModel { int i; Counter(const vle::Context &ctx) : AtomicModel(ctx, 1u, 0u), i(0) {} Counter(const Counter &other) : AtomicModel(other), i(other.

vle 2.0

VLE is compound of the main part named VLE, and can be associated with three add-ons: rvle (R-Package for VLE), pyvle (Python for VLE, only on linux) and jvle (Java for VLE, only on linux).

VLE 2.0

What news? C++11⁄14 All the source code and API move to the C++11⁄14. Compiler Requirements are now gcc 4.9 or clang 3.5 available in Ubuntu LTS 14.04 or Debian GNU/Linux Wheezy. Many boost functions or classes are replaced with standard functions and classes. Remove dependencies: The libarchive-dev is removed. We replace the libarchive dependency to build/extract tarball with the cmake sub-process command (cmake -E tar [cxt][vf][zjJ] file.tar command).