Package org.moeaframework.algorithm
Class NSGAIII
java.lang.Object
org.moeaframework.algorithm.AbstractAlgorithm
org.moeaframework.algorithm.AbstractEvolutionaryAlgorithm
org.moeaframework.algorithm.NSGAII
org.moeaframework.algorithm.NSGAIII
- All Implemented Interfaces:
Algorithm,EpsilonBoxEvolutionaryAlgorithm,EvolutionaryAlgorithm,Extensible,Configurable,Named,Stateful
- Direct Known Subclasses:
UNSGAIII
Implementation of NSGA-III.
References:
- Deb, K. and Jain, H. "An Evolutionary Many-Objective Optimization Algorithm Using Reference-Point-Based Nondominated Sorting Approach, Part I: Solving Problems With Box Constraints." IEEE Transactions on Evolutionary Computation, 18(4):577-601, 2014.
- Deb, K. and Jain, H. "Handling Many-Objective Problems Using an Improved NSGA-II Procedure. WCCI 2012 IEEE World Contress on Computational Intelligence, Brisbane, Australia, June 10-15, 2012.
-
Field Summary
Fields inherited from class org.moeaframework.algorithm.AbstractAlgorithm
initialized, numberOfEvaluations, problem, terminated -
Constructor Summary
ConstructorsConstructorDescriptionCreates a new NSGA-III instance with default settings.NSGAIII(Problem problem, int initialPopulationSize, ReferencePointNondominatedSortingPopulation population, Selection selection, Variation variation, Initialization initialization) Constructs a new NSGA-III instance with the specified components.NSGAIII(Problem problem, NormalBoundaryDivisions divisions) Creates a new NSGA-III instance with the given number of reference point divisions. -
Method Summary
Modifier and TypeMethodDescriptionvoidapplyConfiguration(TypedProperties properties) Applies the properties to this instance.protected static final voidfixDefaultParameters(Variation variation) Fixes the parameters used by SBX and PM, if used, to match the original NSGA-III paper (thanks to Haitham Seada for identifying this discrepancy).Gets the current configuration of this instance.protected static final SelectiongetDefaultSelection(Problem problem) Gets the default selection operator.protected static final VariationgetDefaultVariation(Problem problem) Returns the default variation operator for the problem type.protected static final intgetInitialPopulationSize(Problem problem, NormalBoundaryDivisions divisions) Returns the population size, which is the number of reference points rounded up to the nearest multiple of 4.getName()Returns the name of this algorithm.Returns the current population of this evolutionary algorithm.voidSets the population used by this algorithm.Methods inherited from class org.moeaframework.algorithm.NSGAII
getArchive, iterate, setArchive, setInitialPopulationSize, setVariationMethods inherited from class org.moeaframework.algorithm.AbstractEvolutionaryAlgorithm
getInitialization, getInitialPopulationSize, getResult, getVariation, initialize, loadState, saveState, setArchive, setInitialization, 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, getResult, initialize, isInitialized, isTerminated, run, run, step, terminateMethods inherited from interface org.moeaframework.algorithm.extension.Extensible
addExtension, getExtensions, removeExtension
-
Constructor Details
-
NSGAIII
Creates a new NSGA-III instance with default settings.- Parameters:
problem- the problem to solve
-
NSGAIII
Creates a new NSGA-III instance with the given number of reference point divisions.- Parameters:
problem- the problem to solvedivisions- the number of divisions for generating reference points
-
NSGAIII
public NSGAIII(Problem problem, int initialPopulationSize, ReferencePointNondominatedSortingPopulation population, Selection selection, Variation variation, Initialization initialization) Constructs a new NSGA-III instance with the specified components.- Parameters:
problem- the problem being solvedinitialPopulationSize- the initial population sizepopulation- the reference point population used to store solutionsselection- the selection operatorvariation- the variation operatorinitialization- the initialization method
-
-
Method Details
-
getInitialPopulationSize
protected static final int getInitialPopulationSize(Problem problem, NormalBoundaryDivisions divisions) Returns the population size, which is the number of reference points rounded up to the nearest multiple of 4.- Parameters:
problem- the problemdivisions- the number of divisions for generating reference points- Returns:
- the initial population size
-
getDefaultVariation
Returns the default variation operator for the problem type.- Parameters:
problem- the problem- Returns:
- the default variation operator
-
fixDefaultParameters
Fixes the parameters used by SBX and PM, if used, to match the original NSGA-III paper (thanks to Haitham Seada for identifying this discrepancy).- Parameters:
variation- the variation operator
-
getDefaultSelection
Gets the default selection operator. If the problem is unconstrained, then the parents are selected randomly from the population. If the problem has constraints, then solutions are selected first using the aggregate constraint violation followed by random selection.- Parameters:
problem- the problem- Returns:
- the selection operator
-
getName
Description copied from interface:AlgorithmReturns the name of this algorithm. Whenever possible, this name should match the name recognized byAlgorithmFactory. -
getPopulation
Description copied from interface:EvolutionaryAlgorithmReturns the current population of this evolutionary algorithm.- Specified by:
getPopulationin interfaceEvolutionaryAlgorithm- Overrides:
getPopulationin classNSGAII- Returns:
- the current population of this evolutionary algorithm
-
setPopulation
Sets the population used by this algorithm. This value can not be set after initialization.- Parameters:
population- the population
-
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).- Specified by:
applyConfigurationin interfaceConfigurable- Overrides:
applyConfigurationin classNSGAII- 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.- Specified by:
getConfigurationin interfaceConfigurable- Overrides:
getConfigurationin classNSGAII- Returns:
- the properties defining this instance
-