Class PESA2

All Implemented Interfaces:
Algorithm, Configurable, EvolutionaryAlgorithm, Stateful

public class PESA2 extends AbstractEvolutionaryAlgorithm
Implementation of the Pareto Envelope-based Selection Algorithm (PESA2).

References:

  1. Corne, D. W., N. R. Jerram, J. D. Knowles, and M. J. Oates (2001). PESA-II: Region-based Selection in Evolutionary Multiobjective Optimization. Proceedings of the Genetic and Evolutionary Computation Conference (GECCO 2001), pp. 283-290.
  2. Corne, D. W., J. D. Knowles, and M. J. Oates (2000). The Pareto Envelope-based Selection Algorithm for Multiobjective Optimization. Parallel Problem Solving from Nature PPSN VI, pp. 839-848.
  • Constructor Details

    • PESA2

      public PESA2(Problem problem)
      Constructs a new PESA2 instance with default settings.
      Parameters:
      problem - the problem
    • PESA2

      public PESA2(Problem problem, int initialPopulationSize, Variation variation, Initialization initialization, int bisections, int archiveSize)
      Constructs a new PESA2 instance.
      Parameters:
      problem - the problem
      initialPopulationSize - the initial population size
      variation - the mutation operator
      initialization - the initialization operator
      bisections - the number of bisections in the adaptive grid archive
      archiveSize - the capacity of the adaptive grid archive
  • Method Details

    • getArchive

      public AdaptiveGridArchive 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 AbstractEvolutionaryAlgorithm
      Returns:
      the current non-dominated archive of the best solutions generated by this evolutionary algorithm, or null if no archive is used
    • setVariation

      public void setVariation(Variation variation)
      Description copied from class: AbstractEvolutionaryAlgorithm
      Replaces the variation operator to be used by this algorithm.
      Overrides:
      setVariation in class AbstractEvolutionaryAlgorithm
      Parameters:
      variation - the variation operator
    • setInitialPopulationSize

      public void setInitialPopulationSize(int initialPopulationSize)
      Description copied from class: AbstractEvolutionaryAlgorithm
      Sets the initial population size. This value can not be set after initialization.
      Overrides:
      setInitialPopulationSize in class AbstractEvolutionaryAlgorithm
      Parameters:
      initialPopulationSize - the initial population size
    • iterate

      protected void iterate()
      Description copied from class: AbstractAlgorithm
      Performs one iteration of the algorithm. This method should be overridden by implementations to perform each logical iteration of the algorithm.
      Specified by:
      iterate in class AbstractAlgorithm
    • createGridMap

      protected Map<Integer,List<Solution>> createGridMap()
      Returns a mapping from grid index to the solutions occupying that grid index. The key is the grid index, and the value is the list of solutions occupying that index.
      Returns:
      a mapping from grid index to the solutions occupying that grid index
    • 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).
      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.
      Returns:
      the properties defining this instance