Ipopt Documentation  
 
Loading...
Searching...
No Matches
Ipopt::LimMemQuasiNewtonUpdater Class Reference

Implementation of the HessianUpdater for limit-memory quasi-Newton approximation of the Lagrangian Hessian. More...

#include <IpLimMemQuasiNewtonUpdater.hpp>

+ Inheritance diagram for Ipopt::LimMemQuasiNewtonUpdater:

Public Member Functions

virtual bool InitializeImpl (const OptionsList &options, const std::string &prefix)
 overloaded from AlgorithmStrategyObject
 
virtual void UpdateHessian ()
 Update the Hessian based on the current information in IpData.
 
Constructors / Destructors
 LimMemQuasiNewtonUpdater (bool update_for_resto)
 Default Constructor.
 
virtual ~LimMemQuasiNewtonUpdater ()
 Destructor.
 
- Public Member Functions inherited from Ipopt::HessianUpdater
 HessianUpdater ()
 Default Constructor.
 
virtual ~HessianUpdater ()
 Destructor.
 
- Public Member Functions inherited from Ipopt::AlgorithmStrategyObject
bool Initialize (const Journalist &jnlst, IpoptNLP &ip_nlp, IpoptData &ip_data, IpoptCalculatedQuantities &ip_cq, const OptionsList &options, const std::string &prefix)
 This method is called every time the algorithm starts again - it is used to reset any internal state.
 
bool ReducedInitialize (const Journalist &jnlst, const OptionsList &options, const std::string &prefix)
 Reduced version of the Initialize method, which does not require special Ipopt information.
 
 AlgorithmStrategyObject ()
 Default Constructor.
 
virtual ~AlgorithmStrategyObject ()
 Destructor.
 
- Public Member Functions inherited from Ipopt::ReferencedObject
 ReferencedObject ()
 
virtual ~ReferencedObject ()
 
Index ReferenceCount () const
 
void AddRef (const Referencer *referencer) const
 
void ReleaseRef (const Referencer *referencer) const
 

Static Public Member Functions

static void RegisterOptions (SmartPtr< RegisteredOptions > roptions)
 Methods for OptionsList.
 

Private Member Functions

Default Compiler Generated Methods

(Hidden to avoid implicit creation/calling).

These methods are not implemented and we do not want the compiler to implement them for us, so we declare them private and do not define them. This ensures that they will not be implicitly created/called.

 LimMemQuasiNewtonUpdater (const LimMemQuasiNewtonUpdater &)
 Copy Constructor.
 
void operator= (const LimMemQuasiNewtonUpdater &)
 Default Assignment Operator.
 
Auxiliary function
bool CheckSkippingBFGS (const Vector &s_new, const Vector &y_new)
 Method deciding whether the BFGS update should be skipped.
 
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 computing the compact representation.
 
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 of that space, consisting of all previous vectors, and in addition v_new in the last column.
 
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 that space, consisting of all previous elements, and in addition v_new in the last row.
 
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 more dimension, and return V as a member of that space, consisting of all previous elements, and in addition elements s_i^Ty_j for (i<j), where s and y are the vectors in the MultiVectors S and Y.
 
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.
 
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.
 
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, and make v_new the last column.
 
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, and make v_new the last entry.
 
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, and fill the new strictly lower triangular entries as s_i^Ty_j for (i<j), where s and y are the vectors in the MultiVectors S and Y.
 
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_j, where s are the vectors in the MultiVector S.
 
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^TDRs_j, where s are the vectors in the MultiVector S, and DRs are the vectors in DRS.
 
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)
 
void RecalcD (const MultiVectorMatrix &S, const MultiVectorMatrix &Y, SmartPtr< DenseVector > &D)
 Method for recomputing D from S and Y.
 
void RecalcL (const MultiVectorMatrix &S, const MultiVectorMatrix &Y, SmartPtr< DenseGenMatrix > &L)
 Method for recomputing L from S and Y.
 
bool SplitEigenvalues (DenseGenMatrix &Q, const DenseVector &E, SmartPtr< DenseGenMatrix > &Qminus, SmartPtr< DenseGenMatrix > &Qplus)
 Split the eigenvectors into negative and positive ones.
 
