Class AMOSA

All Implemented Interfaces:
Algorithm, Configurable, Stateful

public class AMOSA extends AbstractSimulatedAnnealingAlgorithm
Implementation of the simulated annealing-based multiobjective optimization algorithm (AMOSA). AMOSA incorporates the archive mechanism in order to provide non-dominated set of solutions so called Pareto front.

References:

  1. Sanghamitra Bandyopadhyay, Sriparna Saha, Ujjwal Maulik, Kalyanmoy Deb (2008). A Simulated Annealing-Based Multiobjective Optimization Algorithm: AMOSA. IEEE Transactions on Evolutionary Computation, vol. 12, no. 3, pp. 269-283.
  • Constructor Details

    • AMOSA

      public AMOSA(Problem problem)
      Creates a new instance of the AMOSA algorithm with default settings.
      Parameters:
      problem - the problem to solve
    • AMOSA

      public AMOSA(Problem problem, Initialization initialization, Mutation mutation, double gamma, int softLimit, int hardLimit, double stoppingTemperature, double initialTemperature, double alpha, int numberOfIterationsPerTemperature, int numberOfHillClimbingIterationsForRefinement)
      Creates a new instance of the AMOSA algorithm.
      Parameters:
      problem - the problem to solve
      initialization - the method for initializing solutions
      mutation - the mutation operator
      gamma - the gamma value
      softLimit - the soft limit
      hardLimit - the hard limit
      stoppingTemperature - the stopping (minimum) temperature
      initialTemperature - the initial (maximum) temperature
      alpha - the cooling rate
      numberOfIterationsPerTemperature - the number of iterations at each temperature
      numberOfHillClimbingIterationsForRefinement - the number of hill climbing iterations performed on initial solutions
  • Method Details

    • getGamma

      public double getGamma()
      Returns the gamma value.
      Returns:
      the gamma value
    • setGamma

      public void setGamma(double gamma)
      Sets the value of gamma, which determines the number of random solutions generated to fill the initial population. This value must be >= 1 and is typically set to 2.
      Parameters:
      gamma - the gamma value
    • getSoftLimit

      public int getSoftLimit()
      Returns the soft limit.
      Returns:
      the soft limit
    • setSoftLimit

      public void setSoftLimit(int softLimit)
      Sets the soft limit, which controls the maximum size that the archive can be filled before clustering is used to reduce the size to the hard limit.
      Parameters:
      softLimit - the soft limit
    • getHardLimit

      public int getHardLimit()
      Returns the hard limit.
      Returns:
      the hard limit
    • setHardLimit

      public void setHardLimit(int hardLimit)
      Sets the hard limit, which controls the maximum size of the archive or result set at termination.
      Parameters:
      hardLimit - the hard limit
    • getNumberOfIterationsPerTemperature

      public int getNumberOfIterationsPerTemperature()
      Returns the number of iterations performed at each temperature. Note that all iterations for the same temperature are evaluated in a single call to AbstractSimulatedAnnealingAlgorithm.step().
      Returns:
      the number of iterations
    • setNumberOfIterationsPerTemperature

      public void setNumberOfIterationsPerTemperature(int numberOfIterationsPerTemperature)
      Sets the number of iterations performed at each temperature.
      Parameters:
      numberOfIterationsPerTemperature - the number of iterations
    • getNumberOfHillClimbingIterationsForRefinement

      public int getNumberOfHillClimbingIterationsForRefinement()
      Returns the number of hill climbing iterations for refinement.
      Returns:
      the number of iterations
    • setNumberOfHillClimbingIterationsForRefinement

      public void setNumberOfHillClimbingIterationsForRefinement(int numberOfHillClimbingIterationsForRefinement)
      Sets the number of hill climbing iterations to refine initial solutions. This is only performed during initialization and, as such, this value can only be set before initialization.
      Parameters:
      numberOfHillClimbingIterationsForRefinement - the number of iterations
    • initialize

      protected void initialize()
      Description copied from class: AbstractAlgorithm
      Performs any initialization that is required by this algorithm. This method is called automatically on the first invocation of AbstractAlgorithm.step(). Implementations should always invoke super.initialize() to ensure the algorithm is initialized correctly.
      Overrides:
      initialize in class AbstractSimulatedAnnealingAlgorithm
    • 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
    • terminate

      public void terminate()
      Description copied from class: AbstractAlgorithm
      Implementations should always invoke super.terminate() to ensure the hierarchy is terminated correctly.
      Specified by:
      terminate in interface Algorithm
      Overrides:
      terminate in class AbstractAlgorithm