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

Solver for the augmented system with LowRankUpdateSymMatrix Hessian matrices. More...

#include <IpLowRankSSAugSystemSolver.hpp>

+ Inheritance diagram for Ipopt::LowRankSSAugSystemSolver:

Public Member Functions

bool InitializeImpl (const OptionsList &options, const std::string &prefix)
 overloaded from AlgorithmStrategyObject
 
virtual ESymSolverStatus Solve (const SymMatrix *W, Number W_factor, const Vector *D_x, Number delta_x, const Vector *D_s, Number delta_s, const Matrix *J_c, const Vector *D_c, Number delta_c, const Matrix *J_d, const Vector *D_d, Number delta_d, const Vector &rhs_x, const Vector &rhs_s, const Vector &rhs_c, const Vector &rhs_d, Vector &sol_x, Vector &sol_s, Vector &sol_c, Vector &sol_d, bool check_NegEVals, Index numberOfNegEVals)
 Set up the augmented system and solve it for a given right hand side.
 
virtual Index NumberOfNegEVals () const
 Number of negative eigenvalues detected during last solve.
 
virtual bool ProvidesInertia () const
 Query whether inertia is computed by linear solver.
 
virtual bool IncreaseQuality ()
 Request to increase quality of solution for next solve.
 
Constructors / Destructors
 LowRankSSAugSystemSolver (AugSystemSolver &aug_system_solver, Index max_rank)
 Constructor using an existing augmented system solver.
 
virtual ~LowRankSSAugSystemSolver ()
 Destructor.
 
- Public Member Functions inherited from Ipopt::AugSystemSolver
virtual ESymSolverStatus MultiSolve (const SymMatrix *W, Number W_factor, const Vector *D_x, Number delta_x, const Vector *D_s, Number delta_s, const Matrix *J_c, const Vector *D_c, Number delta_c, const Matrix *J_d, const Vector *D_d, Number delta_d, std::vector< SmartPtr< const Vector > > &rhs_xV, std::vector< SmartPtr< const Vector > > &rhs_sV, std::vector< SmartPtr< const Vector > > &rhs_cV, std::vector< SmartPtr< const Vector > > &rhs_dV, std::vector< SmartPtr< Vector > > &sol_xV, std::vector< SmartPtr< Vector > > &sol_sV, std::vector< SmartPtr< Vector > > &sol_cV, std::vector< SmartPtr< Vector > > &sol_dV, bool check_NegEVals, Index numberOfNegEVals)
 Like Solve, but for multiple right hand sides.
 
 AugSystemSolver ()
 Default constructor.
 
virtual ~AugSystemSolver ()
 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
 

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.

 LowRankSSAugSystemSolver ()
 Default constructor.
 
 LowRankSSAugSystemSolver (const LowRankSSAugSystemSolver &)
 Copy Constructor.
 
void operator= (const LowRankSSAugSystemSolver &)
 
Internal functions
ESymSolverStatus UpdateExtendedData (const SymMatrix *W, Number W_factor, const Vector *D_x, Number delta_x, const Vector *D_s, Number delta_s, const Matrix &J_c, const Vector *D_c, Number delta_c, const Matrix &J_d, const Vector *D_d, Number delta_d, const Vector &proto_rhs_x, const Vector &proto_rhs_s, const Vector &proto_rhs_c, const Vector &proto_rhs_d)
 Method for updating the factorization, including J1_, J2_, Vtilde1_, Utilde2, Wdiag_, compound_sol_vecspace_.
 
bool AugmentedSystemRequiresChange (const SymMatrix *W, Number W_factor, const Vector *D_x, Number delta_x, const Vector *D_s, Number delta_s, const Matrix &J_c, const Vector *D_c, Number delta_c, const Matrix &J_d, const Vector *D_d, Number delta_d)
 Method that compares the tags of the data for the matrix with those from the previous call.
 

Private Attributes

SmartPtr< AugSystemSolveraug_system_solver_
 The augmented system solver object that should be used for the factorization of the augmented system without the low-rank update.
 
Index max_rank_
 Maximal rank of low rank Hessian update.
 
bool first_call_
 Flag indicating if this is the first call.
 
Index num_neg_evals_
 Stores the number of negative eigenvalues detected during most recent factorization.
 
