Template Class IpoptInterface

Inheritance Relationships

Base Type

  • public Ipopt::TNLP

Class Documentation

template<typename scalar_type, typename index_type>
class IpoptInterface : public Ipopt::TNLP

Ipopt problem over a Model::OptimizationEvaluator, which holds the solution and its multipliers after the solve.

Unlike IpoptInterface::DynamicObjective and IpoptInterface::DynamicConstraint, which integrate a dynamic model to evaluate the problem, it takes the evaluator’s functions and exact sparse derivatives.

Template Parameters:
  • scalar_type – - Scalar of the evaluator, which must be ipnumber

  • index_type – - Index of the evaluator

Public Functions

explicit IpoptInterface(ModelT *model)

Solve model, which must be allocated and initialized.

bool get_nlp_info(ipindex &n, ipindex &m, ipindex &nnz_jac_g, ipindex &nnz_h_lag, IndexStyleEnum &index_style) override

Sizes and nonzero counts, with C-style indices.

bool get_bounds_info(ipindex n, ipnumber *x_l, ipnumber *x_u, ipindex m, ipnumber *g_l, ipnumber *g_u) override

Variable and constraint bounds.

bool get_starting_point(ipindex n, bool init_x, ipnumber *x, bool init_z, ipnumber *z_L, ipnumber *z_U, ipindex m, bool init_lambda, ipnumber *lambda) override

Variables from x(), without initial multipliers.

bool eval_f(ipindex n, const ipnumber *x, bool new_x, ipnumber &obj_value) override

Objective \(f(x)\).

bool eval_grad_f(ipindex n, const ipnumber *x, bool new_x, ipnumber *grad_f) override

Objective gradient \(\nabla f(x)\).

bool eval_g(ipindex n, const ipnumber *x, bool new_x, ipindex m, ipnumber *g) override

Constraints \(g(x)\).

bool eval_jac_g(ipindex n, const ipnumber *x, bool new_x, ipindex m, ipindex nele_jac, ipindex *iRow, ipindex *jCol, ipnumber *values) override

Constraint Jacobian, or its structure when values is null.

bool eval_h(ipindex n, const ipnumber *x, bool new_x, ipnumber obj_factor, ipindex m, const ipnumber *lambda, bool new_lambda, ipindex nele_hess, ipindex *iRow, ipindex *jCol, ipnumber *values) override

Lower Lagrangian Hessian, or its structure when values is null.

void finalize_solution(SolverReturn status, ipindex n, const ipnumber *x, const ipnumber *z_L, const ipnumber *z_U, ipindex m, const ipnumber *g, const ipnumber *lambda, ipnumber obj_value, const IpoptData *ip_data, IpoptCalculatedQuantities *ip_cq) override

Leave the final point, its multipliers, its objective, and its constraints in the model.