Public Member Functions | List of all members
corbo::SimpleOptimizationProblemWithCallbacks Class Reference

Simple optimization problem formulation (callback based configuration) More...

#include <simple_optimization_problem.h>

Inheritance diagram for corbo::SimpleOptimizationProblemWithCallbacks:
Inheritance graph
[legend]

Public Member Functions

 SimpleOptimizationProblemWithCallbacks ()
 Default constructor (do not forget to initialize the parameter vector dimension manually) More...
 
 SimpleOptimizationProblemWithCallbacks (int param_dim)
 Construct Optimization Problem with a given parameter vector dimension. More...
 
- Public Member Functions inherited from corbo::SimpleOptimizationProblem
 SimpleOptimizationProblem ()
 
 SimpleOptimizationProblem (int parameter_dim)
 
void resizeParameterVector (int parameter_dim)
 Resize the dimension of the parameter vector. More...
 
void setX (const Eigen::Ref< const Eigen::VectorXd > &x)
 
Eigen::VectorXd & getXRef ()
 
const Eigen::VectorXd & getX () const
 
void setLowerBounds (const Eigen::Ref< const Eigen::VectorXd > &lb)
 
Eigen::VectorXd & getLowerBoundsRef ()
 
const Eigen::VectorXd & getLowerBounds () const
 
void setUpperBounds (const Eigen::Ref< const Eigen::VectorXd > &ub)
 
Eigen::VectorXd & getUpperBoundsRef ()
 
const Eigen::VectorXd & getUpperBounds () const
 
double getParameterValue (int idx) override
 Return specific value of the parameter vector. More...
 
void setParameterValue (int idx, double x) override
 Set specific value of the parameter vector. More...
 
void getBounds (Eigen::Ref< Eigen::VectorXd > lb, Eigen::Ref< Eigen::VectorXd > ub) override
 Get lower and upper bound vector. More...
 
void setBounds (const Eigen::Ref< const Eigen::VectorXd > &lb, const Eigen::Ref< const Eigen::VectorXd > &ub) override
 Set lower and upper bound vector. More...
 
double getLowerBound (int idx) override
 Return specific lower bound value of a parameter. More...
 
double getUpperBound (int idx) override
 Return specific upper bound of a parameter. More...
 
void setLowerBound (int idx, double lb) override
 Set specific lower bound of a parameter. More...
 
void setUpperBound (int idx, double ub) override
 Set specific upper bound of a parameter. More...
 
void getParameterVector (Eigen::Ref< Eigen::VectorXd > x) override
 Same as getX() but less efficient (overrides interface method, but here x must not be pre-allocated) More...
 
void setParameterVector (const Eigen::Ref< const Eigen::VectorXd > &x) override
 Same as setX() (overrides interface method) More...
 
int getParameterDimension () override
 Effictive dimension of the optimization parameter set (changeable, non-fixed part) More...
 
void applyIncrement (const Eigen::Ref< const Eigen::VectorXd > &increment) override
 Apply increment to the current parameter set. More...
 
void applyIncrement (int idx, double increment) override
 Apply increment to the current parameter set (single element overload) More...
 
void backupParameters () override
 Restore parameter set from the last backup and keep backup if desired. More...
 
void restoreBackupParameters (bool keep_backup) override
 Discard last backup (or all) More...
 
void discardBackupParameters (bool all=false) override
 
- Public Member Functions inherited from corbo::OptimizationProblemInterface
virtual void clear ()
 
virtual ~OptimizationProblemInterface ()
 
virtual double computeValueObjective ()
 
virtual void computeValues (double &non_lsq_obj_value, Eigen::Ref< Eigen::VectorXd > lsq_obj_values, Eigen::Ref< Eigen::VectorXd > eq_values, Eigen::Ref< Eigen::VectorXd > ineq_values)
 
virtual int finiteCombinedBoundsDimension ()
 Dimension of the set of finite bounds (combined such that each ub and lb component define a single dimension) More...
 
virtual int finiteBoundsDimension ()
 Dimension of the set of finite bounds (individual bounds ub and lb) More...
 
