Ipopt Documentation  
 
Loading...
Searching...
No Matches
Ipopt::AugSystemSolver Class Referenceabstract

Base class for Solver for the augmented system. More...

#include <IpAugSystemSolver.hpp>

+ Inheritance diagram for Ipopt::AugSystemSolver:

Public Member Functions

virtual bool InitializeImpl (const OptionsList &options, const std::string &prefix)=0
 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 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.
 
virtual Index NumberOfNegEVals () const =0
 Number of negative eigenvalues detected during last solve.
 
virtual bool ProvidesInertia () const =0
 Query whether inertia is computed by linear solver.
 
virtual bool IncreaseQuality ()=0
 Request to increase quality of solution for next solve.
 
Constructors/Destructors
 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.

 AugSystemSolver (const AugSystemSolver &)
 Copy Constructor.
 
void operator= (const AugSystemSolver &)
 Default Assignment Operator.
 

Additional Inherited Members

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

Detailed Description

Base class for Solver for the augmented system.

This is the base class for linear solvers that solve the augmented system, which is defined as

\(\left[\begin{array}{cccc} W + D_x + \delta_xI & 0 & J_c^T & J_d^T\\ 0 & D_s + \delta_sI & 0 & -I \\ J_c & 0 & D_c - \delta_cI & 0\\ J_d & -I & 0 & D_d - \delta_dI \end{array}\right] \left(\begin{array}{c}sol_x\\sol_s\\sol_c\\sol_d\end{array}\right)= \left(\begin{array}{c}rhs_x\\rhs_s\\rhs_c\\rhs_d\end{array}\right)\)

Since this system might be solved repeatedly for different right hand sides, it is desirable to step the factorization of a direct linear solver if possible.

Definition at line 36 of file IpAugSystemSolver.hpp.

Constructor & Destructor Documentation

◆ AugSystemSolver() [1/2]

Ipopt::AugSystemSolver::AugSystemSolver ( )
inline

Default constructor.

Definition at line 42 of file IpAugSystemSolver.hpp.

◆ ~AugSystemSolver()

virtual Ipopt::AugSystemSolver::~AugSystemSolver ( )
inlinevirtual

Destructor.

Definition at line 45 of file IpAugSystemSolver.hpp.

◆ AugSystemSolver() [2/2]

Ipopt::AugSystemSolver::AugSystemSolver ( const AugSystemSolver )
private

Copy Constructor.

Member Function Documentation

◆ InitializeImpl()

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

◆ Solve()

virtual ESymSolverStatus Ipopt::AugSystemSolver::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 
)
inlinevirtual

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

If desired (i.e. if check_NegEVals is true), then the solution is only computed if the number of negative eigenvalues matches numberOfNegEVals.

Returns
return value of the linear solver object.

Reimplemented in Ipopt::AugRestoSystemSolver, Ipopt::LowRankAugSystemSolver, and Ipopt::LowRankSSAugSystemSolver.

Definition at line 63 of file IpAugSystemSolver.hpp.

◆ MultiSolve()

virtual ESymSolverStatus Ipopt::AugSystemSolver::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 
)
inlinevirtual

Like Solve, but for multiple right hand sides.

The inheriting class has to overload at least one of Solve and MultiSolve.

Reimplemented in Ipopt::GenAugSystemSolver, and Ipopt::StdAugSystemSolver.

Definition at line 113 of file IpAugSystemSolver.hpp.

◆ NumberOfNegEVals()

virtual Index Ipopt::AugSystemSolver::NumberOfNegEVals ( ) const
pure virtual

Number of negative eigenvalues detected during last solve.

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

Implemented in Ipopt::AugRestoSystemSolver, Ipopt::GenAugSystemSolver, Ipopt::LowRankAugSystemSolver, Ipopt::LowRankSSAugSystemSolver, and Ipopt::StdAugSystemSolver.

◆ ProvidesInertia()

virtual bool Ipopt::AugSystemSolver::ProvidesInertia ( ) const
pure virtual

Query whether inertia is computed by linear solver.

Returns
true, if linear solver provides inertia

Implemented in Ipopt::AugRestoSystemSolver, Ipopt::GenAugSystemSolver, Ipopt::LowRankAugSystemSolver, Ipopt::LowRankSSAugSystemSolver, and Ipopt::StdAugSystemSolver.

◆ IncreaseQuality()

virtual bool Ipopt::AugSystemSolver::IncreaseQuality ( )
pure virtual

Request to increase quality of solution for next solve.

Asks 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.)

Implemented in Ipopt::AugRestoSystemSolver, Ipopt::GenAugSystemSolver, Ipopt::LowRankAugSystemSolver, Ipopt::LowRankSSAugSystemSolver, and Ipopt::StdAugSystemSolver.

◆ operator=()

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

Default Assignment Operator.


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