Tags and values to track in order to decide whether the

matrix has to be updated compared to the most recent call of the Set method.

TaggedObject::Tag w_tag_
 Tag for W matrix.
 
Number w_factor_
 Most recent value of W_factor.
 
TaggedObject::Tag d_x_tag_
 Tag for D_x vector, representing the diagonal matrix D_x.
 
Number delta_x_
 Most recent value of delta_x from Set method.
 
TaggedObject::Tag d_s_tag_
 Tag for D_s vector, representing the diagonal matrix D_s.
 
Number delta_s_
 Most recent value of delta_s from Set method.
 
TaggedObject::Tag j_c_tag_
 Tag for J_c matrix.
 
TaggedObject::Tag d_c_tag_
 Tag for D_c vector, representing the diagonal matrix D_c.
 
Number delta_c_
 Most recent value of delta_c from Set method.
 
TaggedObject::Tag j_d_tag_
 Tag for J_d matrix.
 
TaggedObject::Tag d_d_tag_
 Tag for D_d vector, representing the diagonal matrix D_d.
 
Number delta_d_
 Most recent value of delta_d from Set method.
 
Information to be stored in order to resolve for the

same matrix with a different right hand side.

SmartPtr< DiagMatrixWdiag_
 Hessian Matrix passed to the augmented system solver solving the matrix without the low-rank update.
 
SmartPtr< ExpandedMultiVectorMatrixexpanded_vu_
 Artificial rows for Jac_c part for low rank data.
 
SmartPtr< CompoundMatrixJ_c_ext_
 Extended Jac_c to include expanded_vu_.
 
SmartPtr< CompoundVectorD_c_ext_
 Extended D_c diagonal.
 
SmartPtr< CompoundVectorSpacey_c_ext_space_
 Extended vector space for y_c.
 
Index negEvalsCorrection_
 Number of components in V, so that it can be used to correct the inertia.
 

Additional Inherited Members

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

Detailed Description

Solver for the augmented system with LowRankUpdateSymMatrix Hessian matrices.

This version works with only one backsolve (so it is better for iterative linear solvers), by augmenting the regular augmented system.

Definition at line 27 of file IpLowRankSSAugSystemSolver.hpp.

Constructor & Destructor Documentation

◆ LowRankSSAugSystemSolver() [1/3]

Ipopt::LowRankSSAugSystemSolver::LowRankSSAugSystemSolver ( AugSystemSolver aug_system_solver,
Index  max_rank 
)

Constructor using an existing augmented system solver.

Parameters
aug_system_solveraugmented system solver to copy
max_rankmaximal rank that can appear

◆ ~LowRankSSAugSystemSolver()

virtual Ipopt::LowRankSSAugSystemSolver::~LowRankSSAugSystemSolver ( )
virtual

Destructor.

◆ LowRankSSAugSystemSolver() [2/3]

Ipopt::LowRankSSAugSystemSolver::LowRankSSAugSystemSolver ( )
private

Default constructor.

◆ LowRankSSAugSystemSolver() [3/3]

Ipopt::LowRankSSAugSystemSolver::LowRankSSAugSystemSolver ( const LowRankSSAugSystemSolver )
private

Copy Constructor.

Member Function Documentation

◆ InitializeImpl()

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

overloaded from AlgorithmStrategyObject

Implements Ipopt::AugSystemSolver.

◆ Solve()

virtual ESymSolverStatus Ipopt::LowRankSSAugSystemSolver::Solve ( const SymMatrix W,
Number  W_factor,
const Vector D_x,
Number  delta_x,
const Vector D_s,
Number  delta_s,
const Matrix J_c,
const Vector D_c,
Number  delta_c,
const Matrix J_d,
const Vector D_d,
Number  delta_d,
const Vector rhs_x,
const Vector rhs_s,
const Vector rhs_c,
const Vector rhs_d,
Vector sol_x,
Vector sol_s,
Vector sol_c,
Vector sol_d,
bool  check_NegEVals,
Index  numberOfNegEVals 
)
virtual

Set up the augmented system and solve it for a given right hand side.

Reimplemented from Ipopt::AugSystemSolver.

◆ NumberOfNegEVals()

virtual Index Ipopt::LowRankSSAugSystemSolver::NumberOfNegEVals ( ) const
virtual