virtual void computeValuesActiveInequality (Eigen::Ref< Eigen::VectorXd > values, double weight=1.0)
 Compute the values of the active inequality constraints (elementwise max(0, c(x))) More...
 
virtual void computeDistanceFiniteCombinedBounds (Eigen::Ref< Eigen::VectorXd > values)
 Compute the distance to finite bound values (combined lower and upper) More...
 
virtual void computeLowerAndUpperBoundDiff (Eigen::Ref< Eigen::VectorXd > lb_minus_x, Eigen::Ref< Eigen::VectorXd > ub_minus_x)
 Compute the distance between parameters and bounds. More...
 
virtual void getParametersAndBoundsFinite (Eigen::Ref< Eigen::VectorXd > lb_finite_bounds, Eigen::Ref< Eigen::VectorXd > ub_finite_bounds, Eigen::Ref< Eigen::VectorXd > x_finite_bounds)
 Return bound and parameter vectors only for finite boudns. More...
 
virtual void computeGradientObjective (Eigen::Ref< Eigen::VectorXd > gradient)
 
virtual void computeGradientNonLsqObjective (Eigen::Ref< Eigen::VectorXd > gradient)
 
virtual void computeDenseJacobianLsqObjective (Eigen::Ref< Eigen::MatrixXd > jacobian, const double *multipliers=nullptr)
 Compute the objective Jacobian Jf(x) for the current parameter set. More...
 
virtual int computeSparseJacobianLsqObjectiveNNZ ()
 
virtual void computeSparseJacobianLsqObjectiveStructure (Eigen::Ref< Eigen::VectorXi > i_row, Eigen::Ref< Eigen::VectorXi > j_col)
 
virtual void computeSparseJacobianLsqObjectiveValues (Eigen::Ref< Eigen::VectorXd > values, const double *multipliers=nullptr)
 
virtual void computeSparseJacobianLsqObjective (Eigen::SparseMatrix< double > &jacobian, const double *multipliers=nullptr)
 
virtual void computeDenseJacobianEqualities (Eigen::Ref< Eigen::MatrixXd > jacobian, const double *multipliers=nullptr)
 Compute the equality constraint Jacobian Jceq(x) for the current parameter set. More...
 
virtual int computeSparseJacobianEqualitiesNNZ ()
 
virtual void computeSparseJacobianEqualitiesStructure (Eigen::Ref< Eigen::VectorXi > i_row, Eigen::Ref< Eigen::VectorXi > j_col)
 
virtual void computeSparseJacobianEqualitiesValues (Eigen::Ref< Eigen::VectorXd > values, const double *multipliers=nullptr)
 
virtual void computeSparseJacobianEqualities (Eigen::SparseMatrix< double > &jacobian, const double *multipliers=nullptr)
 
virtual void computeDenseJacobianInequalities (Eigen::Ref< Eigen::MatrixXd > jacobian, const double *multipliers=nullptr)
 Compute the inequality constraint Jacobian Jc(x) for the current parameter set. More...
 
virtual int computeSparseJacobianInequalitiesNNZ ()
 
virtual void computeSparseJacobianInequalitiesStructure (Eigen::Ref< Eigen::VectorXi > i_row, Eigen::Ref< Eigen::VectorXi > j_col)
 
virtual void computeSparseJacobianInequalitiesValues (Eigen::Ref< Eigen::VectorXd > values, const double *multipliers=nullptr)
 
virtual void computeSparseJacobianInequalities (Eigen::SparseMatrix< double > &jacobian, const double *multipliers=nullptr)
 
virtual void computeDenseJacobianActiveInequalities (Eigen::Ref< Eigen::MatrixXd > jacobian, double weight=1.0)
 Compute the Jacobian Jc(x) with non-zeros for active constraints c(x)>= 0 and zeros for inactive ones. More...
 
virtual void computeSparseJacobianActiveInequalitiesValues (Eigen::Ref< Eigen::VectorXd > values, double weight=1.0)
 
virtual void computeSparseJacobianActiveInequalities (Eigen::SparseMatrix< double > &jacobian, double weight=1.0)
 
