Package org.moeaframework.algorithm.sa
Class AMOSA
java.lang.Object
org.moeaframework.algorithm.AbstractAlgorithm
org.moeaframework.algorithm.sa.AbstractSimulatedAnnealingAlgorithm
org.moeaframework.algorithm.sa.AMOSA
- All Implemented Interfaces:
Algorithm
,Configurable
,Stateful
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:
- 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.
-
Field Summary
Fields inherited from class org.moeaframework.algorithm.sa.AbstractSimulatedAnnealingAlgorithm
archive, coolingSchedule, currentPoint, initialization, initialTemperature, mutation, temperature, terminationCondition
Fields inherited from class org.moeaframework.algorithm.AbstractAlgorithm
initialized, numberOfEvaluations, problem, terminated
-
Constructor Summary
ConstructorDescriptionCreates a new instance of the AMOSA algorithm with default settings.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. -
Method Summary
Modifier and TypeMethodDescriptiondouble
getGamma()
Returns the gamma value.int
Returns the hard limit.int
Returns the number of hill climbing iterations for refinement.int
Returns the number of iterations performed at each temperature.int
Returns the soft limit.protected void
Performs any initialization that is required by this algorithm.protected void
iterate()
Performs one iteration of the algorithm.void
setGamma
(double gamma) Sets the value of gamma, which determines the number of random solutions generated to fill the initial population.void
setHardLimit
(int hardLimit) Sets the hard limit, which controls the maximum size of the archive or result set at termination.void
setNumberOfHillClimbingIterationsForRefinement
(int numberOfHillClimbingIterationsForRefinement) Sets the number of hill climbing iterations to refine initial solutions.void
setNumberOfIterationsPerTemperature
(int numberOfIterationsPerTemperature) Sets the number of iterations performed at each temperature.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.void
Implementations should always invokesuper.terminate()
to ensure the hierarchy is terminated correctly.Methods inherited from class org.moeaframework.algorithm.sa.AbstractSimulatedAnnealingAlgorithm
getArchive, getCoolingSchedule, getCurrentPoint, getInitialization, getInitialTemperature, getMutation, getResult, getTemperature, getTerminationCondition, loadState, saveState, setArchive, setCoolingSchedule, setInitialization, setInitialTemperature, setMutation, setTerminationCondition, step
Methods inherited from class org.moeaframework.algorithm.AbstractAlgorithm
assertNotInitialized, evaluate, evaluateAll, evaluateAll, getNumberOfEvaluations, getProblem, isInitialized, isTerminated
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.moeaframework.core.configuration.Configurable
applyConfiguration, getConfiguration
-
Constructor Details
-
AMOSA
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 solveinitialization
- the method for initializing solutionsmutation
- the mutation operatorgamma
- the gamma valuesoftLimit
- the soft limithardLimit
- the hard limitstoppingTemperature
- the stopping (minimum) temperatureinitialTemperature
- the initial (maximum) temperaturealpha
- the cooling ratenumberOfIterationsPerTemperature
- the number of iterations at each temperaturenumberOfHillClimbingIterationsForRefinement
- 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 toAbstractSimulatedAnnealingAlgorithm.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 ofAbstractAlgorithm.step()
. Implementations should always invokesuper.initialize()
to ensure the algorithm is initialized correctly.- Overrides:
initialize
in classAbstractSimulatedAnnealingAlgorithm
-
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 classAbstractAlgorithm
-
terminate
public void terminate()Description copied from class:AbstractAlgorithm
Implementations should always invokesuper.terminate()
to ensure the hierarchy is terminated correctly.- Specified by:
terminate
in interfaceAlgorithm
- Overrides:
terminate
in classAbstractAlgorithm
-