retour aux mémos     retour au modèle     back to SimMasto home page   retour à la page d'accueil

Réaliser un batch de simulation sous Repast Simphony


Objectif: Démarrer une simulation en arrière-plan à partir de paramètres définis au préalable et sans voir la partie graphique du modèle

Pré-requis : Connaître le Shell et le DOS

Entrée : Les fichiers batch_params.xml et ScriptSimMasto.sh

Sommaire:

Créer un nouveau launcher sous Eclipse
Créer un fichier batch_params.xml
Lancer le modèle en batch (hors eclipse)
    (1) sous windows
    (2) sous linux
Annexe: script de lancement de la simulation en shell


1.   Créer un nouveau launcher (sous Eclipse)

Le launcher proposé ci-dessous permet de lancer une simulation en batch, via Eclipse. Voici en quelques étapes la méthode qui permet de le créer (les numéros correspondent à ceux utilisés dans l’image qui suit) :
  1.  Ouvrir le menu de la flèche verte

  2. Aller dans Run Configurations

  3. Appuyer sur l’icône de création d’un nouveau launcher

  4. Choisir le projet auquel on veut associer le launcher.
    NB : On peut aussi renommer la configuation qui s’appelle par défault « new configuration »

  5. Choisir repast.symphony.batch.BatchMain comme MainClass

  6. Aller dans l’onglet Arguments

  7. Inscrire les arguments suivant dans Program arguments :
    params  “${workspace_loc:ProjectName}/batch/batch_params.xml
    “${workspace_loc:ProjectName}/projectname.rs
    NB: Changer le ProjectName par le nom du projet

  8. Ajuster les arguments VM

  9. Appliquer les modifications pour sauvegarder la nouvelle configuration

 

2.   Créer un fichier batch_params.xml

Le fichier batch_params.xml sert à spécifier la valeur des paramètres de la simulation, mais aussi le nombre de simulations que l’on souhaite lancer les unes à la suite des autres.

Voici la structure d’un fichier de ce type:

<?xml version="1.0"?>
<sweep runs="nombre de run à lancer">
       <parameter name="nom du paramètre" type="constant" constant_type="number" value="valeur"/>
 
</sweep>

 

    Le fichier XML correspondant au projet SIMmasto est :

<?xml version="1.0"?>
<sweep runs="1">
                <parameter name="Agent_speed_m_by_mn" type="constant" constant_type="number" value="1.0"/>
                <parameter name="Agent_vision_m" type="constant" constant_type="number" value="8.0"/>
                <parameter name="Minutes_by_tick" type="constant" constant_type="number" value="1.0"/>
</sweep>

 

3.   Lancer le modèle en batch (hors eclipse)

La méthode proposée ci-dessous permet de lancer une simulation en batch sans utiliser Eclipse. Elle est utilisée par le Cluster.

1.    Sous Windows

Pour lancer le modèle en batch, il faut créer un fichier.bat (voir note ci-dessous) dans lequel on spécifie les librairies dont aura besoin, la plateforme Java pour lancer le modèle, ainsi que les éventuelles librairies qu’elle ne trouverait pas. Le fichier.bat doit comporter les paths de Java, Repast et celui du projet. Il faudra aussi spécifier le path pour les paramètres du batch.

G Créer un fichier .bat: Pour faire un fichier.bat, il suffit de créer un nouveau fichier .txt et de modifier son extension. Si on ne peut pas voir l’extension des fichiers, il faut aller dans Panneau de Configuration / (Apparence et personnalisation) / Options des dossiers puis dans l’onglet Affichage et désélectionner « Masquer les extensions des fichiers dont le type est connu » pour voir apparaitre les extensions. Enfin, il faut renommer le document en effaçant son extension txt et en la remplaçant par bat.

Voici les variables définies dans le .bat :

rem The version of Repast Simphony being used
set VERSION=2.0.0
rem The path of Java being used
set JAVAPATH="C:\Program Files (x86)\Java\jre6\bin\java.exe"
rem The installed path of Repast.
set REPAST=C:\RepastSimphony-2.0-beta
rem The plugins path of Eclipse.
set PLUGINS=%REPAST%/eclipse /plugins
rem The workspace containing the Repast model.
set WORKSPACE=%REPAST%/workspace
rem The name of the model. This might be case-sensitive.
set MODELNAME=SIMmasto_0
rem The folder of the model. This might be case-sensitive.
set MODELFOLDER=%WORKSPACE%/%MODELNAME%
rem The file containing the batch parameters.
set BATCHPARAMS=%MODELFOLDER%/batch/batch_params.xml
rem The repast.simphony.runtime librairie
set RUNTIME_LIB=%PLUGINS%/repast.simphony.runtime_2.0.0/lib/

Une fois que toutes les variables sont définies, il faut spécifier les librairies que l’on souhaite utiliser :

·        Le dossier repast.simphony.batch contient le main du modèle. Comme on utilise le batch, on doit utiliser BatchMain et non RepastMain qui se trouve dans repast.simphony.runtime et qui est utilisé pour lancer un modèle « normal » :

SET CP=%CP%;%PLUGINS%/repast.simphony.batch_%VERSION%/bin

·        Le dossier repast.simphony.runtime contient les classes utiles au lancement de Repast. Comme on utilise seulement quelques classes de ce package, on peut choisir de préciser celles que l’on veut plutôt que de charger l’intégralité :

SET CP=%CP%;%RUNTIME_LIB%saf.core.runtime.jar

SET CP=%CP%;%RUNTIME_LIB%commons-logging-1.0.4.jar

