Ipopt Documentation  
 
Loading...
Searching...
No Matches
IpOrigIpoptNLP.hpp
Go to the documentation of this file.
1// Copyright (C) 2004, 2010 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 __IPORIGIPOPTNLP_HPP__
8#define __IPORIGIPOPTNLP_HPP__
9
10#include "IpIpoptNLP.hpp"
11#include "IpException.hpp"
13
14namespace Ipopt
15{
16
23
30
66{
67public:
70
72 const SmartPtr<const Journalist>& jnlst,
73 const SmartPtr<NLP>& nlp,
74 const SmartPtr<NLPScalingObject>& nlp_scaling,
75 TimingStatistics& timing_statistics
76 );
77
79 virtual ~OrigIpoptNLP();
81
82 virtual bool Initialize(
83 const Journalist& jnlst,
84 const OptionsList& options,
85 const std::string& prefix
86 );
87
91 bool init_x,
93 bool init_y_c,
95 bool init_y_d,
97 bool init_z_L,
99 bool init_z_U,
100 SmartPtr<Vector>& v_L,
102 );
103
106 IteratesVector& warm_start_iterate
107 )
108 {
109 return nlp_->GetWarmStartIterate(warm_start_iterate);
110 }
111
114
115 virtual Number f(
116 const Vector& x
117 );
118
122 virtual Number f(
123 const Vector& x,
124 Number mu
125 );
126
129 const Vector& x
130 );
131
136 const Vector& x,
137 Number mu
138 );
139
142 const Vector& x
143 );
144
147 const Vector& x
148 );
149
154 const Vector& x
155 );
156
159 const Vector& x
160 );
161
164 const Vector& x,
165 Number obj_factor,
166 const Vector& yc,
167 const Vector& yd
168 );
169
174 const Vector& x,
175 Number obj_factor,
176 const Vector& yc,
177 const Vector& yd,
178 Number mu
179 );
180
187
190 {
191 return x_L_;
192 }
193
196 {
197 return Px_L_;
198 }
199
206 {
207 return orig_x_L_;
208 }
209
212 {
213 return x_U_;
214 }
215
218 {
219 return Px_U_;
220 }
221
228 {
229 return orig_x_U_;
230 }
231
234 {
235 return d_L_;
236 }
237
240 {
241 return Pd_L_;
242 }
243
250 {
251 return orig_d_L_;
252 }
253
256 {
257 return d_U_;
258 }
259
262 {
263 return Pd_U_;
264 }
265
272 {
273 return orig_d_U_;
274 }
275
277 {
278 return h_space_;
279 }
280
282 {
283 return x_space_;
284 }
285
288 {
289 return d_space_;
290 }
292
294 virtual void GetSpaces(
299 SmartPtr<const MatrixSpace>& px_l_space,
301 SmartPtr<const MatrixSpace>& px_u_space,
303 SmartPtr<const MatrixSpace>& pd_l_space,
305 SmartPtr<const MatrixSpace>& pd_u_space,
306 SmartPtr<const MatrixSpace>& Jac_c_space,
307 SmartPtr<const MatrixSpace>& Jac_d_space,
308 SmartPtr<const SymMatrixSpace>& Hess_lagrangian_space
309 );
310
314 const Vector& new_x_L,
315 const Vector& new_x_U,
316 const Vector& new_d_L,
317 const Vector& new_d_U
318 );
319
322 virtual Index f_evals() const
323 {
324 return f_evals_;
325 }
326 virtual Index grad_f_evals() const
327 {
328 return grad_f_evals_;
329 }
330 virtual Index c_evals() const
331 {
332 return c_evals_;
333 }
334 virtual Index jac_c_evals() const
335 {
336 return jac_c_evals_;
337 }
338 virtual Index d_evals() const
339 {
340 return d_evals_;
341 }
342 virtual Index jac_d_evals() const
343 {
344 return jac_d_evals_;
345 }
346 virtual Index h_evals() const
347 {
348 return h_evals_;
349 }
351
355 SolverReturn status,
356 const Vector& x,
357 const Vector& z_L,
358 const Vector& z_U,
359 const Vector& c,
360 const Vector& d,
361 const Vector& y_c,
362 const Vector& y_d,
363 Number obj_value,
364 const IpoptData* ip_data,
366 );
367
369 AlgorithmMode mode,
370 Index iter,
371 Number obj_value,
372 Number inf_pr,
373 Number inf_du,
374 Number mu,
375 Number d_norm,
376 Number regularization_size,
377 Number alpha_du,
378 Number alpha_pr,
379 Index ls_trials,
382 );
384
386 static void RegisterOptions(
388 );
389
392 {
393 return nlp_;
394 }
395
396private:
399
402
419
424
427
429
432
435
440
445
450
455
458
461
464
467
470
473
476
479
482
485
488
491
495
506
508
511 const OrigIpoptNLP&
512 );
513
516 const OrigIpoptNLP&
517 );
519
522
528 Number bound_relax_factor,
529 Vector& bounds
530 );
531
534 const Vector& x
535 );
537
540
543
546
551
556
559
562
567
572
577
582
586
597
600
605};
606
607} // namespace Ipopt
608
609#endif
AlgorithmMode
enum to indicate the mode in which the algorithm is
Templated class for Cached Results.
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 ...
Specialized CompoundVector class specifically for the algorithm iterates.
Class responsible for all message output.
This class stores a list of user set options.
This class maps the traditional NLP into something that is more useful for Ipopt.
void operator=(const OrigIpoptNLP &)
Overloaded Assignment Operator.
SmartPtr< const Matrix > Px_U_
Permutation matrix (x_U_ -> x)
virtual Number f(const Vector &x)
Accessor methods for model data.
OrigIpoptNLP()
Default Constructor.
virtual SmartPtr< const Matrix > Px_L() const
Permutation matrix (x_L_ -> x)
SmartPtr< const VectorSpace > d_l_space_
CachedResults< Number > f_cache_
Objective function.
CachedResults< SmartPtr< const SymMatrix > > h_cache_
Hessian of the lagrangian (current iteration)
CachedResults< SmartPtr< const Vector > > unscaled_x_cache_
Unscaled version of x vector.
SmartPtr< const VectorSpace > x_u_space_
SmartPtr< const MatrixSpace > px_l_space_
SmartPtr< const Vector > orig_x_L_
Original unmodified lower bounds on x.
bool jac_d_constant_
Flag indicating if we need to ask for inequality constraint Jacobians only once.
virtual SmartPtr< const Vector > grad_f(const Vector &x, Number mu)
Gradient of the objective (depending in mu) - incorrect version for OrigIpoptNLP.
SmartPtr< const Vector > orig_d_U_
Original unmodified upper bounds on d.
virtual bool GetWarmStartIterate(IteratesVector &warm_start_iterate)
Method accessing the GetWarmStartIterate of the NLP.
virtual SmartPtr< const Vector > d(const Vector &x)
Inequality constraint residual (reformulated as equalities with slacks)
Number constr_viol_tol_
constraint violation tolerance (from OptimalityErrorConvergenceCheck)
CachedResults< SmartPtr< const Matrix > > jac_d_cache_
Jacobian Matrix for inequality constraints (current iteration)
virtual SmartPtr< const Matrix > jac_d(const Vector &x)
Jacobian Matrix for inequality constraints.
SmartPtr< const Vector > x_L_
Lower bounds on x.
CachedResults< SmartPtr< const Matrix > > jac_c_cache_
Jacobian Matrix for equality constraints (current iteration)
virtual SmartPtr< const Matrix > Pd_L() const
Permutation matrix (d_L_ -> d)
SmartPtr< NLP > nlp_
Pointer to the NLP.
bool honor_original_bounds_
Flag indicating whether the primal variables should be projected back into original bounds are optimi...
static void RegisterOptions(SmartPtr< RegisteredOptions > roptions)
Called to register the options.
bool grad_f_constant_
Flag indicating if we need to ask for objective Gradient only once.
virtual SmartPtr< const Matrix > jac_c(const Vector &x)
Jacobian Matrix for equality constraints.
virtual SmartPtr< const SymMatrix > h(const Vector &x, Number obj_factor, const Vector &yc, const Vector &yd, Number mu)
Hessian of the Lagrangian (depending in mu) - incorrect version for OrigIpoptNLP.
SmartPtr< const Matrix > Pd_U_
Permutation matrix (d_U_ -> d)
TimingStatistics & timing_statistics_
HessianApproximationType hessian_approximation_
Flag indicating what Hessian information is to be used.
virtual Index grad_f_evals() const
SmartPtr< NLP > nlp()
Accessor method to the underlying NLP.
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)
virtual SmartPtr< const SymMatrix > h(const Vector &x, Number obj_factor, const Vector &yc, const Vector &yd)
Hessian of the Lagrangian.
bool initialized_
Flag indicating if initialization method has been called.
void relax_bounds(Number bound_relax_factor, Vector &bounds)
relax the bounds by a relative move of relax_bound_factor.
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)
Accessor method for vector/matrix spaces pointers.
bool hessian_constant_
Flag indicating if we need to ask for Hessian only once.
virtual Index jac_c_evals() const
SmartPtr< const MatrixSpace > jac_d_space_
SmartPtr< const Vector > orig_x_U_
Original unmodified upper bounds on x.
virtual SmartPtr< const Matrix > Pd_U() const
Permutation matrix (d_U_ -> d)
virtual SmartPtr< const Vector > grad_f(const Vector &x)
Gradient of the objective.
CachedResults< SmartPtr< const Vector > > grad_f_cache_
Gradient of the objective function.
virtual ~OrigIpoptNLP()
Destructor.
virtual SmartPtr< const Vector > x_U() const
Scaled upper bounds on x.
HessianApproximationSpace hessian_approximation_space_
Flag indicating in which space Hessian is to be approximated.
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)
Solution Routines - overloaded from IpoptNLP.
SmartPtr< const Vector > x_U_
Upper bounds on x.
virtual SmartPtr< const VectorSpace > d_space() const
virtual void AdjustVariableBounds(const Vector &new_x_L, const Vector &new_x_U, const Vector &new_d_L, const Vector &new_d_U)
Method for adapting the variable bounds.
SmartPtr< const Vector > d_L_
Lower bounds on d.
SmartPtr< const Vector > orig_d_L_
Original unmodified lower bounds on d.
virtual SmartPtr< const Vector > d_L() const
Scaled lower bounds on d.
SmartPtr< const Matrix > Pd_L_
Permutation matrix (d_L_ -> d)
virtual Index h_evals() const
virtual SmartPtr< const Vector > c(const Vector &x)
Equality constraint residual.
virtual SmartPtr< const Matrix > Px_U() const
Permutation matrix (x_U_ -> x)
SmartPtr< const VectorSpace > d_u_space_
virtual SmartPtr< const SymMatrixSpace > HessianMatrixSpace() const
Accessor method to obtain the MatrixSpace for the Hessian matrix (or it's approximation)
bool jac_c_constant_
Flag indicating if we need to ask for equality constraint Jacobians only once.
virtual SmartPtr< const Vector > orig_d_U() const
Original unscaled upper bounds on d.
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)
Initialize (create) structures for the iteration data.
SmartPtr< const Vector > get_unscaled_x(const Vector &x)
Method for getting the unscaled version of the x vector.
virtual SmartPtr< const Vector > d_U() const
Scaled upper bounds on d.
CachedResults< SmartPtr< const Vector > > c_cache_
Equality constraint residuals.
virtual Number f(const Vector &x, Number mu)
Objective value (depending in mu) - incorrect version for OrigIpoptNLP.
virtual SmartPtr< const Vector > orig_d_L() const
Original unscaled lower bounds on d.
virtual bool Initialize(const Journalist &jnlst, const OptionsList &options, const std::string &prefix)
Initialization method.
SmartPtr< const MatrixSpace > pd_u_space_
SmartPtr< const SymMatrixSpace > h_space_
SmartPtr< const MatrixSpace > scaled_jac_d_space_
bool check_derivatives_for_naninf_
Flag indicating whether it is desired to check if there are Nan or Inf entries in first and second de...
SmartPtr< const Vector > d_U_
Upper bounds on d.
SmartPtr< const VectorSpace > x_space_
Necessary Vector/Matrix spaces.
SmartPtr< const Matrix > Px_L_
Permutation matrix (x_L_ -> x)
virtual Index f_evals() const
virtual Index d_evals() const
Number bound_relax_factor_
relaxation factor for the bounds
SmartPtr< const VectorSpace > c_space_
SmartPtr< const SymMatrixSpace > scaled_h_space_
OrigIpoptNLP(const SmartPtr< const Journalist > &jnlst, const SmartPtr< NLP > &nlp, const SmartPtr< NLPScalingObject > &nlp_scaling, TimingStatistics &timing_statistics)
Constructor.
virtual SmartPtr< const Vector > x_L() const
Scaled lower bounds on x.
SmartPtr< const MatrixSpace > pd_l_space_
virtual Index c_evals() const
SmartPtr< const Journalist > jnlst_
Journalist.
SmartPtr< const VectorSpace > d_space_
bool warm_start_same_structure_
Flag indicating whether the TNLP with identical structure has already been solved before.
virtual SmartPtr< const SymMatrix > uninitialized_h()
Provides a Hessian matrix from the correct matrix space with uninitialized values.
SmartPtr< const VectorSpace > x_l_space_
SmartPtr< const MatrixSpace > jac_c_space_
SmartPtr< const MatrixSpace > scaled_jac_c_space_
virtual SmartPtr< const VectorSpace > x_space() const
x_space
virtual Index jac_d_evals() const
OrigIpoptNLP(const OrigIpoptNLP &)
Copy Constructor.
virtual SmartPtr< const Vector > orig_x_L() const
Original unscaled lower bounds on x.
CachedResults< SmartPtr< const Vector > > d_cache_
Inequality constraint residual (reformulated as equalities with slacks.
virtual SmartPtr< const Vector > orig_x_U() const
Original unscaled upper bounds on x.
SmartPtr< const MatrixSpace > px_u_space_
Template class for Smart Pointers.
This class collects all timing statistics for Ipopt.
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.
HessianApproximationSpace
enumeration for the Hessian approximation space.
HessianApproximationType
enumeration for the Hessian information type.
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