Ipopt 3.11.9
Loading...
Searching...
No Matches
TutorialCpp_nlp.hpp
Go to the documentation of this file.
1// Copyright (C) 2009 International Business Machines.
2// All Rights Reserved.
3// This code is published under the Eclipse Public License.
4//
5// $Id: TutorialCpp_nlp.hpp 1861 2010-12-21 21:34:47Z andreasw $
6//
7// Author: Andreas Waechter IBM 2009-04-02
8
9// This file is part of the Ipopt tutorial. It is a version with
10// mistakes for the C++ implemention of the coding exercise problem
11// (in AMPL formulation):
12//
13// param n := 4;
14//
15// var x {1..n} <= 0, >= -1.5, := -0.5;
16//
17// minimize obj:
18// sum{i in 1..n} (x[i]-1)^2;
19//
20// subject to constr {i in 2..n-1}:
21// (x[i]^2+1.5*x[i]-i/n)*cos(x[i+1]) - x[i-1] = 0;
22//
23// The constant term "i/n" in the constraint is supposed to be input data
24//
25
26#ifndef __TUTORIALCPP_NLP_HPP__
27#define __TUTORIALCPP_NLP_HPP__
28
29#include "IpTNLP.hpp"
30
31using namespace Ipopt;
32
33// This inherits from Ipopt's TNLP
34class TutorialCpp_NLP : public TNLP
35{
36public:
39
42
46 virtual bool get_nlp_info(Index& n, Index& m, Index& nnz_jac_g,
47 Index& nnz_h_lag, IndexStyleEnum& index_style);
48
50 virtual bool get_bounds_info(Index n, Number* x_l, Number* x_u,
51 Index m, Number* g_l, Number* g_u);
52
54 virtual bool get_starting_point(Index n, bool init_x, Number* x,
55 bool init_z, Number* z_L, Number* z_U,
56 Index m, bool init_lambda,
57 Number* lambda);
58
60 virtual bool eval_f(Index n, const Number* x, bool new_x, Number& obj_value);
61
63 virtual bool eval_grad_f(Index n, const Number* x, bool new_x, Number* grad_f);
64
66 virtual bool eval_g(Index n, const Number* x, bool new_x, Index m, Number* g);
67
72 virtual bool eval_jac_g(Index n, const Number* x, bool new_x,
73 Index m, Index nele_jac, Index* iRow, Index *jCol,
74 Number* values);
75
80 virtual bool eval_h(Index n, const Number* x, bool new_x,
81 Number obj_factor, Index m, const Number* lambda,
82 bool new_lambda, Index nele_hess, Index* iRow,
83 Index* jCol, Number* values);
84
86
90 virtual void finalize_solution(SolverReturn status,
91 Index n, const Number* x, const Number* z_L, const Number* z_U,
92 Index m, const Number* g, const Number* lambda,
93 Number obj_value,
94 const IpoptData* ip_data,
97
98private:
114
118 Index N_;
120 Number* a_;
122};
123
124
125#endif
Number * x
Input: Starting point Output: Optimal solution.
Number Number Index Number Number Index Index nele_hess
Number of non-zero elements in Hessian of Lagrangian.
Number Number * g
Values of constraint at final point (output only - ignored if set to NULL)
Number Number Index Number Number Index nele_jac
Number of non-zero elements in constraint Jacobian.
Number Number Index m
Number of constraints.
Number Number Index Number Number Index Index Index index_style
indexing style for iRow & jCol, 0 for C style, 1 for Fortran style
Class for all IPOPT specific calculated quantities.
Class to organize all the data required by the algorithm.
Base class for all NLP's that use standard triplet matrix form and dense vectors.
Definition IpTNLP.hpp:51
IndexStyleEnum
overload this method to return the number of variables and constraints, and the number of non-zeros i...
Definition IpTNLP.hpp:80
virtual bool get_nlp_info(Index &n, Index &m, Index &nnz_jac_g, Index &nnz_h_lag, IndexStyleEnum &index_style)
Method to return some info about the nlp.
virtual bool get_starting_point(Index n, bool init_x, Number *x, bool init_z, Number *z_L, Number *z_U, Index m, bool init_lambda, Number *lambda)
Method to return the starting point for the algorithm.
virtual bool eval_h(Index n, const Number *x, bool new_x, Number obj_factor, Index m, const Number *lambda, bool new_lambda, Index nele_hess, Index *iRow, Index *jCol, Number *values)
Method to return: 1) The structure of the hessian of the lagrangian (if "values" is NULL) 2) The valu...
Number * a_
Value of constants in constraints.
Index N_
Number of variables.
TutorialCpp_NLP(const TutorialCpp_NLP &)
TutorialCpp_NLP(Index N, const Number *a)
constructor that takes in problem data
virtual bool eval_jac_g(Index n, const Number *x, bool new_x, Index m, Index nele_jac, Index *iRow, Index *jCol, Number *values)
Method to return: 1) The structure of the jacobian (if "values" is NULL) 2) The values of the jacobia...
virtual bool eval_g(Index n, const Number *x, bool new_x, Index m, Number *g)
Method to return the constraint residuals.
TutorialCpp_NLP & operator=(const TutorialCpp_NLP &)
virtual bool eval_f(Index n, const Number *x, bool new_x, Number &obj_value)
Method to return the objective value.
virtual ~TutorialCpp_NLP()
default destructor
virtual void finalize_solution(SolverReturn status, Index n, const Number *x, const Number *z_L, const Number *z_U, Index m, const Number *g, const Number *lambda, Number obj_value, const IpoptData *ip_data, IpoptCalculatedQuantities *ip_cq)
This method is called when the algorithm is complete so the TNLP can store/write the solution.
virtual bool get_bounds_info(Index n, Number *x_l, Number *x_u, Index m, Number *g_l, Number *g_u)
Method to return the bounds for my problem.
virtual bool eval_grad_f(Index n, const Number *x, bool new_x, Number *grad_f)
Method to return the gradient of the objective.
SolverReturn
enum for the return from the optimize algorithm (obviously we need to add more)
int Index
Type of all indices of vectors, matrices etc.
Definition IpTypes.hpp:19
double Number
Type of all numbers.
Definition IpTypes.hpp:17