Implements the SMS-EMOA. More...
#include <shark/Algorithms/DirectSearch/SMS-EMOA.h>
Collaboration diagram for shark::detail::SMSEMOA:Public Types | |
| typedef std::vector< ResultSet < RealVector, RealVector > > | SolutionSetType |
| The result type of the optimizer, a vector of tuples \(( \vec x, \vec{f}( \vec{x} )\). More... | |
Public Member Functions | |
| SMSEMOA () | |
| Default c'tor. More... | |
| std::string | name () const |
| Returns the name of the algorithm. More... | |
| template<typename Archive > | |
| void | serialize (Archive &archive, const unsigned int version) |
| Stores/loads the algorithm's state. More... | |
| void | configure (const PropertyTree &node) |
| Initializes the algorithm from a configuration-tree node. More... | |
| void | init (unsigned int mu=this_type::DEFAULT_MU(), double pc=this_type::DEFAULT_PC(), double nc=this_type::DEFAULT_NC(), double nm=this_type::DEFAULT_NM(), bool useApproximatedHypervolume=this_type::DEFAULT_USE_APPROXIMATED_HYPERVOLUME(), double errorBound=this_type::DEFAULT_ERROR_BOUND(), double errorProbability=this_type::DEFAULT_ERROR_PROBABILITY()) |
| Initializes the algorithm. More... | |
| template<typename Function > | |
| void | init (const Function &f, const RealVector &sp) |
| Initializes the algorithm for the supplied objective function. More... | |
| template<typename Function > | |
| SolutionSetType | step (const Function &f) |
| Executes one iteration of the algorithm. More... | |
Static Public Member Functions | |
| static unsigned int | DEFAULT_MU () |
| Default parent population size. More... | |
| static double | DEFAULT_PC () |
| Default crossover probability. More... | |
| static double | DEFAULT_NC () |
| Default value for nc. More... | |
| static double | DEFAULT_NM () |
| Default value for nm. More... | |
| static bool | DEFAULT_USE_APPROXIMATED_HYPERVOLUME () |
| Default choice whether to rely on the approximated hypervolume indicator. More... | |
| static double | DEFAULT_ERROR_BOUND () |
| Default error bound for the approximated hypervolume indicator. More... | |
| static double | DEFAULT_ERROR_PROBABILITY () |
| Default error probability for the approximated hypervolume indicator. More... | |
Protected Attributes | |
| smsemoa::Population | m_pop |
| Population of size \(\mu + 1\). More... | |
| unsigned int | m_mu |
| Population size \(\mu\). More... | |
| bool | m_useApproximatedHypervolume |
| Flag for deciding whether to use the approximated hypervolume. More... | |
| shark::moo::PenalizingEvaluator | m_evaluator |
| Evaluation operator. More... | |
| RankShareComparator | rsc |
| Comparator for individuals based on their multi-objective rank and share. More... | |
| FastNonDominatedSort | m_fastNonDominatedSort |
| Operator that provides Deb's fast non-dominated sort. More... | |
| IndicatorBasedSelection < HypervolumeIndicator > | m_selection |
| Selection operator relying on the (contributing) hypervolume indicator. More... | |
| ApproximatedHypervolumeSelection | m_approximatedSelection |
| Selection operator relying on the approximated (contributing) hypervolume indicator. More... | |
| SimulatedBinaryCrossover < RealVector > | m_sbx |
| Crossover operator. More... | |
| PolynomialMutator | m_mutator |
| Mutation operator. More... | |
| double | m_crossoverProbability |
| Crossover probability. More... | |
Implements the SMS-EMOA.
Please see the following paper for further reference:
Definition at line 90 of file SMS-EMOA.h.
| typedef std::vector< ResultSet< RealVector, RealVector > > shark::detail::SMSEMOA::SolutionSetType |
The result type of the optimizer, a vector of tuples \(( \vec x, \vec{f}( \vec{x} )\).
Definition at line 110 of file SMS-EMOA.h.
|
inline |
|
inline |
Initializes the algorithm from a configuration-tree node.
The following sub keys are recognized:
| [in] | node | The configuration tree node. |
Definition at line 213 of file SMS-EMOA.h.
References init().
|
inlinestatic |
Default error bound for the approximated hypervolume indicator.
Definition at line 152 of file SMS-EMOA.h.
|
inlinestatic |
Default error probability for the approximated hypervolume indicator.
Definition at line 159 of file SMS-EMOA.h.
|
inlinestatic |
Default parent population size.
Definition at line 117 of file SMS-EMOA.h.
|
inlinestatic |
Default value for nc.
Definition at line 131 of file SMS-EMOA.h.
|
inlinestatic |
Default value for nm.
Definition at line 138 of file SMS-EMOA.h.
|
inlinestatic |
Default crossover probability.
Definition at line 124 of file SMS-EMOA.h.
|
inlinestatic |
Default choice whether to rely on the approximated hypervolume indicator.
Definition at line 145 of file SMS-EMOA.h.
|
inline |
Initializes the algorithm.
| [in] | mu | The population size. |
| [in] | pc | Crossover probability, default value: 0.8. |
| [in] | nc | Parameter of the simulated binary crossover operator, default value: 20.0. |
| [in] | nm | Parameter of the mutation operator, default value: 20.0. |
| [in] | useApproximatedHypervolume | Flag to determine whether to use the approximated hypervolume. |
| [in] | errorBound | The error bound \( \epsilon \) for the approximated hypervolume selection. |
| [in] | errorProbability | The error prob. \( \delta \) for the approximated hypervolume selection. |
Definition at line 235 of file SMS-EMOA.h.
References m_approximatedSelection, m_crossoverProbability, m_mu, m_mutator, shark::SimulatedBinaryCrossover< PointType >::m_nc, shark::PolynomialMutator::m_nm, shark::SimulatedBinaryCrossover< PointType >::m_prob, m_sbx, m_selection, m_useApproximatedHypervolume, and shark::ApproximatedHypervolumeSelection::setMu().
Referenced by configure(), and SMSEMOA().
|
inline |
Initializes the algorithm for the supplied objective function.
| ObjectiveFunction | The type of the objective function, needs to adhere to the concept of an AbstractObjectiveFunction. |
| [in] | f | The objective function. |
| [in] | sp | An initial search point. |
Definition at line 265 of file SMS-EMOA.h.
References shark::TypedIndividual< SearchSpaceType, ChromosomeType1, ChromosomeType2, ChromosomeType3, ChromosomeType4, ChromosomeType5, ChromosomeType6, ChromosomeType7, ChromosomeType8, ChromosomeType9, ChromosomeType10 >::age(), shark::TypedIndividual< SearchSpaceType, ChromosomeType1, ChromosomeType2, ChromosomeType3, ChromosomeType4, ChromosomeType5, ChromosomeType6, ChromosomeType7, ChromosomeType8, ChromosomeType9, ChromosomeType10 >::fitness(), shark::PolynomialMutator::init(), shark::BoxConstraintHandler< Vector >::lower(), m_approximatedSelection, m_evaluator, shark::SimulatedBinaryCrossover< PointType >::m_lower, m_mu, m_mutator, shark::moo::PenalizingEvaluator::m_penaltyFactor, m_pop, shark::SimulatedBinaryCrossover< PointType >::m_prob, m_sbx, m_selection, shark::SimulatedBinaryCrossover< PointType >::m_upper, shark::blas::max(), shark::repeat(), shark::ApproximatedHypervolumeSelection::setNoObjectives(), shark::TypedIndividual< SearchSpaceType, ChromosomeType1, ChromosomeType2, ChromosomeType3, ChromosomeType4, ChromosomeType5, ChromosomeType6, ChromosomeType7, ChromosomeType8, ChromosomeType9, ChromosomeType10 >::setNoObjectives(), SHARKEXCEPTION, and shark::BoxConstraintHandler< Vector >::upper().
|
inline |
Returns the name of the algorithm.
Definition at line 173 of file SMS-EMOA.h.
|
inline |
Stores/loads the algorithm's state.
| Archive | The type of the archive. |
| [in,out] | archive | The archive to use for loading/storing. |
| [in] | version | Currently unused. |
Definition at line 184 of file SMS-EMOA.h.
References m_approximatedSelection, m_crossoverProbability, m_evaluator, m_fastNonDominatedSort, m_mu, m_mutator, m_pop, m_sbx, m_selection, and rsc.
|
inline |
Executes one iteration of the algorithm.
| The | type of the objective to iterate upon. |
| [in] | f | The function to iterate upon. |
Definition at line 317 of file SMS-EMOA.h.
References m_approximatedSelection, m_crossoverProbability, m_evaluator, m_fastNonDominatedSort, m_mu, m_mutator, m_pop, m_sbx, m_selection, m_useApproximatedHypervolume, and shark::makeResultSet().
|
protected |
Selection operator relying on the approximated (contributing) hypervolume indicator.
Definition at line 100 of file SMS-EMOA.h.
Referenced by init(), serialize(), and step().
|
protected |
Crossover probability.
Definition at line 104 of file SMS-EMOA.h.
Referenced by init(), serialize(), and step().
|
protected |
Evaluation operator.
Definition at line 96 of file SMS-EMOA.h.
Referenced by init(), serialize(), and step().
|
protected |
Operator that provides Deb's fast non-dominated sort.
Definition at line 98 of file SMS-EMOA.h.
Referenced by serialize(), and step().
|
protected |
Population size \(\mu\).
Definition at line 93 of file SMS-EMOA.h.
Referenced by init(), serialize(), and step().
|
protected |
Mutation operator.
Definition at line 102 of file SMS-EMOA.h.
Referenced by init(), serialize(), and step().
|
protected |
Population of size \(\mu + 1\).
Definition at line 92 of file SMS-EMOA.h.
Referenced by init(), serialize(), and step().
|
protected |
Crossover operator.
Definition at line 101 of file SMS-EMOA.h.
Referenced by init(), serialize(), and step().
|
protected |
Selection operator relying on the (contributing) hypervolume indicator.
Definition at line 99 of file SMS-EMOA.h.
Referenced by init(), serialize(), and step().
|
protected |
Flag for deciding whether to use the approximated hypervolume.
Definition at line 94 of file SMS-EMOA.h.
|
protected |
Comparator for individuals based on their multi-objective rank and share.
Definition at line 97 of file SMS-EMOA.h.
Referenced by serialize().