Ipopt Documentation  
 
Loading...
Searching...
No Matches
IpIpoptNLP.hpp
Go to the documentation of this file.
1// Copyright (C) 2004, 2006 International Business Machines and others.
2// All Rights Reserved.
3// This code is published under the Eclipse Public License.
4//
5// Authors: Carl Laird, Andreas Waechter IBM 2004-08-13
6
7#ifndef __IPIPOPTNLP_HPP__
8#define __IPIPOPTNLP_HPP__
9
10#include "IpNLP.hpp"
11#include "IpJournalist.hpp"
12#include "IpNLPScaling.hpp"
13
14namespace Ipopt
15{
16// forward declarations
17class IteratesVector;
18
36{
37public:
41 const SmartPtr<NLPScalingObject> nlp_scaling
42 )
43 : nlp_scaling_(nlp_scaling)
44 { }
45
47 virtual ~IpoptNLP()
48 { }
50
55 virtual bool Initialize(
56 const Journalist& jnlst,
57 const OptionsList& options,
58 const std::string& prefix
59 )
60 {
61 bool ret = true;
62 if( IsValid(nlp_scaling_) )
63 {
64 ret = nlp_scaling_->Initialize(jnlst, options, prefix);
65 }
66 return ret;
67 }
68
71
73
75
78 bool init_x,
80 bool init_y_c,
82 bool init_y_d,
84 bool init_z_L,
86 bool init_z_U,
89 ) = 0;
90
92 virtual bool GetWarmStartIterate(
93 IteratesVector& warm_start_iterate
94 ) = 0;
95
98
99 virtual Number f(
100 const Vector& x
101 ) = 0;
102
105 const Vector& x
106 ) = 0;
107
110 const Vector& x
111 ) = 0;
112
115 const Vector& x
116 ) = 0;
117
122 const Vector& x
123 ) = 0;
124
127 const Vector& x
128 ) = 0;
129
132 const Vector& x,
133 Number obj_factor,
134 const Vector& yc,
135 const Vector& yd
136 ) = 0;
137
139 virtual SmartPtr<const Vector> x_L() const = 0;
140
142 virtual SmartPtr<const Matrix> Px_L() const = 0;
143
145 virtual SmartPtr<const Vector> x_U() const = 0;
146
148 virtual SmartPtr<const Matrix> Px_U() const = 0;
149
151 virtual SmartPtr<const Vector> d_L() const = 0;
152
154 virtual SmartPtr<const Matrix> Pd_L() const = 0;
155
157 virtual SmartPtr<const Vector> d_U() const = 0;
158
160 virtual SmartPtr<const Matrix> Pd_U() const = 0;
161
164
170
172 virtual void GetSpaces(
177 SmartPtr<const MatrixSpace>& px_l_space,
179 SmartPtr<const MatrixSpace>& px_u_space,
181 SmartPtr<const MatrixSpace>& pd_l_space,
183 SmartPtr<const MatrixSpace>& pd_u_space,
184 SmartPtr<const MatrixSpace>& Jac_c_space,
185 SmartPtr<const MatrixSpace>& Jac_d_space,
186 SmartPtr<const SymMatrixSpace>& Hess_lagrangian_space
187 ) = 0;
188
192 const Vector& new_x_L,
193 const Vector& new_x_U,
194 const Vector& new_d_L,
195 const Vector& new_d_U
196 ) = 0;
197
200 virtual Index f_evals() const = 0;
201 virtual Index grad_f_evals() const = 0;
202 virtual Index c_evals() const = 0;
203 virtual Index jac_c_evals() const = 0;
204 virtual Index d_evals() const = 0;
205 virtual Index jac_d_evals() const = 0;
206 virtual Index h_evals() const = 0;
208
213
220 virtual bool objective_depends_on_mu() const
221 {
222 return false;
223 }
224
228 virtual Number f(
229 const Vector& x,
230 Number mu
231 ) = 0;
232
237 const Vector& x,
238 Number mu
239 ) = 0;
240
245 const Vector& x,
246 Number obj_factor,
247 const Vector& yc,
248 const Vector& yd,
249 Number mu
250 ) = 0;
251
259
262 virtual void FinalizeSolution(
263 SolverReturn status,
264 const Vector& x,
265 const Vector& z_L,
266 const Vector& z_U,
267 const Vector& c,
268 const Vector& d,
269 const Vector& y_c,
270 const Vector& y_d,
271 Number obj_value,
272 const IpoptData* ip_data,
274 ) = 0;
275
277 AlgorithmMode mode,
278 Index iter,
279 Number obj_value,
280 Number inf_pr,
281 Number inf_du,
282 Number mu,
283 Number d_norm,
284 Number regularization_size,
285 Number alpha_du,
286 Number alpha_pr,
287 Index ls_trials,
290 ) = 0;
292
295 {
296 DBG_ASSERT(IsValid(nlp_scaling_));
297 return nlp_scaling_;
298 }
299
300private:
301
312
314 const IpoptNLP&
315 );
316
319 const IpoptNLP&
320 );
322
324};
325
326} // namespace Ipopt
327
328#endif
#define DBG_ASSERT(test)
Definition IpDebug.hpp:27
AlgorithmMode
enum to indicate the mode in which the algorithm is
Class for all IPOPT specific calculated quantities.
Class to organize all the data required by the algorithm.
This is the abstract base class for classes that map the traditional NLP into something that is more ...
virtual SmartPtr< const SymMatrix > uninitialized_h()=0
Provides a Hessian matrix from the correct matrix space with uninitialized values.
virtual SmartPtr< const Matrix > Px_U() const =0
Permutation matrix (x_U_ -> x.
virtual bool objective_depends_on_mu() const
Method for telling the IpoptCalculatedQuantities class whether the objective function depends on the ...
virtual SmartPtr< const SymMatrix > h(const Vector &x, Number obj_factor, const Vector &yc, const Vector &yd, Number mu)=0
Replacement for the default Lagrangian Hessian method which knows about the barrier parameter.
IpoptNLP(const IpoptNLP &)
Copy Constructor.
virtual SmartPtr< const Matrix > Pd_L() const =0
Permutation matrix (d_L_ -> d)
virtual void GetSpaces(SmartPtr< const VectorSpace > &x_space, SmartPtr< const VectorSpace > &c_space, SmartPtr< const VectorSpace > &d_space, SmartPtr< const VectorSpace > &x_l_space, SmartPtr< const MatrixSpace > &px_l_space, SmartPtr< const VectorSpace > &x_u_space, SmartPtr< const MatrixSpace > &px_u_space, SmartPtr< const VectorSpace > &d_l_space, SmartPtr< const MatrixSpace > &pd_l_space, SmartPtr< const VectorSpace > &d_u_space, SmartPtr< const MatrixSpace > &pd_u_space, SmartPtr< const MatrixSpace > &Jac_c_space, SmartPtr< const MatrixSpace > &Jac_d_space, SmartPtr< const SymMatrixSpace > &Hess_lagrangian_space)=0
Accessor method for vector/matrix spaces pointers.
virtual SmartPtr< const Matrix > jac_c(const Vector &x)=0
Jacobian Matrix for equality constraints.
virtual Index f_evals() const =0
DECLARE_STD_EXCEPTION(Eval_Error)
thrown if there is any error evaluating values from the nlp
virtual SmartPtr< const Vector > x_U() const =0
Upper bounds on x.
virtual bool IntermediateCallBack(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, SmartPtr< const IpoptData > ip_data, SmartPtr< IpoptCalculatedQuantities > ip_cq)=0
void operator=(const IpoptNLP &)
Default Assignment Operator.
virtual SmartPtr< const Vector > c(const Vector &x)=0
Equality constraint residual.
virtual Number f(const Vector &x)=0
Accessor methods for model data.
virtual Index d_evals() const =0
virtual ~IpoptNLP()
Destructor.
virtual void FinalizeSolution(SolverReturn status, const Vector &x, const Vector &z_L, const Vector &z_U, const Vector &c, const Vector &d, const Vector &y_c, const Vector &y_d, Number obj_value, const IpoptData *ip_data, IpoptCalculatedQuantities *ip_cq)=0
virtual bool GetWarmStartIterate(IteratesVector &warm_start_iterate)=0
Method accessing the GetWarmStartIterate of the NLP.
virtual SmartPtr< const Matrix > Pd_U() const =0
Permutation matrix (d_U_ -> d.
virtual SmartPtr< const Vector > x_L() const =0
Lower bounds on x.
virtual SmartPtr< const SymMatrix > h(const Vector &x, Number obj_factor, const Vector &yc, const Vector &yd)=0
Hessian of the Lagrangian.
virtual bool InitializeStructures(SmartPtr< Vector > &x, bool init_x, SmartPtr< Vector > &y_c, bool init_y_c, SmartPtr< Vector > &y_d, bool init_y_d, SmartPtr< Vector > &z_L, bool init_z_L, SmartPtr< Vector > &z_U, bool init_z_U, SmartPtr< Vector > &v_L, SmartPtr< Vector > &v_U)=0
Initialize (create) structures for the iteration data.
virtual SmartPtr< const Vector > grad_f(const Vector &x)=0
Gradient of the objective.
virtual SmartPtr< const Vector > d_L() const =0
Lower bounds on d.
virtual Index c_evals() const =0
virtual SmartPtr< const Matrix > Px_L() const =0
Permutation matrix (x_L_ -> x)
virtual SmartPtr< const Vector > grad_f(const Vector &x, Number mu)=0
Replacement for the default objective gradient method which knows about the barrier parameter.
virtual SmartPtr< const SymMatrixSpace > HessianMatrixSpace() const =0
Accessor method to obtain the MatrixSpace for the Hessian matrix (or it's approximation)
virtual Index jac_d_evals() const =0
virtual void AdjustVariableBounds(const Vector &new_x_L, const Vector &new_x_U, const Vector &new_d_L, const Vector &new_d_U)=0
Method for adapting the variable bounds.
IpoptNLP(const SmartPtr< NLPScalingObject > nlp_scaling)
SmartPtr< NLPScalingObject > nlp_scaling_
virtual bool Initialize(const Journalist &jnlst, const OptionsList &options, const std::string &prefix)
Initialization method.
virtual Number f(const Vector &x, Number mu)=0
Replacement for the default objective function method which knows about the barrier parameter.
virtual SmartPtr< const Vector > d_U() const =0
Upper bounds on d.
virtual SmartPtr< const Vector > d(const Vector &x)=0
Inequality constraint residual (reformulated as equalities with slacks.
SmartPtr< NLPScalingObject > NLP_scaling() const
Returns the scaling strategy object.
virtual SmartPtr< const Matrix > jac_d(const Vector &x)=0
Jacobian Matrix for inequality constraints.
virtual Index grad_f_evals() const =0
virtual Index jac_c_evals() const =0
virtual SmartPtr< const VectorSpace > x_space() const =0
x_space
virtual Index h_evals() const =0
Specialized CompoundVector class specifically for the algorithm iterates.
Class responsible for all message output.
This class stores a list of user set options.
Storing the reference count of all the smart pointers that currently reference it.
Template class for Smart Pointers.
Vector Base Class.
Definition IpVector.hpp:48
#define IPOPTLIB_EXPORT
This file contains a base class for all exceptions and a set of macros to help with exceptions.
bool IsValid(const SmartPtr< U > &smart_ptr)
SolverReturn
enum for the return from the optimize algorithm
ipindex Index
Type of all indices of vectors, matrices etc.
Definition IpTypes.hpp:20
ipnumber Number
Type of all numbers.
Definition IpTypes.hpp:17