38 :constraints_(
"constraint-sets", false),
39 costs_(
"cost-terms", true)
41 variables_ = std::make_shared<Composite>(
"variable-sets",
false);
105 if(use_finite_difference_approximation) {
106 double step_size = epsilon;
110 std::vector<double> x_new(x, x + n);
111 for (
int i=0; i<n; ++i) {
112 x_new[i] += step_size;
114 jac.coeffRef(0,i) = (g_new - g)/step_size;
123 return jac.row(0).transpose();
157 jac.makeCompressed();
158 std::copy(jac.valuePtr(), jac.valuePtr() + jac.nonZeros(), values);
202 <<
"************************************************************\n" 203 <<
" IFOPT - Interface to Nonlinear Optimizers (v2.0)\n" 204 <<
" \u00a9 Alexander W. Winkler\n" 205 <<
" https://github.com/ethz-adrl/ifopt\n" 206 <<
"************************************************************" 209 <<
"c - number of variables, constraints or cost terms" << std::endl
210 <<
"i - indices of this set in overall problem" << std::endl
211 <<
"v - number of [violated variable- or constraint-bounds] or [cost term value]" 214 << std::setw(33) <<
"" 215 << std::setw(5) <<
"c " 216 << std::setw(16) <<
"i " 217 << std::setw(11) <<
"v " std::vector< VectorXd > x_prev
the pure variables for every iteration.
Problem()
Creates a optimization problem with no variables, costs or constraints.
Composite::Ptr variables_
VecBound GetBounds() const override
Returns the "bounds" of this component.
void SetOptVariables(int iter)
Sets the optimization variables to those at iteration iter.
Composite::Ptr GetOptVariables() const
Read/write access to the current optimization variables.
int GetNumberOfConstraints() const
The number of individual constraints.
void AddCostSet(CostTerm::Ptr cost_set)
Add a cost term to the optimization problem.
int GetIterationCount() const
The number of iterations it took to solve the problem.
std::shared_ptr< Composite > Ptr
Component::Jacobian Jacobian
double EvaluateCostFunction(const double *x)
The scalar cost for current optimization variables x.
VectorXd EvaluateCostFunctionGradient(const double *x, bool use_finite_difference_approximation=false, double epsilon=std::numeric_limits< double >::epsilon())
The column-vector of derivatives of the cost w.r.t. each variable.
VectorXd GetVariableValues() const
The current value of the optimization variables.
void PrintCurrent() const
Prints the variables, costs and constraints.
Component::VectorXd VectorXd
int GetRows() const
Returns the number of rows of this component.
std::shared_ptr< Component > Ptr
void SaveCurrent()
Saves the current values of the optimization variables in x_prev.
int GetNumberOfOptimizationVariables() const
The number of optimization variables.
VectorXd ConvertToEigen(const double *x) const
Component::VecBound VecBound
VectorXd GetValues() const override
Returns the "values" of whatever this component represents.
void SetVariables(const double *x)
Updates the variables with the values of the raw pointer x.
Jacobian GetJacobianOfConstraints() const
The sparse-matrix representation of Jacobian of the constraints.
void AddComponent(const Component::Ptr &)
Adds a component to this composite.
std::shared_ptr< ConstraintSet > Ptr
VecBound GetBoundsOnConstraints() const
The upper and lower bound of each individual constraint.
void SetOptVariablesFinal()
Sets the optimization variables to those of the final iteration.
bool HasCostTerms() const
True if the optimization problem includes a cost, false if merely a feasibility problem is defined...
common namespace for all elements in this library.
Jacobian GetJacobian() const override
Returns derivatives of each row w.r.t. the variables.
void EvalNonzerosOfJacobian(const double *x, double *values)
Extracts those entries from constraint Jacobian that are not zero.
void AddConstraintSet(ConstraintSet::Ptr constraint_set)
Add a set of multiple constraints to the optimization problem.
Jacobian GetJacobianOfCosts() const
The sparse-matrix representation of Jacobian of the costs.
VectorXd EvaluateConstraints(const double *x)
Each constraint value g(x) for current optimization variables x.
void AddVariableSet(VariableSet::Ptr variable_set)
Add one individual set of variables to the optimization problem.
VecBound GetBoundsOnOptimizationVariables() const
The maximum and minimum value each optimization variable is allowed to have.