MUQ  0.4.3
muq::Optimization::NLoptOptimizer Class Reference

#include <NLoptOptimizer.h>

Inheritance diagram for muq::Optimization::NLoptOptimizer:

Detailed Description

Definition at line 14 of file NLoptOptimizer.h.

Public Member Functions

 NLoptOptimizer (std::shared_ptr< muq::Modeling::ModPiece > const &cost, boost::property_tree::ptree const &pt)
 
virtual ~NLoptOptimizer ()=default
 
virtual std::pair< Eigen::VectorXd, double > Solve (std::vector< Eigen::VectorXd > const &inputs) override
 Solve the optimization problem. More...
 
- Public Member Functions inherited from muq::Optimization::Optimizer
 Optimizer (std::shared_ptr< muq::Modeling::ModPiece > const &cost, boost::property_tree::ptree const &pt)
 
virtual ~Optimizer ()=default
 
virtual void AddInequalityConstraint (std::vector< std::shared_ptr< muq::Modeling::ModPiece >> const &ineq)
 Add an inequality constraint to the optimization. More...
 
virtual void AddInequalityConstraint (std::shared_ptr< muq::Modeling::ModPiece > const &ineq)
 Add an inequality constraint to the optimization. More...
 
void ClearInequalityConstraint ()
 Clear all inequality constraints. More...
 
virtual void AddEqualityConstraint (std::vector< std::shared_ptr< muq::Modeling::ModPiece >> const &eq)
 Add an equality constraint to the optimization. More...
 
virtual void AddEqualityConstraint (std::shared_ptr< muq::Modeling::ModPiece > const &eq)
 Add an equality constraint to the optimization. More...
 
void ClearEqualityConstraint ()
 Clear all equality constraints. More...
 
- Public Member Functions inherited from muq::Modeling::WorkPiece
 WorkPiece ()
 Create a muq::Modeling::WorkPiece with no fixed number of inputs and outputs and variable input/output types. More...
 
 WorkPiece (int const num, WorkPiece::Fix const fix=WorkPiece::Fix::Inputs)
 Create a muq::Modeling::WorkPiece with either a fixed number of inputs or outputs and variable input/output types. More...
 
 WorkPiece (int const numIns, int const numOuts)
 Create a muq::Modeling::WorkPiece with a fixed number of inputs and outputs but variable input/output types. More...
 
 WorkPiece (std::vector< std::string > const &types, WorkPiece::Fix const fix=WorkPiece::Fix::Inputs)
 Create a muq::Modeling::WorkPiece with either a fixed number of inputs with specified types or a fixed number of outputs with specified types. More...
 
 WorkPiece (std::map< unsigned int, std::string > const &types, WorkPiece::Fix const fix=WorkPiece::Fix::Inputs)
 Create a muq::Modeling::WorkPiece where either some of the inputs have specified types or some of the outputs have specified types. More...
 
 WorkPiece (std::map< unsigned int, std::string > const &types, int const num, WorkPiece::Fix const fixTypes=WorkPiece::Fix::Inputs, WorkPiece::Fix const fixNum=WorkPiece::Fix::Inputs)
 Create a muq::Modeling::WorkPiece where either some of the inputs have specified types or some of the outputs have specified types and either the number of inputs or the number of outputs is fixed. More...
 
 WorkPiece (std::vector< std::string > const &types, int const num)
 Create a muq::Modeling::WorkPiece with a fixed number of inputs with specified types and a fixed number of outputs (of uknown type) More...
 
 WorkPiece (int const num, std::vector< std::string > const &types)
 Create a muq::Modeling::WorkPiece with a fixed number of outputs with specified types and a fixed number of inputs (of uknown type) More...
 
 WorkPiece (std::map< unsigned int, std::string > const &inTypes, int const numIns, int const numOuts)
 Create a muq::Modeling::WorkPiece where some of the inputs are known and we know the input and output numbers. More...
 
 WorkPiece (int const numIns, std::map< unsigned int, std::string > const &outTypes, int const numOuts)
 Create a muq::Modeling::WorkPiece where some of the outputs are known and we know the input and output numbers. More...
 
 WorkPiece (std::vector< std::string > const &inTypes, std::vector< std::string > const &outTypes)
 Create a muq::Modeling::WorkPiece with a fixed number of inputs and outputs with specified types. More...
 
 WorkPiece (std::map< unsigned int, std::string > const &inTypes, std::vector< std::string > const &outTypes)
 Create a muq::Modeling::WorkPiece where some of the inputs are known and all of the outputs have specified types. More...
 
 WorkPiece (std::map< unsigned int, std::string > const &inTypes, int const num, std::vector< std::string > const &outTypes)
 Create a muq::Modeling::WorkPiece where some of the inputs are known with a known number of inputs and all of the outputs have specified types. More...
 
 WorkPiece (std::vector< std::string > const &inTypes, std::map< unsigned int, std::string > const &outTypes)
 Create a muq::Modeling::WorkPiece where some of the outputs and all of the inputs have specified types. More...
 
 WorkPiece (std::vector< std::string > const &inTypes, std::map< unsigned int, std::string > const &outTypes, int const num)
 Create a muq::Modeling::WorkPiece where some of the outputs with a known number of outputs and all of the inputs have specified types. More...
 
 WorkPiece (std::map< unsigned int, std::string > const &inTypes, std::map< unsigned int, std::string > const &outTypes)
 Create a muq::Mdoeling::WorkPiece where some of the inputs and some of the outputs have specified types. More...
 
 WorkPiece (std::map< unsigned int, std::string > const &inTypes, int const numIn, std::map< unsigned int, std::string > const &outTypes)
 Create a muq::Mdoeling::WorkPiece where some of the inputs and some of the outputs have specified types with a fixed number of inputs. More...
 
 WorkPiece (std::map< unsigned int, std::string > const &inTypes, std::map< unsigned int, std::string > const &outTypes, int const numOut)
 Create a muq::Mdoeling::WorkPiece where some of the inputs and some of the outputs have specified types with a fixed number of outputs. More...
 
 WorkPiece (std::map< unsigned int, std::string > const &inTypes, int const numIn, std::map< unsigned int, std::string > const &outTypes, int const numOut)
 Create a muq::Mdoeling::WorkPiece where some of the inputs and some of the outputs have specified types with a fixed number of inputs and outputs. More...
 
