Ipopt 3.11.9
Loading...
Searching...
No Matches
IpTNLP.hpp
Go to the documentation of this file.
1// Copyright (C) 2004, 2009 International Business Machines and others.
2// All Rights Reserved.
3// This code is published under the Eclipse Public License.
4//
5// $Id: IpTNLP.hpp 2212 2013-04-14 14:51:52Z stefan $
6//
7// Authors: Carl Laird, Andreas Waechter IBM 2004-08-13
8
9#ifndef __IPTNLP_HPP__
10#define __IPTNLP_HPP__
11
12#include "IpUtils.hpp"
13#include "IpReferenced.hpp"
14#include "IpException.hpp"
15#include "IpAlgTypes.hpp"
16#include "IpReturnCodes.hpp"
17
18#include <map>
19
20namespace Ipopt
21{
22 // forward declarations
23 class IpoptData;
24 class IpoptCalculatedQuantities;
25 class IteratesVector;
26
50 class TNLP : public ReferencedObject
51 {
52 public:
59
63 {}
64
66 virtual ~TNLP()
67 {}
69
70 DECLARE_STD_EXCEPTION(INVALID_TNLP);
71
81 virtual bool get_nlp_info(Index& n, Index& m, Index& nnz_jac_g,
82 Index& nnz_h_lag, IndexStyleEnum& index_style)=0;
83
84 typedef std::map<std::string, std::vector<std::string> > StringMetaDataMapType;
85 typedef std::map<std::string, std::vector<Index> > IntegerMetaDataMapType;
86 typedef std::map<std::string, std::vector<Number> > NumericMetaDataMapType;
87
91 StringMetaDataMapType& var_string_md,
92 IntegerMetaDataMapType& var_integer_md,
93 NumericMetaDataMapType& var_numeric_md,
94 Index m,
95 StringMetaDataMapType& con_string_md,
96 IntegerMetaDataMapType& con_integer_md,
97 NumericMetaDataMapType& con_numeric_md)
98
99 {
100 return false;
101 }
102
109 virtual bool get_bounds_info(Index n, Number* x_l, Number* x_u,
110 Index m, Number* g_l, Number* g_u)=0;
111
120 bool& use_x_scaling, Index n,
122 bool& use_g_scaling, Index m,
124 {
125 return false;
126 }
127
132 virtual bool get_variables_linearity(Index n, LinearityType* var_types)
133 {
134 return false;
135 }
136
140 virtual bool get_constraints_linearity(Index m, LinearityType* const_types)
141 {
142 return false;
143 }
144
152 virtual bool get_starting_point(Index n, bool init_x, Number* x,
153 bool init_z, Number* z_L, Number* z_U,
154 Index m, bool init_lambda,
155 Number* lambda)=0;
156
161 virtual bool get_warm_start_iterate(IteratesVector& warm_start_iterate)
162 {
163 return false;
164 }
165
167 virtual bool eval_f(Index n, const Number* x, bool new_x,
168 Number& obj_value)=0;
169
172 virtual bool eval_grad_f(Index n, const Number* x, bool new_x,
173 Number* grad_f)=0;
174
176 virtual bool eval_g(Index n, const Number* x, bool new_x,
177 Index m, Number* g)=0;
183 virtual bool eval_jac_g(Index n, const Number* x, bool new_x,
184 Index m, Index nele_jac, Index* iRow,
185 Index *jCol, Number* values)=0;
186
196 virtual bool eval_h(Index n, const Number* x, bool new_x,
197 Number obj_factor, Index m, const Number* lambda,
198 bool new_lambda, Index nele_hess,
199 Index* iRow, Index* jCol, Number* values)
200 {
201 return false;
202 }
204
208 virtual void finalize_solution(SolverReturn status,
209 Index n, const Number* x, const Number* z_L, const Number* z_U,
210 Index m, const Number* g, const Number* lambda,
211 Number obj_value,
212 const IpoptData* ip_data,
226 virtual void finalize_metadata(Index n,
227 const StringMetaDataMapType& var_string_md,
228 const IntegerMetaDataMapType& var_integer_md,
229 const NumericMetaDataMapType& var_numeric_md,
230 Index m,
231 const StringMetaDataMapType& con_string_md,
232 const IntegerMetaDataMapType& con_integer_md,
233 const NumericMetaDataMapType& con_numeric_md)
234 {}
235
236
241 Index iter, Number obj_value,
242 Number inf_pr, Number inf_du,
243 Number mu, Number d_norm,
244 Number regularization_size,
245 Number alpha_du, Number alpha_pr,
246 Index ls_trials,
247 const IpoptData* ip_data,
249 {
250 return true;
251 }
253
268 {
269 return -1;
270 }
271
272 virtual bool get_list_of_nonlinear_variables(Index num_nonlin_vars,
273 Index* pos_nonlin_vars)
274 {
275 return false;
276 }
278
279 private:
289 //TNLP();
290
292 TNLP(const TNLP&);
293
295 void operator=(const TNLP&);
297 };
298
299} // namespace Ipopt
300
301#endif
AlgorithmMode
enum to indicate the mode in which the algorithm is
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 * x_scaling
Number obj_scaling
Number Number Number * g_scaling
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.
Specialized CompoundVector class specifically for the algorithm iterates.
ReferencedObject class.
Base class for all NLP's that use standard triplet matrix form and dense vectors.
Definition IpTNLP.hpp:51
virtual Index get_number_of_nonlinear_variables()
Definition IpTNLP.hpp:267
virtual ~TNLP()
Default destructor.
Definition IpTNLP.hpp:66
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)=0
overload this method to return the starting point.
DECLARE_STD_EXCEPTION(INVALID_TNLP)
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)
overload this method to return the hessian of the lagrangian.
Definition IpTNLP.hpp:196
virtual bool get_warm_start_iterate(IteratesVector &warm_start_iterate)
overload this method to provide an Ipopt iterate (already in the form Ipopt requires it internally) f...
Definition IpTNLP.hpp:161
virtual bool intermediate_callback(AlgorithmMode mode, Index iter, Number obj_value, Number inf_pr, Number inf_du, Number mu, Number d_norm, Number regularization_size, Number alpha_du, Number alpha_pr, Index ls_trials, const IpoptData *ip_data, IpoptCalculatedQuantities *ip_cq)
Intermediate Callback method for the user.
Definition IpTNLP.hpp:240
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)=0
This method is called when the algorithm is complete so the TNLP can store/write the solution.
virtual bool get_scaling_parameters(Number &obj_scaling, bool &use_x_scaling, Index n, Number *x_scaling, bool &use_g_scaling, Index m, Number *g_scaling)
overload this method to return scaling parameters.
Definition IpTNLP.hpp:119
virtual bool get_constraints_linearity(Index m, LinearityType *const_types)
overload this method to return the constraint linearity.
Definition IpTNLP.hpp:140
virtual bool eval_grad_f(Index n, const Number *x, bool new_x, Number *grad_f)=0
overload this method to return the vector of the gradient of the objective w.r.t.
virtual bool get_nlp_info(Index &n, Index &m, Index &nnz_jac_g, Index &nnz_h_lag, IndexStyleEnum &index_style)=0
virtual bool eval_f(Index n, const Number *x, bool new_x, Number &obj_value)=0
overload this method to return the value of the objective function
virtual void finalize_metadata(Index n, const StringMetaDataMapType &var_string_md, const IntegerMetaDataMapType &var_integer_md, const NumericMetaDataMapType &var_numeric_md, Index m, const StringMetaDataMapType &con_string_md, const IntegerMetaDataMapType &con_integer_md, const NumericMetaDataMapType &con_numeric_md)
This method is called just before finalize_solution.
Definition IpTNLP.hpp:226
virtual bool get_variables_linearity(Index n, LinearityType *var_types)
overload this method to return the variables linearity (TNLP::LINEAR or TNLP::NON_LINEAR).
Definition IpTNLP.hpp:132
std::map< std::string, std::vector< Index > > IntegerMetaDataMapType
Definition IpTNLP.hpp:85
virtual bool get_list_of_nonlinear_variables(Index num_nonlin_vars, Index *pos_nonlin_vars)
Definition IpTNLP.hpp:272
std::map< std::string, std::vector< Number > > NumericMetaDataMapType
Definition IpTNLP.hpp:86
virtual bool eval_jac_g(Index n, const Number *x, bool new_x, Index m, Index nele_jac, Index *iRow, Index *jCol, Number *values)=0
overload this method to return the jacobian of the constraints.
void operator=(const TNLP &)
Overloaded Equals Operator.
virtual bool get_bounds_info(Index n, Number *x_l, Number *x_u, Index m, Number *g_l, Number *g_u)=0
overload this method to return the information about the bound on the variables and constraints.
LinearityType
Type of the constraints.
Definition IpTNLP.hpp:55
@ NON_LINEAR
Constraint/Varaible is non-linear.
Definition IpTNLP.hpp:57
@ LINEAR
Constraint/Variable is linear.
Definition IpTNLP.hpp:56
std::map< std::string, std::vector< std::string > > StringMetaDataMapType
Definition IpTNLP.hpp:84
TNLP(const TNLP &)
Default Constructor.
virtual bool get_var_con_metadata(Index n, StringMetaDataMapType &var_string_md, IntegerMetaDataMapType &var_integer_md, NumericMetaDataMapType &var_numeric_md, Index m, StringMetaDataMapType &con_string_md, IntegerMetaDataMapType &con_integer_md, NumericMetaDataMapType &con_numeric_md)
overload this method to return any meta data for the variables and the constraints
Definition IpTNLP.hpp:90
IndexStyleEnum
overload this method to return the number of variables and constraints, and the number of non-zeros i...
Definition IpTNLP.hpp:80
@ FORTRAN_STYLE
Definition IpTNLP.hpp:80
virtual bool eval_g(Index n, const Number *x, bool new_x, Index m, Number *g)=0
overload this method to return the vector of constraint values
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