void StoreInternalDataBackup ()
 Store a copy of the pointers to the internal data (S, Y, D, L, SdotS, curr_lm_memory).
 
void RestoreInternalDataBackup ()
 Restore the copy of the pointers to the internal data most recently stored with StoreInternalDataBackup().
 
void SetW ()
 Release anything that we allocated for StoreInternalDataBackup and is no longer needed.
 

Private Attributes

SmartPtr< const LowRankUpdateSymMatrixSpaceh_space_
 Matrix space for the low-rank Hessian approximation.
 
const bool update_for_resto_
 Flag indicating if the update is to be done for the original NLP or for the restoration phase NLP.
 
Number last_eta_
 Most recent value for eta in the restoration phase objective function (only for update_for_resto_ = true)
 
SmartPtr< const Vectorcurr_DR_x_
 Current DR_x scaling factors in the restoration phase objective function (only for update_for_resto_ = true).
 
TaggedObject::Tag curr_DR_x_tag_
 Tag for curr_DR_x_.
 
SmartPtr< const Vectorcurr_red_DR_x_
 Current DR_x scaling factors in the restoration phase objective function in the smaller space for the approximation.
 
Number curr_eta_
 Current value of weighing factor eta in the restoration phase objective function (only for update_for_resto_ = true)
 
Index lm_skipped_iter_
 Counter for successive iterations in which the update was skipped.
 
Information for the limited memory update
Index curr_lm_memory_
 current size of limited memory
 
SmartPtr< MultiVectorMatrixS_
 s pairs for the recent iterations
 
SmartPtr< MultiVectorMatrixY_
 y pairs for the recent iterations.
 
SmartPtr< MultiVectorMatrixYpart_
 For restoration phase update: Y without the quadratic objective function part.
 
SmartPtr< DenseVectorD_
 Diagonal elements D_k for compact formulation from last update.
 
SmartPtr< DenseGenMatrixL_
 Matrix L_k for compact formulation from last update.
 
SmartPtr< VectorB0_
 First term (starting matrix) for the approximation.
 
Number sigma_
 First term (starting matrix) for the approximation.
 
SmartPtr< MultiVectorMatrixV_
 V in LowRankUpdateMatrix from last update.
 
SmartPtr< MultiVectorMatrixU_
 U in LowRankUpdateMatrix from last update.
 
SmartPtr< DenseSymMatrixSdotS_
 For efficient implementation, we store the pairwise products for s's.
 
bool SdotS_uptodate_
 Flag indicating whether SdotS_ is update to date from most recent update.
 
SmartPtr< MultiVectorMatrixDRS_
 DR * S (only for restoration phase)
 
SmartPtr< DenseSymMatrixSTDRS_
 For efficient implementation, we store the S^T S DR * S.
 
SmartPtr< const Vectorlast_x_
 Primal variables x from most recent update.
 
SmartPtr< const Vectorlast_grad_f_
 Gradient of objective function w.r.t.
 
SmartPtr< const Matrixlast_jac_c_
 Jacobian for equality constraints w.r.t x at x_last.
 
SmartPtr< const Matrixlast_jac_d_
 Jacobian for inequality constraints w.r.t x at x_last.
 
Index curr_lm_memory_old_
 current size of limited memory
 
SmartPtr< MultiVectorMatrixS_old_
 s pairs for the recent iterations (backup)
 
SmartPtr< MultiVectorMatrixY_old_
 y pairs for the recent iterations.
 
SmartPtr< MultiVectorMatrixYpart_old_
 For restoration phase update: Y without the quadratic objective function part (backup)
 
SmartPtr< DenseVectorD_old_
 Diagonal elements D_k for compact formulation from last update (backup).
 
SmartPtr< DenseGenMatrixL_old_
 Matrix L_k for compact formulation from last update (backup).
 
SmartPtr< VectorB0_old_
 First term (starting matrix) for the approximation (backup).
 
Number sigma_old_
 First term (starting matrix) for the approximation.
 
SmartPtr< MultiVectorMatrixV_old_
 V in LowRankUpdateMatrix from last update (backup)
 
SmartPtr< MultiVectorMatrixU_old_
 U in LowRankUpdateMatrix from last update (backup)
 
SmartPtr< DenseSymMatrixSdotS_old_
 For efficient implementation, we store the pairwise products for s's (backup).
 