virtual ~WorkPiece ()
 Default destructor. More...
 
std::vector< boost::any > const & Evaluate (std::vector< boost::any > const &ins)
 Evaluate this muq::Modeling::WorkPiece. More...
 
std::vector< boost::any > const & Evaluate (ref_vector< boost::any > const &ins)
 Evaluate this muq::Modeling::WorkPiece using references to the inputs. More...
 
std::vector< boost::any > const & Evaluate ()
 Evaluate this muq::Modeling::WorkPiece in the case that there are no inputs. More...
 
template<typename... Args>
std::vector< boost::any > const & Evaluate (Args... args)
 Evalaute this muq::Modeling::WorkPiece using multiple arguments. More...
 
std::string const & Name ()
 Get the (unique) name of this work piece. More...
 
void SetName (std::string const &newName)
 Set the name of this work piece. More...
 
std::string InputType (unsigned int inputNum, bool const demangle=true) const
 Get the input type (if we know it) for a specific input. More...
 
int InputSize (unsigned int inputNum) const
 Get the length of a vector valued input with fixed size. More...
 
void SetInputSize (unsigned int inputNum, int newSize)
 
std::string OutputType (unsigned int outputNum, bool const demangle=true) const
 Get the output type (if we know it) for a specific output. More...
 
std::map< unsigned int, std::string > OutputTypes () const
 Get the output types. More...
 
std::map< unsigned int, std::string > InputTypes () const
 Get the input types. More...
 
unsigned int ID () const
 Get the unique ID number. More...
 
virtual double GetRunTime (const std::string &method="Evaluate") const
 Get the average run time for one of the implemented methods. More...
 
virtual unsigned long int GetNumCalls (const std::string &method="Evaluate") const
 get the number of times one of the implemented methods has been called. More...
 
virtual void ResetCallTime ()
 Resets the number of call and times. More...
 

Additional Inherited Members

- Public Types inherited from muq::Optimization::Optimizer
typedef std::function< std::shared_ptr< Optimizer >std::shared_ptr< muq::Modeling::ModPiece > const &, boost::property_tree::ptree)> OptimizerConstructor
 