Number of negative eigenvalues detected during last solve.

This must not be called if the linear solver does not compute this quantities (

See also
ProvidesInertia).
Returns
the number of negative eigenvalues of the most recent factorized matrix

Implements Ipopt::AugSystemSolver.

◆ ProvidesInertia()

virtual bool Ipopt::LowRankSSAugSystemSolver::ProvidesInertia ( ) const
virtual

Query whether inertia is computed by linear solver.

Returns
true, if linear solver provides inertia

Implements Ipopt::AugSystemSolver.

◆ IncreaseQuality()

virtual bool Ipopt::LowRankSSAugSystemSolver::IncreaseQuality ( )
virtual

Request to increase quality of solution for next solve.

Ask underlying linear solver to increase quality of solution for the next solve (e.g. increase pivot tolerance).

Returns
false, if this is not possible (e.g. maximal pivot tolerance already used)

Implements Ipopt::AugSystemSolver.

◆ operator=()

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

◆ UpdateExtendedData()

ESymSolverStatus Ipopt::LowRankSSAugSystemSolver::UpdateExtendedData ( const SymMatrix W,
Number  W_factor,
const Vector D_x,
Number  delta_x,
const Vector D_s,
Number  delta_s,
const Matrix J_c,
const Vector D_c,
Number  delta_c,
const Matrix J_d,
const Vector D_d,
Number  delta_d,
const Vector proto_rhs_x,
const Vector proto_rhs_s,
const Vector proto_rhs_c,
const Vector proto_rhs_d 
)
private

Method for updating the factorization, including J1_, J2_, Vtilde1_, Utilde2, Wdiag_, compound_sol_vecspace_.

◆ AugmentedSystemRequiresChange()

bool Ipopt::LowRankSSAugSystemSolver::AugmentedSystemRequiresChange ( const SymMatrix W,
Number  W_factor,
const Vector D_x,
Number  delta_x,
const Vector D_s,
Number  delta_s,
const Matrix J_c,
const Vector D_c,
Number  delta_c,
const Matrix J_d,
const Vector D_d,
Number  delta_d 
)
private

Method that compares the tags of the data for the matrix with those from the previous call.

Returns
true, if there was a change and the factorization has to be updated

Member Data Documentation

◆ aug_system_solver_

SmartPtr<AugSystemSolver> Ipopt::LowRankSSAugSystemSolver::aug_system_solver_
private

The augmented system solver object that should be used for the factorization of the augmented system without the low-rank update.

Definition at line 126 of file IpLowRankSSAugSystemSolver.hpp.

◆ max_rank_

Index Ipopt::LowRankSSAugSystemSolver::max_rank_
private

Maximal rank of low rank Hessian update.

Definition at line 129 of file IpLowRankSSAugSystemSolver.hpp.

◆ w_tag_

TaggedObject::Tag Ipopt::LowRankSSAugSystemSolver::w_tag_
private

Tag for W matrix.

If W has been given to Set as NULL, then this tag is set to 0.

Definition at line 140 of file IpLowRankSSAugSystemSolver.hpp.

◆ w_factor_

Number Ipopt::LowRankSSAugSystemSolver::w_factor_
private

Most recent value of W_factor.

Definition at line 143 of file IpLowRankSSAugSystemSolver.hpp.

◆ d_x_tag_

TaggedObject::Tag Ipopt::LowRankSSAugSystemSolver::d_x_tag_
private

Tag for D_x vector, representing the diagonal matrix D_x.

If D_x has been given to Set as NULL, then this tag is set to 0.

Definition at line 149 of file IpLowRankSSAugSystemSolver.hpp.

◆ delta_x_

Number Ipopt::LowRankSSAugSystemSolver::delta_x_
private

Most recent value of delta_x from Set method.

Definition at line 152 of file IpLowRankSSAugSystemSolver.hpp.

◆ d_s_tag_

TaggedObject::Tag Ipopt::LowRankSSAugSystemSolver::d_s_tag_
private

Tag for D_s vector, representing the diagonal matrix D_s.

If D_s has been given to Set as NULL, then this tag is set to 0.

Definition at line 157 of file IpLowRankSSAugSystemSolver.hpp.

◆ delta_s_

Number Ipopt::LowRankSSAugSystemSolver::delta_s_
private

