Class Executor

java.lang.Object
org.moeaframework.Executor

public class Executor extends Object
Configures and executes algorithms while hiding the underlying boilerplate code needed to setup and safely execute an algorithm. For example, the following demonstrates its typical use:
   NondominatedPopulation result = new Executor()
       .withAlgorithm("NSGAII")
       .withProblem("DTLZ2_2")
       .withMaxEvaluations(10000)
       .run();
 

The problem and algorithm must be specified prior to calling run(). Additional parameters for each algorithm can be assigned using the withProperty methods:

   NondominatedPopulation result = new Executor()
       .withAlgorithm("NSGAII")
       .withProblem("DTLZ2_2")
       .withMaxEvaluations(10000)
       .withProperty("populationSize", 100)
       .withProperty("sbx.rate", 1.0)
       .withProperty("sbx.distributionIndex", 15.0)
       .withProperty("pm.rate", 0.05)
       .withProperty("pm.distributionIndex", 20.0)
       .run();
 

The evaluation of function evaluations can be distributed across multiple cores or computers by using distributeOnAllCores(), distributeOn(int), or distributeWith(ExecutorService). Checkpoint files can be saved in order to resume interrupted runs using the withCheckpointFrequency(int) and withCheckpointFile(File) methods. For example:

   NondominatedPopulation result = new Executor()
       .withAlgorithm("NSGAII")
       .withProblem("DTLZ2_2")
       .withMaxEvaluations(100000)
       .distributeOnAllCores()
       .withCheckpointFrequency(1000)
       .withCheckpointFile(new File("example.state"))
       .run();
 
  • Constructor Details

    • Executor

      public Executor()
      Constructs a new executor initialized with default settings.
  • Method Details

    • cancel

      public void cancel()
      Informs this executor to stop processing and returns any results collected thus far. This method is thread-safe.
    • isCanceled

      public boolean isCanceled()
      Returns true if the canceled flag is set; false otherwise. After canceling a run, the flag will remain set to true until another run is started. This method is thread-safe.
      Returns:
      true if the canceled flag is set; false otherwise
    • withInstrumenter

      public Executor withInstrumenter(Instrumenter instrumenter)
      Sets the instrumenter used to record information about the runtime behavior of algorithms executed by this executor.
      Parameters:
      instrumenter - the instrumeter
      Returns:
      a reference to this executor
    • getInstrumenter

      public Instrumenter getInstrumenter()
      Returns the instrumenter used by this executor; or null if no instrumenter has been assigned.
      Returns:
      the instrumenter used by this executor; or null if no instrumenter has been assigned
    • usingAlgorithmFactory

      public Executor usingAlgorithmFactory(AlgorithmFactory algorithmFactory)
      Sets the algorithm factory used by this executor.
      Parameters:
      algorithmFactory - the algorithm factory
      Returns:
      a reference to this executor
    • withSameProblemAs

      public Executor withSameProblemAs(org.moeaframework.ProblemBuilder builder)
    • usingProblemFactory

      public Executor usingProblemFactory(ProblemFactory problemFactory)
    • withProblem

      public Executor withProblem(String problemName)
    • withProblem

      public Executor withProblem(Problem problemInstance)
    • withProblemClass

      public Executor withProblemClass(Class<?> problemClass, Object... problemArguments)
    • withProblemClass

      public Executor withProblemClass(String problemClassName, Object... problemArguments) throws ClassNotFoundException
      Throws:
      ClassNotFoundException
    • withTerminationCondition

      public Executor withTerminationCondition(TerminationCondition condition)
      Adds a custom termination condition for use with this executor. Use withMaxEvaluations(int) and withMaxTime(long) to set NFE or time limits.
      Parameters:
      condition - the termination condition to add
      Returns:
      a reference to this executor
    • withAlgorithm

      public Executor withAlgorithm(String algorithmName)
      Sets the algorithm used by this executor.
      Parameters:
      algorithmName - the algorithm name
      Returns:
      a reference to this executor
    • distributeWith

      public Executor distributeWith(ExecutorService executorService)
      Sets the ExecutorService used by this executor to distribute solution evaluations. The caller is responsible for ensuring the executor service is shutdown after use.
      Parameters:
      executorService - the executor service
      Returns:
      a reference to this executor
    • distributeOn

      public Executor distributeOn(int numberOfThreads)
      Enables this executor to distribute solution evaluations across the specified number of threads.
      Parameters:
      numberOfThreads - the number of threads
      Returns:
      a reference to this executor
      Throws:
      IllegalArgumentException - if numberOfThreads <= 0
    • distributeOnAllCores

      public Executor distributeOnAllCores()
      Enables this executor to distribute solution evaluations across all processors on the local host.
      Returns:
      a reference to this executor
    • withCheckpointFile

      public Executor withCheckpointFile(File checkpointFile)
      Sets the checkpoint file where the algorithm state is stored. This method must be invoked in order to enable checkpoints.
      Parameters:
      checkpointFile - the checkpoint file
      Returns:
      a reference to this executor
    • withCheckpointFrequency

      public Executor withCheckpointFrequency(int checkpointFrequency)
      Sets the frequency at which this executor saves checkpoints.
      Parameters:
      checkpointFrequency - the checkpoint frequency, specifying the number of evaluations between checkpoints
      Returns:
      a reference to this executor
    • checkpointEveryIteration

      public Executor checkpointEveryIteration()
      Enables this executor to save checkpoints after every iteration of the algorithm.
      Returns:
      a reference to this executor
    • resetCheckpointFile

      public Executor resetCheckpointFile() throws IOException
      Deletes the checkpoint file if it exists.
      Returns:
      a reference to this executor
      Throws:
      IOException - if the checkpoint file could not be deleted
    • withEpsilon

      public Executor withEpsilon(double... epsilon)
      Sets the ε values; equivalent to setting the property epsilon.
      Parameters:
      epsilon - the ε values
      Returns:
      a reference to this executor
    • withMaxEvaluations

      public Executor withMaxEvaluations(int maxEvaluations)
      Sets the maximum number of evaluations; equivalent to setting the property maxEvaluations.
      Parameters:
      maxEvaluations - the maximum number of evaluations
      Returns:
      a reference to this executor
    • withMaxTime

      public Executor withMaxTime(long maxTime)
      Sets the maximum elapsed time in milliseconds; equivalent to setting the property maxTime.
      Parameters:
      maxTime - the maximum elapsed time in milliseconds
      Returns:
      a reference to this executor
    • removeProperty

      public Executor removeProperty(String key)
      Unsets a property.
      Parameters:
      key - the property key
      Returns:
      a reference to this executor
    • withProperty

      public Executor withProperty(String key, String value)
      Sets a String property.
      Parameters:
      key - the property key
      value - the property value
      Returns:
      a reference to this executor
    • withProperty

      public Executor withProperty(String key, float value)
      Sets a float property.
      Parameters:
      key - the property key
      value - the property value
      Returns:
      a reference to this executor
    • withProperty

      public Executor withProperty(String key, double value)
      Sets a double property.
      Parameters:
      key - the property key
      value - the property value
      Returns:
      a reference to this executor
    • withProperty

      public Executor withProperty(String key, byte value)
      Sets a byte property.
      Parameters:
      key - the property key
      value - the property value
      Returns:
      a reference to this executor
    • withProperty

      public Executor withProperty(String key, short value)
      Sets a short property.
      Parameters:
      key - the property key
      value - the property value
      Returns:
      a reference to this executor
    • withProperty

      public Executor withProperty(String key, int value)
      Sets an int property.
      Parameters:
      key - the property key
      value - the property value
      Returns:
      a reference to this executor
    • withProperty

      public Executor withProperty(String key, long value)
      Sets a long property.
      Parameters:
      key - the property key
      value - the property value
      Returns:
      a reference to this executor
    • withProperty

      public Executor withProperty(String key, boolean value)
      Sets a boolean property.
      Parameters:
      key - the property key
      value - the property value
      Returns:
      a reference to this executor
    • withProperty

      public Executor withProperty(String key, String[] values)
      Sets a String array property.
      Parameters:
      key - the property key
      values - the property value
      Returns:
      a reference to this executor
    • withProperty

      public Executor withProperty(String key, float[] values)
      Sets a float array property.
      Parameters:
      key - the property key
      values - the property value
      Returns:
      a reference to this executor
    • withProperty

      public Executor withProperty(String key, double[] values)
      Sets a double array property.
      Parameters:
      key - the property key
      values - the property value
      Returns:
      a reference to this executor
    • withProperty

      public Executor withProperty(String key, byte[] values)
      Sets a byte array property.
      Parameters:
      key - the property key
      values - the property value
      Returns:
      a reference to this executor
    • withProperty

      public Executor withProperty(String key, short[] values)
      Sets a short array property.
      Parameters:
      key - the property key
      values - the property value
      Returns:
      a reference to this executor
    • withProperty

      public Executor withProperty(String key, int[] values)
      Sets an int array property.
      Parameters:
      key - the property key
      values - the property value
      Returns:
      a reference to this executor
    • withProperty

      public Executor withProperty(String key, long[] values)
      Sets a long array property.
      Parameters:
      key - the property key
      values - the property value
      Returns:
      a reference to this executor
    • clearProperties

      public Executor clearProperties()
      Clears the properties.
      Returns:
      a reference to this executor
    • withProperties

      public Executor withProperties(TypedProperties properties)
      Sets all properties. This will clear any existing properties, including the maxEvaluations or maxTime.
      Parameters:
      properties - the properties
      Returns:
      a reference to this executor
    • withProgressListener

      public Executor withProgressListener(ProgressListener listener)
      Adds the given progress listener to receive periodic progress reports.
      Parameters:
      listener - the progress listener to add
      Returns:
      a reference to this executor
    • createTerminationCondition

      protected TerminationCondition createTerminationCondition()
      Returns the termination condition for this executor.
      Returns:
      the termination condition
    • runSeeds

      public List<NondominatedPopulation> runSeeds(int numberOfSeeds)
      Runs this executor with its configured settings multiple times, returning the individual end-of-run approximation sets. If the run is canceled, the list contains any complete seeds that finished prior to cancellation.
      Parameters:
      numberOfSeeds - the number of seeds to run
      Returns:
      the individual end-of-run approximation sets
    • run

      public NondominatedPopulation run()
      Runs this executor with its configured settings.
      Returns:
      the end-of-run approximation set; or null if canceled
    • getDistributedProblemInstance

      protected Problem getDistributedProblemInstance()
      When configured to run on multiple threads or with an , will wrap the problem instance in a distributed problem.
      Returns:
      the wrapped problem instance
    • runSingleSeed

      protected NondominatedPopulation runSingleSeed(int seed, int numberOfSeeds)
      Runs this executor with its configured settings.
      Parameters:
      seed - the current seed being run, such that 1 <= seed <= numberOfSeeds
      numberOfSeeds - to total number of seeds being run
      Returns:
      the end-of-run approximation set; or null if canceled