virtual void computeDenseJacobianFiniteCombinedBounds (Eigen::Ref< Eigen::MatrixXd > jacobian, double weight=1.0)
 Compute the Jacobian for finite combined bounds. More...
 
virtual int computeSparseJacobianFiniteCombinedBoundsNNZ ()
 
virtual void computeSparseJacobianFiniteCombinedBoundsStructure (Eigen::Ref< Eigen::VectorXi > i_row, Eigen::Ref< Eigen::VectorXi > j_col)
 
virtual void computeSparseJacobianFiniteCombinedBoundsValues (Eigen::Ref< Eigen::VectorXd > values, double weight=1.0)
 
virtual void computeSparseJacobianFiniteCombinedBounds (Eigen::SparseMatrix< double > &jacobian, double weight=1.0)
 
virtual void computeDenseJacobianFiniteCombinedBoundsIdentity (Eigen::Ref< Eigen::MatrixXd > jacobian)
 Compute the Jacobian for finite combined bounds. More...
 
virtual void computeDenseJacobians (Eigen::Ref< Eigen::VectorXd > gradient_non_lsq_obj, Eigen::Ref< Eigen::MatrixXd > jacobian_lsq_obj, Eigen::Ref< Eigen::MatrixXd > jacobian_eq, Eigen::Ref< Eigen::MatrixXd > jacobian_ineq, const double *multipliers_lsq_obj=nullptr, const double *multipliers_eq=nullptr, const double *multipliers_ineq=nullptr, bool active_ineq=false, double active_ineq_weight=1.0)
 Compute the objective and constraint Jacobians at once. More...
 
virtual void computeSparseJacobiansNNZ (int &nnz_lsq_obj, int &nnz_eq, int &nnz_ineq)
 
virtual void computeSparseJacobiansStructure (Eigen::Ref< Eigen::VectorXi > i_row_obj, Eigen::Ref< Eigen::VectorXi > j_col_obj, Eigen::Ref< Eigen::VectorXi > i_row_eq, Eigen::Ref< Eigen::VectorXi > j_col_eq, Eigen::Ref< Eigen::VectorXi > i_row_ineq, Eigen::Ref< Eigen::VectorXi > j_col_ineq)
 
virtual void computeSparseJacobiansValues (Eigen::Ref< Eigen::VectorXd > values_obj, Eigen::Ref< Eigen::VectorXd > values_eq, Eigen::Ref< Eigen::VectorXd > values_ineq, const double *multipliers_obj=nullptr, const double *multipliers_eq=nullptr, const double *multipliers_ineq=nullptr, bool active_ineq=false, double active_ineq_weight=1.0)
 
virtual void computeSparseJacobians (Eigen::SparseMatrix< double > &jacobian_lsq_obj, Eigen::SparseMatrix< double > &jacobian_eq, Eigen::SparseMatrix< double > &jacobian_ineq, const double *multipliers_lsq_obj=nullptr, const double *multipliers_eq=nullptr, const double *multipliers_ineq=nullptr, bool active_ineq=false, double active_ineq_weight=1.0)
 
virtual void computeCombinedSparseJacobian (Eigen::SparseMatrix< double > &jacobian, bool objective_lsq, bool equality, bool inequality, bool finite_combined_bounds, bool active_ineq=false, double weight_eq=1.0, double weight_ineq=1.0, double weight_bounds=1.0, const Eigen::VectorXd *values=nullptr, const Eigen::VectorXi *col_nnz=nullptr)
 
virtual int computeCombinedSparseJacobiansNNZ (bool objective_lsq=true, bool equality=true, bool inequality=true)
 
virtual void computeCombinedSparseJacobiansStructure (Eigen::Ref< Eigen::VectorXi > i_row, Eigen::Ref< Eigen::VectorXi > j_col, bool objective_lsq=true, bool equality=true, bool inequality=true)
 
virtual void computeCombinedSparseJacobiansValues (Eigen::Ref< Eigen::VectorXd > values, bool objective_lsq=true, bool equality=true, bool inequality=true, const double *multipliers_obj=nullptr, const double *multipliers_eq=nullptr, const double *multipliers_ineq=nullptr)
 