bool SdotS_uptodate_old_
 Flag indicating whether SdotS_ is update to date from most recent update (backup).
 
SmartPtr< MultiVectorMatrixDRS_old_
 DR * S (only for restoration phase) (backup)
 
SmartPtr< DenseSymMatrixSTDRS_old_
 For efficient implementation, we store the S^T S DR * S.
 

Algorithmic parameters

enum  LMUpdateType { BFGS = 0 , SR1 }
 enumeration for the Hessian update type. More...
 
enum  LMInitialization {
  SCALAR1 = 0 , SCALAR2 , SCALAR3 , SCALAR4 ,
  CONSTANT
}
 enumeration for the Hessian initialization. More...
 
Index limited_memory_max_history_
 Size of memory for limited memory update.
 
LMUpdateType limited_memory_update_type_
 Type of Hessian update.
 
LMInitialization limited_memory_initialization_
 How to choose B0 in the low-rank update.
 
Number limited_memory_init_val_
 Value of B0 (as this multiple of the identity in certain situations).
 
Index limited_memory_max_skipping_
 Number of successive iterations of skipped updates after which the approximation is reset.
 
Number sigma_safe_min_
 Minimal safeguard value for sigma.
 
Number sigma_safe_max_
 Maximal safeguard value for sigma.
 
bool limited_memory_special_for_resto_
 Flag indicating if Hessian approximation should be done in a special manner for the restoration phase.
 

Additional Inherited Members

- Protected Member Functions inherited from Ipopt::AlgorithmStrategyObject
const JournalistJnlst () const
 
IpoptNLPIpNLP () const
 
IpoptDataIpData () const
 
IpoptCalculatedQuantitiesIpCq () const
 
bool HaveIpData () const
 

Detailed Description

Implementation of the HessianUpdater for limit-memory quasi-Newton approximation of the Lagrangian Hessian.

Definition at line 23 of file IpLimMemQuasiNewtonUpdater.hpp.

Member Enumeration Documentation

◆ LMUpdateType

enumeration for the Hessian update type.

Enumerator
BFGS 
SR1 

Definition at line 84 of file IpLimMemQuasiNewtonUpdater.hpp.

◆ LMInitialization

enumeration for the Hessian initialization.

Enumerator
SCALAR1 
SCALAR2 
SCALAR3 
SCALAR4 
CONSTANT 

Definition at line 94 of file IpLimMemQuasiNewtonUpdater.hpp.

Constructor & Destructor Documentation

◆ LimMemQuasiNewtonUpdater() [1/2]

Ipopt::LimMemQuasiNewtonUpdater::LimMemQuasiNewtonUpdater ( bool  update_for_resto)

Default Constructor.

◆ ~LimMemQuasiNewtonUpdater()

virtual Ipopt::LimMemQuasiNewtonUpdater::~LimMemQuasiNewtonUpdater ( )
inlinevirtual

Destructor.

Definition at line 34 of file IpLimMemQuasiNewtonUpdater.hpp.

◆ LimMemQuasiNewtonUpdater() [2/2]

Ipopt::LimMemQuasiNewtonUpdater::LimMemQuasiNewtonUpdater ( const LimMemQuasiNewtonUpdater )
private

Copy Constructor.

Member Function Documentation

◆ InitializeImpl()

virtual bool Ipopt::LimMemQuasiNewtonUpdater::InitializeImpl ( const OptionsList options,
const std::string &  prefix 
)
virtual

overloaded from AlgorithmStrategyObject

Implements Ipopt::HessianUpdater.

◆ UpdateHessian()

virtual void Ipopt::LimMemQuasiNewtonUpdater::UpdateHessian ( )
virtual

Update the Hessian based on the current information in IpData.

Implements Ipopt::HessianUpdater.

◆ RegisterOptions()

static void Ipopt::LimMemQuasiNewtonUpdater::RegisterOptions ( SmartPtr< RegisteredOptions roptions)
static

Methods for OptionsList.

◆ operator=()

void Ipopt::LimMemQuasiNewtonUpdater::operator= ( const LimMemQuasiNewtonUpdater )
private

Default Assignment Operator.

◆ CheckSkippingBFGS()

bool Ipopt::LimMemQuasiNewtonUpdater::CheckSkippingBFGS ( const Vector s_new,
const Vector y_new 
)
private

