Implements the SMS-EMOA. More...
#include <shark/Algorithms/DirectSearch/SMS-EMOA.h>
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... | |
HypervolumeIndicator & | indicator () |
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 Features & | features () 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< IndividualType > | generateOffspring () 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< IndividualType > | m_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, ResultType > | ObjectiveFunctionType |
typedef TypedFlags< Feature > | Features |
typedef TypedFeatureNotAvailableException< Feature > | FeatureNotAvailableException |
Implements the SMS-EMOA.
Please see the following paper for further reference:
Definition at line 60 of file SMS-EMOA.h.
|
protected |
The individual type of the SMS-EMOA.
Definition at line 176 of file SMS-EMOA.h.
|
inline |
|
inline |
Returns the probability that crossover is applied.
Definition at line 75 of file SMS-EMOA.h.
Referenced by init().
|
inlineprotected |
Definition at line 178 of file SMS-EMOA.h.
References shark::random::discrete(), shark::PolynomialMutator::init(), shark::SimulatedBinaryCrossover< PointType >::init(), shark::AbstractMultiObjectiveOptimizer< RealVector >::m_best, shark::SimulatedBinaryCrossover< PointType >::m_nc, shark::PolynomialMutator::m_nm, m_parents, mu(), nc(), nm(), and SIZE_CHECK.
Referenced by init().
|
inlineprotected |
|
inline |
Definition at line 99 of file SMS-EMOA.h.
|
inline |
Definition at line 102 of file SMS-EMOA.h.
|
inlinevirtual |
Initializes the algorithm for the supplied objective function.
[in] | function | The objective function. |
[in] | initialSearchPoints | A 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.
|
inline |
Definition at line 87 of file SMS-EMOA.h.
Referenced by doInit(), generateOffspring(), init(), and updatePopulation().
|
inline |
Definition at line 91 of file SMS-EMOA.h.
|
inlinevirtual |
returns the name of the object
Reimplemented from shark::INameable.
Definition at line 70 of file SMS-EMOA.h.
|
inline |
Definition at line 83 of file SMS-EMOA.h.
References shark::SimulatedBinaryCrossover< PointType >::m_nc.
|
inline |
Definition at line 79 of file SMS-EMOA.h.
References shark::PolynomialMutator::m_nm.
|
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.
|
inlinevirtual |
Read the component from the supplied archive.
[in,out] | archive | The 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.
|
inlinevirtual |
Executes one iteration of the algorithm.
[in] | function | The 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().
|
inlineprotected |
Definition at line 229 of file SMS-EMOA.h.
References shark::AbstractMultiObjectiveOptimizer< RealVector >::m_best, m_parents, and mu().
Referenced by step().
|
inlinevirtual |
Write the component to the supplied archive.
[in,out] | archive | The 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.
|
protected |
Population of size \(\mu + 1\).
Definition at line 247 of file SMS-EMOA.h.
Referenced by doInit(), generateOffspring(), read(), updatePopulation(), and write().