virtual void computeGradientObjectiveAndCombinedSparseJacobiansValues (Eigen::Ref< Eigen::VectorXd > gradient, Eigen::Ref< Eigen::VectorXd > jac_values, bool equality=true, bool inequality=true, const double *multipliers_eq=nullptr, const double *multipliers_ineq=nullptr)
 
virtual void computeDenseHessianObjective (const Eigen::Ref< const Eigen::MatrixXd > &jacobian, Eigen::Ref< Eigen::MatrixXd > hessian, const double *multipliers=nullptr, bool jacob_scaled=true)
 Compute the objective Hessian Hf(x) for the current parameter set. More...
 
virtual void computeDenseHessianObjective (Eigen::Ref< Eigen::MatrixXd > hessian, double multiplier=1.0)
 
virtual int computeSparseHessianObjectiveNNZ (bool lower_part_only=false)
 
virtual void computeSparseHessianObjectiveStructure (Eigen::Ref< Eigen::VectorXi > i_row, Eigen::Ref< Eigen::VectorXi > j_col, bool lower_part_only=false)
 
virtual void computeSparseHessianObjectiveValues (Eigen::Ref< Eigen::VectorXd > values, double multiplier=1.0, bool lower_part_only=false)
 
virtual void computeSparseHessianObjective (Eigen::SparseMatrix< double > &hessian, double multiplier=1.0)
 
virtual void computeSparseHessianObjectiveLL (Eigen::SparseMatrix< double, Eigen::ColMajor, long long > &H, const Eigen::VectorXi *col_nnz=nullptr, bool upper_part_only=false)
 
virtual void computeSparseHessianObjectiveNNZperCol (Eigen::Ref< Eigen::VectorXi > col_nnz, bool upper_part_only=false)
 
virtual void computeDenseHessianEqualities (Eigen::Ref< Eigen::MatrixXd > hessian, const double *multipliers=nullptr)
 
virtual int computeSparseHessianEqualitiesNNZ (bool lower_part_only=false)
 
virtual void computeSparseHessianEqualitiesStructure (Eigen::Ref< Eigen::VectorXi > i_row, Eigen::Ref< Eigen::VectorXi > j_col, bool lower_part_only=false)
 
virtual void computeSparseHessianEqualitiesValues (Eigen::Ref< Eigen::VectorXd > values, const double *multipliers=nullptr, bool lower_part_only=false)
 
virtual void computeSparseHessianEqualities (Eigen::SparseMatrix< double > &hessian, const double *multipliers=nullptr)
 
virtual void computeDenseHessianInequalities (Eigen::Ref< Eigen::MatrixXd > hessian, const double *multipliers=nullptr)
 
virtual int computeSparseHessianInequalitiesNNZ (bool lower_part_only=false)
 
virtual void computeSparseHessianInequalitiesStructure (Eigen::Ref< Eigen::VectorXi > i_row, Eigen::Ref< Eigen::VectorXi > j_col, bool lower_part_only=false)
 
virtual void computeSparseHessianInequalitiesValues (Eigen::Ref< Eigen::VectorXd > values, const double *multipliers=nullptr, bool lower_part_only=false)
 
virtual void computeSparseHessianInequalities (Eigen::SparseMatrix< double > &hessian, const double *multipliers=nullptr)
 
virtual void computeDenseHessians (Eigen::Ref< Eigen::MatrixXd > hessian_obj, Eigen::Ref< Eigen::MatrixXd > hessian_eq, Eigen::Ref< Eigen::MatrixXd > hessian_ineq, double multiplier_obj=1.0, const double *multipliers_eq=nullptr, const double *multipliers_ineq=nullptr)
 
virtual void computeSparseHessians (Eigen::SparseMatrix< double > &hessian_obj, Eigen::SparseMatrix< double > &hessian_eq, Eigen::SparseMatrix< double > &hessian_ineq, double multiplier_obj=1.0, const double *multipliers_eq=nullptr, const double *multipliers_ineq=nullptr)
 
virtual void computeSparseHessiansNNZ (int &nnz_obj, int &nnz_eq, int &nnz_ineq, bool lower_part_only=false)
 