SET CP=%CP%;%RUNTIME_LIB%groovy-all-1.7.5.jar

SET CP=%CP%;%RUNTIME_LIB%javassist-3.7.0.GA.jar

SET CP=%CP%;%RUNTIME_LIB%jpf.jar

SET CP=%CP%;%RUNTIME_LIB%jpf-boot.jar

SET CP=%CP%;%RUNTIME_LIB%log4j-1.2.13.jar

SET CP=%CP%;%RUNTIME_LIB%xpp3_min-1.1.4c.jar

SET CP=%CP%;%RUNTIME_LIB%xstream-1.3.jar
SET CP=%CP%;%RUNTIME_LIB%commons-cli-1.0.jar

·        Le package repast.simphony.core contient plusieurs classes utilisées dans les projets Repast mais aussi une classe qui gère les paramètres du batch :

SET CP=%CP%;%PLUGINS%/repast.simphony.core_%VERSION%/lib/*
SET CP=%CP%;%PLUGINS%/repast.simphony.core_%VERSION%/bin

·        Repast.simphony.bin_and_src contient l’essentiel des classes utilisées dans les projets Repast :

SET CP=%CP%;%PLUGINS%/repast.simphony.bin_and_src_%VERSION%/*

·        Ces lignes indiquent les paths des librairies que Java n’a pas pu trouver en lançant le batch. La console indique alors une erreur « java.lang.NoClassDefFoundError » suivie de la librairie introuvable. Il suffit ensuite d’aller dans le dossier plugins de Repast et de la rechercher (NB : si l’erreur vient de bsh/util/JConsole il faudra peut-être rechercher uniquement bsh car le reste est souvent dans un .jar et donc introuvable) :

SET CP=%CP%;%PLUGINS%/libs.bsf_2.0.0/lib/bsh-2.0b4.jar
SET CP=%CP%;%PLUGINS%/repast.simphony.essentials_2.0.0/lib/*

·        Cette dernière ligne précise où sont rangés les fichiers compilés du projet :

SET CP=%CP%;%MODELFOLDER%/bin

Une fois cette étape terminée, il suffit d’appeler la commande suivante :

Java [args] -cp <classpath> main -params  <batchParams>  <model>.rs

Voici la correspondance avec SIMmasto :

·      Java                                      →                           %JAVAPATH%
·     
[args]                                    →                           -Xss10M -Xmx400M
·     
<classpath>                           →                           %CP%
·     
main                                     →                           repast.simphony.batch.BatchMain
·     
<batchParams>                     →                           %BATCHPARAMS%
·     
<model>                               →                           %MODELFOLDER%\%MODELNAME%

On obtient alors :

%JAVAPATH% -Xss10M -Xmx400M -cp %CP% repast.simphony.batch.BatchMain -params %BATCHPARAMS% %MODELFOLDER%\%MODELNAME%.rs

2.    Sous Linux

Pour lancer une simulation en batch sous Linux il faut :

·        NB : Le document.bat/.sh devra se trouver dans le dossier du projet.


 

Annexe: script de lancement de la simulation en shell

#!/bin/bash

# The version of Repast Simphony being used.
VERSION=2.0.0
# The plugins path of Eclipse.
PLUGINS=$HOME/eclipse/plugins
# The workspace containing the Repast model.
WORKSPACE=$HOME/workspace
# The name of the model. This might be case-sensitive.
MODELNAME=SIMmasto_0
# The folder of the model. This might be case-sensitive.
MODELFOLDER=$WORKSPACE/$MODELNAME
# The file containing the batch parameters.
BATCHPARAMS=$MODELFOLDER/batch/batch_params.xml
# The repast.simphony.runtime librairie
RUNTIME_LIB=$PLUGINS/repast.simphony.runtime_$VERSION/lib
# Define the Core Repast Simphony Directories and JARs
CP=$CP:$PLUGINS/repast.simphony.batch_$VERSION/bin
CP=$CP:$RUNTIME_LIB/saf.core.runtime.jar
CP=$CP:$RUNTIME_LIB/commons-logging-1.0.4.jar
CP=$CP:$RUNTIME_LIB/groovy-all-1.7.5.jar
CP=$CP:$RUNTIME_LIB/javassist-3.7.0.GA.jar
CP=$CP:$RUNTIME_LIB/jpf.jar
CP=$CP:$RUNTIME_LIB/jpf-boot.jar
CP=$CP:$RUNTIME_LIB/log4j-1.2.13.jar
CP=$CP:$RUNTIME_LIB/xpp3_min-1.1.4c.jar
CP=$CP:$RUNTIME_LIB/xstream-1.3.jar
CP=$CP:$RUNTIME_LIB/commons-cli-1.0.jar
CP=$CP:$PLUGINS/repast.simphony.core_$VERSION/lib/*
CP=$CP:$PLUGINS/repast.simphony.core_$VERSION/bin
CP=$CP:$PLUGINS/repast.simphony.bin_and_src_$VERSION/*
CP=$CP:$PLUGINS/libs.bsf_2.0.0/lib/bsh-2.0b4.jar
CP=$CP:$PLUGINS/repast.simphony.essentials_2.0.0/lib/*
CP=$CP:$MODELFOLDER/bin
# Execute in batch mode.
java -Xss10M -Xmx400M -cp $CP repast.simphony.batch.BatchMain -params $BATCHPARAMS $MODELFOLDER/$MODELNAME.rs


Mémo 24 - Auteur A. Realini, 07.04.11, adaptation J.Le Fur, 19.03.2013

retour aux mémos     retour au modèle     back to SimMasto home page   retour à la page d'accueil