Class EpsilonProgressContinuation

All Implemented Interfaces:
Algorithm, Configurable, EvolutionaryAlgorithm, Stateful

public class EpsilonProgressContinuation extends AdaptiveTimeContinuation
Extends AdaptiveTimeContinuation to trigger restarts using ε-progress. ε-progress measures search progress by counting the number of significant improvements, as measured by the number of unoccupied ε-boxes filled during a fixed time window.

References:

  1. Hadka, D. and Reed, P. "Borg: An Auto-Adaptive Many-Objective Evolutionary Computing Framework." Evolutionary Computation, 21(2):231-259, 2013.
  • Constructor Details

    • EpsilonProgressContinuation

      public EpsilonProgressContinuation(EpsilonBoxEvolutionaryAlgorithm algorithm, int windowSize, int maxWindowSize, double injectionRate, int minimumPopulationSize, int maximumPopulationSize, Selection selection, Variation variation)
      Decorates the specified algorithm with ε-progress triggered time continuation.
      Parameters:
      algorithm - the algorithm being decorated
      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
      selection - the selection operator for selecting solutions from the archive during a restart
      variation - the variation operator for mutating solutions selected from the archive during a restart
  • Method Details

    • 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
    • check

      protected RestartType check()
      Description copied from class: AdaptiveTimeContinuation
      Performs a check to determine if a restart should occur. Returns RestartType.NONE if no restart should occur; or RestartType.HARD if the population-to-archive ratio exceeds populationRatio by more than 25% or the number of fitness evaluations since the last restart exceeds maxWindowSize.
      Overrides:
      check in class AdaptiveTimeContinuation
      Returns:
      RestartType.NONE if no restart should occur; or RestartType.HARD if the population-to-archive ratio exceeds populationRatio by more than 25% or if the number of fitness evaluations since the last restart exceeds maxWindowSize
    • restart

      protected void restart(RestartType type)
      Description copied from class: AdaptiveTimeContinuation
      Performs a restart. If the type is RestartType.HARD, the population is emptied, resized and filled with solutions selected and mutated from the archive. If the type is RestartType.SOFT, the population is not emptied; new solutions are only added to fill any empty slots.
      Overrides:
      restart in class AdaptiveTimeContinuation
      Parameters:
      type - the type of restart
    • saveState

      public void saveState(ObjectOutputStream stream) throws IOException
      Description copied from interface: Stateful
      Writes the state of this object to the stream. The order that objects are written to the stream is important. We recommend first calling super.saveState(stream) followed by writing each field.
      Specified by:
      saveState in interface Stateful
      Overrides:
      saveState in class AdaptiveTimeContinuation
      Parameters:
      stream - the stream
      Throws:
      IOException - if an I/O error occurred
    • loadState

      public void loadState(ObjectInputStream stream) throws IOException, ClassNotFoundException
      Description copied from interface: Stateful
      Loads the state of this object from the stream. The order for reading objects from the stream must match the order they are written to the stream in Stateful.saveState(ObjectOutputStream).
      Specified by:
      loadState in interface Stateful
      Overrides:
      loadState in class AdaptiveTimeContinuation
      Parameters:
      stream - the stream
      Throws:
      IOException - if an I/O error occurred
      ClassNotFoundException - if the stream referenced a class that is not defined