Class AMOSA

All Implemented Interfaces:
Extensible, 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 AbstractAlgorithm.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

      public void initialize()
      Description copied from interface: Algorithm
      Performs any initialization that is required by this algorithm. This method should only be called once, though the specific implementation may choose to no-op or throw AlgorithmInitializationException if called multiple times.

      Implementations should always call super.initialize() to ensure the algorithm is initialized correctly.

      Specified by:
      initialize in interface Algorithm
      Overrides:
      initialize in class AbstractSimulatedAnnealingAlgorithm
    • iterate

      protected void iterate(double temperature)
      Description copied from class: AbstractSimulatedAnnealingAlgorithm
      Performs one iteration of this SA instance using the given temperature.
      Specified by:
      iterate in class AbstractSimulatedAnnealingAlgorithm
      Parameters:
      temperature - the current temperature
    • terminate

      public void terminate()
      Description copied from interface: Algorithm
      Called when the termination condition is reached and the run is complete. This method is automatically called when using Algorithm.run(TerminationCondition), but can also be invoked directly if executing the algorithm step-by-step with Algorithm.step().

      Implementations should always call super.terminate() to ensure the algorithm is terminated correctly.

      Specified by:
      terminate in interface Algorithm
      Overrides:
      terminate in class AbstractAlgorithm