Package org.moeaframework.algorithm
Class DBEA
java.lang.Object
org.moeaframework.algorithm.AbstractAlgorithm
org.moeaframework.algorithm.AbstractEvolutionaryAlgorithm
org.moeaframework.algorithm.DBEA
- All Implemented Interfaces:
Algorithm,EvolutionaryAlgorithm,Extensible,Configurable,Named,Stateful
Implementation of the Improved Decomposition-Based Evolutionary Algorithm (I-DBEA). This implementation is based
on the Matlab version published by the original authors.
References:
- Asafuddoula, M., T. Ray, and R. Sarker (2015). "A Decomposition-Based Evolutionary Algorithm for Many-Objective Optimization." IEEE Transaction on Evolutionary Computation, 19(3):445-460.
- Matlab-DBEA.rar
-
Field Summary
Fields inherited from class org.moeaframework.algorithm.AbstractAlgorithm
initialized, numberOfEvaluations, problem, terminated -
Constructor Summary
ConstructorsConstructorDescriptionConstructs a new instance of the DBEA algorithm with default settings.DBEA(Problem problem, NormalBoundaryDivisions divisions) Constructs a new instance of the DBEA algorithm with the given number of divisions. -
Method Summary
Modifier and TypeMethodDescriptionvoidapplyConfiguration(TypedProperties properties) Applies the properties to this instance.Gets the current configuration of this instance.Returns the number of divisions used to generate reference points.getName()Returns the name of this algorithm.Returns the current best-known result.voidPerforms any initialization that is required by this algorithm.protected voiditerate()Performs one iteration of the algorithm.voidsetDivisions(NormalBoundaryDivisions divisions) Sets the number of divisions used to generate reference points.voidsetVariation(Variation variation) Replaces the variation operator to be used by this algorithm.Methods inherited from class org.moeaframework.algorithm.AbstractEvolutionaryAlgorithm
getArchive, getInitialization, getInitialPopulationSize, getPopulation, getVariation, loadState, saveState, setArchive, setInitialization, setInitialPopulationSize, setPopulationMethods inherited from class org.moeaframework.algorithm.AbstractAlgorithm
assertNotInitialized, evaluate, getExtensions, getNumberOfEvaluations, getProblem, isInitialized, isTerminated, step, terminateMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.moeaframework.algorithm.Algorithm
evaluate, evaluateAll, evaluateAll, getNumberOfEvaluations, getProblem, isInitialized, isTerminated, run, run, step, terminateMethods inherited from interface org.moeaframework.algorithm.extension.Extensible
addExtension, getExtensions, removeExtension
-
Constructor Details
-
DBEA
Constructs a new instance of the DBEA algorithm with default settings.- Parameters:
problem- the problem being solved
-
DBEA
Constructs a new instance of the DBEA algorithm with the given number of divisions.- Parameters:
problem- the problem being solveddivisions- the number of divisions
-
-
Method Details
-
getName
Description copied from interface:AlgorithmReturns the name of this algorithm. Whenever possible, this name should match the name recognized byAlgorithmFactory.- Returns:
- the name of this algorithm
-
getDivisions
Returns the number of divisions used to generate reference points.- Returns:
- the number of divisions
-
setDivisions
Sets the number of divisions used to generate reference points. This method can only be called before initializing the algorithm.- Parameters:
divisions- the number of divisions
-
setVariation
Description copied from class:AbstractEvolutionaryAlgorithmReplaces the variation operator to be used by this algorithm.- Overrides:
setVariationin classAbstractEvolutionaryAlgorithm- Parameters:
variation- the variation operator
-
initialize
public void initialize()Description copied from interface:AlgorithmPerforms 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 throwAlgorithmInitializationExceptionif called multiple times.Implementations should always call
super.initialize()to ensure the algorithm is initialized correctly.- Specified by:
initializein interfaceAlgorithm- Overrides:
initializein classAbstractEvolutionaryAlgorithm
-
iterate
protected void iterate()Description copied from class:AbstractAlgorithmPerforms one iteration of the algorithm. This method should be overridden by implementations to perform each logical iteration of the algorithm.- Specified by:
iteratein classAbstractAlgorithm
-
getResult
Description copied from interface:AlgorithmReturns the current best-known result.- Specified by:
getResultin interfaceAlgorithm- Overrides:
getResultin classAbstractEvolutionaryAlgorithm- Returns:
- the current best-known result
-
applyConfiguration
Description copied from interface:ConfigurableApplies the properties to this instance. It is strongly recommended to apply a configuration immediately after creating the instance, as some properties can not be changed after the class is used. Exceptions may be thrown if attempting to set such properties.After calling this method, we encourage users to call
TypedProperties.warnIfUnaccessedProperties()to verify all properties were processed. This can identify simple mistakes like typos.If overriding this method, properties should only be updated if a new value is provided. Additionally, if updating any
Configurableobjects inside this object, they should be updated before callingsuper.applyConfiguration(properties).- Parameters:
properties- the user-defined properties
-
getConfiguration
Description copied from interface:ConfigurableGets the current configuration of this instance. In theory, these properties should be able to create a duplicate instance. Note however, they are unlikely to behave identically due to random numbers and other transient fields.- Returns:
- the properties defining this instance
-