virtual void computeSparseHessiansStructure (Eigen::Ref< Eigen::VectorXi > i_row_obj, Eigen::Ref< Eigen::VectorXi > j_col_obj, Eigen::Ref< Eigen::VectorXi > i_row_eq, Eigen::Ref< Eigen::VectorXi > j_col_eq, Eigen::Ref< Eigen::VectorXi > i_row_ineq, Eigen::Ref< Eigen::VectorXi > j_col_ineq, bool lower_part_only=false)
 
virtual void computeSparseHessiansValues (Eigen::Ref< Eigen::VectorXd > values_obj, Eigen::Ref< Eigen::VectorXd > values_eq, Eigen::Ref< Eigen::VectorXd > values_ineq, double multiplier_obj=1.0, const double *multipliers_eq=nullptr, const double *multipliers_ineq=nullptr, bool lower_part_only=false)
 
virtual void computeSparseHessianLagrangian (Eigen::SparseMatrix< double, Eigen::ColMajor, long long > &H, const double *multipliers_eq, const double *multipliers_ineq, const Eigen::VectorXi *col_nnz=nullptr, bool upper_part_only=false)
 Compute the hessian of the lagrangian L(x) = f(x) + lambda1 * c(x) + lambda2 * ceq(x) More...
 
virtual void computeSparseHessianLagrangianNNZperCol (Eigen::Ref< Eigen::VectorXi > col_nnz, bool upper_part_only)
 
virtual void computeSparseJacobianTwoSideBoundedLinearForm (Eigen::SparseMatrix< double, Eigen::ColMajor, long long > &A, bool include_finite_bounds, const Eigen::VectorXi *col_nnz=nullptr)
 Compute the jacobian A for the linear form lbA <= A x <= lbB. More...
 
virtual void computeSparseJacobianTwoSideBoundedLinearFormNNZPerColumn (Eigen::Ref< Eigen::VectorXi > col_nnz, bool include_finite_bounds)
 
virtual int computeSparseJacobianTwoSideBoundedLinearFormNNZ (bool include_finite_bounds)
 
virtual void computeSparseJacobianTwoSideBoundedLinearFormStructure (Eigen::Ref< Eigen::VectorXi > i_row, Eigen::Ref< Eigen::VectorXi > j_col, bool include_finite_bounds)
 
virtual void computeSparseJacobianTwoSideBoundedLinearFormValues (Eigen::Ref< Eigen::VectorXd > values, bool include_finite_bounds)
 
virtual void computeSparseJacobianTwoSideBoundedLinearFormAndHessianLagrangian (Eigen::SparseMatrix< double, Eigen::ColMajor, long long > &H, const double *multipliers_eq, const double *multipliers_ineq, Eigen::SparseMatrix< double, Eigen::ColMajor, long long > &A, bool include_finite_bounds, const Eigen::VectorXi *col_nnz_H=nullptr, const Eigen::VectorXi *col_nnz_A=nullptr, bool upper_part_only_H=false)
 Compute the Jacobian and Hessian of the lagrangian. More...
 
virtual void computeBoundsForTwoSideBoundedLinearForm (Eigen::Ref< Eigen::VectorXd > lbA, Eigen::Ref< Eigen::VectorXd > ubA, bool include_finite_bounds)
 Compute lower and upper bounds lbA and ubA for the linear form lbA <= A x <= ubA. More...
 
virtual void computeSparseJacobianTwoSideBoundedLinearFormAndHessianObjective (Eigen::SparseMatrix< double, Eigen::ColMajor, long long > &H, Eigen::SparseMatrix< double, Eigen::ColMajor, long long > &A, bool include_finite_bounds, const Eigen::VectorXi *col_nnz_H, const Eigen::VectorXi *col_nnz_A, bool upper_part_only_H)
 
virtual bool checkIfAllUnfixedParam (std::function< bool(double, int)> fun)
 Check if a function taking the parameter value and unfixed-idx is true for all unfixed parameter values. More...
 

Set callbacks for the objective function and constraints


int _obj_dim = 0
 
int _eq_dim = 0
 
int _ineq_dim = 0
 
bool _lsq_form = false
 
std::function< void(const Eigen::VectorXd &, Eigen::Ref< Eigen::VectorXd >)> _obj_fun
 
