Ipopt Documentation  
 
Loading...
Searching...
No Matches
IpRestoIpoptNLP.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 __IPRESTOIPOPTNLP_HPP__
8#define __IPRESTOIPOPTNLP_HPP__
9
10#include "IpIpoptNLP.hpp"
11#include "IpIpoptData.hpp"
13#include "IpCompoundMatrix.hpp"
15#include "IpCompoundVector.hpp"
16#include "IpIdentityMatrix.hpp"
17#include "IpDiagMatrix.hpp"
18#include "IpZeroMatrix.hpp"
19#include "IpOrigIpoptNLP.hpp"
20
21namespace Ipopt
22{
23
32{
33public:
37 IpoptNLP& orig_ip_nlp,
38 IpoptData& orig_ip_data,
40 );
41
45
46 virtual bool Initialize(
47 const Journalist& jnlst,
48 const OptionsList& options,
49 const std::string& prefix
50 );
51
55 bool init_x,
57 bool init_y_c,
59 bool init_y_d,
61 bool init_z_L,
63 bool init_z_U,
65 SmartPtr<Vector>& v_U);
66
68 virtual bool GetWarmStartIterate(
69 IteratesVector& /*warm_start_iterate*/
70 )
71 {
72 return false;
73 }
74
76 SolverReturn /*status*/,
77 const Vector& /*x*/,
78 const Vector& /*z_L*/,
79 const Vector& /*z_U*/,
80 const Vector& /*c*/,
81 const Vector& /*d*/,
82 const Vector& /*y_c*/,
83 const Vector& /*y_d*/,
84 Number /*obj_value*/,
85 const IpoptData* /*ip_data*/,
87 )
88 { }
89
92
96 virtual bool objective_depends_on_mu() const
97 {
98 return true;
99 }
100
102 virtual Number f(
103 const Vector& x
104 );
105
107 virtual Number f(
108 const Vector& x,
109 Number mu
110 );
111
114 const Vector& x
115 );
116
119 const Vector& x,
120 Number mu
121 );
122
125 const Vector& x
126 );
127
130 const Vector& x
131 );
132
136 const Vector& x
137 );
138
141 const Vector& x
142 );
143
146 const Vector& x,
147 Number obj_factor,
148 const Vector& yc,
149 const Vector& yd
150 );
151
154 const Vector& x,
155 Number obj_factor,
156 const Vector& yc,
157 const Vector& yd,
158 Number mu
159 );
160
167
170 {
171 return GetRawPtr(x_L_);
172 }
173
176 {
177 return GetRawPtr(Px_L_);
178 }
179
182 {
183 return GetRawPtr(x_U_);
184 }
185
188 {
189 return GetRawPtr(Px_U_);
190 }
191
194 {
195 return GetRawPtr(d_L_);
196 }
197
200 {
201 return GetRawPtr(Pd_L_);
202 }
203
206 {
207 return GetRawPtr(d_U_);
208 }
209
212 {
213 return GetRawPtr(Pd_U_);
214 }
215
217 {
218 return GetRawPtr(h_space_);
219 }
220
222 {
223 return GetRawPtr(x_space_);
224 }
226
228 virtual void GetSpaces(
233 SmartPtr<const MatrixSpace>& px_l_space,
235 SmartPtr<const MatrixSpace>& px_u_space,
237 SmartPtr<const MatrixSpace>& pd_l_space,
239 SmartPtr<const MatrixSpace>& pd_u_space,
240 SmartPtr<const MatrixSpace>& Jac_c_space,
241 SmartPtr<const MatrixSpace>& Jac_d_space,
242 SmartPtr<const SymMatrixSpace>& Hess_lagrangian_space);
243
249 const Vector& new_x_L,
250 const Vector& new_x_U,
251 const Vector& new_d_L,
252 const Vector& new_d_U
253 );
254
257 AlgorithmMode mode,
258 Index iter,
259 Number obj_value,
260 Number inf_pr,
261 Number inf_du,
262 Number mu,
263 Number d_norm,
264 Number regularization_size,
265 Number alpha_du,
266 Number alpha_pr,
267 Index ls_trials,
270 );
271
277 {
278 return *orig_ip_nlp_;
279 }
280
282 {
283 return *orig_ip_data_;
284 }
285
287 {
288 return *orig_ip_cq_;
289 }
291
295 Number Rho() const
296 {
297 return rho_;
298 }
299
302 virtual Index f_evals() const
303 {
304 return f_evals_;
305 }
306 virtual Index grad_f_evals() const
307 {
308 return grad_f_evals_;
309 }
310 virtual Index c_evals() const
311 {
312 return c_evals_;
313 }
314 virtual Index jac_c_evals() const
315 {
316 return jac_c_evals_;
317 }
318 virtual Index d_evals() const
319 {
320 return d_evals_;
321 }
322 virtual Index jac_d_evals() const
323 {
324 return jac_d_evals_;
325 }
326 virtual Index h_evals() const
327 {
328 return h_evals_;
329 }
331
334 Number mu
335 ) const;
336
341 {
342 return ConstPtr(dr_x_);
343 }
344
345 static void RegisterOptions(
347 );
348
349private:
352
354
357
361
365
367
369
371
373
375
377
379
381
383
385
387
389
392
395
397
400
403
406
409
412
415
419
422
426
429
432
433 // TODO in the following we should use pointers to CONST values
434 // TODO We can get rid of one of the dr DR
438
442
452
454
457 const RestoIpoptNLP&
458 );
459
462 const RestoIpoptNLP&
463 );
465
468
473
477
480
491};
492
493} // namespace Ipopt
494
495#endif
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.
Definition: IpIpoptData.hpp:98
This is the abstract base class for classes that map the traditional NLP into something that is more ...
Definition: IpIpoptNLP.hpp:28
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 by Ipopt.
SmartPtr< DiagMatrix > DR_x_
virtual Number f(const Vector &x, Number mu)
Objective value.
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)
User callback method.
virtual SmartPtr< const Vector > d_U() const
Upper bounds on d.
virtual SmartPtr< const SymMatrix > uninitialized_h()
Provides a Hessian matrix from the correct matrix space with uninitialized values.
virtual SmartPtr< const Vector > x_L() const
Lower bounds on x.
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.
Number Rho() const
Accessor Method for obtaining the Rho penalization factor for the ell_1 norm.
virtual bool GetWarmStartIterate(IteratesVector &)
Method accessing the GetWarmStartIterate of the NLP.
virtual Index f_evals() const
SmartPtr< CompoundMatrixSpace > pd_l_space_
~RestoIpoptNLP()
Destructor.
SmartPtr< CompoundVectorSpace > d_space_
virtual Index h_evals() const
virtual Index c_evals() const
SmartPtr< CompoundVectorSpace > x_u_space_
bool evaluate_orig_obj_at_resto_trial_
Flag indicating if evaluation of the objective should be performed for every restoration phase object...
SmartPtr< IpoptNLP > orig_ip_nlp_
Pointer to the original IpoptNLP.
Number rho_
Penalty parameter for the $l_1$ norm.
bool initialized_
Flag indicating if initialization method has been called.
SmartPtr< CompoundVector > d_L_
Lower bounds on d.
virtual SmartPtr< const Vector > d(const Vector &x)
Inequality constraint residual (reformulated as equalities with slacks.
void FinalizeSolution(SolverReturn, const Vector &, const Vector &, const Vector &, const Vector &, const Vector &, const Vector &, const Vector &, Number, const IpoptData *, IpoptCalculatedQuantities *)
virtual SmartPtr< const Vector > grad_f(const Vector &x)
Gradient of the objective (incorrect version for restoration phase)
IpoptData & OrigIpData() const
RestoIpoptNLP()
Default Constructor.
void operator=(const RestoIpoptNLP &)
Default Assignment Operator.
SmartPtr< CompoundVector > x_L_
Lower bounds on x.
SmartPtr< CompoundVector > d_U_
Upper bounds on d.
virtual SmartPtr< const Vector > grad_f(const Vector &x, Number mu)
Gradient of the objective.
SmartPtr< CompoundMatrix > Px_L_
Permutation matrix (x_L_ -> x)
SmartPtr< CompoundMatrixSpace > jac_c_space_
SmartPtr< CompoundVectorSpace > x_space_
Necessary Vector/Matrix spaces.
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.
virtual SmartPtr< const Vector > d_L() const
Lower bounds on d.
SmartPtr< CompoundMatrixSpace > px_l_space_
virtual Index jac_c_evals() const
virtual bool Initialize(const Journalist &jnlst, const OptionsList &options, const std::string &prefix)
Initialization method.
IpoptNLP & OrigIpNLP() const
virtual SmartPtr< const Matrix > jac_d(const Vector &x)
Jacobian Matrix for inequality constraints.
virtual Index grad_f_evals() const
virtual SmartPtr< const Matrix > Px_L() const
Permutation matrix (x_L_ -> x)
Number Eta(Number mu) const
Method to calculate eta, the factor for the regularization term.
HessianApproximationType hessian_approximation_
Flag indicating how Hessian information is obtained.
virtual bool objective_depends_on_mu() const
Accessor methods for model data.
SmartPtr< CompoundMatrix > Pd_U_
Permutation matrix (d_U_ -> d.
SmartPtr< CompoundVectorSpace > c_space_
SmartPtr< CompoundMatrix > Pd_L_
Permutation matrix (d_L_ -> d)
virtual SmartPtr< const Matrix > Px_U() const
Permutation matrix (x_U_ -> x.
SmartPtr< CompoundVectorSpace > x_l_space_
IpoptCalculatedQuantities & OrigIpCq() const
virtual SmartPtr< const SymMatrixSpace > HessianMatrixSpace() const
Accessor method to obtain the MatrixSpace for the Hessian matrix (or it's approximation)
SmartPtr< Vector > x_ref_
$x$ part of the reference point in the regularization term
SmartPtr< CompoundMatrixSpace > pd_u_space_
SmartPtr< CompoundMatrixSpace > jac_d_space_
SmartPtr< CompoundVector > x_U_
Upper bounds on x.
SmartPtr< CompoundMatrixSpace > px_u_space_
virtual Index jac_d_evals() const
SmartPtr< IpoptData > orig_ip_data_
Pointer to the original IpoptData.
static void RegisterOptions(SmartPtr< RegisteredOptions > roptions)
Number eta_factor_
scaling factor for eta calculation
virtual SmartPtr< const VectorSpace > x_space() const
x_space
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.
SmartPtr< CompoundMatrix > Px_U_
Permutation matrix (x_U_ -> x)
virtual SmartPtr< const Vector > c(const Vector &x)
Equality constraint residual.
SmartPtr< const Vector > DR_x() const
Method returning the scaling factors for the 2-norm penalization term.
virtual SmartPtr< const Matrix > Pd_U() const
Permutation matrix (d_U_ -> d.
virtual SmartPtr< const SymMatrix > h(const Vector &x, Number obj_factor, const Vector &yc, const Vector &yd)
Hessian of the Lagrangian (incorrect version for restoration phase)
virtual SmartPtr< const Matrix > Pd_L() const
Permutation matrix (d_L_ -> d)
Number eta_mu_exponent_
exponent for mu in eta calculation
SmartPtr< CompoundVectorSpace > d_l_space_
RestoIpoptNLP(const RestoIpoptNLP &)
Copy Constructor.
RestoIpoptNLP(IpoptNLP &orig_ip_nlp, IpoptData &orig_ip_data, IpoptCalculatedQuantities &orig_ip_cq)
SmartPtr< IpoptCalculatedQuantities > orig_ip_cq_
Pointer to the original IpoptCalculatedQuantities.
SmartPtr< CompoundVectorSpace > d_u_space_
SmartPtr< CompoundSymMatrixSpace > h_space_
virtual Index d_evals() const
virtual Number f(const Vector &x)
Objective value (incorrect version for restoration phase)
virtual SmartPtr< const Vector > x_U() const
Upper bounds on x.
virtual SmartPtr< const SymMatrix > h(const Vector &x, Number obj_factor, const Vector &yc, const Vector &yd, Number mu)
Hessian of the Lagrangian.
virtual SmartPtr< const Matrix > jac_c(const Vector &x)
Jacobian Matrix for equality constraints.
SmartPtr< Vector > dr_x_
Scaling factors for the $x$ part of the regularization term.
Template class for Smart Pointers.
Definition: IpSmartPtr.hpp:172
Vector Base Class.
Definition: IpVector.hpp:48
This file contains a base class for all exceptions and a set of macros to help with exceptions.
SmartPtr< const U > ConstPtr(const SmartPtr< U > &smart_ptr)
Definition: IpSmartPtr.hpp:665
HessianApproximationType
enumeration for the Hessian information type.
U * GetRawPtr(const SmartPtr< U > &smart_ptr)
Definition: IpSmartPtr.hpp:651
SolverReturn
enum for the return from the optimize algorithm
Definition: IpAlgTypes.hpp:20
int Index
Type of all indices of vectors, matrices etc.
Definition: IpTypes.hpp:17
double Number
Type of all numbers.
Definition: IpTypes.hpp:15