Creates a multi-objective Benchmark from a set of given single objective functions. More...
#include <shark/ObjectiveFunctions/Benchmarks/MultiObjectiveBenchmark.h>
Public Member Functions | |
MultiObjectiveBenchmark (std::size_t numVariables=5) | |
std::string | name () const |
Name of the Benchmark. | |
bool | hasScalableDimensionality () const |
void | setNumberOfVariables (std::size_t numberOfVariables) |
Adjusts the number of variables if the function is scalable. | |
std::size_t | numberOfObjectives () const |
std::size_t | numberOfVariables () const |
Accesses the number of variables. | |
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 | |
SearchPointType | proposeStartingPoint () const |
Proposes a starting point in the feasible search space of the function. | |
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. | |
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. | |
Public Member Functions inherited from shark::AbstractObjectiveFunction< PointType, ResultT > | |
const Features & | features () const |
virtual void | updateFeatures () |
bool | hasValue () const |
returns whether this function can calculate it's function value | |
bool | hasFirstDerivative () const |
returns whether this function can calculate the first derivative | |
bool | hasSecondDerivative () const |
returns whether this function can calculate the second derivative | |
bool | canProposeStartingPoint () const |
returns whether this function can propose a starting point. | |
bool | isConstrained () const |
returns whether this function can return | |
bool | hasConstraintHandler () const |
returns whether this function can return | |
bool | canProvideClosestFeasible () const |
Returns whether this function can calculate thee closest feasible to an infeasible point. | |
bool | isThreadSafe () const |
Returns true, when the function can be usd in parallel threads. | |
bool | isNoisy () const |
Returns true, when the function can be usd in parallel threads. | |
AbstractObjectiveFunction () | |
Default ctor. | |
virtual | ~AbstractObjectiveFunction () |
Virtual destructor. | |
void | setRng (random::rng_type *rng) |
Sets the Rng used by the objective function. | |
virtual bool | hasScalableObjectives () const |
virtual void | setNumberOfObjectives (std::size_t numberOfObjectives) |
Adjusts the number of objectives if the function is scalable. | |
std::size_t | evaluationCounter () const |
Accesses the evaluation counter of the function. | |
AbstractConstraintHandler< SearchPointType > const & | getConstraintHandler () const |
Returns the constraint handler of the function if it has one. | |
virtual bool | isFeasible (const SearchPointType &input) const |
Tests whether a point in SearchSpace is feasible, e.g., whether the constraints are fulfilled. | |
virtual void | closestFeasible (SearchPointType &input) const |
If supported, the supplied point is repaired such that it satisfies all of the function's constraints. | |
ResultType | operator() (SearchPointType const &input) const |
Evaluates the function. Useful together with STL-Algorithms like std::transform. | |
virtual ResultType | evalDerivative (SearchPointType const &input, SecondOrderDerivative &derivative) const |
Evaluates the objective function and calculates its gradient. | |
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< Feature > | Features |
This statement declares the member m_features. See Core/Flags.h for details. | |
typedef TypedFeatureNotAvailableException< Feature > | FeatureNotAvailableException |
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. | |
Protected Attributes inherited from shark::AbstractObjectiveFunction< PointType, ResultT > | |
Features | m_features |
std::size_t | m_evaluationCounter |
Evaluation counter, default value: 0. | |
AbstractConstraintHandler< SearchPointType > const * | m_constraintHandler |
random::rng_type * | mep_rng |
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 k-th objective can be queried via the get<k> 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 71 of file MultiObjectiveBenchmark.h.
|
inline |
Definition at line 73 of file MultiObjectiveBenchmark.h.
References shark::AbstractObjectiveFunction< PointType, ResultT >::CAN_PROPOSE_STARTING_POINT, shark::AbstractObjectiveFunction< PointType, ResultT >::HAS_FIRST_DERIVATIVE, shark::AbstractObjectiveFunction< PointType, ResultT >::m_features, shark::TypedFlags< Flag >::reset(), and shark::benchmarks::MultiObjectiveBenchmark< Objectives >::setNumberOfVariables().
|
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 149 of file MultiObjectiveBenchmark.h.
References shark::AbstractObjectiveFunction< PointType, ResultT >::m_evaluationCounter, and shark::benchmarks::MultiObjectiveBenchmark< Objectives >::numberOfObjectives().
|
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 159 of file MultiObjectiveBenchmark.h.
References shark::benchmarks::MultiObjectiveBenchmark< Objectives >::numberOfObjectives(), and shark::benchmarks::MultiObjectiveBenchmark< Objectives >::numberOfVariables().
|
inline |
Definition at line 114 of file MultiObjectiveBenchmark.h.
|
inline |
Definition at line 118 of file MultiObjectiveBenchmark.h.
|
inlinevirtual |
Reimplemented from shark::AbstractObjectiveFunction< PointType, ResultT >.
Definition at line 94 of file MultiObjectiveBenchmark.h.
|
inlinevirtual |
\ Initializes the functions as well as picks random rotations and translations
Reimplemented from shark::AbstractObjectiveFunction< PointType, ResultT >.
Definition at line 123 of file MultiObjectiveBenchmark.h.
References shark::random::gauss(), shark::AbstractObjectiveFunction< PointType, ResultT >::mep_rng, and shark::benchmarks::MultiObjectiveBenchmark< Objectives >::numberOfVariables().
|
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 89 of file MultiObjectiveBenchmark.h.
|
inlinevirtual |
Reimplemented from shark::AbstractObjectiveFunction< PointType, ResultT >.
Definition at line 105 of file MultiObjectiveBenchmark.h.
Referenced by shark::benchmarks::MultiObjectiveBenchmark< Objectives >::eval(), and shark::benchmarks::MultiObjectiveBenchmark< Objectives >::evalDerivative().
|
inlinevirtual |
Accesses the number of variables.
Implements shark::AbstractObjectiveFunction< PointType, ResultT >.
Definition at line 109 of file MultiObjectiveBenchmark.h.
Referenced by shark::benchmarks::MultiObjectiveBenchmark< Objectives >::evalDerivative(), shark::benchmarks::MultiObjectiveBenchmark< Objectives >::init(), shark::benchmarks::MultiObjectiveBenchmark< Objectives >::proposeStartingPoint(), and shark::benchmarks::MultiObjectiveBenchmark< Objectives >::setNumberOfVariables().
|
inlinevirtual |
Proposes a starting point in the feasible search space of the function.
FeatureNotAvailableException | in the default implementation and if a function does not support this feature. |
Reimplemented from shark::AbstractObjectiveFunction< PointType, ResultT >.
Definition at line 138 of file MultiObjectiveBenchmark.h.
References shark::random::discrete(), shark::random::gauss(), shark::AbstractObjectiveFunction< PointType, ResultT >::mep_rng, and shark::benchmarks::MultiObjectiveBenchmark< Objectives >::numberOfVariables().
|
inlinevirtual |
Adjusts the number of variables if the function is scalable.
[in] | numberOfVariables | The new dimension. |
Reimplemented from shark::AbstractObjectiveFunction< PointType, ResultT >.
Definition at line 98 of file MultiObjectiveBenchmark.h.
References shark::benchmarks::MultiObjectiveBenchmark< Objectives >::numberOfVariables(), and SHARK_RUNTIME_CHECK.
Referenced by shark::benchmarks::MultiObjectiveBenchmark< Objectives >::MultiObjectiveBenchmark().