std::function< void(const Eigen::VectorXd &, Eigen::Ref< Eigen::VectorXd >)> _eq_fun
 
std::function< void(const Eigen::VectorXd &, Eigen::Ref< Eigen::VectorXd >)> _ineq_fun
 
void setObjectiveFunction (std::function< void(const Eigen::VectorXd &, Eigen::Ref< Eigen::VectorXd >)> obj_fun, int obj_dim, bool lsq_form=false)
 Set objective function callback. More...
 
void setEqualityConstraint (std::function< void(const Eigen::VectorXd &, Eigen::Ref< Eigen::VectorXd >)> eq_fun, int eq_dim)
 Set equality constraint callback. More...
 
void setInequalityConstraint (std::function< void(const Eigen::VectorXd &, Eigen::Ref< Eigen::VectorXd >)> ineq_fun, int ineq_dim)
 Set inequality constraint callback. More...
 
int getNonLsqObjectiveDimension () override
 Total dimension of objective function terms. More...
 
int getLsqObjectiveDimension () override
 Total dimension of least-squares objective function terms. More...
 
int getObjectiveDimension () override
 Get dimension of the objective (should be zero or one, includes Lsq objectives if present) More...
 
int getEqualityDimension () override
 Total dimension of equality constraints. More...
 
int getInequalityDimension () override
 Total dimension of general inequality constraints. More...
 
bool isLeastSquaresProblem () const override
 Check if the underlying problem is defined in the least squares form. More...
 
double computeValueNonLsqObjective () override
 
void computeValuesLsqObjective (Eigen::Ref< Eigen::VectorXd > values) override
 Compute the objective function values f(x) for the current parameter set. More...
 
void computeValuesEquality (Eigen::Ref< Eigen::VectorXd > values) override
 Compute the equality constraint values ceq(x) for the current parameter set. More...
 
void computeValuesInequality (Eigen::Ref< Eigen::VectorXd > values) override
 Compute the inequality constraint values c(x) for the current parameter set. More...
 

Additional Inherited Members

- Public Types inherited from corbo::OptimizationProblemInterface
using Ptr = std::shared_ptr< OptimizationProblemInterface >
 
using UPtr = std::unique_ptr< OptimizationProblemInterface >
 
- Protected Attributes inherited from corbo::OptimizationProblemInterface
bool _warn_if_not_specialized = true
 

Detailed Description

Simple optimization problem formulation (callback based configuration)

This class defines a standard optimization problem in which the optimization vector x is represented as a simple vector. In comparison to SimpleOptimizationProblem, the objective function and constraints are integrated via callbacks rather then implementing interface methods.

For the mathematical description refer to the OptimizationProblemInterface.

See also
SimpleOptimizationProblem OptimizationProblemInterface SolverInterface
Author
Christoph Rösmann (chris.nosp@m.toph.nosp@m..roes.nosp@m.mann.nosp@m.@tu-d.nosp@m.ortm.nosp@m.und.d.nosp@m.e)

Definition at line 225 of file simple_optimization_problem.h.

Constructor & Destructor Documentation

◆ SimpleOptimizationProblemWithCallbacks() [1/2]

corbo::SimpleOptimizationProblemWithCallbacks::SimpleOptimizationProblemWithCallbacks ( )
inline

Default constructor (do not forget to initialize the parameter vector dimension manually)

Definition at line 229 of file simple_optimization_problem.h.

◆ SimpleOptimizationProblemWithCallbacks() [2/2]

corbo::SimpleOptimizationProblemWithCallbacks::SimpleOptimizationProblemWithCallbacks ( int  param_dim)
inlineexplicit

Construct Optimization Problem with a given parameter vector dimension.

Definition at line 231 of file simple_optimization_problem.h.

Member Function Documentation

◆ computeValueNonLsqObjective()

double corbo::SimpleOptimizationProblemWithCallbacks::computeValueNonLsqObjective ( )
inlineoverridevirtual

Implements corbo::SimpleOptimizationProblem.

Definition at line 305 of file simple_optimization_problem.h.

◆ computeValuesEquality()

