shark::MultiObjectiveBenchmark< Objectives > Class Template Reference

Creates a multi-objective Benchmark from a set of given single objective functions. More...

#include <shark/ObjectiveFunctions/Benchmarks/MultiObjectiveBenchmark.h>

+ Inheritance diagram for shark::MultiObjectiveBenchmark< Objectives >:

Public Member Functions

 MultiObjectiveBenchmark (std::size_t numVariables=5)
 
std::string name () const
 Name of the Benchmark. More...
 
bool hasScalableDimensionality () const
 
void setNumberOfVariables (std::size_t numberOfVariables)
 Adjusts the number of variables if the function is scalable. More...
 
std::size_t numberOfObjectives () const
 
std::size_t numberOfVariables () const
 Accesses the number of variables. More...
 
template<int N>
std::tuple_element< N, std::tuple< Objectives... > >::type & get ()
 
template<int N>
std::tuple_element< N, std::tuple< Objectives... > >::type const & get () const
 
void init ()
 \ Initializes the functions as well as picks random rotations and translations More...
 
SearchPointType proposeStartingPoint () const
 Proposes a starting point in the feasible search space of the function. More...
 
ResultType eval (SearchPointType const &x) const
 Returns the vector (f_1(x),...,f_N(x)) of the N objectives in the benchmark for the current point. More...
 
ResultType evalDerivative (SearchPointType const &x, FirstOrderDerivative &derivative) const
 Calculates function value as well as the the Jacobian( d/dxf_1(x),...,d/dx f_N(x)) of the N objectives in the benchmark for the current point. More...
 
- Public Member Functions inherited from shark::AbstractObjectiveFunction< PointType, ResultT >
const Featuresfeatures () const
 
virtual void updateFeatures ()
 
bool hasValue () const
 returns whether this function can calculate it's function value More...
 
bool hasFirstDerivative () const
 returns whether this function can calculate the first derivative More...
 
bool hasSecondDerivative () const
 returns whether this function can calculate the second derivative More...
 
bool canProposeStartingPoint () const
 returns whether this function can propose a starting point. More...
 
bool isConstrained () const
 returns whether this function can return More...
 
bool hasConstraintHandler () const
 returns whether this function can return More...
 
bool canProvideClosestFeasible () const
 Returns whether this function can calculate thee closest feasible to an infeasible point. More...
 
bool isThreadSafe () const
 Returns true, when the function can be usd in parallel threads. More...
 
bool isNoisy () const
 Returns true, when the function can be usd in parallel threads. More...
 
 AbstractObjectiveFunction ()
 Default ctor. More...
 
virtual ~AbstractObjectiveFunction ()
 Virtual destructor. More...
 
void setRng (random::rng_type *rng)
 Sets the Rng used by the objective function. More...
 
virtual bool hasScalableObjectives () const
 
virtual void setNumberOfObjectives (std::size_t numberOfObjectives)
 Adjusts the number of objectives if the function is scalable. More...
 
std::size_t evaluationCounter () const
 Accesses the evaluation counter of the function. More...
 
AbstractConstraintHandler< SearchPointType > const & getConstraintHandler () const
 Returns the constraint handler of the function if it has one. More...
 
virtual bool isFeasible (const SearchPointType &input) const
 Tests whether a point in SearchSpace is feasible, e.g., whether the constraints are fulfilled. More...
 
virtual void closestFeasible (SearchPointType &input) const
 If supported, the supplied point is repaired such that it satisfies all of the function's constraints. More...
 
ResultType operator() (SearchPointType const &input) const
 Evaluates the function. Useful together with STL-Algorithms like std::transform. More...
 
virtual ResultType evalDerivative (SearchPointType const &input, SecondOrderDerivative &derivative) const
 Evaluates the objective function and calculates its gradient. More...
 
- Public Member Functions inherited from shark::INameable
virtual ~INameable ()
 

Additional Inherited Members

- Public Types inherited from shark::AbstractObjectiveFunction< PointType, ResultT >
enum  Feature {
  HAS_VALUE = 1, HAS_FIRST_DERIVATIVE = 2, HAS_SECOND_DERIVATIVE = 4, CAN_PROPOSE_STARTING_POINT = 8,
  IS_CONSTRAINED_FEATURE = 16, HAS_CONSTRAINT_HANDLER = 32, CAN_PROVIDE_CLOSEST_FEASIBLE = 64, IS_THREAD_SAFE = 128,
  IS_NOISY = 256
}
 List of features that are supported by an implementation. More...
 
typedef PointType SearchPointType
 
typedef ResultT ResultType
 
typedef boost::mpl::if_< std::is_arithmetic< ResultT >, SearchPointType, RealMatrix >::type FirstOrderDerivative
 
typedef TypedFlags< FeatureFeatures
 This statement declares the member m_features. See Core/Flags.h for details. More...
 
typedef TypedFeatureNotAvailableException< FeatureFeatureNotAvailableException
 
- Protected Member Functions inherited from shark::AbstractObjectiveFunction< PointType, ResultT >
void announceConstraintHandler (AbstractConstraintHandler< SearchPointType > const *handler)
 helper function which is called to announce the presence of an constraint handler. More...
 
- Protected Attributes inherited from shark::AbstractObjectiveFunction< PointType, ResultT >
Features m_features
 
std::size_t m_evaluationCounter
 Evaluation counter, default value: 0. More...
 
