Base class for Solver for the augmented system. More...
#include <IpAugSystemSolver.hpp>
Public Member Functions | |
virtual bool | InitializeImpl (const OptionsList &options, const std::string &prefix)=0 |
overloaded from AlgorithmStrategyObject More... | |
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. More... | |
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. More... | |
virtual Index | NumberOfNegEVals () const =0 |
Number of negative eigenvalues detected during last solve. More... | |
virtual bool | ProvidesInertia () const =0 |
Query whether inertia is computed by linear solver. More... | |
virtual bool | IncreaseQuality ()=0 |
Request to increase quality of solution for next solve. More... | |
Constructors/Destructors | |
AugSystemSolver () | |
Default constructor. More... | |
virtual | ~AugSystemSolver () |
Destructor. More... | |
![]() | |
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. More... | |
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. More... | |
AlgorithmStrategyObject () | |
Default Constructor. More... | |
virtual | ~AlgorithmStrategyObject () |
Destructor. More... | |
![]() | |
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. More... | |
void | operator= (const AugSystemSolver &) |
Default Assignment Operator. More... | |
Additional Inherited Members | |
![]() | |
const Journalist & | Jnlst () const |
IpoptNLP & | IpNLP () const |
IpoptData & | IpData () const |
IpoptCalculatedQuantities & | IpCq () const |
bool | HaveIpData () const |
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.
|
inline |
Default constructor.
Definition at line 42 of file IpAugSystemSolver.hpp.
|
inlinevirtual |
Destructor.
Definition at line 45 of file IpAugSystemSolver.hpp.
|
private |
Copy Constructor.
|
pure virtual |
overloaded from AlgorithmStrategyObject
Implements Ipopt::AlgorithmStrategyObject.
Implemented in Ipopt::AugRestoSystemSolver, Ipopt::LowRankSSAugSystemSolver, Ipopt::StdAugSystemSolver, Ipopt::LowRankAugSystemSolver, and Ipopt::GenAugSystemSolver.
|
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.
Reimplemented in Ipopt::AugRestoSystemSolver, Ipopt::LowRankSSAugSystemSolver, and Ipopt::LowRankAugSystemSolver.
Definition at line 63 of file IpAugSystemSolver.hpp.
|
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::StdAugSystemSolver, and Ipopt::GenAugSystemSolver.
Definition at line 113 of file IpAugSystemSolver.hpp.
|
pure virtual |
Number of negative eigenvalues detected during last solve.
Implemented in Ipopt::AugRestoSystemSolver, Ipopt::LowRankSSAugSystemSolver, Ipopt::StdAugSystemSolver, Ipopt::GenAugSystemSolver, and Ipopt::LowRankAugSystemSolver.
|
pure virtual |
Query whether inertia is computed by linear solver.
Implemented in Ipopt::AugRestoSystemSolver, Ipopt::LowRankSSAugSystemSolver, Ipopt::StdAugSystemSolver, Ipopt::GenAugSystemSolver, and Ipopt::LowRankAugSystemSolver.
|
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::StdAugSystemSolver, Ipopt::LowRankSSAugSystemSolver, Ipopt::GenAugSystemSolver, and Ipopt::LowRankAugSystemSolver.
|
private |
Default Assignment Operator.