Class NSGAIII

All Implemented Interfaces:
Extensible, Algorithm, Configurable, EpsilonBoxEvolutionaryAlgorithm, EvolutionaryAlgorithm, Stateful
Direct Known Subclasses:
UNSGAIII

public class NSGAIII extends NSGAII
Implementation of NSGA-III. References:
  1. Deb, K. and Jain, H. "An Evolutionary Many-Objective Optimization Algorithm Using Reference-Point-Based Nondominated Sorting Approach, Part I: Solving Problems With Box Constraints." IEEE Transactions on Evolutionary Computation, 18(4):577-601, 2014.
  2. Deb, K. and Jain, H. "Handling Many-Objective Problems Using an Improved NSGA-II Procedure. WCCI 2012 IEEE World Contress on Computational Intelligence, Brisbane, Australia, June 10-15, 2012.
  • Constructor Details

    • NSGAIII

      public NSGAIII(Problem problem)
      Creates a new NSGA-III instance with default settings.
      Parameters:
      problem - the problem to solve
    • NSGAIII

      public NSGAIII(Problem problem, NormalBoundaryDivisions divisions)
      Creates a new NSGA-III instance with the given number of reference point divisions.
      Parameters:
      problem - the problem to solve
      divisions - the number of divisions for generating reference points
    • NSGAIII

      public NSGAIII(Problem problem, int initialPopulationSize, ReferencePointNondominatedSortingPopulation population, Selection selection, Variation variation, Initialization initialization)
      Constructs a new NSGA-III instance with the specified components.
      Parameters:
      problem - the problem being solved
      initialPopulationSize - the initial population size
      population - the reference point population used to store solutions
      selection - the selection operator
      variation - the variation operator
      initialization - the initialization method
  • Method Details

    • getInitialPopulationSize

      protected static final int getInitialPopulationSize(Problem problem, NormalBoundaryDivisions divisions)
      Returns the population size, which is the number of reference points rounded up to the nearest multiple of 4.
      Parameters:
      problem - the problem
      divisions - the number of divisions for generating reference points
      Returns:
      the initial population size
    • getDefaultVariation

      protected static final Variation getDefaultVariation(Problem problem)
      Returns the default variation operator for the problem type.
      Parameters:
      problem - the problem
      Returns:
      the default variation operator
    • fixDefaultParameters

      protected static final void fixDefaultParameters(Variation variation)
      Fixes the parameters used by SBX and PM, if used, to match the original NSGA-III paper (thanks to Haitham Seada for identifying this discrepancy).
      Parameters:
      variation - the variation operator
    • getDefaultSelection

      protected static final Selection getDefaultSelection(Problem problem)
      Gets the default selection operator. If the problem is unconstrained, then the parents are selected randomly from the population. If the problem has constraints, then solutions are selected first using the aggregate constraint violation followed by random selection.
      Parameters:
      problem - the problem
      Returns:
      the selection operator
    • getPopulation

      Description copied from interface: EvolutionaryAlgorithm
      Returns the current population of this evolutionary algorithm.
      Specified by:
      getPopulation in interface EvolutionaryAlgorithm
      Overrides:
      getPopulation in class NSGAII
      Returns:
      the current population of this evolutionary algorithm
    • setPopulation

      public void setPopulation(ReferencePointNondominatedSortingPopulation population)
      Sets the population used by this algorithm. This value can not be set after initialization.
      Parameters:
      population - the population
    • 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
      Overrides:
      applyConfiguration in class NSGAII
      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
      Overrides:
      getConfiguration in class NSGAII
      Returns:
      the properties defining this instance