Skip to content
BorjaFG edited this page Apr 5, 2019 · 23 revisions

Badger logo

This C# app enables the user to:

  • 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...

How it works

Badger reads /config/definitions.xml and /config/apps/*.xml on initialization. The former contains the definitions of all the parameterized object classes in RLSimion parsed by SimionSrcParser, and the latter contains a description of the different versions of RLSimion (Win-32, Win-64 and Linux-64) and the static dependencies. Additional input files may be required depending on the configuration of an experiment and those are determined just before sending the experimental units to the Herd-Agents.

The different file types that can be saved/loaded from Badger and their formats can be found here, 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 tabs that allow to design an experiment, monitor it and analyse the results.

Editor

From this window, the user can design experiments from scratch, load, save and launch them.

Editor

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

Monitor window

In this window, the user can send to Herd Agents jobs to be executed remotely. The user can select which agents to use, view their state and follow the progress, performance and messages logged by the experiments being run.

Monitor

Report viewer

After an experiment is run, the user can easily analyse the results of an experiment, which are organised using the forks in the experiment.

Report viewer

Clone this wiki locally