Class MultiRun

java.lang.Object
java.lang.Thread
microsim.engine.MultiRun
All Implemented Interfaces:
Runnable, EngineListener, ExperimentBuilder

public abstract class MultiRun extends Thread implements EngineListener, ExperimentBuilder
MultiRun is a template abstract class useful to guide the modeller to build an automatic simulation launcher, able to change interactively parameters on the basis of the last run.
The best way to understand hot it works is to see the MultiRun example in the JAS/examples directory.

The key methods of multi run are startModel() and nextModel(). The first one must create the simulation model(s), set its(their) parameters a vector containing them.
The jas engine will attach the returning list of model and execute the simulation. When the SIMULATION_END signal is sent to Sim.engine the multi run will execute the nextModel() method. Here user can observe the result of the last run and decide which parameters to use at next run. If method returns true another simulation run will be executed and the startModel() method will be called again, otherwise the progam will exit.

Title: JAS

Description: Java Agent-based Simulation library

Copyright: Copyright (C) 2002 Michele Sonnessa

Company:

Author:
Michele Sonnessa, Ross Richardson
  • Field Details

    • engine

      protected SimulationEngine engine
    • counter

      protected int counter
    • executionActive

      protected boolean executionActive
    • toBeContinued

      protected boolean toBeContinued
    • copyInputFolderStructure

      protected static boolean copyInputFolderStructure
  • Constructor Details

    • MultiRun

      public MultiRun()
      Create a new multi run session.
  • Method Details

    • nextModel

      public abstract boolean nextModel()
      When a SIMULATION_END signal is sent to JAS by one of the running models, simulation is stopped and this method is called. If it returns true the multi run will continue with the next run, otherwise the program will exit.
      Returns:
      a value deciding if simulation is to be continued.
    • setupRunLabel

      public abstract String setupRunLabel()
    • run

      public void run()
      MultiRun is an independent thread. The run method controls the sequence of simulations.
      Specified by:
      run in interface Runnable
      Overrides:
      run in class Thread
    • go

      public void go()
      The go method starts the multi-run simulation.
    • onEngineEvent

      public void onEngineEvent(SystemEventType event)
      Implementing the ISimEngineListener. This method monitors the Sim.EVENT_SIMULATION_END signal. When it is raised the MultiRun class shutdowns current run and invokes the nextModel() method.
      Specified by:
      onEngineEvent in interface EngineListener
      Parameters:
      event - a valid system eventID.
    • getEngine

      public SimulationEngine getEngine()
    • getCounter

      public int getCounter()
    • getExperimentBuilder

      public ExperimentBuilder getExperimentBuilder()
    • setExperimentBuilder

      public void setExperimentBuilder(ExperimentBuilder experimentBuilder)
    • getMultiRunListeners

      public List<MultiRunListener> getMultiRunListeners()
    • setMultiRunListeners

      public void setMultiRunListeners(List<MultiRunListener> multiRunListeners)
    • getMultiRunId

      public String getMultiRunId()
    • setMultiRunId

      public void setMultiRunId(String multiRunId)
    • getEngineListeners

      public List<EngineListener> getEngineListeners()
    • setEngineListeners

      public void setEngineListeners(List<EngineListener> engineListeners)
    • getParameterDomains

      public List<ParameterDomain> getParameterDomains()
    • setParameterDomains

      public void setParameterDomains(List<ParameterDomain> parameterDomains)
    • addParameterDomain

      public MultiRun addParameterDomain(ParameterDomain parameterDomain)
    • getMaxConfigurations

      public int getMaxConfigurations()
    • getConfiguration

      public Map<String,Object> getConfiguration(int counter)
    • setCopyInputFolderStructure

      public static void setCopyInputFolderStructure(boolean copyInputFolderStructure_)
      Sets whether to copy the input files into a new input folder within a new output folder for each simulation run
      Parameters:
      copyInputFolderStructure_ - - set to true if wanting a copy of the input files to be stored in the output folder for each simulation run, otherwise set to false