void corbo::SimpleOptimizationProblemWithCallbacks::computeValuesEquality ( Eigen::Ref< Eigen::VectorXd >  values)
inlineoverridevirtual

Compute the equality constraint values ceq(x) for the current parameter set.

Parameters
[out]valuesThe resulting value vector [equalityDimension() x 1]. Warning: the size must be pre-allocated!

Implements corbo::SimpleOptimizationProblem.

Definition at line 320 of file simple_optimization_problem.h.

◆ computeValuesInequality()

void corbo::SimpleOptimizationProblemWithCallbacks::computeValuesInequality ( Eigen::Ref< Eigen::VectorXd >  values)
inlineoverridevirtual

Compute the inequality constraint values c(x) for the current parameter set.

Parameters
[out]valuesThe resulting value vector [inequalityDimension() x 1]. Warning: the size must be pre-allocated!

Implements corbo::SimpleOptimizationProblem.

Definition at line 326 of file simple_optimization_problem.h.

◆ computeValuesLsqObjective()

void corbo::SimpleOptimizationProblemWithCallbacks::computeValuesLsqObjective ( Eigen::Ref< Eigen::VectorXd >  values)
inlineoverridevirtual

Compute the objective function values f(x) for the current parameter set.

Parameters
[out]valuesThe resulting value vector [objectiveDimension() x 1]. Warning: the size must be pre-allocated!

Implements corbo::SimpleOptimizationProblem.

Definition at line 314 of file simple_optimization_problem.h.

◆ getEqualityDimension()

int corbo::SimpleOptimizationProblemWithCallbacks::getEqualityDimension ( )
inlineoverridevirtual

Total dimension of equality constraints.

Implements corbo::SimpleOptimizationProblem.

Definition at line 297 of file simple_optimization_problem.h.

◆ getInequalityDimension()

int corbo::SimpleOptimizationProblemWithCallbacks::getInequalityDimension ( )
inlineoverridevirtual

Total dimension of general inequality constraints.

Implements corbo::SimpleOptimizationProblem.

Definition at line 299 of file simple_optimization_problem.h.

◆ getLsqObjectiveDimension()

int corbo::SimpleOptimizationProblemWithCallbacks::getLsqObjectiveDimension ( )
inlineoverridevirtual

Total dimension of least-squares objective function terms.

Implements corbo::SimpleOptimizationProblem.

Definition at line 293 of file simple_optimization_problem.h.

◆ getNonLsqObjectiveDimension()

int corbo::SimpleOptimizationProblemWithCallbacks::getNonLsqObjectiveDimension ( )
inlineoverridevirtual

Total dimension of objective function terms.

Implements corbo::SimpleOptimizationProblem.

Definition at line 291 of file simple_optimization_problem.h.

◆ getObjectiveDimension()

int corbo::SimpleOptimizationProblemWithCallbacks::getObjectiveDimension ( )
inlineoverridevirtual

Get dimension of the objective (should be zero or one, includes Lsq objectives if present)

Implements corbo::SimpleOptimizationProblem.

Definition at line 295 of file simple_optimization_problem.h.

◆ isLeastSquaresProblem()

bool corbo::SimpleOptimizationProblemWithCallbacks::isLeastSquaresProblem ( ) const
inlineoverridevirtual

Check if the underlying problem is defined in the least squares form.

Least-squares problems are defined as $ \min f(x)^T f(x) $ and the function values and Jacobian are computed for $ f(x) $ rather than for $ f(x)^T f(x) $. Specialiezed least-squares solvers require the optimization problem to be defined in this particular form.

In summary, the solver computes the squared l2-norm of the objective function value (scalar) if set to true.

Returns
true if all objectives are in least-squares form, false otherwise.

Implements corbo::SimpleOptimizationProblem.

Definition at line 302 of file simple_optimization_problem.h.

◆ setEqualityConstraint()

void corbo::SimpleOptimizationProblemWithCallbacks::setEqualityConstraint ( std::function< void(const Eigen::VectorXd &, Eigen::Ref< Eigen::VectorXd >)>  eq_fun,
int  eq_dim 
)

Set equality constraint callback.

The prototype is as follows:

