Class RepeatedSingleObjective

java.lang.Object
org.moeaframework.algorithm.AbstractAlgorithm
org.moeaframework.algorithm.single.RepeatedSingleObjective
All Implemented Interfaces:
Algorithm, Stateful

public class RepeatedSingleObjective extends AbstractAlgorithm
Instantiates and runs several instances of a single objective algorithm. This is intended to be used with single-objective optimizers that use weighted aggregation of the objectives. This is based on the Repeated Single Objective (RSO) algorithm by E. J. Hughes [1], where they investigate running many single-objective optimizers (one many) compared to running a single many-objective optimizer (many once).

Be mindful of how running multiple instances affects the AbstractAlgorithm.step(). Each step performs one iteration of each instance. Thus, given 50 instances of an algorithm with a population size of 100, then 5000 evaluations will occur each step. In [1], they decrease the population size for the single objective optimizers.

References:

  1. E. J. Hughes. "Evolutionary many-objective optimization: many once or one many." 2005 IEEE Congress on Evolutionary Computation, pp. 222-227.
  • Constructor Details

    • RepeatedSingleObjective

      public RepeatedSingleObjective(Problem problem, int instances, String algorithmName, TypedProperties properties)
      Constructs a new instance of the RSO algorithm using the given single-objective algorithm. The properties are passed to each individual algorithm with the addition of a "weights" parameter, which is randomly-generated for each instance.
      Parameters:
      problem - the problem to solve
      algorithmName - the algorithm name
      properties - the algorithm properties
      instances - the number of instances
    • RepeatedSingleObjective

      public RepeatedSingleObjective(Problem problem, int instances, BiFunction<Problem,double[],Algorithm> creator)
      Constructs a new instance of the RSO algorithm using randomly-generated weights.
      Parameters:
      problem - the problem to solve
      instances - the number of single-objective algorithm instances to create using random weights
      creator - function that creates a single-objective algorithm for the given weight vector
    • RepeatedSingleObjective

      public RepeatedSingleObjective(Problem problem, WeightGenerator weightGenerator, BiFunction<Problem,double[],Algorithm> creator)
      Constructs a new instance of the RSO algorithm. The weight generator defines the number of instances.
      Parameters:
      problem - the problem to solve
      weightGenerator - generates the weight vectors used to configure each single-objective algorithm
      creator - function that creates a single-objective algorithm for the given weight vector
  • Method Details