shark::detail::SMSEMOA Class Reference

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...
 

Detailed Description

Implements the SMS-EMOA.

Please see the following paper for further reference:

  • Beume, Naujoks, Emmerich. SMS-EMOA: Multiobjective selection based on dominated hypervolume. European Journal of Operational Research.

Definition at line 90 of file SMS-EMOA.h.

Member Typedef Documentation

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.

Constructor & Destructor Documentation

shark::detail::SMSEMOA::SMSEMOA ( )
inline

Default c'tor.

Definition at line 166 of file SMS-EMOA.h.

References init().

Member Function Documentation

void shark::detail::SMSEMOA::configure ( const PropertyTree node)
inline

Initializes the algorithm from a configuration-tree node.

The following sub keys are recognized:

  • Mu, type: unsigned int, default value: 100.
  • CrossoverProbability, type: double, default value: 0.9.
  • NC, type: double, default value: 20.
  • NM, type: double; default value: 20.
  • UseApproximatedHypervolume, type: bool, default value: false.
  • ErrorBound, type: double, default value: \(10^{-6}\).
  • ErrorProbability, type: double, default value: \(10^{-6}\).
Parameters
[in]nodeThe configuration tree node.

Definition at line 213 of file SMS-EMOA.h.

References init().

static double shark::detail::SMSEMOA::DEFAULT_ERROR_BOUND ( )
inlinestatic

Default error bound for the approximated hypervolume indicator.

Definition at line 152 of file SMS-EMOA.h.

static double shark::detail::SMSEMOA::DEFAULT_ERROR_PROBABILITY ( )
inlinestatic

Default error probability for the approximated hypervolume indicator.

Definition at line 159 of file SMS-EMOA.h.

static unsigned int shark::detail::SMSEMOA::DEFAULT_MU ( )
inlinestatic

Default parent population size.

Definition at line 117 of file SMS-EMOA.h.

static double shark::detail::SMSEMOA::DEFAULT_NC ( )
inlinestatic

Default value for nc.

Definition at line 131 of file SMS-EMOA.h.

static double shark::detail::SMSEMOA::DEFAULT_NM ( )
inlinestatic

Default value for nm.

Definition at line 138 of file SMS-EMOA.h.

static double shark::detail::SMSEMOA::DEFAULT_PC ( )
inlinestatic

Default crossover probability.

Definition at line 124 of file SMS-EMOA.h.

static bool shark::detail::SMSEMOA::DEFAULT_USE_APPROXIMATED_HYPERVOLUME ( )
inlinestatic

Default choice whether to rely on the approximated hypervolume indicator.

Definition at line 145 of file SMS-EMOA.h.

void shark::detail::SMSEMOA::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() 
)
inline

Initializes the algorithm.

Parameters
[in]muThe population size.
[in]pcCrossover probability, default value: 0.8.
[in]ncParameter of the simulated binary crossover operator, default value: 20.0.
[in]nmParameter of the mutation operator, default value: 20.0.
[in]useApproximatedHypervolumeFlag to determine whether to use the approximated hypervolume.
[in]errorBoundThe error bound \( \epsilon \) for the approximated hypervolume selection.
[in]errorProbabilityThe 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().

template<typename Function >
void shark::detail::SMSEMOA::init ( const Function &  f,
const RealVector &  sp 
)
inline

Initializes the algorithm for the supplied objective function.

Template Parameters
ObjectiveFunctionThe type of the objective function, needs to adhere to the concept of an AbstractObjectiveFunction.
Parameters
[in]fThe objective function.
[in]spAn 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().

std::string shark::detail::SMSEMOA::name ( ) const
inline

Returns the name of the algorithm.

Definition at line 173 of file SMS-EMOA.h.

template<typename Archive >
void shark::detail::SMSEMOA::serialize ( Archive &  archive,
const unsigned int  version 
)
inline

Stores/loads the algorithm's state.

Template Parameters
ArchiveThe type of the archive.
Parameters
[in,out]archiveThe archive to use for loading/storing.
[in]versionCurrently 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.

template<typename Function >
SolutionSetType shark::detail::SMSEMOA::step ( const Function &  f)
inline

Executes one iteration of the algorithm.

Template Parameters
Thetype of the objective to iterate upon.
Parameters
[in]fThe function to iterate upon.
Returns
The Pareto-set/-front approximation after the iteration.

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().

Member Data Documentation

ApproximatedHypervolumeSelection shark::detail::SMSEMOA::m_approximatedSelection
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().

double shark::detail::SMSEMOA::m_crossoverProbability
protected

Crossover probability.

Definition at line 104 of file SMS-EMOA.h.

Referenced by init(), serialize(), and step().

shark::moo::PenalizingEvaluator shark::detail::SMSEMOA::m_evaluator
protected

Evaluation operator.

Definition at line 96 of file SMS-EMOA.h.

Referenced by init(), serialize(), and step().

FastNonDominatedSort shark::detail::SMSEMOA::m_fastNonDominatedSort
protected

Operator that provides Deb's fast non-dominated sort.

Definition at line 98 of file SMS-EMOA.h.

Referenced by serialize(), and step().

unsigned int shark::detail::SMSEMOA::m_mu
protected

Population size \(\mu\).

Definition at line 93 of file SMS-EMOA.h.

Referenced by init(), serialize(), and step().

PolynomialMutator shark::detail::SMSEMOA::m_mutator
protected

Mutation operator.

Definition at line 102 of file SMS-EMOA.h.

Referenced by init(), serialize(), and step().

smsemoa::Population shark::detail::SMSEMOA::m_pop
protected

Population of size \(\mu + 1\).

Definition at line 92 of file SMS-EMOA.h.

Referenced by init(), serialize(), and step().

SimulatedBinaryCrossover< RealVector > shark::detail::SMSEMOA::m_sbx
protected

Crossover operator.

Definition at line 101 of file SMS-EMOA.h.

Referenced by init(), serialize(), and step().

IndicatorBasedSelection<HypervolumeIndicator> shark::detail::SMSEMOA::m_selection
protected

Selection operator relying on the (contributing) hypervolume indicator.

Definition at line 99 of file SMS-EMOA.h.

Referenced by init(), serialize(), and step().

bool shark::detail::SMSEMOA::m_useApproximatedHypervolume
protected

Flag for deciding whether to use the approximated hypervolume.

Definition at line 94 of file SMS-EMOA.h.

Referenced by init(), and step().

RankShareComparator shark::detail::SMSEMOA::rsc
protected

Comparator for individuals based on their multi-objective rank and share.

Definition at line 97 of file SMS-EMOA.h.

Referenced by serialize().


The documentation for this class was generated from the following file: