PIPS-NLP
|
#include <SaddlePointSolver.h>
Public Member Functions | |
virtual int | matrixChanged () |
SaddlePointSolver () | |
SaddlePointSolver (DoubleMatrix *MatIn, const int localXSize, const int localYSize, const int localZSize) | |
~SaddlePointSolver () | |
![]() | |
DoubleLinearSolver () | |
virtual void | solveTrans (OoqpVector &x) |
virtual void | Lsolve (OoqpVector &x) |
virtual void | Dsolve (OoqpVector &x) |
virtual void | Ltsolve (OoqpVector &x) |
virtual | ~DoubleLinearSolver () |
Protected Member Functions | |
virtual void | firstCall () |
virtual int | _numericalFact () |
virtual void | diagonalChanged (int idiag, int extent) |
virtual void | solve (OoqpVector &rhs_) |
virtual void | solve (GenMatrix &rhs_in) |
Protected Attributes | |
DoubleLinearSolver * | Ax_solver |
int | firstCallFlag |
int | firstSCsolve |
int | Hxx_Dim |
int | Hss_Dim |
int | Ax_Dim_m |
int | Tx_Dim_m |
int | fullMatDim |
int | Hxx_NNz |
int | Hss_NNz |
int | Ax_NNz |
int | Tx_NNz |
int | fullMatNNz |
double * | Hxx_ele |
double * | Hss_ele |
double * | Ax_ele |
double * | Tx_ele |
int * | Hxx_rowBeg |
int * | Hss_rowBeg |
int * | Ax_rowBeg |
int * | Tx_rowBeg |
int * | Hxx_colIdx |
int * | Hss_colIdx |
int * | Ax_colIdx |
int * | Tx_colIdx |
int * | Hxx_Full_eleMap |
int * | Hss_Full_eleMap |
int * | Ax_Full_eleMap |
int * | Tx_Full_eleMap |
int | locnx |
int | locns |
int | locmy |
SparseSymMatrix * | Hxx_Mat |
SparseSymMatrix * | Hss_Mat |
SparseGenMatrix * | Ax_Mat |
SparseGenMatrix * | Tx_Mat |
SparseSymMatrix * | Msys |
Private Member Functions | |
void | SaddlePointJacSolve (OoqpVector *rhs_y_, OoqpVector *rhs_z_) |
void | SaddlePointJacTransSolve (OoqpVector *rhs_x_, OoqpVector *rhs_s_) |
Additional Inherited Members | |
![]() | |
int | negEigVal |
int | KryIter |
u is the decision matrix, x is the others (state var) in this solver, we assume Ax and Ax' are invertible.
all the u var have been removed.
fullMat = Hxx | | Ax' | Tx' | r_x | Hss | | -I | = r_s (1) Ax | |(reg_d) | | r_y Tx | -I | |(reg_d) | r_z
reg_d is diagonal and ==0, we do not need it.
let C = ( Ax ) , Hc = ( Hxx 0 ) (*) ( Tx -I ) ( 0 Hss )
(1)can be rewrited as Hc | C' | = r_p (2) C | | r_d
the invert mat of C is ^{-1} = ( Ax^{-1} ) ( TxAx^{-1} -I )
similar to the schur complement method, we solve the problem fullMat*(x,s,y,z)=r by the following sequence: (a) compute = C^{-1} (r_d)
(b) compute = C^{-T} ( r_p - Hc*delta_p)
note that input matrix fullMat is symmetric, and in a row-wise, lower-triangular form
SaddlePointSolver::SaddlePointSolver | ( | ) |
SaddlePointSolver::SaddlePointSolver | ( | DoubleMatrix * | MatIn, |
const int | localXSize, | ||
const int | localYSize, | ||
const int | localZSize | ||
) |
|
inline |
|
protectedvirtual |
|
inlineprotectedvirtual |
called if the diagonal elements of the matrix have changed. Triggers a refactorization of the matrix, if necessary.
idiag | index of the first diagonal element that changed |
extent | the number of diagonal element that changed. |
Implements DoubleLinearSolver.
|
protectedvirtual |
|
inlinevirtual |
called if some elements of the matrix have changed. Triggers a refactorization of the matrix, if necessary.
Implements DoubleLinearSolver.
|
private |
|
private |
|
protectedvirtual |
solves a linear system.
x | on entry the right hand side of the system to be solved. On exit, the solution. |
Implements DoubleLinearSolver.
|
protectedvirtual |
Reimplemented from DoubleLinearSolver.
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |