Optimist  0.0.0
A C++ library for optimization
Loading...
Searching...
No Matches
Optimist::FunctionBase< Input, Output, DerivedFunction > Class Template Reference

Class container for the generic function. More...

#include <Function.hh>

Inherited by Optimist::Function< Input, Output, DerivedFunction >.

Public Types

using InputTrait = TypeTrait<Input>
using OutputTrait = TypeTrait<Output>
using Scalar = typename InputTrait::Scalar
using FirstDerivative
using SecondDerivative

Public Member Functions

 FunctionBase ()
constexpr std::string name () const
bool evaluate (const Input &x, Output &out) const
bool first_derivative (const Input &x, FirstDerivative &out) const
bool second_derivative (const Input &x, SecondDerivative &out) const
constexpr Integer input_dimension () const
constexpr Integer output_dimension () const
const std::vector< Input > & solutions () const
const std::vector< Input > & guesses () const
const Input & solution (const Integer i) const
const Input & guess (const Integer i) const
bool is_solution (const Input &x, const Scalar tol=FunctionBase::SQRT_EPSILON) const

Protected Attributes

std::vector< Input > m_solutions
std::vector< Input > m_guesses

Detailed Description

template<typename Input, typename Output, typename DerivedFunction>
requires std::is_same<typename TypeTrait<Input>::Scalar, typename TypeTrait<Output>::Scalar>::value && (TypeTrait<Input>::IsScalar || TypeTrait<Input>::IsEigen) && (TypeTrait<Output>::IsScalar || TypeTrait<Output>::IsEigen) && (!TypeTrait<Input>::IsFixed || TypeTrait<Input>::Dimension > 0) && (!TypeTrait<Output>::IsFixed || TypeTrait<Output>::Dimension > 0) && (!(TypeTrait<Input>::IsEigen && TypeTrait<Output>::IsEigen) || (TypeTrait<Input>::IsFixed && TypeTrait<Output>::IsFixed) || (TypeTrait<Input>::IsDynamic && TypeTrait<Output>::IsDynamic) || (TypeTrait<Input>::IsSparse && TypeTrait<Output>::IsSparse))
class Optimist::FunctionBase< Input, Output, DerivedFunction >
Template Parameters
InputFunction input type.
OutputFunction output type.
DerivedFunctionDerived function class.

Member Typedef Documentation

◆ FirstDerivative

template<typename Input, typename Output, typename DerivedFunction>
using Optimist::FunctionBase< Input, Output, DerivedFunction >::FirstDerivative
Initial value:
std::conditional_t<
InputTrait::IsEigen || OutputTrait::IsEigen,
std::conditional_t<InputTrait::IsSparse || OutputTrait::IsSparse,
Eigen::SparseMatrix<Scalar>,
Eigen::Matrix<Scalar,
OutputTrait::Dimension,
InputTrait::Dimension>>,
typename InputTrait::Scalar Scalar
Definition Function.hh:53

◆ InputTrait

template<typename Input, typename Output, typename DerivedFunction>
using Optimist::FunctionBase< Input, Output, DerivedFunction >::InputTrait = TypeTrait<Input>

◆ OutputTrait

template<typename Input, typename Output, typename DerivedFunction>
using Optimist::FunctionBase< Input, Output, DerivedFunction >::OutputTrait = TypeTrait<Output>

◆ Scalar

template<typename Input, typename Output, typename DerivedFunction>
using Optimist::FunctionBase< Input, Output, DerivedFunction >::Scalar = typename InputTrait::Scalar

◆ SecondDerivative

template<typename Input, typename Output, typename DerivedFunction>
using Optimist::FunctionBase< Input, Output, DerivedFunction >::SecondDerivative
Initial value:
std::conditional_t<
InputTrait::IsEigen || OutputTrait::IsEigen,
std::conditional_t<InputTrait::IsSparse || OutputTrait::IsSparse,
std::vector<Eigen::SparseMatrix<Scalar>>,
std::vector<Eigen::Matrix<Scalar,
OutputTrait::Dimension,
InputTrait::Dimension>>>,

Constructor & Destructor Documentation

◆ FunctionBase()