Method deciding whether the BFGS update should be skipped.

If Powell-damping is performed, the Vectors s_new and y_new might be adapted.

Returns
true, if no update is to be performed this time.

◆ UpdateInternalData()

bool Ipopt::LimMemQuasiNewtonUpdater::UpdateInternalData ( const Vector s_new,
const Vector y_new,
SmartPtr< Vector ypart_new 
)
private

Update the internal data, such as the S, Y, L, D etc matrices and vectors that are required for computing the compact representation.

Returns
true, if the limited memory history grew (i.e., curr_lm_memory_ was increased).

◆ AugmentMultiVector()

void Ipopt::LimMemQuasiNewtonUpdater::AugmentMultiVector ( SmartPtr< MultiVectorMatrix > &  V,
const Vector v_new 
)
private

Given a MutliVector V, create a new MultiVectorSpace with one more column, and return V as a member of that space, consisting of all previous vectors, and in addition v_new in the last column.

If V is NULL, then a new MatrixSpace with one column is created.

◆ AugmentDenseVector()

void Ipopt::LimMemQuasiNewtonUpdater::AugmentDenseVector ( SmartPtr< DenseVector > &  V,
Number  v_new 
)
private

Given a DenseVector V, create a new DenseVectorSpace with one more row, and return V as a member of that space, consisting of all previous elements, and in addition v_new in the last row.

If V is NULL, then a new DenseVectorSpace with dimension one is created.

◆ AugmentLMatrix()

void Ipopt::LimMemQuasiNewtonUpdater::AugmentLMatrix ( SmartPtr< DenseGenMatrix > &  V,
const MultiVectorMatrix S,
const MultiVectorMatrix Y 
)
private

Given a strictly-lower triangular square DenseGenMatrix 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^Ty_j for (i<j), where s and y are the vectors in the MultiVectors S and Y.

If V is NULL, then a new DenseGenMatrixSpace with dimension one is created.

◆ AugmentSdotSMatrix()

void Ipopt::LimMemQuasiNewtonUpdater::AugmentSdotSMatrix ( SmartPtr< DenseSymMatrix > &  V,
const MultiVectorMatrix S 
)
private

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.

If V is NULL, then a new DenseGenMatrixSpace with dimension one is created.

◆ AugmentSTDRSMatrix()

void Ipopt::LimMemQuasiNewtonUpdater::AugmentSTDRSMatrix ( SmartPtr< DenseSymMatrix > &  V,
const MultiVectorMatrix S,
const MultiVectorMatrix DRS 
)
private

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.

If V is NULL, then a new DenseGenMatrixSpace with dimension one is created.

◆ ShiftMultiVector()

void Ipopt::LimMemQuasiNewtonUpdater::ShiftMultiVector ( SmartPtr< MultiVectorMatrix > &  V,
const Vector v_new 
)
private

Given a MutliVector V, get rid of the first column, shift all other columns to the left, and make v_new the last column.

The entity that V points to at the call, is not changed - a new entity is created in the method and returned as V.

◆ ShiftDenseVector()

void Ipopt::LimMemQuasiNewtonUpdater::ShiftDenseVector ( SmartPtr< DenseVector > &  V,
Number  v_new 
)
private

Given a DenseVector V, get rid of the first element, shift all other elements one position to the top, and make v_new the last entry.

The entity that V points to at the call, is not changed - a new entity is created in the method and returned as V.

◆ ShiftLMatrix()

void Ipopt::LimMemQuasiNewtonUpdater::ShiftLMatrix ( SmartPtr< DenseGenMatrix > &  V,
const MultiVectorMatrix S,
const MultiVectorMatrix Y 
)
private

Given a strictly-lower triangular square DenseGenMatrix V, shift everything one row and column up, and fill the new strictly lower triangular entries as s_i^Ty_j for (i<j), where s and y are the vectors in the MultiVectors S and Y.

The entity that V points to at the call, is not changed - a new entity is created in the method and returned as V.

◆ ShiftSdotSMatrix()

void Ipopt::LimMemQuasiNewtonUpdater::ShiftSdotSMatrix ( SmartPtr< DenseSymMatrix > &  V,
const MultiVectorMatrix S 
)
private

