# Ipopt::LowRankSSAugSystemSolver Class Reference

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

`#include <IpLowRankSSAugSystemSolver.hpp>`

Inheritance diagram for Ipopt::LowRankSSAugSystemSolver:
[legend]

List of all members.

## Public Member Functions
bool | InitializeImpl (const OptionsList &options, const std::string &prefix)
| overloaded from AlgorithmStrategyObject
virtual ESymSolverStatus | Solve (const SymMatrix *W, double W_factor, const Vector *D_x, double delta_x, const Vector *D_s, double delta_s, const Matrix *J_c, const Vector *D_c, double delta_c, const Matrix *J_d, const Vector *D_d, double 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 ()
| Default destructor.
## 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 &)
| Overloaded Equals Operator.
Internal functions
ESymSolverStatus | UpdateExtendedData (const SymMatrix *W, double W_factor, const Vector *D_x, double delta_x, const Vector *D_s, double delta_s, const Matrix &J_c, const Vector *D_c, double delta_c, const Matrix &J_d, const Vector *D_d, double 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, double W_factor, const Vector *D_x, double delta_x, const Vector *D_s, double delta_s, const Matrix &J_c, const Vector *D_c, double delta_c, const Matrix &J_d, const Vector *D_d, double delta_d)
| Method that compares the tags of the data for the matrix with those from the previous call.
## Private Attributes
SmartPtr< AugSystemSolver > | aug_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.
double | w_factor_
| Most recent value of W_factor.
TaggedObject::Tag | d_x_tag_
| Tag for D_x vector, representing the diagonal matrix D_x.
double | 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.
double | 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.
double | 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.
double | 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< DiagMatrix > | Wdiag_
| Hessian Matrix passed to the augmented system solver solving the matrix without the low-rank update.
SmartPtr < ExpandedMultiVectorMatrix > | expanded_vu_
| Artifical rows for Jac_c part for low rank data.
SmartPtr< CompoundMatrix > | J_c_ext_
| Extended Jac_c to include expanded_vu_.
SmartPtr< CompoundVector > | D_c_ext_
| Extended D_c diagonal.
SmartPtr< CompoundVectorSpace > | y_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.

## 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

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

Constructor using an existing augmented system solver.

the max_rank argument is the maximal rank that can appear.

virtual Ipopt::LowRankSSAugSystemSolver::~LowRankSSAugSystemSolver | ( |  | ) | `[virtual]`

Default destructor.

Ipopt::LowRankSSAugSystemSolver::LowRankSSAugSystemSolver | ( |  | ) | `[private]`

Default constructor.

Ipopt::LowRankSSAugSystemSolver::LowRankSSAugSystemSolver | ( | const LowRankSSAugSystemSolver & |  | ) | `[private]`

Copy Constructor.

## Member Function Documentation

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

overloaded from AlgorithmStrategyObject

Implements Ipopt::AugSystemSolver.

virtual ESymSolverStatus Ipopt::LowRankSSAugSystemSolver::Solve | ( | const SymMatrix * | W,
|  | double | W_factor,
|  | const Vector * | D_x,
|  | double | delta_x,
|  | const Vector * | D_s,
|  | double | delta_s,
|  | const Matrix * | J_c,
|  | const Vector * | D_c,
|  | double | delta_c,
|  | const Matrix * | J_d,
|  | const Vector * | D_d,
|  | double | 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.

virtual Index Ipopt::LowRankSSAugSystemSolver::NumberOfNegEVals | ( |  | ) | const`[virtual]`

Number of negative eigenvalues detected during last solve.

Returns the number of negative eigenvalues of the most recent factorized matrix. This must not be called if the linear solver does not compute this quantities (see ProvidesInertia).

Implements Ipopt::AugSystemSolver.

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.

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.

void Ipopt::LowRankSSAugSystemSolver::operator= | ( | const LowRankSSAugSystemSolver & |  | ) | `[private]`

Overloaded Equals Operator.

Reimplemented from Ipopt::AugSystemSolver.

ESymSolverStatus Ipopt::LowRankSSAugSystemSolver::UpdateExtendedData | ( | const SymMatrix * | W,
|  | double | W_factor,
|  | const Vector * | D_x,
|  | double | delta_x,
|  | const Vector * | D_s,
|  | double | delta_s,
|  | const Matrix & | J_c,
|  | const Vector * | D_c,
|  | double | delta_c,
|  | const Matrix & | J_d,
|  | const Vector * | D_d,
|  | double | 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_.

bool Ipopt::LowRankSSAugSystemSolver::AugmentedSystemRequiresChange | ( | const SymMatrix * | W,
|  | double | W_factor,
|  | const Vector * | D_x,
|  | double | delta_x,
|  | const Vector * | D_s,
|  | double | delta_s,
|  | const Matrix & | J_c,
|  | const Vector * | D_c,
|  | double | delta_c,
|  | const Matrix & | J_d,
|  | const Vector * | D_d,
|  | double | 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

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 115 of file IpLowRankSSAugSystemSolver.hpp.

Index Ipopt::LowRankSSAugSystemSolver::max_rank_`[private]`

Maximal rank of low rank Hessian update.

Definition at line 118 of file IpLowRankSSAugSystemSolver.hpp.

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 128 of file IpLowRankSSAugSystemSolver.hpp.

double Ipopt::LowRankSSAugSystemSolver::w_factor_`[private]`

Most recent value of W_factor.

Definition at line 130 of file IpLowRankSSAugSystemSolver.hpp.

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 134 of file IpLowRankSSAugSystemSolver.hpp.

double Ipopt::LowRankSSAugSystemSolver::delta_x_`[private]`

Most recent value of delta_x from Set method.

Definition at line 136 of file IpLowRankSSAugSystemSolver.hpp.

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 140 of file IpLowRankSSAugSystemSolver.hpp.

double Ipopt::LowRankSSAugSystemSolver::delta_s_`[private]`

Most recent value of delta_s from Set method.

Definition at line 142 of file IpLowRankSSAugSystemSolver.hpp.

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 146 of file IpLowRankSSAugSystemSolver.hpp.

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 150 of file IpLowRankSSAugSystemSolver.hpp.

double Ipopt::LowRankSSAugSystemSolver::delta_c_`[private]`

Most recent value of delta_c from Set method.

Definition at line 152 of file IpLowRankSSAugSystemSolver.hpp.

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 156 of file IpLowRankSSAugSystemSolver.hpp.

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 160 of file IpLowRankSSAugSystemSolver.hpp.

double Ipopt::LowRankSSAugSystemSolver::delta_d_`[private]`

Most recent value of delta_d from Set method.

Definition at line 162 of file IpLowRankSSAugSystemSolver.hpp.

bool Ipopt::LowRankSSAugSystemSolver::first_call_`[private]`

Flag indicating if this is the first call.

Definition at line 166 of file IpLowRankSSAugSystemSolver.hpp.

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 173 of file IpLowRankSSAugSystemSolver.hpp.

SmartPtr<ExpandedMultiVectorMatrix> Ipopt::LowRankSSAugSystemSolver::expanded_vu_`[private]`

Artifical rows for Jac_c part for low rank data.

Definition at line 175 of file IpLowRankSSAugSystemSolver.hpp.

SmartPtr<CompoundMatrix> Ipopt::LowRankSSAugSystemSolver::J_c_ext_`[private]`

Extended Jac_c to include expanded_vu_.

Definition at line 177 of file IpLowRankSSAugSystemSolver.hpp.

SmartPtr<CompoundVector> Ipopt::LowRankSSAugSystemSolver::D_c_ext_`[private]`

Extended D_c diagonal.

Definition at line 179 of file IpLowRankSSAugSystemSolver.hpp.

SmartPtr<CompoundVectorSpace> Ipopt::LowRankSSAugSystemSolver::y_c_ext_space_`[private]`

Extended vector space for y_c.

Definition at line 181 of file IpLowRankSSAugSystemSolver.hpp.

Index Ipopt::LowRankSSAugSystemSolver::negEvalsCorrection_`[private]`

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

Definition at line 184 of file IpLowRankSSAugSystemSolver.hpp.

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 retured 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 194 of file IpLowRankSSAugSystemSolver.hpp.

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

- src/Algorithm/IpLowRankSSAugSystemSolver.hpp

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines