Template Class IpoptInterface
Defined in File IpoptInterface.hpp
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::DynamicObjectiveandIpoptInterface::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
ipnumberindex_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
valuesis 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
valuesis 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.