Class EpsilonNSGAII

All Implemented Interfaces:
Algorithm, Configurable, EvolutionaryAlgorithm, Stateful

public class EpsilonNSGAII extends AdaptiveTimeContinuation implements Configurable
Implements the ε-NSGA-II algorithm. This algorithm extends NSGA-II with an ε-dominance archive and adaptive time continuation.

References:

  1. Kollat, J. B., and Reed, P. M. "Comparison of Multi-Objective Evolutionary Algorithms for Long-Term Monitoring Design." Advances in Water Resources, 29(6):792-807, 2006.
  • Constructor Details

    • EpsilonNSGAII

      public EpsilonNSGAII(Problem problem)
      Constructs a new ε-NSGA-II instance with default settings.
      Parameters:
      problem - the problem to solve
    • EpsilonNSGAII

      public EpsilonNSGAII(Problem problem, int initialPopulationSize, NondominatedSortingPopulation population, EpsilonBoxDominanceArchive archive, Selection selection, Variation variation, Initialization initialization, int windowSize, int maxWindowSize, double injectionRate, int minimumPopulationSize, int maximumPopulationSize)
      Constructs the ε-NSGA-II instance with the specified components.
      Parameters:
      problem - the problem being solved
      initialPopulationSize - the initial population size
      population - the population used to store solutions
      archive - the ε-dominance archive
      selection - the selection operator
      variation - the variation operator
      initialization - the initialization method
      windowSize - the number of iterations between invocations of check
      maxWindowSize - the maximum number of iterations allowed since the last restart before forcing a restart
      injectionRate - the injection rate
      minimumPopulationSize - the minimum size of the population
      maximumPopulationSize - the maximum size of the population
  • Method Details

    • getAlgorithm

      protected NSGAII getAlgorithm()
      Description copied from class: PeriodicAction
      Returns the algorithm that is wrapped by this periodic action.
      Overrides:
      getAlgorithm in class AdaptiveTimeContinuation
      Returns:
      the inner algorithm
    • getPopulation

      public NondominatedSortingPopulation getPopulation()
      Description copied from interface: EvolutionaryAlgorithm
      Returns the current population of this evolutionary algorithm.
      Specified by:
      getPopulation in interface EvolutionaryAlgorithm
      Overrides:
      getPopulation in class AdaptiveTimeContinuation
      Returns:
      the current population of this evolutionary algorithm
    • getVariation

      public Variation getVariation()
      Returns the variation operator currently in use by this algorithm.
      Returns:
      the variation operator
    • setVariation

      public void setVariation(Variation variation)
      Replaces the variation operator to be used by this algorithm.
      Parameters:
      variation - the variation operator
    • getInitialPopulationSize

      public int getInitialPopulationSize()
      Returns the initial population size.
      Returns:
      the initial population size
    • setInitialPopulationSize

      public void setInitialPopulationSize(int initialPopulationSize)
      Sets the initial population size. This value can not be set after initialization.
      Parameters:
      initialPopulationSize - the initial population size
    • getArchive

      public EpsilonBoxDominanceArchive getArchive()
      Description copied from interface: EvolutionaryAlgorithm
      Returns the current non-dominated archive of the best solutions generated by this evolutionary algorithm, or null if no archive is used.
      Specified by:
      getArchive in interface EvolutionaryAlgorithm
      Overrides:
      getArchive in class AdaptiveTimeContinuation
      Returns:
      the current non-dominated archive of the best solutions generated by this evolutionary algorithm, or null if no archive is used
    • setArchive

      public void setArchive(EpsilonBoxDominanceArchive archive)
      Sets the archive used by this algorithm. This value can not be set after initialization.
      Parameters:
      archive - the archive
    • applyConfiguration

      public void applyConfiguration(TypedProperties properties)
      Description copied from interface: Configurable
      Applies the properties to this instance. It is strongly recommended to apply a configuration immediately after creating the instance, as some properties can not be changed after the class is used. Exceptions may be thrown if attempting to set such properties. After calling this method, we encourage users to call TypedProperties.warnIfUnaccessedProperties() to verify all properties were processed. This can identify simple mistakes like typos. If overriding this method, properties should only be updated if a new value is provided. Additionally, if updating any Configurable objects inside this object, they should be updated before calling super.applyConfiguration(properties).
      Specified by:
      applyConfiguration in interface Configurable
      Parameters:
      properties - the user-defined properties
    • getConfiguration

      public TypedProperties getConfiguration()
      Description copied from interface: Configurable
      Gets the current configuration of this instance. In theory, these properties should be able to create a duplicate instance. Note however, they are unlikely to behave identically due to random numbers and other transient fields.
      Specified by:
      getConfiguration in interface Configurable
      Returns:
      the properties defining this instance