void equality(const Eigen::VectorXd& x, Eigen::Ref<Eigen::VectorXd> values);

in which x contains the current parameter values [parameterDimension() x 1] and values should be filled with the corresponding equality constraint values (output argument). Please note, values is assumed to be pre-allocated with size [eq_dim x 1].

Parameters
[in]eq_funSet callback for the equality constraint computation
[in]eq_dimDimension of the equality constraint vector

Definition at line 86 of file simple_optimization_problem.cpp.

◆ setInequalityConstraint()

void corbo::SimpleOptimizationProblemWithCallbacks::setInequalityConstraint ( std::function< void(const Eigen::VectorXd &, Eigen::Ref< Eigen::VectorXd >)>  ineq_fun,
int  ineq_dim 
)

Set inequality constraint callback.

The prototype is as follows:

void inequality(const Eigen::VectorXd& x, Eigen::Ref<Eigen::VectorXd> values);

in which x contains the current parameter values [parameterDimension() x 1] and values should be filled with the corresponding inequality constraint values (output argument). Please note, values is assumed to be pre-allocated with size [ineq_dim x 1].

Parameters
[in]ineq_funSet callback for the inequality constraint computation
[in]ineq_dimDimension of the inequality constraint vector

Definition at line 93 of file simple_optimization_problem.cpp.

◆ setObjectiveFunction()

void corbo::SimpleOptimizationProblemWithCallbacks::setObjectiveFunction ( std::function< void(const Eigen::VectorXd &, Eigen::Ref< Eigen::VectorXd >)>  obj_fun,
int  obj_dim,
bool  lsq_form = false 
)

Set objective function callback.

The prototype is as follows:

void objective(const Eigen::VectorXd& x, Eigen::Ref<Eigen::VectorXd> values);

in which x contains the current parameter values [parameterDimension() x 1] and values should be filled with the corresponding objective functin values (output argument). Please note, values is assumed to be pre-allocated with size [obj_dim x 1].

Argument lsq_form indicates that the solver should take the squared l2-norm of the objective function vector: e.g., $ \mathbf{f}^T \mathbf{f} $. Hereby, $ \mathbf{f} $ denotes the objective function value vector with size [obj_dim x 1].

Parameters
[in]obj_funSet callback for the objective function computation
[in]obj_dimDimension of the objective function vector
[in]lsq_formIf true, the solver takes the squared l2-norm of the obejctive function value.

Definition at line 78 of file simple_optimization_problem.cpp.

Member Data Documentation

◆ _eq_dim

int corbo::SimpleOptimizationProblemWithCallbacks::_eq_dim = 0
private

Definition at line 333 of file simple_optimization_problem.h.

◆ _eq_fun

std::function<void(const Eigen::VectorXd&, Eigen::Ref<Eigen::VectorXd>)> corbo::SimpleOptimizationProblemWithCallbacks::_eq_fun
private

Definition at line 338 of file simple_optimization_problem.h.

◆ _ineq_dim

int corbo::SimpleOptimizationProblemWithCallbacks::_ineq_dim = 0
private

Definition at line 334 of file simple_optimization_problem.h.

◆ _ineq_fun

std::function<void(const Eigen::VectorXd&, Eigen::Ref<Eigen::VectorXd>)> corbo::SimpleOptimizationProblemWithCallbacks::_ineq_fun
private

Definition at line 339 of file simple_optimization_problem.h.

◆ _lsq_form

bool corbo::SimpleOptimizationProblemWithCallbacks::_lsq_form = false
private

Definition at line 335 of file simple_optimization_problem.h.

◆ _obj_dim

int corbo::SimpleOptimizationProblemWithCallbacks::_obj_dim = 0
private

Definition at line 332 of file simple_optimization_problem.h.

◆ _obj_fun

std::function<void(const Eigen::VectorXd&, Eigen::Ref<Eigen::VectorXd>)> corbo::SimpleOptimizationProblemWithCallbacks::_obj_fun
private

Definition at line 337 of file simple_optimization_problem.h.


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


control_box_rst
Author(s): Christoph Rösmann
autogenerated on Wed Mar 2 2022 00:07:21