Given a DenseSymMatrix V, shift everything up one row and column, and fill the new entries as s_i^Ts_j, where s are the vectors in the MultiVector S.

The entity that V points to at the call, is not changed - a new entity is created in the method and returned as V.

◆ ShiftSTDRSMatrix()

void Ipopt::LimMemQuasiNewtonUpdater::ShiftSTDRSMatrix ( SmartPtr< DenseSymMatrix > &  V,
const MultiVectorMatrix S,
const MultiVectorMatrix DRS 
)
private

Given a DenseSymMatrix V, shift everything up one row and column, and fill the new entries as s_i^TDRs_j, where s are the vectors in the MultiVector S, and DRs are the vectors in DRS.

The entity that V points to at the call, is not changed - a new entity is created in the method and returned as V.

◆ RecalcY()

void Ipopt::LimMemQuasiNewtonUpdater::RecalcY ( Number  eta,
const Vector DR_x,
MultiVectorMatrix S,
MultiVectorMatrix Ypart,
SmartPtr< MultiVectorMatrix > &  Y 
)
private

Method for recomputing Y from scratch, using Ypart (only for restoration phase)

◆ RecalcD()

void Ipopt::LimMemQuasiNewtonUpdater::RecalcD ( const MultiVectorMatrix S,
const MultiVectorMatrix Y,
SmartPtr< DenseVector > &  D 
)
private

Method for recomputing D from S and Y.

◆ RecalcL()

void Ipopt::LimMemQuasiNewtonUpdater::RecalcL ( const MultiVectorMatrix S,
const MultiVectorMatrix Y,
SmartPtr< DenseGenMatrix > &  L 
)
private

Method for recomputing L from S and Y.

◆ SplitEigenvalues()

bool Ipopt::LimMemQuasiNewtonUpdater::SplitEigenvalues ( DenseGenMatrix Q,
const DenseVector E,
SmartPtr< DenseGenMatrix > &  Qminus,
SmartPtr< DenseGenMatrix > &  Qplus 
)
private

Split the eigenvectors into negative and positive ones.

Given the eigenvectors in Q and the eigenvalues (in ascending order) in, this returns Qminus as the negative eigenvectors times sqrt(-eval), and Qplus as the positive eigenvectors times sqrt(eval). If Qminus or Qplus is NULL, it means that there are no negative or positive eigenvalues, resp. Q might be changed during this call.

Returns
true, if the ratio of the smallest over the largest eigenvalue (in absolute values) is too small; in that case, the update should be skipped.

◆ StoreInternalDataBackup()

void Ipopt::LimMemQuasiNewtonUpdater::StoreInternalDataBackup ( )
private

Store a copy of the pointers to the internal data (S, Y, D, L, SdotS, curr_lm_memory).

This is called in case the update is started but skipped during the process.

◆ RestoreInternalDataBackup()

void Ipopt::LimMemQuasiNewtonUpdater::RestoreInternalDataBackup ( )
private

Restore the copy of the pointers to the internal data most recently stored with StoreInternalDataBackup().

◆ SetW()

void Ipopt::LimMemQuasiNewtonUpdater::SetW ( )
private

Release anything that we allocated for StoreInternalDataBackup and is no longer needed.

Set the W field in IpData based on the current values of B0_, V_, and U_.

Member Data Documentation

◆ h_space_

SmartPtr<const LowRankUpdateSymMatrixSpace> Ipopt::LimMemQuasiNewtonUpdater::h_space_
private

Matrix space for the low-rank Hessian approximation.

Definition at line 76 of file IpLimMemQuasiNewtonUpdater.hpp.

◆ limited_memory_max_history_

Index Ipopt::LimMemQuasiNewtonUpdater::limited_memory_max_history_
private

Size of memory for limited memory update.

Definition at line 81 of file IpLimMemQuasiNewtonUpdater.hpp.

◆ limited_memory_update_type_

LMUpdateType Ipopt::LimMemQuasiNewtonUpdater::limited_memory_update_type_
private

Type of Hessian update.

Definition at line 91 of file IpLimMemQuasiNewtonUpdater.hpp.

◆ limited_memory_initialization_

LMInitialization Ipopt::LimMemQuasiNewtonUpdater::limited_memory_initialization_
private

How to choose B0 in the low-rank update.