AbstractConstraintHandler< SearchPointType > const * m_constraintHandler
 
random::rng_type * mep_rng
 

Detailed Description

template<class ... Objectives>
class shark::MultiObjectiveBenchmark< Objectives >

Creates a multi-objective Benchmark from a set of given single objective functions.

A variadic template is used to generate a set of benchmarks. eg MultiObjectiveBenchmark<Sphere,Ellispoid,Rosenbrock> sets up a three-objective Benchmark.

A random rotation and translation is applied to each benchmark function, thus MultiObjectiveBenchmark<Sphere,Sphere> forms a non-degenerate front. the ith objective can be queried via the get member function.

The generated translations are approximately sampled from the unit ball and starting points are also drawn by the same distribution around a random optimum (assuming the optimum is at (0,0) of the untranslated function

Note that all objectives must have scalable dimensionality

Definition at line 70 of file MultiObjectiveBenchmark.h.

Constructor & Destructor Documentation

◆ MultiObjectiveBenchmark()

template<class ... Objectives>
shark::MultiObjectiveBenchmark< Objectives >::MultiObjectiveBenchmark ( std::size_t  numVariables = 5)
inline

Definition at line 72 of file MultiObjectiveBenchmark.h.

Member Function Documentation

◆ eval()

template<class ... Objectives>
ResultType shark::MultiObjectiveBenchmark< Objectives >::eval ( SearchPointType const &  x) const
inlinevirtual

Returns the vector (f_1(x),...,f_N(x)) of the N objectives in the benchmark for the current point.

Reimplemented from shark::AbstractObjectiveFunction< PointType, ResultT >.

Definition at line 148 of file MultiObjectiveBenchmark.h.

◆ evalDerivative()

template<class ... Objectives>
ResultType shark::MultiObjectiveBenchmark< Objectives >::evalDerivative ( SearchPointType const &  x,
FirstOrderDerivative derivative 
) const
inlinevirtual

Calculates function value as well as the the Jacobian( d/dxf_1(x),...,d/dx f_N(x)) of the N objectives in the benchmark for the current point.

Reimplemented from shark::AbstractObjectiveFunction< PointType, ResultT >.

Definition at line 158 of file MultiObjectiveBenchmark.h.

◆ get() [1/2]

template<class ... Objectives>
template<int N>
std::tuple_element<N, std::tuple<Objectives...> >::type& shark::MultiObjectiveBenchmark< Objectives >::get ( )
inline

Definition at line 113 of file MultiObjectiveBenchmark.h.

◆ get() [2/2]

template<class ... Objectives>
template<int N>
std::tuple_element<N, std::tuple<Objectives...> >::type const& shark::MultiObjectiveBenchmark< Objectives >::get ( ) const
inline

Definition at line 117 of file MultiObjectiveBenchmark.h.

◆ hasScalableDimensionality()

template<class ... Objectives>
bool shark::MultiObjectiveBenchmark< Objectives >::hasScalableDimensionality ( ) const
inlinevirtual

◆ init()

template<class ... Objectives>
void shark::MultiObjectiveBenchmark< Objectives >::init ( )
inlinevirtual

\ Initializes the functions as well as picks random rotations and translations

Reimplemented from shark::AbstractObjectiveFunction< PointType, ResultT >.

Definition at line 122 of file MultiObjectiveBenchmark.h.

References shark::random::gauss().

◆ name()

template<class ... Objectives>
std::string shark::MultiObjectiveBenchmark< Objectives >::name ( ) const
inlinevirtual

Name of the Benchmark.

The name has the form Objective1/Objective2/Objective3/.../ObjectiveN where ObjectiveK is the name of the k-th objective.

Reimplemented from shark::INameable.

Definition at line 88 of file MultiObjectiveBenchmark.h.

◆ numberOfObjectives()

template<class ... Objectives>
std::size_t shark::MultiObjectiveBenchmark< Objectives >::numberOfObjectives ( ) const
inlinevirtual

◆ numberOfVariables()

template<class ... Objectives>
std::size_t shark::MultiObjectiveBenchmark< Objectives >::numberOfVariables ( ) const
inlinevirtual

Accesses the number of variables.

Implements shark::AbstractObjectiveFunction< PointType, ResultT >.

Definition at line 108 of file MultiObjectiveBenchmark.h.

◆ proposeStartingPoint()

template<class ... Objectives>
SearchPointType shark::MultiObjectiveBenchmark< Objectives >::proposeStartingPoint ( ) const
inlinevirtual

Proposes a starting point in the feasible search space of the function.

Returns
The generated starting point.
Exceptions
FeatureNotAvailableExceptionin the default implementation and if a function does not support this feature.

Reimplemented from shark::AbstractObjectiveFunction< PointType, ResultT >.

Definition at line 137 of file MultiObjectiveBenchmark.h.

References shark::random::discrete(), and shark::random::gauss().

◆ setNumberOfVariables()

template<class ... Objectives>
void shark::MultiObjectiveBenchmark< Objectives >::setNumberOfVariables ( std::size_t  numberOfVariables)
inlinevirtual

Adjusts the number of variables if the function is scalable.

Parameters
[in]numberOfVariablesThe new dimension.

Reimplemented from shark::AbstractObjectiveFunction< PointType, ResultT >.

Definition at line 97 of file MultiObjectiveBenchmark.h.

References SHARK_RUNTIME_CHECK.


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