template<typename Input, typename Output, typename DerivedFunction>
Optimist::FunctionBase< Input, Output, DerivedFunction >::FunctionBase ( )
inline

Class constructor for the function.

Member Function Documentation

◆ evaluate()

template<typename Input, typename Output, typename DerivedFunction>
bool Optimist::FunctionBase< Input, Output, DerivedFunction >::evaluate ( const Input & x,
Output & out ) const
inline

Compute the function value at the input point.

Parameters
[in]xInput point.
[out]outThe function value.
Returns
The boolean flag for successful evaluation.

◆ first_derivative()

template<typename Input, typename Output, typename DerivedFunction>
bool Optimist::FunctionBase< Input, Output, DerivedFunction >::first_derivative ( const Input & x,
FirstDerivative & out ) const
inline

Compute the function first derivative at the input point.

Parameters
[in]xInput point.
[out]outThe function first derivative.
Returns
The boolean flag for successful evaluation.

◆ guess()

template<typename Input, typename Output, typename DerivedFunction>
const Input & Optimist::FunctionBase< Input, Output, DerivedFunction >::guess ( const Integer i) const
inline

Retrieve the initial guess at the index.

Parameters
[in]iThe index of the initial guess.
Returns
The initial guess.

◆ guesses()

template<typename Input, typename Output, typename DerivedFunction>
const std::vector< Input > & Optimist::FunctionBase< Input, Output, DerivedFunction >::guesses ( ) const
inline

Get the vector of initial guesses.

Returns
The vector of initial guesses.

◆ input_dimension()

template<typename Input, typename Output, typename DerivedFunction>
Integer Optimist::FunctionBase< Input, Output, DerivedFunction >::input_dimension ( ) const
inlineconstexpr

Get the input dimension of the function.

Returns
The input dimension of the function.

◆ is_solution()

template<typename Input, typename Output, typename DerivedFunction>
bool Optimist::FunctionBase< Input, Output, DerivedFunction >::is_solution ( const Input & x,
const Scalar tol = FunctionBase< Input, Output, DerivedFunction >::SQRT_EPSILON ) const
inline

Check if the input point is a known solution.

Parameters
[in]xInput point.
[in]tolTolerance.
Returns
True if the input point is a known solution, false otherwise.

◆ name()

template<typename Input, typename Output, typename DerivedFunction>
std::string Optimist::FunctionBase< Input, Output, DerivedFunction >::name ( ) const
inlineconstexpr

Get the function name.

Returns
The function name.

◆ output_dimension()

template<typename Input, typename Output, typename DerivedFunction>
Integer Optimist::FunctionBase< Input, Output, DerivedFunction >::output_dimension ( ) const
inlineconstexpr

Get the output dimension of the function.

Returns
The output dimension of the function.

◆ second_derivative()

template<typename Input, typename Output, typename DerivedFunction>
bool Optimist::FunctionBase< Input, Output, DerivedFunction >::second_derivative ( const Input & x,
SecondDerivative & out ) const
inline

Compute the function second derivative at the input point.

Parameters
[in]xInput point.
[out]outThe function second derivative.
Returns
The boolean flag for successful evaluation.

◆ solution()

template<typename Input, typename Output, typename DerivedFunction>
const Input & Optimist::FunctionBase< Input, Output, DerivedFunction >::solution ( const Integer i) const
inline

Retrieve the known solution at the index.

Parameters
[in]iThe index of the known solution.
Returns
The known solution.

◆ solutions()

template<typename Input, typename Output, typename DerivedFunction>
const std::vector< Input > & Optimist::FunctionBase< Input, Output, DerivedFunction >::solutions ( ) const
inline

Get the vector of known solutions.

Returns
The vector of known solutions.

Member Data Documentation

◆ m_guesses

template<typename Input, typename Output, typename DerivedFunction>
std::vector<Input> Optimist::FunctionBase< Input, Output, DerivedFunction >::m_guesses
protected

Suggested initial guess used for testing.

◆ m_solutions

template<typename Input, typename Output, typename DerivedFunction>
std::vector<Input> Optimist::FunctionBase< Input, Output, DerivedFunction >::m_solutions
protected

Known solutions used for test purposes.


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