shark::SMSEMOA Class Reference

Implements the SMS-EMOA. More...

#include <shark/Algorithms/DirectSearch/SMS-EMOA.h>

+ Inheritance diagram for shark::SMSEMOA:

Public Member Functions

 SMSEMOA (random::rng_type &rng=random::globalRng)
 
std::string name () const
 returns the name of the object More...
 
double crossoverProbability () const
 Returns the probability that crossover is applied. More...
 
double nm () const
 
double nc () const
 
unsigned int mu () const
 
unsigned int & mu ()
 
std::size_t numInitPoints () const
 Returns the number of points this method requires for initialisation. More...
 
HypervolumeIndicatorindicator ()
 
HypervolumeIndicator const & indicator () const
 
void read (InArchive &archive)
 Read the component from the supplied archive. More...
 
void write (OutArchive &archive) const
 Write the component to the supplied archive. More...
 
void init (ObjectiveFunctionType const &function, std::vector< SearchPointType > const &initialSearchPoints)
 Initializes the algorithm for the supplied objective function. More...
 
void step (ObjectiveFunctionType const &function)
 Executes one iteration of the algorithm. More...
 
- Public Member Functions inherited from shark::AbstractMultiObjectiveOptimizer< RealVector >
SolutionType const & solution () const
 Accesses the current approximation of the Pareto-set and -front, respectively. More...
 
- Public Member Functions inherited from shark::AbstractOptimizer< RealVector, RealVector, std::vector< ResultSet< RealVector, RealVector > > >
const Featuresfeatures () const
 
virtual void updateFeatures ()
 
bool requiresValue () const
 
bool requiresFirstDerivative () const
 
bool requiresSecondDerivative () const
 
bool canSolveConstrained () const
 
bool requiresClosestFeasible () const
 
virtual ~AbstractOptimizer ()
 
virtual void init (ObjectiveFunctionType const &function)
 Initialize the optimizer for the supplied objective function. More...
 
- Public Member Functions inherited from shark::INameable
virtual ~INameable ()
 
- Public Member Functions inherited from shark::ISerializable
virtual ~ISerializable ()
 Virtual d'tor. More...
 
void load (InArchive &archive, unsigned int version)
 Versioned loading of components, calls read(...). More...
 
void save (OutArchive &archive, unsigned int version) const
 Versioned storing of components, calls write(...). More...
 
 BOOST_SERIALIZATION_SPLIT_MEMBER ()
 

Protected Types

typedef shark::Individual< RealVector, RealVector > IndividualType
 The individual type of the SMS-EMOA. More...
 

Protected Member Functions

void doInit (std::vector< SearchPointType > const &initialSearchPoints, std::vector< ResultType > const &functionValues, RealVector const &lowerBounds, RealVector const &upperBounds, std::size_t mu, double nm, double nc, double crossover_prob)
 
std::vector< IndividualTypegenerateOffspring () const
 
void updatePopulation (std::vector< IndividualType > const &offspring)
 
- Protected Member Functions inherited from shark::AbstractOptimizer< RealVector, RealVector, std::vector< ResultSet< RealVector, RealVector > > >
void checkFeatures (ObjectiveFunctionType const &objectiveFunction)
 Convenience function that checks whether the features of the supplied objective function match with the required features of the optimizer. More...
 

Protected Attributes

std::vector< IndividualTypem_parents
 Population of size \(\mu + 1\). More...
 
- Protected Attributes inherited from shark::AbstractMultiObjectiveOptimizer< RealVector >
SolutionType m_best
 The current Pareto-set/-front. More...
 
- Protected Attributes inherited from shark::AbstractOptimizer< RealVector, RealVector, std::vector< ResultSet< RealVector, RealVector > > >
Features m_features
 

Additional Inherited Members

- Public Types inherited from shark::AbstractMultiObjectiveOptimizer< RealVector >
typedef super::SearchPointType SearchPointType
 
typedef super::SolutionType SolutionType
 
typedef super::ObjectiveFunctionType ObjectiveFunctionType
 
- Public Types inherited from shark::AbstractOptimizer< RealVector, RealVector, std::vector< ResultSet< RealVector, RealVector > > >
enum  Feature
 Models features that the optimizer requires from the objective function. More...
 
typedef RealVector SearchPointType
 
typedef RealVector ResultType
 
typedef std::vector< ResultSet< RealVector, RealVector > > SolutionType
 
typedef AbstractObjectiveFunction< RealVector, ResultTypeObjectiveFunctionType
 
typedef TypedFlags< FeatureFeatures
 
typedef TypedFeatureNotAvailableException< FeatureFeatureNotAvailableException
 

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 60 of file SMS-EMOA.h.

Member Typedef Documentation

