Skip to content

HeadlessLegacy

Arthur Brugière edited this page May 12, 2022 · 17 revisions

Headless Legacy

Table of contents

Command

There are two ways to run a GAMA experiment in headless mode: using a dedicated shell script (recommended) or directly from the command line. These commands take 2 arguments: a file describing the experiment plan to run and an output directory.

Bash Script

It can be found in the headless directory located inside Gama. Its name is gama-headless.sh on MacOSX and Linux, and gama-headless.bat on Windows.

 bash gama-headless.sh [m/c/t/hpc/v] $1 $2
  • with:

    • $1 input parameter file : an xml file determining experiment parameters and attended outputs
    • $2 output directory path : a directory which contains simulation results (numerical data and simulation snapshot)
    • options [-m/c/t/hpc/v]
      • -m memory : memory allocated to gama
      • -c : console mode, the simulation description could be written with the stdin
      • -t : tunneling mode, simulation description are read from the stdin, simulation results are printed out in stdout
      • -hpc nb_of_cores : allocate a specific number of cores for the experiment plan
      • -v : verbose mode. trace are displayed in the console
  • For example (using the provided sample), navigate in your terminal to the headless folder inside your GAMA root folder and type:

bash gama-headless.sh samples/predatorPrey.xml outputHeadLess

As specified in predatorPrey.xml, this command runs the prey - predator model for 1000 steps and record a screenshot of the main display every 5 steps. The screenshots are recorded in the directory outputHeadLess (under the GAMA root folder).

Note that the current directory to run gama-headless command must be $GAMA_PATH/headless

Java Command

java -cp $GAMA_CLASSPATH -Xms512m -Xmx2048m -Djava.awt.headless=true org.eclipse.core.launcher.Main -application msi.gama.headless.id4 $1 $2
  • with:
    • $GAMA_CLASSPATH GAMA classpath: contains the relative or absolute path of jars inside the GAMA plugin directory and jars created by users
    • $1 input parameter file: an XML file determining experiment parameters and attended outputs
    • $2 output directory path: a directory which contains simulation results (numerical data and simulation snapshot)

Note that the output directory is created during the experiment and should not exist before.

Experiment Input File

The XML input file contains for example:

<?xml version="1.0" encoding="UTF-8"?>
<Experiment_plan>
 <Simulation id="2" sourcePath="./predatorPrey/predatorPrey.gaml" finalStep="1000" until="length(predator) = 1"  
 experiment="predPrey">
  <Parameters>
    <Parameter name="nb_predator_init" type="INT" value="53" />
    <Parameter name="nb_preys_init" type="INT" value="621" />
  </Parameters>
  <Outputs>
    <Output id="1" name="main_display" framerate="10" />
    <Output id="2" name="number_of_preys" framerate="1" />
    <Output id="3" name="number_of_predators" framerate="1" />
    <Output id="4" name="duration" framerate="1" />
  </Outputs>
 </Simulation>
</Experiment_plan>

Note that several simulations could be determined in one experiment plan. These simulations are run in parallel according to the number of allocated cores.

Heading