Definition at line 104 of file IpLimMemQuasiNewtonUpdater.hpp.

◆ limited_memory_init_val_

Number Ipopt::LimMemQuasiNewtonUpdater::limited_memory_init_val_
private

Value of B0 (as this multiple of the identity in certain situations).

Definition at line 107 of file IpLimMemQuasiNewtonUpdater.hpp.

◆ limited_memory_max_skipping_

Index Ipopt::LimMemQuasiNewtonUpdater::limited_memory_max_skipping_
private

Number of successive iterations of skipped updates after which the approximation is reset.

Definition at line 112 of file IpLimMemQuasiNewtonUpdater.hpp.

◆ sigma_safe_min_

Number Ipopt::LimMemQuasiNewtonUpdater::sigma_safe_min_
private

Minimal safeguard value for sigma.

Definition at line 115 of file IpLimMemQuasiNewtonUpdater.hpp.

◆ sigma_safe_max_

Number Ipopt::LimMemQuasiNewtonUpdater::sigma_safe_max_
private

Maximal safeguard value for sigma.

Definition at line 118 of file IpLimMemQuasiNewtonUpdater.hpp.

◆ limited_memory_special_for_resto_

bool Ipopt::LimMemQuasiNewtonUpdater::limited_memory_special_for_resto_
private

Flag indicating if Hessian approximation should be done in a special manner for the restoration phase.

Definition at line 123 of file IpLimMemQuasiNewtonUpdater.hpp.

◆ update_for_resto_

const bool Ipopt::LimMemQuasiNewtonUpdater::update_for_resto_
private

Flag indicating if the update is to be done for the original NLP or for the restoration phase NLP.

In the latter case, we are performing a "structured" update, taking into account the first explicit term in the objective function of the form eta*D_r*x_k.

Definition at line 133 of file IpLimMemQuasiNewtonUpdater.hpp.

◆ last_eta_

Number Ipopt::LimMemQuasiNewtonUpdater::last_eta_
private

Most recent value for eta in the restoration phase objective function (only for update_for_resto_ = true)

Definition at line 138 of file IpLimMemQuasiNewtonUpdater.hpp.

◆ curr_DR_x_

SmartPtr<const Vector> Ipopt::LimMemQuasiNewtonUpdater::curr_DR_x_
private

Current DR_x scaling factors in the restoration phase objective function (only for update_for_resto_ = true).

This should not change throughout one restoration phase.

Definition at line 145 of file IpLimMemQuasiNewtonUpdater.hpp.

◆ curr_DR_x_tag_

TaggedObject::Tag Ipopt::LimMemQuasiNewtonUpdater::curr_DR_x_tag_
private

Tag for curr_DR_x_.

Definition at line 148 of file IpLimMemQuasiNewtonUpdater.hpp.

◆ curr_red_DR_x_

SmartPtr<const Vector> Ipopt::LimMemQuasiNewtonUpdater::curr_red_DR_x_
private

Current DR_x scaling factors in the restoration phase objective function in the smaller space for the approximation.

This is only computed if the space is indeed smaller than the x space (only for update_for_resto_ = true)

Definition at line 156 of file IpLimMemQuasiNewtonUpdater.hpp.

◆ curr_eta_

Number Ipopt::LimMemQuasiNewtonUpdater::curr_eta_
private

Current value of weighing factor eta in the restoration phase objective function (only for update_for_resto_ = true)

Definition at line 161 of file IpLimMemQuasiNewtonUpdater.hpp.

◆ lm_skipped_iter_

Index Ipopt::LimMemQuasiNewtonUpdater::lm_skipped_iter_
private

Counter for successive iterations in which the update was skipped.

Definition at line 164 of file IpLimMemQuasiNewtonUpdater.hpp.

◆ curr_lm_memory_

Index Ipopt::LimMemQuasiNewtonUpdater::curr_lm_memory_
private

current size of limited memory

Definition at line 169 of file IpLimMemQuasiNewtonUpdater.hpp.

◆ S_

SmartPtr<MultiVectorMatrix> Ipopt::LimMemQuasiNewtonUpdater::S_
private

s pairs for the recent iterations

Definition at line 172 of file IpLimMemQuasiNewtonUpdater.hpp.

◆ Y_

