Skip to content
BorjaFG edited this page Apr 16, 2017 · 23 revisions

Goals

This C# app has the following main goals:

  • Generate the configuration file of a Simion app taking as input the definitions of all the classes and parameters using a GUI.
  • Allow the user to give several values to each parameter
  • Remote execution of each combination of parameter values
  • Analysis of the results

The app should be as independent from the source code as possible but there is a compromise between being generic and being able to validate the configuration data without overcomplicating the syntax of the input file. So far, validation done by Badger is minimal: check numerical parameters are actually numbers, state/aciton variables exist in the selected world, etc...

File formats

The different file types that can be saved/loaded from Badger and their formats can be found here.

Input files

Badger takes /config/definitions.xml and /config/apps/*.xml as input. The input XML definition file is automatically generated by SimionSrcParser each time RLSimion is recompiled.

Output files

Badger outputs three different types of files, all based on XML: project, experiment and batch. They are explained here.

Programming design

Badger uses a MVVM pattern and follows Caliburn Micro's naming conventions. The View-model of some Foo class is named FooViewModel, and its view is named FooView. Basic information and examples can be found here

Badger has three main windows that allow to design an experiment, monitor it and analyse the results.

Main window

From this window, the user can design from scratch, load, save and launch experiments. The user can also view and analyse the results of a previous execution (Reports). On the left side, the user can set the value of parameters of a Simion app, and, on the right side, the list of herd agents that have replied to the call is shown. This list is updated periodically, so some delay between updates can be expected.

Main window

The objects in the experiment editing window are organized as described in Badger object hierarchy.

Monitor window

In this window, the user can follow the progress, performance and the messages logged by the experiments being run. This window is documented here.

Monitor window

Report viewer

The user can easily analyse the results of an experiment, which are organised using the forks in the experiment. Further documentation can be found here.

Report viewer

Dependencies

This app uses Caliburn Micro to simplify MVVM and Oxyplot to draw plots.

Clone this wiki locally