Class EpsilonProgressContinuationExtension

All Implemented Interfaces:
Extension, Configurable, Stateful

public class EpsilonProgressContinuationExtension extends AdaptiveTimeContinuationExtension
Extends AdaptiveTimeContinuationExtension 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

    • EpsilonProgressContinuationExtension

      public EpsilonProgressContinuationExtension()
      Creates the ε-progress triggered time continuation extension with default settings.
    • EpsilonProgressContinuationExtension

      public EpsilonProgressContinuationExtension(int windowSize, int maxWindowSize, double injectionRate, int minimumPopulationSize, int maximumPopulationSize, Selection selection, Variation variation)
      Creates the ε-progress triggered time continuation extension.
      Parameters:
      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

    • onRegister

      public void onRegister(Algorithm algorithm)
      Description copied from interface: Extension
      Called when this extension is registered with an algorithm. This can be used to perform any type checking or initialization.
      Specified by:
      onRegister in interface Extension
      Overrides:
      onRegister in class AdaptiveTimeContinuationExtension
      Parameters:
      algorithm - the algorithm associated with this extension
    • check

      protected RestartType check(Algorithm algorithm)
      Description copied from class: AdaptiveTimeContinuationExtension
      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 AdaptiveTimeContinuationExtension
      Parameters:
      algorithm - the evolutionary algorithm
      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(Algorithm algorithm, RestartType type)
      Description copied from class: AdaptiveTimeContinuationExtension
      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 AdaptiveTimeContinuationExtension
      Parameters:
      algorithm - the evolutionary algorithm
      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 AdaptiveTimeContinuationExtension
      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 AdaptiveTimeContinuationExtension
      Parameters:
      stream - the stream
      Throws:
      IOException - if an I/O error occurred
      ClassNotFoundException - if the stream referenced a class that is not defined