Most recent value of delta_s from Set method.

Definition at line 160 of file IpLowRankSSAugSystemSolver.hpp.

◆ j_c_tag_

TaggedObject::Tag Ipopt::LowRankSSAugSystemSolver::j_c_tag_
private

Tag for J_c matrix.

If J_c has been given to Set as NULL, then this tag is set to 0.

Definition at line 166 of file IpLowRankSSAugSystemSolver.hpp.

◆ d_c_tag_

TaggedObject::Tag Ipopt::LowRankSSAugSystemSolver::d_c_tag_
private

Tag for D_c vector, representing the diagonal matrix D_c.

If D_c has been given to Set as NULL, then this tag is set to 0.

Definition at line 172 of file IpLowRankSSAugSystemSolver.hpp.

◆ delta_c_

Number Ipopt::LowRankSSAugSystemSolver::delta_c_
private

Most recent value of delta_c from Set method.

Definition at line 175 of file IpLowRankSSAugSystemSolver.hpp.

◆ j_d_tag_

TaggedObject::Tag Ipopt::LowRankSSAugSystemSolver::j_d_tag_
private

Tag for J_d matrix.

If J_d has been given to Set as NULL, then this tag is set to 0.

Definition at line 181 of file IpLowRankSSAugSystemSolver.hpp.

◆ d_d_tag_

TaggedObject::Tag Ipopt::LowRankSSAugSystemSolver::d_d_tag_
private

Tag for D_d vector, representing the diagonal matrix D_d.

If D_d has been given to Set as NULL, then this tag is set to 0.

Definition at line 187 of file IpLowRankSSAugSystemSolver.hpp.

◆ delta_d_

Number Ipopt::LowRankSSAugSystemSolver::delta_d_
private

Most recent value of delta_d from Set method.

Definition at line 190 of file IpLowRankSSAugSystemSolver.hpp.

◆ first_call_

bool Ipopt::LowRankSSAugSystemSolver::first_call_
private

Flag indicating if this is the first call.

Definition at line 194 of file IpLowRankSSAugSystemSolver.hpp.

◆ Wdiag_

SmartPtr<DiagMatrix> Ipopt::LowRankSSAugSystemSolver::Wdiag_
private

Hessian Matrix passed to the augmented system solver solving the matrix without the low-rank update.

Definition at line 202 of file IpLowRankSSAugSystemSolver.hpp.

◆ expanded_vu_

SmartPtr<ExpandedMultiVectorMatrix> Ipopt::LowRankSSAugSystemSolver::expanded_vu_
private

Artificial rows for Jac_c part for low rank data.

Definition at line 205 of file IpLowRankSSAugSystemSolver.hpp.

◆ J_c_ext_

SmartPtr<CompoundMatrix> Ipopt::LowRankSSAugSystemSolver::J_c_ext_
private

Extended Jac_c to include expanded_vu_.

Definition at line 208 of file IpLowRankSSAugSystemSolver.hpp.

◆ D_c_ext_

SmartPtr<CompoundVector> Ipopt::LowRankSSAugSystemSolver::D_c_ext_
private

Extended D_c diagonal.

Definition at line 211 of file IpLowRankSSAugSystemSolver.hpp.

◆ y_c_ext_space_

SmartPtr<CompoundVectorSpace> Ipopt::LowRankSSAugSystemSolver::y_c_ext_space_
private

Extended vector space for y_c.

Definition at line 214 of file IpLowRankSSAugSystemSolver.hpp.

◆ negEvalsCorrection_

Index Ipopt::LowRankSSAugSystemSolver::negEvalsCorrection_
private

Number of components in V, so that it can be used to correct the inertia.

Definition at line 218 of file IpLowRankSSAugSystemSolver.hpp.

◆ num_neg_evals_

Index Ipopt::LowRankSSAugSystemSolver::num_neg_evals_
private

Stores the number of negative eigenvalues detected during most recent factorization.

This is what is returned by NumberOfNegEVals() of this class. It usually is the number of negative eigenvalues returned from the aug_system_solver solve, but if a Cholesky factorization could not be performed, the returned value is one more than this what the aug_system_solver returned.

Definition at line 231 of file IpLowRankSSAugSystemSolver.hpp.


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