<Simulation id="2" sourcePath="./predatorPrey/predatorPrey.gaml" finalStep="1000" until="length(predator) = 1"  
 experiment="predPrey">
  • with:
    • id: permits to prefix output files for experiment plan with huge simulations.
    • sourcePath: contains the relative or absolute path to read the gaml model.
    • finalStep: determines the number of simulation step you want to run.
    • until: defines a stop condition. It can be combined with the finalStep facet (in this case a simulation when the stop condition is fulfilled or when the final step is reached.
    • experiment: determines which experiment should be run on the model. This experiment should exist, otherwise, the headless mode will exit.

Parameters

One line per parameter you want to specify a value to:

<Parameter name="nb_predator_init" type="INT" value="53" />
  • with:
    • name: name of the parameter in the gaml model
    • type: type of the parameter (INT, FLOAT, BOOLEAN, STRING)
    • value: the chosen value

Outputs

One line per output value you want to retrieve. Outputs can be names of monitors or displays defined in the 'output' section of experiments, or the names of attributes defined in the experiment or the model itself (in the 'global' section).

    ... with the name of a monitor defined in the 'output' section of the experiment...
    <Output id="2" name="number_of_preys" framerate="1" />
    ... with the name of a (built-in) variable defined in the experiment itself...
    <Output id="4" name="duration" framerate="1" />
  • with:

    • name: name of the output in the 'output'/'permanent' section in the experiment or name of the experiment/model attribute to retrieve
    • framerate: the frequency of the monitoring (each step, every 2 steps, every 100 steps...).
  • Note that:

    • the lower the framerate value the longer the experiment.
    • if the chosen output is a display, an image is produced and the output file contains the path to access this image

Output Directory

During headless experiments, a directory is created with the following structure:

Outputed-directory-path/
    |-simulation-output.xml
    |- snapshot
          |- main_display2-0.png
          |- main_display2-10.png
          |- ...

  • with:
    • simulation-output.xml: containing the results
    • snapshot: containing the snapshots produced during the simulation

Is it possible to change the output directory for the images by adding the attribute "output_path" in the xml :

If we write <Output id="1" name="my_display" file:"/F:/path/imageName" framerate="10" />, then the display "my_display" will have the name "imageName-stepNb.png" and will be written in the folder "/F:/path/"

Simulation Output

A file named simulation-output.xml is created with the following contents when the experiment runs.

<?xml version="1.0" encoding="UTF-8"?>
<Simulation id="2" >
	<Step id='0' >
		<Variable name='main_display' value='main_display2-0.png'/>
		<Variable name='number_of_preys' value='613'/>
		<Variable name='number_of_predators' value='51'/>
                <Variable name='duration' value='6' />
	</Step>
	<Step id='1' >
		<Variable name='main_display' value='main_display2-0.png'/>
		<Variable name='number_of_preys' value='624'/>
		<Variable name='number_of_predators' value='51'/>
                <Variable name='duration' value='5' />
	</Step>
        <Step id='2'>

...
  • With:
    • <Simulation id="2" >: block containing results of the simulation 2 (this Id is identified in the Input Experiment File)
    • <Step id='1' > ... </Step>: one block per step done. The id corresponds to the step number

Step

	<Step id='1' >
		<Variable name='main_display' value='main_display2-0.png'/>
		<Variable name='number_of_preys' value='624'/>
		<Variable name='number_of_predators' value='51'/>
                <Variable name='duration' value='6' />
	</Step>

There is one Variable block per Output identified in the output experiment file.

Variable

 <Variable name='main_display' value='main_display2-0.png'/>
  • with:
    • name: name of the output, the model variable
    • value: the current value of the model variable.

Note that the value of an output is repeated according to the framerate defined in the input experiment file.

Snapshot files

This directory contains images generated during the experiment. There is one image per displayed output per step (according to the framerate). File names follow a naming convention, e.g:

   [outputName][SimulationID]_[stepID].png -> main_display2-20.png

Note that images are saved in '.png' format.

  1. What's new (Changelog)
  1. Installation and Launching
    1. Installation
    2. Launching GAMA
    3. Updating GAMA
    4. Installing Plugins
  2. Workspace, Projects and Models
    1. Navigating in the Workspace
    2. Changing Workspace
    3. Importing Models
  3. Editing Models
    1. GAML Editor (Generalities)
    2. GAML Editor Tools
    3. Validation of Models
  4. Running Experiments
    1. Launching Experiments
    2. Experiments User interface
    3. Controls of experiments
    4. Parameters view
    5. Inspectors and monitors
    6. Displays
    7. Batch Specific UI
    8. Errors View
  5. Running Headless
    1. Headless Batch
    2. Headless Server
    3. Headless Legacy
  6. Preferences
  7. Troubleshooting
  1. Introduction
    1. Start with GAML
    2. Organization of a Model
    3. Basic programming concepts in GAML
  2. Manipulate basic Species
  3. Global Species
    1. Regular Species
    2. Defining Actions and Behaviors
    3. Interaction between Agents
    4. Attaching Skills
    5. Inheritance
  4. Defining Advanced Species
    1. Grid Species
    2. Graph Species
    3. Mirror Species
    4. Multi-Level Architecture
  5. Defining GUI Experiment
    1. Defining Parameters
    2. Defining Displays Generalities
    3. Defining 3D Displays
    4. Defining Charts
    5. Defining Monitors and Inspectors
    6. Defining Export files
    7. Defining User Interaction
  6. Exploring Models
    1. Run Several Simulations
    2. Batch Experiments
    3. Exploration Methods
  7. Optimizing Model Section
    1. Runtime Concepts
    2. Optimizing Models
  8. Multi-Paradigm Modeling
    1. Control Architecture
    2. Defining Differential Equations
  1. Manipulate OSM Data
  2. Diffusion
  3. Using Database
  4. Using FIPA ACL
  5. Using BDI with BEN
  6. Using Driving Skill
  7. Manipulate dates
  8. Manipulate lights
  9. Using comodel
  10. Save and restore Simulations
  11. Using network
  12. Headless mode
  13. Using Headless
  14. Writing Unit Tests
  15. Ensure model's reproducibility
  16. Going further with extensions
    1. Calling R
    2. Using Graphical Editor
    3. Using Git from GAMA
  1. Built-in Species
  2. Built-in Skills
  3. Built-in Architecture
  4. Statements
  5. Data Type
  6. File Type
  7. Expressions
    1. Literals
    2. Units and Constants
    3. Pseudo Variables
    4. Variables And Attributes
    5. Operators [A-A]
    6. Operators [B-C]
    7. Operators [D-H]
    8. Operators [I-M]
    9. Operators [N-R]
    10. Operators [S-Z]
  8. Exhaustive list of GAMA Keywords
  1. Installing the GIT version
  2. Developing Extensions
    1. Developing Plugins
    2. Developing Skills
    3. Developing Statements
    4. Developing Operators
    5. Developing Types
    6. Developing Species
    7. Developing Control Architectures
    8. Index of annotations
  3. Introduction to GAMA Java API
    1. Architecture of GAMA
    2. IScope
  4. Using GAMA flags
  5. Creating a release of GAMA
  6. Documentation generation

  1. Predator Prey
  2. Road Traffic
  3. 3D Tutorial
  4. Incremental Model
  5. Luneray's flu
  6. BDI Agents

  1. Team
  2. Projects using GAMA
  3. Scientific References
  4. Training Sessions

Resources

  1. Videos
  2. Conferences
  3. Code Examples
  4. Pedagogical materials
Clone this wiki locally