SmartPtr<MultiVectorMatrix> Ipopt::LimMemQuasiNewtonUpdater::Y_
private

y pairs for the recent iterations.

If update_for_resto is true, then this includes only the information for the constraints.

Definition at line 179 of file IpLimMemQuasiNewtonUpdater.hpp.

◆ Ypart_

SmartPtr<MultiVectorMatrix> Ipopt::LimMemQuasiNewtonUpdater::Ypart_
private

For restoration phase update: Y without the quadratic objective function part.

Definition at line 184 of file IpLimMemQuasiNewtonUpdater.hpp.

◆ D_

SmartPtr<DenseVector> Ipopt::LimMemQuasiNewtonUpdater::D_
private

Diagonal elements D_k for compact formulation from last update.

Definition at line 189 of file IpLimMemQuasiNewtonUpdater.hpp.

◆ L_

SmartPtr<DenseGenMatrix> Ipopt::LimMemQuasiNewtonUpdater::L_
private

Matrix L_k for compact formulation from last update.

Definition at line 192 of file IpLimMemQuasiNewtonUpdater.hpp.

◆ B0_

SmartPtr<Vector> Ipopt::LimMemQuasiNewtonUpdater::B0_
private

First term (starting matrix) for the approximation.

Definition at line 195 of file IpLimMemQuasiNewtonUpdater.hpp.

◆ sigma_

Number Ipopt::LimMemQuasiNewtonUpdater::sigma_
private

First term (starting matrix) for the approximation.

If that first terms is a multiple of the identy, sigma give that factor. Otherwise sigma = -1.

Definition at line 202 of file IpLimMemQuasiNewtonUpdater.hpp.

◆ V_

SmartPtr<MultiVectorMatrix> Ipopt::LimMemQuasiNewtonUpdater::V_
private

V in LowRankUpdateMatrix from last update.

Definition at line 205 of file IpLimMemQuasiNewtonUpdater.hpp.

◆ U_

SmartPtr<MultiVectorMatrix> Ipopt::LimMemQuasiNewtonUpdater::U_
private

U in LowRankUpdateMatrix from last update.

Definition at line 208 of file IpLimMemQuasiNewtonUpdater.hpp.

◆ SdotS_

SmartPtr<DenseSymMatrix> Ipopt::LimMemQuasiNewtonUpdater::SdotS_
private

For efficient implementation, we store the pairwise products for s's.

Definition at line 213 of file IpLimMemQuasiNewtonUpdater.hpp.

◆ SdotS_uptodate_

bool Ipopt::LimMemQuasiNewtonUpdater::SdotS_uptodate_
private

Flag indicating whether SdotS_ is update to date from most recent update.

Definition at line 218 of file IpLimMemQuasiNewtonUpdater.hpp.

◆ DRS_

SmartPtr<MultiVectorMatrix> Ipopt::LimMemQuasiNewtonUpdater::DRS_
private

DR * S (only for restoration phase)

Definition at line 221 of file IpLimMemQuasiNewtonUpdater.hpp.

◆ STDRS_

SmartPtr<DenseSymMatrix> Ipopt::LimMemQuasiNewtonUpdater::STDRS_
private

For efficient implementation, we store the S^T S DR * S.

Only for restoration phase.

Definition at line 227 of file IpLimMemQuasiNewtonUpdater.hpp.

◆ last_x_

SmartPtr<const Vector> Ipopt::LimMemQuasiNewtonUpdater::last_x_
private

Primal variables x from most recent update.

Definition at line 230 of file IpLimMemQuasiNewtonUpdater.hpp.

◆ last_grad_f_

SmartPtr<const Vector> Ipopt::LimMemQuasiNewtonUpdater::last_grad_f_
private

Gradient of objective function w.r.t.

x at x_last_

Definition at line 233 of file IpLimMemQuasiNewtonUpdater.hpp.

◆ last_jac_c_

SmartPtr<const Matrix> Ipopt::LimMemQuasiNewtonUpdater::last_jac_c_
private

Jacobian for equality constraints w.r.t x at x_last.

Definition at line 236 of file IpLimMemQuasiNewtonUpdater.hpp.

◆ last_jac_d_

SmartPtr<const Matrix> Ipopt::LimMemQuasiNewtonUpdater::last_jac_d_
private