◆ IndividualType

typedef shark::Individual<RealVector,RealVector> shark::SMSEMOA::IndividualType
protected

The individual type of the SMS-EMOA.

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

Constructor & Destructor Documentation

◆ SMSEMOA()

Member Function Documentation

◆ crossoverProbability()

double shark::SMSEMOA::crossoverProbability ( ) const
inline

Returns the probability that crossover is applied.

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

Referenced by init().

◆ doInit()

void shark::SMSEMOA::doInit ( std::vector< SearchPointType > const &  initialSearchPoints,
std::vector< ResultType > const &  functionValues,
RealVector const &  lowerBounds,
RealVector const &  upperBounds,
std::size_t  mu,
double  nm,
double  nc,
double  crossover_prob 
)
inlineprotected

◆ generateOffspring()

std::vector<IndividualType> shark::SMSEMOA::generateOffspring ( ) const
inlineprotected

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

References m_parents, and mu().

Referenced by step().

◆ indicator() [1/2]

HypervolumeIndicator& shark::SMSEMOA::indicator ( )
inline

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

◆ indicator() [2/2]

HypervolumeIndicator const& shark::SMSEMOA::indicator ( ) const
inline

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

◆ init()

void shark::SMSEMOA::init ( ObjectiveFunctionType const &  function,
std::vector< SearchPointType > const &  initialSearchPoints 
)
inlinevirtual

Initializes the algorithm for the supplied objective function.

Parameters
[in]functionThe objective function.
[in]initialSearchPointsA set of intiial search points.

Implements shark::AbstractOptimizer< RealVector, RealVector, std::vector< ResultSet< RealVector, RealVector > > >.

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

References shark::AbstractOptimizer< RealVector, RealVector, std::vector< ResultSet< RealVector, RealVector > > >::checkFeatures(), crossoverProbability(), doInit(), shark::BoxConstraintHandler< Vector >::lower(), mu(), nc(), nm(), and SHARK_RUNTIME_CHECK.

◆ mu() [1/2]

unsigned int shark::SMSEMOA::mu ( ) const
inline

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

Referenced by doInit(), generateOffspring(), init(), and updatePopulation().

◆ mu() [2/2]

unsigned int& shark::SMSEMOA::mu ( )
inline

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

◆ name()

std::string shark::SMSEMOA::name ( ) const
inlinevirtual

returns the name of the object

Reimplemented from shark::INameable.

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

◆ nc()

double shark::SMSEMOA::nc ( ) const
inline

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

References shark::SimulatedBinaryCrossover< PointType >::m_nc.

Referenced by doInit(), and init().

◆ nm()

double shark::SMSEMOA::nm ( ) const
inline

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

References shark::PolynomialMutator::m_nm.

Referenced by doInit(), and init().

◆ numInitPoints()

std::size_t shark::SMSEMOA::numInitPoints ( ) const
inlinevirtual

Returns the number of points this method requires for initialisation.

The number of points supplied is allowed to be smaller, however in this case the optimizer will resort to techniques generating additional points if needed.

Implements shark::AbstractOptimizer< RealVector, RealVector, std::vector< ResultSet< RealVector, RealVector > > >.

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

◆ read()

void shark::SMSEMOA::read ( InArchive archive)
inlinevirtual

Read the component from the supplied archive.

Parameters
[in,out]archiveThe archive to read from.

Reimplemented from shark::ISerializable.

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

References shark::AbstractMultiObjectiveOptimizer< RealVector >::m_best, and m_parents.

◆ step()

void shark::SMSEMOA::step ( ObjectiveFunctionType const &  function)
inlinevirtual

Executes one iteration of the algorithm.

Parameters
[in]functionThe function to iterate upon.

Implements shark::AbstractOptimizer< RealVector, RealVector, std::vector< ResultSet< RealVector, RealVector > > >.

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

References generateOffspring(), and updatePopulation().

◆ updatePopulation()

void shark::SMSEMOA::updatePopulation ( std::vector< IndividualType > const &  offspring)
inlineprotected

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

References shark::AbstractMultiObjectiveOptimizer< RealVector >::m_best, m_parents, and mu().

Referenced by step().

◆ write()

void shark::SMSEMOA::write ( OutArchive archive) const
inlinevirtual

Write the component to the supplied archive.

Parameters
[in,out]archiveThe archive to write to.

Reimplemented from shark::ISerializable.

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

References shark::AbstractMultiObjectiveOptimizer< RealVector >::m_best, and m_parents.

Member Data Documentation

◆ m_parents

std::vector<IndividualType> shark::SMSEMOA::m_parents
protected

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

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

Referenced by doInit(), generateOffspring(), read(), updatePopulation(), and write().


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