Ipopt 3.12.10

- Main Page
- Classes
- Files

- File List
- File Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
IpLimMemQuasiNewtonUpdater.hpp
Go to the documentation of this file.
1 // Copyright (C) 2005, 2010 International Business Machines and others.
2 // All Rights Reserved.
3 // This code is published under the Eclipse Public License.
4 //
5 // $Id: IpLimMemQuasiNewtonUpdater.hpp 2269 2013-05-05 11:32:40Z stefan $
6 //
7 // Authors: Andreas Waechter IBM 2005-12-26
8
9 #ifndef __IPLIMMEMQUASINEWTONUPDATER_HPP__
10 #define __IPLIMMEMQUASINEWTONUPDATER_HPP__
11
12 #include "IpHessianUpdater.hpp"
13 #include "IpLowRankUpdateSymMatrix.hpp"
14 #include "IpMultiVectorMatrix.hpp"
15 #include "IpDenseVector.hpp"
16 #include "IpDenseGenMatrix.hpp"
17 #include "IpDenseSymMatrix.hpp"
18
19 namespace Ipopt
20 {
21
25 class LimMemQuasiNewtonUpdater : public HessianUpdater
26 {
27 public:
31 LimMemQuasiNewtonUpdater(bool update_for_resto);
32
34 virtual ~LimMemQuasiNewtonUpdater()
35 {}
37
39 virtual bool InitializeImpl(const OptionsList& options,
40 const std::string& prefix);
41
44 virtual void UpdateHessian();
45
48 static void RegisterOptions(SmartPtr<RegisteredOptions> roptions);
50
51 private:
61 LimMemQuasiNewtonUpdater(const LimMemQuasiNewtonUpdater&);
62
64 void operator=(const LimMemQuasiNewtonUpdater&);
66
68 SmartPtr<const LowRankUpdateSymMatrixSpace> h_space_;
69
73 Index limited_memory_max_history_;
75 enum LMUpdateType
76 {
77 BFGS=0,
78 SR1
79 };
81 LMUpdateType limited_memory_update_type_;
83 enum LMInitialization
84 {
85 SCALAR1=0,
86 SCALAR2,
87 SCALAR3,
88 SCALAR4,
89 CONSTANT
90 };
92 LMInitialization limited_memory_initialization_;
95 Number limited_memory_init_val_;
98 Index limited_memory_max_skipping_;
100 Number sigma_safe_min_;
102 Number sigma_safe_max_;
105 bool limited_memory_special_for_resto_;
107
113 const bool update_for_resto_;
116 Number last_eta_;
120 SmartPtr<const Vector> curr_DR_x_;
122 TaggedObject::Tag curr_DR_x_tag_;
127 SmartPtr<const Vector> curr_red_DR_x_;
130 Number curr_eta_;
131
134 Index lm_skipped_iter_;
135
139 Index curr_lm_memory_;
141 SmartPtr<MultiVectorMatrix> S_;
145 SmartPtr<MultiVectorMatrix> Y_;
148 SmartPtr<MultiVectorMatrix> Ypart_;
151 SmartPtr<DenseVector> D_;
153 SmartPtr<DenseGenMatrix> L_;
155 SmartPtr<Vector> B0_;
159 Number sigma_;
161 SmartPtr<MultiVectorMatrix> V_;
163 SmartPtr<MultiVectorMatrix> U_;
166 SmartPtr<DenseSymMatrix> SdotS_;
169 bool SdotS_uptodate_;
171 SmartPtr<MultiVectorMatrix> DRS_;
174 SmartPtr<DenseSymMatrix> STDRS_;
176 SmartPtr<const Vector> last_x_;
178 SmartPtr<const Vector> last_grad_f_;
180 SmartPtr<const Matrix> last_jac_c_;
182 SmartPtr<const Matrix> last_jac_d_;
184 Index curr_lm_memory_old_;
186 SmartPtr<MultiVectorMatrix> S_old_;
190 SmartPtr<MultiVectorMatrix> Y_old_;
193 SmartPtr<MultiVectorMatrix> Ypart_old_;
196 SmartPtr<DenseVector> D_old_;
198 SmartPtr<DenseGenMatrix> L_old_;
200 SmartPtr<Vector> B0_old_;
204 Number sigma_old_;
206 SmartPtr<MultiVectorMatrix> V_old_;
208 SmartPtr<MultiVectorMatrix> U_old_;
211 SmartPtr<DenseSymMatrix> SdotS_old_;
214 bool SdotS_uptodate_old_;
216 SmartPtr<MultiVectorMatrix> DRS_old_;
219 SmartPtr<DenseSymMatrix> STDRS_old_;
221
228 bool CheckSkippingBFGS(Vector& s_new, Vector& y_new);
233 bool UpdateInternalData(const Vector& s_new, const Vector& y_new,
234 SmartPtr<Vector> ypart_new);
240 void AugmentMultiVector(SmartPtr<MultiVectorMatrix>& V,
241 const Vector& v_new);
247 void AugmentDenseVector(SmartPtr<DenseVector>& V,
248 Number v_new);
256 void AugmentLMatrix(SmartPtr<DenseGenMatrix>& V,
257 const MultiVectorMatrix& S,
258 const MultiVectorMatrix& Y);
265 void AugmentSdotSMatrix(SmartPtr<DenseSymMatrix>& V,
266 const MultiVectorMatrix& S);
274 void AugmentSTDRSMatrix(SmartPtr<DenseSymMatrix>& V,
275 const MultiVectorMatrix& S,
276 const MultiVectorMatrix& DRS);
277
282 void ShiftMultiVector(SmartPtr<MultiVectorMatrix>& V, const Vector& v_new);
288 void ShiftDenseVector(SmartPtr<DenseVector>& V, Number v_new);
295 void ShiftLMatrix(SmartPtr<DenseGenMatrix>& V,
296 const MultiVectorMatrix& S,
297 const MultiVectorMatrix& Y);
303 void ShiftSdotSMatrix(SmartPtr<DenseSymMatrix>& V,
304 const MultiVectorMatrix& S);
310 void ShiftSTDRSMatrix(SmartPtr<DenseSymMatrix>& V,
311 const MultiVectorMatrix& S,
312 const MultiVectorMatrix& DRS);
315 void RecalcY(Number eta, const Vector& DR_x,
316 MultiVectorMatrix& S,
317 MultiVectorMatrix& Ypart,
318 SmartPtr<MultiVectorMatrix>& Y);
320 void RecalcD(MultiVectorMatrix& S,
321 MultiVectorMatrix& Y,
322 SmartPtr<DenseVector>& D);
324 void RecalcL(MultiVectorMatrix& S,
325 MultiVectorMatrix& Y,
326 SmartPtr<DenseGenMatrix>& L);
336 bool SplitEigenvalues(DenseGenMatrix& Q, const DenseVector& E,
337 SmartPtr<DenseGenMatrix>& Qminus,
338 SmartPtr<DenseGenMatrix>& Qplus);
342 void StoreInternalDataBackup();
345 void RestoreInternalDataBackup();
348 void ReleaseInternalDataBackup();
351 void SetW();
353
354 };
355
356 } // namespace Ipopt
357
358 #endif
Ipopt::LimMemQuasiNewtonUpdater::L_old_
SmartPtr< DenseGenMatrix > L_old_
Matrix L_k for compact formulation from last update (backup).
Definition: IpLimMemQuasiNewtonUpdater.hpp:198
Ipopt::LimMemQuasiNewtonUpdater::STDRS_
SmartPtr< DenseSymMatrix > STDRS_
For efficient implementation, we store the S^T S DR * S.
Definition: IpLimMemQuasiNewtonUpdater.hpp:174
Ipopt::LimMemQuasiNewtonUpdater::B0_
SmartPtr< Vector > B0_
First term (starting matrix) for the approximation.
Definition: IpLimMemQuasiNewtonUpdater.hpp:155
Ipopt::LimMemQuasiNewtonUpdater::STDRS_old_
SmartPtr< DenseSymMatrix > STDRS_old_
For efficient implementation, we store the S^T S DR * S.
Definition: IpLimMemQuasiNewtonUpdater.hpp:219
Ipopt::LimMemQuasiNewtonUpdater::sigma_old_
Number sigma_old_
First term (starting matrix) for the approximation.
Definition: IpLimMemQuasiNewtonUpdater.hpp:204
Ipopt::LimMemQuasiNewtonUpdater::InitializeImpl
virtual bool InitializeImpl(const OptionsList &options, const std::string &prefix)
overloaded from AlgorithmStrategyObject
Ipopt::LimMemQuasiNewtonUpdater::V_old_
SmartPtr< MultiVectorMatrix > V_old_
V in LowRankUpdateMatrix from last update (backup)
Definition: IpLimMemQuasiNewtonUpdater.hpp:206
Ipopt::LimMemQuasiNewtonUpdater::SCALAR2
Definition: IpLimMemQuasiNewtonUpdater.hpp:86
Ipopt::LimMemQuasiNewtonUpdater::curr_lm_memory_old_
Index curr_lm_memory_old_
current size of limited memory
Definition: IpLimMemQuasiNewtonUpdater.hpp:184
Ipopt::LimMemQuasiNewtonUpdater::CONSTANT
Definition: IpLimMemQuasiNewtonUpdater.hpp:89
Ipopt::LimMemQuasiNewtonUpdater::last_jac_c_
SmartPtr< const Matrix > last_jac_c_
Jacobian for equality constraints w.r.t x at x_last.
Definition: IpLimMemQuasiNewtonUpdater.hpp:180
Ipopt::LimMemQuasiNewtonUpdater::D_old_
SmartPtr< DenseVector > D_old_
Diagonal elements D_k for compact formulation from last update (backup).
Definition: IpLimMemQuasiNewtonUpdater.hpp:196
Ipopt::LimMemQuasiNewtonUpdater::B0_old_
SmartPtr< Vector > B0_old_
First term (starting matrix) for the approximation (backup).
Definition: IpLimMemQuasiNewtonUpdater.hpp:200
Ipopt::LimMemQuasiNewtonUpdater::limited_memory_initialization_
LMInitialization limited_memory_initialization_
How to choose B0 in the low-rank update.
Definition: IpLimMemQuasiNewtonUpdater.hpp:92
Ipopt::LimMemQuasiNewtonUpdater::SR1
Definition: IpLimMemQuasiNewtonUpdater.hpp:78
Ipopt::LimMemQuasiNewtonUpdater::limited_memory_max_skipping_
Index limited_memory_max_skipping_
Number of successive iterations of skipped updates after which the approximation is reset...
Definition: IpLimMemQuasiNewtonUpdater.hpp:98
Ipopt::LimMemQuasiNewtonUpdater::limited_memory_init_val_
Number limited_memory_init_val_
Value of B0 (as this multiple of the identity in certain situations.)
Definition: IpLimMemQuasiNewtonUpdater.hpp:95
Ipopt::LimMemQuasiNewtonUpdater::LMUpdateType
LMUpdateType
enumeration for the Hessian update type.
Definition: IpLimMemQuasiNewtonUpdater.hpp:75
Ipopt::LimMemQuasiNewtonUpdater::sigma_safe_min_
Number sigma_safe_min_
Minimal safeguard value for sigma.
Definition: IpLimMemQuasiNewtonUpdater.hpp:100
Ipopt::LimMemQuasiNewtonUpdater::curr_red_DR_x_
SmartPtr< const Vector > curr_red_DR_x_
Current DR_x scaling factors in the restoration phase objective function in the smaller space for the...
Definition: IpLimMemQuasiNewtonUpdater.hpp:127
Ipopt::Number
double Number
Type of all numbers.
Definition: IpTypes.hpp:17
IpDenseSymMatrix.hpp
Ipopt::Vector
Vector Base Class.
Definition: IpVector.hpp:47
Ipopt::LimMemQuasiNewtonUpdater::limited_memory_max_history_
Index limited_memory_max_history_
Size of memory for limited memory update.
Definition: IpLimMemQuasiNewtonUpdater.hpp:73
Ipopt::LimMemQuasiNewtonUpdater::ShiftMultiVector
void ShiftMultiVector(SmartPtr< MultiVectorMatrix > &V, const Vector &v_new)
Given a MutliVector V, get rid of the first column, shift all other columns to the left...
Ipopt::LimMemQuasiNewtonUpdater::UpdateHessian
virtual void UpdateHessian()
Update the Hessian based on the current information in IpData.
Ipopt::DenseVector
Dense Vector Implementation.
Definition: IpDenseVector.hpp:40
Ipopt::LimMemQuasiNewtonUpdater::SCALAR1
Definition: IpLimMemQuasiNewtonUpdater.hpp:85
Ipopt::LimMemQuasiNewtonUpdater::RecalcY
void RecalcY(Number eta, const Vector &DR_x, MultiVectorMatrix &S, MultiVectorMatrix &Ypart, SmartPtr< MultiVectorMatrix > &Y)
Method for recomputing Y from scratch, using Ypart (only for restoration phase)
Ipopt::LimMemQuasiNewtonUpdater::limited_memory_update_type_
LMUpdateType limited_memory_update_type_
Type of Hessian update.
Definition: IpLimMemQuasiNewtonUpdater.hpp:81
Ipopt::LimMemQuasiNewtonUpdater::h_space_
SmartPtr< const LowRankUpdateSymMatrixSpace > h_space_
Matrix space for the low-rank Hessian approximation.
Definition: IpLimMemQuasiNewtonUpdater.hpp:68
Ipopt::LimMemQuasiNewtonUpdater::ReleaseInternalDataBackup
void ReleaseInternalDataBackup()
Release anything that we allocated for StoreInternalDataBackup and is no longer needed.
Ipopt::LimMemQuasiNewtonUpdater::last_x_
SmartPtr< const Vector > last_x_
Primal variables x from most recent update.
Definition: IpLimMemQuasiNewtonUpdater.hpp:176
Ipopt::LimMemQuasiNewtonUpdater::curr_DR_x_tag_
TaggedObject::Tag curr_DR_x_tag_
Tag for curr_DR_x_.
Definition: IpLimMemQuasiNewtonUpdater.hpp:122
Ipopt::LimMemQuasiNewtonUpdater::SCALAR3
Definition: IpLimMemQuasiNewtonUpdater.hpp:87
IpMultiVectorMatrix.hpp
Ipopt::LimMemQuasiNewtonUpdater::sigma_safe_max_
Number sigma_safe_max_
Maximal safeguard value for sigma.
Definition: IpLimMemQuasiNewtonUpdater.hpp:102
Ipopt::LimMemQuasiNewtonUpdater::S_old_
SmartPtr< MultiVectorMatrix > S_old_
s pairs for the recent iterations (backup)
Definition: IpLimMemQuasiNewtonUpdater.hpp:186
Ipopt::LimMemQuasiNewtonUpdater::SCALAR4
Definition: IpLimMemQuasiNewtonUpdater.hpp:88
IpLowRankUpdateSymMatrix.hpp
Ipopt::LimMemQuasiNewtonUpdater::RecalcD
void RecalcD(MultiVectorMatrix &S, MultiVectorMatrix &Y, SmartPtr< DenseVector > &D)
Method for recomputing D from S and Y.
Ipopt::LimMemQuasiNewtonUpdater::SplitEigenvalues
bool SplitEigenvalues(DenseGenMatrix &Q, const DenseVector &E, SmartPtr< DenseGenMatrix > &Qminus, SmartPtr< DenseGenMatrix > &Qplus)
Split the eigenvectors into negative and positive ones.
Ipopt::LimMemQuasiNewtonUpdater::limited_memory_special_for_resto_
bool limited_memory_special_for_resto_
Flag indicating if Hessian approximation should be done in a special manner for the restoration phase...
Definition: IpLimMemQuasiNewtonUpdater.hpp:105
Ipopt::LimMemQuasiNewtonUpdater::CheckSkippingBFGS
bool CheckSkippingBFGS(Vector &s_new, Vector &y_new)
Method deciding whether the BFGS update should be skipped.
Ipopt::SmartPtr
Template class for Smart Pointers.
Definition: IpSmartPtr.hpp:172
Ipopt::OptionsList
This class stores a list of user set options.
Definition: IpOptionsList.hpp:32
Ipopt::LimMemQuasiNewtonUpdater::SdotS_uptodate_
bool SdotS_uptodate_
Flag indicating whether SdotS_ is update to date from most recent update.
Definition: IpLimMemQuasiNewtonUpdater.hpp:169
Ipopt::LimMemQuasiNewtonUpdater::AugmentSdotSMatrix
void AugmentSdotSMatrix(SmartPtr< DenseSymMatrix > &V, const MultiVectorMatrix &S)
Given a DenseSymMatrix V, create a new DenseGenMatrixSpace with one more dimension, and return V as a member of that space, consisting of all previous elements, and in addition elements s_i^Ts_j for the new entries, where s are the vectors in the MultiVector S.
Ipopt::LimMemQuasiNewtonUpdater::RecalcL
void RecalcL(MultiVectorMatrix &S, MultiVectorMatrix &Y, SmartPtr< DenseGenMatrix > &L)
Method for recomputing L from S and Y.
IpHessianUpdater.hpp
Ipopt::LimMemQuasiNewtonUpdater::UpdateInternalData
bool UpdateInternalData(const Vector &s_new, const Vector &y_new, SmartPtr< Vector > ypart_new)
Update the internal data, such as the S, Y, L, D etc matrices and vectors that are required for compu...
Ipopt::LimMemQuasiNewtonUpdater::SdotS_uptodate_old_
bool SdotS_uptodate_old_
Flag indicating whether SdotS_ is update to date from most recent update (backup).
Definition: IpLimMemQuasiNewtonUpdater.hpp:214
Ipopt::LimMemQuasiNewtonUpdater::StoreInternalDataBackup
void StoreInternalDataBackup()
Store a copy of the pointers to the internal data (S, Y, D, L, SdotS, curr_lm_memory) This is called ...
Ipopt::LimMemQuasiNewtonUpdater::AugmentMultiVector
void AugmentMultiVector(SmartPtr< MultiVectorMatrix > &V, const Vector &v_new)
Given a MutliVector V, create a new MultiVectorSpace with one more column, and return V as a member o...
Ipopt::LimMemQuasiNewtonUpdater::~LimMemQuasiNewtonUpdater
virtual ~LimMemQuasiNewtonUpdater()
Default destructor.
Definition: IpLimMemQuasiNewtonUpdater.hpp:34
Ipopt::LimMemQuasiNewtonUpdater::curr_lm_memory_
Index curr_lm_memory_
current size of limited memory
Definition: IpLimMemQuasiNewtonUpdater.hpp:139
Ipopt::LimMemQuasiNewtonUpdater::ShiftDenseVector
void ShiftDenseVector(SmartPtr< DenseVector > &V, Number v_new)
Given a DenseVector V, get rid of the first element, shift all other elements one position to the top...
Ipopt::MultiVectorMatrix
Class for Matrices with few columns that consists of Vectors.
Definition: IpMultiVectorMatrix.hpp:25
Ipopt::LimMemQuasiNewtonUpdater::U_
SmartPtr< MultiVectorMatrix > U_
U in LowRankUpdateMatrix from last update.
Definition: IpLimMemQuasiNewtonUpdater.hpp:163
Ipopt::LimMemQuasiNewtonUpdater
Implementation of the HessianUpdater for limit-memory quasi-Newton approximation of the Lagrangian He...
Definition: IpLimMemQuasiNewtonUpdater.hpp:25
Ipopt::LimMemQuasiNewtonUpdater::V_
SmartPtr< MultiVectorMatrix > V_
V in LowRankUpdateMatrix from last update.
Definition: IpLimMemQuasiNewtonUpdater.hpp:161
Ipopt::Index
int Index
Type of all indices of vectors, matrices etc.
Definition: IpTypes.hpp:19
Ipopt::LimMemQuasiNewtonUpdater::last_grad_f_
SmartPtr< const Vector > last_grad_f_
Gradient of objective function w.r.t.
Definition: IpLimMemQuasiNewtonUpdater.hpp:178
Ipopt::LimMemQuasiNewtonUpdater::S_
SmartPtr< MultiVectorMatrix > S_
s pairs for the recent iterations
Definition: IpLimMemQuasiNewtonUpdater.hpp:141
Ipopt::LimMemQuasiNewtonUpdater::D_
SmartPtr< DenseVector > D_
Diagonal elements D_k for compact formulation from last update.
Definition: IpLimMemQuasiNewtonUpdater.hpp:151
Ipopt::LimMemQuasiNewtonUpdater::AugmentDenseVector
void AugmentDenseVector(SmartPtr< DenseVector > &V, Number v_new)
Given a DenseVector V, create a new DenseVectorSpace with one more row, and return V as a member of t...
Ipopt::LimMemQuasiNewtonUpdater::last_jac_d_
SmartPtr< const Matrix > last_jac_d_
Jacobian for inequality constraints w.r.t x at x_last.
Definition: IpLimMemQuasiNewtonUpdater.hpp:182
IpDenseVector.hpp
Ipopt::LimMemQuasiNewtonUpdater::ShiftLMatrix
void ShiftLMatrix(SmartPtr< DenseGenMatrix > &V, const MultiVectorMatrix &S, const MultiVectorMatrix &Y)
Given a strictly-lower triangular square DenseGenMatrix V, shift everything one row and column up...
Ipopt::LimMemQuasiNewtonUpdater::AugmentLMatrix
void AugmentLMatrix(SmartPtr< DenseGenMatrix > &V, const MultiVectorMatrix &S, const MultiVectorMatrix &Y)
Given a strictly-lower triangular square DenseGenMatrix V, create a new DenseGenMatrixSpace with one ...
Ipopt::LimMemQuasiNewtonUpdater::SdotS_
SmartPtr< DenseSymMatrix > SdotS_
For efficient implementation, we store the pairwise products for s&#39;s.
Definition: IpLimMemQuasiNewtonUpdater.hpp:166
Ipopt::LimMemQuasiNewtonUpdater::LMInitialization
LMInitialization
enumeration for the Hessian initialization.
Definition: IpLimMemQuasiNewtonUpdater.hpp:83
Ipopt::LimMemQuasiNewtonUpdater::Ypart_
SmartPtr< MultiVectorMatrix > Ypart_
For restoration phase update: Y without the quadratic objective function part.
Definition: IpLimMemQuasiNewtonUpdater.hpp:148
Ipopt::LimMemQuasiNewtonUpdater::U_old_
SmartPtr< MultiVectorMatrix > U_old_
U in LowRankUpdateMatrix from last update (backup)
Definition: IpLimMemQuasiNewtonUpdater.hpp:208
Ipopt::LimMemQuasiNewtonUpdater::DRS_
SmartPtr< MultiVectorMatrix > DRS_
DR * S (only for restoration phase)
Definition: IpLimMemQuasiNewtonUpdater.hpp:171
Ipopt::LimMemQuasiNewtonUpdater::lm_skipped_iter_
Index lm_skipped_iter_
Counter for successive iterations in which the update was skipped.
Definition: IpLimMemQuasiNewtonUpdater.hpp:134
Ipopt::TaggedObject::Tag
unsigned int Tag
Type for the Tag values.
Definition: IpTaggedObject.hpp:80
Ipopt::LimMemQuasiNewtonUpdater::sigma_
Number sigma_
First term (starting matrix) for the approximation.
Definition: IpLimMemQuasiNewtonUpdater.hpp:159
Ipopt::LimMemQuasiNewtonUpdater::SetW
void SetW()
Set the W field in IpData based on the current values of B0_, V_, and U_.
Ipopt::LimMemQuasiNewtonUpdater::last_eta_
Number last_eta_
Most recent value for eta in the restoration phase objective function (only for update_for_resto_ = t...
Definition: IpLimMemQuasiNewtonUpdater.hpp:116
Ipopt::DenseGenMatrix
Class for dense general matrices.
Definition: IpDenseGenMatrix.hpp:26
Ipopt::LimMemQuasiNewtonUpdater::BFGS
Definition: IpLimMemQuasiNewtonUpdater.hpp:77
Ipopt::LimMemQuasiNewtonUpdater::SdotS_old_
SmartPtr< DenseSymMatrix > SdotS_old_
For efficient implementation, we store the pairwise products for s&#39;s (backup).
Definition: IpLimMemQuasiNewtonUpdater.hpp:211
Ipopt::LimMemQuasiNewtonUpdater::operator=
void operator=(const LimMemQuasiNewtonUpdater &)
Overloaded Equals Operator.
Ipopt::LimMemQuasiNewtonUpdater::curr_eta_
Number curr_eta_
Current value of weighing factor eta in the restoration phase objective function (only for update_for...
Definition: IpLimMemQuasiNewtonUpdater.hpp:130
Ipopt::LimMemQuasiNewtonUpdater::Ypart_old_
SmartPtr< MultiVectorMatrix > Ypart_old_
For restoration phase update: Y without the quadratic objective function part (backup) ...
Definition: IpLimMemQuasiNewtonUpdater.hpp:193
Ipopt::LimMemQuasiNewtonUpdater::RegisterOptions
static void RegisterOptions(SmartPtr< RegisteredOptions > roptions)
Methods for OptionsList.
Ipopt::LimMemQuasiNewtonUpdater::RestoreInternalDataBackup
void RestoreInternalDataBackup()
Restore the copy of the pointers to the internal data most recently stored with StoreInternalDataBack...
Ipopt::LimMemQuasiNewtonUpdater::Y_old_
SmartPtr< MultiVectorMatrix > Y_old_
y pairs for the recent iterations.
Definition: IpLimMemQuasiNewtonUpdater.hpp:190
IpDenseGenMatrix.hpp
Ipopt::LimMemQuasiNewtonUpdater::ShiftSdotSMatrix
void ShiftSdotSMatrix(SmartPtr< DenseSymMatrix > &V, const MultiVectorMatrix &S)
Given a DenseSymMatrix V, shift everything up one row and column, and fill the new entries as s_i^Ts_...
Ipopt::LimMemQuasiNewtonUpdater::L_
SmartPtr< DenseGenMatrix > L_
Matrix L_k for compact formulation from last update.
Definition: IpLimMemQuasiNewtonUpdater.hpp:153
Ipopt::HessianUpdater
Abstract base class for objects responsible for updating the Hessian information. ...
Definition: IpHessianUpdater.hpp:22
Ipopt::LimMemQuasiNewtonUpdater::curr_DR_x_
SmartPtr< const Vector > curr_DR_x_
Current DR_x scaling factors in the restoration phase objective function (only for update_for_resto_ ...
Definition: IpLimMemQuasiNewtonUpdater.hpp:120
Ipopt::LimMemQuasiNewtonUpdater::LimMemQuasiNewtonUpdater
LimMemQuasiNewtonUpdater(bool update_for_resto)
Default Constructor.
Ipopt::LimMemQuasiNewtonUpdater::AugmentSTDRSMatrix
void AugmentSTDRSMatrix(SmartPtr< DenseSymMatrix > &V, const MultiVectorMatrix &S, const MultiVectorMatrix &DRS)
Given a DenseSymMatrix V, create a new DenseGenMatrixSpace with one more dimension, and return V as a member of that space, consisting of all previous elements, and in addition elements s_i^TDRs_j for the new entries, where s are the vectors in the MultiVector S, and DRs are the vectors in DRS.
Ipopt::LimMemQuasiNewtonUpdater::update_for_resto_
const bool update_for_resto_
Flag indicating if the update is to be done for the original NLP or for the restoration phase NLP...
Definition: IpLimMemQuasiNewtonUpdater.hpp:113
Ipopt::LimMemQuasiNewtonUpdater::DRS_old_
SmartPtr< MultiVectorMatrix > DRS_old_
DR * S (only for restoration phase) (backup)
Definition: IpLimMemQuasiNewtonUpdater.hpp:216
Ipopt::LimMemQuasiNewtonUpdater::ShiftSTDRSMatrix
void ShiftSTDRSMatrix(SmartPtr< DenseSymMatrix > &V, const MultiVectorMatrix &S, const MultiVectorMatrix &DRS)
Given a DenseSymMatrix V, shift everything up one row and column, and fill the new entries as s_i^TDR...
Ipopt::LimMemQuasiNewtonUpdater::Y_
SmartPtr< MultiVectorMatrix > Y_
y pairs for the recent iterations.
Definition: IpLimMemQuasiNewtonUpdater.hpp:145