Jacobian for inequality constraints w.r.t x at x_last.

Definition at line 239 of file IpLimMemQuasiNewtonUpdater.hpp.

◆ curr_lm_memory_old_

Index Ipopt::LimMemQuasiNewtonUpdater::curr_lm_memory_old_
private

current size of limited memory

Definition at line 242 of file IpLimMemQuasiNewtonUpdater.hpp.

◆ S_old_

SmartPtr<MultiVectorMatrix> Ipopt::LimMemQuasiNewtonUpdater::S_old_
private

s pairs for the recent iterations (backup)

Definition at line 245 of file IpLimMemQuasiNewtonUpdater.hpp.

◆ Y_old_

SmartPtr<MultiVectorMatrix> Ipopt::LimMemQuasiNewtonUpdater::Y_old_
private

y pairs for the recent iterations.

If update_for_resto is true, then this includes only the information for the constraints. (backup)

Definition at line 252 of file IpLimMemQuasiNewtonUpdater.hpp.

◆ Ypart_old_

SmartPtr<MultiVectorMatrix> Ipopt::LimMemQuasiNewtonUpdater::Ypart_old_
private

For restoration phase update: Y without the quadratic objective function part (backup)

Definition at line 256 of file IpLimMemQuasiNewtonUpdater.hpp.

◆ D_old_

SmartPtr<DenseVector> Ipopt::LimMemQuasiNewtonUpdater::D_old_
private

Diagonal elements D_k for compact formulation from last update (backup).

Definition at line 260 of file IpLimMemQuasiNewtonUpdater.hpp.

◆ L_old_

SmartPtr<DenseGenMatrix> Ipopt::LimMemQuasiNewtonUpdater::L_old_
private

Matrix L_k for compact formulation from last update (backup).

Definition at line 263 of file IpLimMemQuasiNewtonUpdater.hpp.

◆ B0_old_

SmartPtr<Vector> Ipopt::LimMemQuasiNewtonUpdater::B0_old_
private

First term (starting matrix) for the approximation (backup).

Definition at line 266 of file IpLimMemQuasiNewtonUpdater.hpp.

◆ sigma_old_

Number Ipopt::LimMemQuasiNewtonUpdater::sigma_old_
private

First term (starting matrix) for the approximation.

If that first terms is a multiple of the identy, sigma give that factor. Otherwise sigma = -1. (backup)

Definition at line 273 of file IpLimMemQuasiNewtonUpdater.hpp.

◆ V_old_

SmartPtr<MultiVectorMatrix> Ipopt::LimMemQuasiNewtonUpdater::V_old_
private

V in LowRankUpdateMatrix from last update (backup)

Definition at line 276 of file IpLimMemQuasiNewtonUpdater.hpp.

◆ U_old_

SmartPtr<MultiVectorMatrix> Ipopt::LimMemQuasiNewtonUpdater::U_old_
private

U in LowRankUpdateMatrix from last update (backup)

Definition at line 279 of file IpLimMemQuasiNewtonUpdater.hpp.

◆ SdotS_old_

SmartPtr<DenseSymMatrix> Ipopt::LimMemQuasiNewtonUpdater::SdotS_old_
private

For efficient implementation, we store the pairwise products for s's (backup).

Definition at line 284 of file IpLimMemQuasiNewtonUpdater.hpp.

◆ SdotS_uptodate_old_

bool Ipopt::LimMemQuasiNewtonUpdater::SdotS_uptodate_old_
private

Flag indicating whether SdotS_ is update to date from most recent update (backup).

Definition at line 289 of file IpLimMemQuasiNewtonUpdater.hpp.

◆ DRS_old_

SmartPtr<MultiVectorMatrix> Ipopt::LimMemQuasiNewtonUpdater::DRS_old_
private

DR * S (only for restoration phase) (backup)

Definition at line 292 of file IpLimMemQuasiNewtonUpdater.hpp.

◆ STDRS_old_

SmartPtr<DenseSymMatrix> Ipopt::LimMemQuasiNewtonUpdater::STDRS_old_
private

For efficient implementation, we store the S^T S DR * S.

Only for restoration phase. (backup)

Definition at line 298 of file IpLimMemQuasiNewtonUpdater.hpp.


The documentation for this class was generated from the following file: