Ipopt 3.11.9
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// $Id: IpRestoIpoptNLP.hpp 1861 2010-12-21 21:34:47Z andreasw $
6//
7// Authors: Carl Laird, Andreas Waechter IBM 2004-08-13
8
9#ifndef __IPRESTOIPOPTNLP_HPP__
10#define __IPRESTOIPOPTNLP_HPP__
11
12#include "IpIpoptNLP.hpp"
13#include "IpIpoptData.hpp"
15#include "IpCompoundMatrix.hpp"
17#include "IpCompoundVector.hpp"
18#include "IpIdentityMatrix.hpp"
19#include "IpDiagMatrix.hpp"
20#include "IpZeroMatrix.hpp"
21#include "IpOrigIpoptNLP.hpp"
22
23namespace Ipopt
24{
25
32 class RestoIpoptNLP : public IpoptNLP
33 {
34 public:
37 RestoIpoptNLP(IpoptNLP& orig_ip_nlp,
38 IpoptData& orig_ip_data,
39 IpoptCalculatedQuantities& orig_ip_cq);
40
44
46 virtual bool Initialize(const Journalist& jnlst,
47 const OptionsList& options,
48 const std::string& prefix);
49
53 bool init_x,
55 bool init_y_c,
57 bool init_y_d,
59 bool init_z_L,
61 bool init_z_U,
64 );
65
67 virtual bool GetWarmStartIterate(IteratesVector& warm_start_iterate)
68 {
69 return false;
70 }
71
75 const Vector& x, const Vector& z_L, const Vector& z_U,
76 const Vector& c, const Vector& d,
77 const Vector& y_c, const Vector& y_d,
78 Number obj_value,
79 const IpoptData* ip_data,
81 {}
83
89 virtual bool objective_depends_on_mu() const
90 {
91 return true;
92 }
93
95 virtual Number f(const Vector& x);
96
98 virtual Number f(const Vector& x, Number mu);
99
102
105
108
111
115
118
122 Number obj_factor,
123 const Vector& yc,
124 const Vector& yd
125 );
126
129 Number obj_factor,
130 const Vector& yc,
131 const Vector& yd,
132 Number mu);
133
138
141 {
142 return GetRawPtr(x_L_);
143 }
144
147 {
148 return GetRawPtr(Px_L_);
149 }
150
153 {
154 return GetRawPtr(x_U_);
155 }
156
159 {
160 return GetRawPtr(Px_U_);
161 }
162
165 {
166 return GetRawPtr(d_L_);
167 }
168
171 {
172 return GetRawPtr(Pd_L_);
173 }
174
177 {
178 return GetRawPtr(d_U_);
179 }
180
183 {
184 return GetRawPtr(Pd_U_);
185 }
186
188 {
189 return GetRawPtr(h_space_);
190 }
192
198 SmartPtr<const MatrixSpace>& px_l_space,
200 SmartPtr<const MatrixSpace>& px_u_space,
202 SmartPtr<const MatrixSpace>& pd_l_space,
204 SmartPtr<const MatrixSpace>& pd_u_space,
205 SmartPtr<const MatrixSpace>& Jac_c_space,
206 SmartPtr<const MatrixSpace>& Jac_d_space,
207 SmartPtr<const SymMatrixSpace>& Hess_lagrangian_space);
210 virtual void AdjustVariableBounds(const Vector& new_x_L,
211 const Vector& new_x_U,
212 const Vector& new_d_L,
213 const Vector& new_d_U);
214
217 Index iter, Number obj_value,
218 Number inf_pr, Number inf_du,
219 Number mu, Number d_norm,
220 Number regularization_size,
221 Number alpha_du, Number alpha_pr,
222 Index ls_trials,
225
230 {
231 return *orig_ip_nlp_;
232 }
234 {
235 return *orig_ip_data_;
236 }
238 {
239 return *orig_ip_cq_;
240 }
242
245 Number Rho() const
246 {
247 return rho_;
248 }
249
252 virtual Index f_evals() const
253 {
254 return f_evals_;
255 }
256 virtual Index grad_f_evals() const
257 {
258 return grad_f_evals_;
259 }
260 virtual Index c_evals() const
261 {
262 return c_evals_;
263 }
264 virtual Index jac_c_evals() const
265 {
266 return jac_c_evals_;
267 }
268 virtual Index d_evals() const
269 {
270 return d_evals_;
271 }
272 virtual Index jac_d_evals() const
273 {
274 return jac_d_evals_;
275 }
276 virtual Index h_evals() const
277 {
278 return h_evals_;
279 }
281
283 Number Eta(Number mu) const;
284
288 {
289 return ConstPtr(dr_x_);
290 }
291
297
298 private:
303
306
310
314
316
318
320
322
324
326
328
330
332
334
336
338
341
346
349
352
355
358
361
364
368
372 /* ToDo make this parameter? */
378 // TODO in the following we should use pointers to CONST values
381 SmartPtr<DiagMatrix> DR_x_; //TODO We can get rid of one of the dr DR
385
396
399
403
413
416
427 };
428
429} // namespace Ipopt
430
431#endif
AlgorithmMode
enum to indicate the mode in which the algorithm is
Number * x
Input: Starting point Output: Optimal solution.
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 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 Index f_evals() const
~RestoIpoptNLP()
Default destructor.
virtual Index h_evals() const
virtual Index c_evals() const
bool evaluate_orig_obj_at_resto_trial_
Flag indicating if evalution of the objective should be performed for every restoration phase objecti...
SmartPtr< IpoptNLP > orig_ip_nlp_
Pointer to the original IpoptNLP.
Number rho_
Penalty parameter for the $l_1$ norm.
SmartPtr< const Vector > d_L_
Lower bounds on d.
bool initialized_
Flag indicating if initialization method has been called.
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.
virtual SmartPtr< const Vector > grad_f(const Vector &x)
Gradient of the objective (incorrect version for restoration phase)
IpoptData & OrigIpData() const
RestoIpoptNLP()
Default Constructor.
SmartPtr< const MatrixSpace > pd_u_space_
void operator=(const RestoIpoptNLP &)
Overloaded Equals Operator.
SmartPtr< CompoundVector > x_L_
Lower bounds on x.
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)
Initialize - overloaded from IpoptNLP.
IpoptNLP & OrigIpNLP() const
virtual SmartPtr< const Matrix > jac_d(const Vector &x)
Jacobian Matrix for inequality constraints.
virtual Index grad_f_evals() const
SmartPtr< const VectorSpace > c_space_
virtual SmartPtr< const Matrix > Px_L() const
Permutation matrix (x_L_ -> x)
SmartPtr< const Vector > d_U_
Upper bounds on d.
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.
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.
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< const Vector > x_U_
Upper bounds on x.
SmartPtr< CompoundMatrixSpace > jac_d_space_
SmartPtr< const VectorSpace > d_u_space_
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)
Methods for IpoptType.
Number eta_factor_
scaling factor for eta calculation
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< const MatrixSpace > pd_l_space_
SmartPtr< CompoundMatrix > Px_U_
Permutation matrix (x_U_ -> x)
SmartPtr< const VectorSpace > d_space_
virtual SmartPtr< const Vector > c(const Vector &x)
Equality constraint residual.
SmartPtr< const Matrix > Pd_L_
Permutation matrix (d_L_ -> d)
SmartPtr< const Matrix > Pd_U_
Permutation matrix (d_U_ -> d.
SmartPtr< const VectorSpace > x_u_space_
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
RestoIpoptNLP(const RestoIpoptNLP &)
Copy Constructor.
SmartPtr< const VectorSpace > d_l_space_
RestoIpoptNLP(IpoptNLP &orig_ip_nlp, IpoptData &orig_ip_data, IpoptCalculatedQuantities &orig_ip_cq)
SmartPtr< IpoptCalculatedQuantities > orig_ip_cq_
Pointer to the original IpoptCalculatedQuantities.
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.
Vector Base Class.
Definition IpVector.hpp:48
SmartPtr< const U > ConstPtr(const SmartPtr< U > &smart_ptr)
HessianApproximationType
enumeration for the Hessian information type.
U * GetRawPtr(const SmartPtr< U > &smart_ptr)
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