typedef std::map< std::string, OptimizerConstructorOptimizerMap
 
- Static Public Member Functions inherited from muq::Optimization::Optimizer
static std::shared_ptr< OptimizerConstruct (std::shared_ptr< muq::Modeling::ModPiece > const &cost, boost::property_tree::ptree const &options)
 
static std::shared_ptr< OptimizerMapGetOptimizerMap ()
 
static void ListMethods (std::string prefix="")
 
- Static Public Member Functions inherited from muq::Modeling::WorkPiece
static ref_vector< const boost::any > ToRefVector (std::vector< boost::any > const &anyVec)
 Create vector of references from a vector of boost::any's. More...
 
static ref_vector< const Eigen::VectorXd > ToRefVector (std::vector< Eigen::VectorXd > const &anyVec)
 
- Public Attributes inherited from muq::Modeling::WorkPiece
int numInputs
 The number of inputs. More...
 
int numOutputs
 The number of outputs. More...
 

Constructor & Destructor Documentation

◆ NLoptOptimizer()

NLoptOptimizer NLoptOptimizer NLoptOptimizer NLoptOptimizer NLoptOptimizer NLoptOptimizer NLoptOptimizer NLoptOptimizer NLoptOptimizer::NLoptOptimizer ( std::shared_ptr< muq::Modeling::ModPiece > const &  cost,
boost::property_tree::ptree const &  pt 
)

Definition at line 26 of file NLoptOptimizer.cpp.

◆ ~NLoptOptimizer()

virtual muq::Optimization::NLoptOptimizer::~NLoptOptimizer ( )
virtualdefault

Member Function Documentation

◆ Constraint()

void NLoptOptimizer::Constraint ( unsigned int  m,
double *  result,
unsigned int  n,
const double *  x,
double *  grad,
void *  f_data 
)
staticprivate

Definition at line 158 of file NLoptOptimizer.cpp.

References nlohmann::detail::dtoa_impl::n.

◆ Cost()

double NLoptOptimizer::Cost ( unsigned int  n,
const double *  x,
double *  grad,
void *  f_data 
)
staticprivate

Evaluate either the cost function or a constraint.

Parameters
[in]nThe size of the input
[in]xThe current point
[out]gradThe gradient of the cost/constraint
[in]f_dataA CostHelper
Returns
The cost/constraint value

Definition at line 138 of file NLoptOptimizer.cpp.

References nlohmann::detail::dtoa_impl::n.

◆ EvaluateImpl()

void NLoptOptimizer::EvaluateImpl ( muq::Modeling::ref_vector< boost::any > const &  inputs)
overrideprivatevirtual

Override the evaluate impl method (solve the optimization problem)

Parameters
[in]argsThe first input is the variable we are optimizing over

Reimplemented from muq::Optimization::Optimizer.

Definition at line 59 of file NLoptOptimizer.cpp.

References nlohmann::to_string().

◆ NLOptAlgorithm()

nlopt_algorithm NLoptOptimizer::NLOptAlgorithm ( std::string const &  alg) const
private

Get the NLOPT algorithm we are using.

Parameters
[in]algUser-input algorithm
Returns
The NLOPT algorithm

Definition at line 34 of file NLoptOptimizer.cpp.

◆ Solve()

std::pair< Eigen::VectorXd, double > NLoptOptimizer::Solve ( std::vector< Eigen::VectorXd > const &  inputs)
overridevirtual

Solve the optimization problem.

Parameters
[in]inputsThe first input is the variable we are optimizing over, second input are the cost function parameters, and the third input are the constraint parameters
Returns
First: the argmin, second: the minimum cost

Implements muq::Optimization::Optimizer.

Definition at line 125 of file NLoptOptimizer.cpp.

Member Data Documentation

◆ algorithm

const nlopt_algorithm muq::Optimization::NLoptOptimizer::algorithm
private

The algorithm used to solve the problem.

Definition at line 62 of file NLoptOptimizer.h.

◆ minimize

const bool muq::Optimization::NLoptOptimizer::minimize = true
private

True: minimize the cost function, False: maximize the cost function.

Definition at line 65 of file NLoptOptimizer.h.


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