PIPS-NLP
Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | List of all members
sLinsys Class Referenceabstract

#include <sLinsys.h>

Inheritance diagram for sLinsys:
NlpGenLinsys LinearSystem sDummyLinsys sLinsysLeaf sLinsysRoot sLinsysRootAggregation sLinsysRootAug

Public Member Functions

 sLinsys (sFactory *factory, sData *prob)
 
 sLinsys (sFactory *factory, sData *prob, OoqpVector *dd, OoqpVector *dq, OoqpVector *nomegaInv, OoqpVector *rhs, OoqpVector *additiveDiag_=NULL)
 
virtual ~sLinsys ()
 
virtual void factor (Data *prob, Variables *vars, RegularizationAlg *RegInfo)
 
virtual void factor (Data *prob, Variables *vars)
 
virtual int factor2 (sData *prob, Variables *vars)=0
 
virtual void Lsolve (sData *prob, OoqpVector &x)=0
 
virtual void Dsolve (sData *prob, OoqpVector &x)=0
 
virtual void Ltsolve (sData *prob, OoqpVector &x)=0
 
virtual void Ltsolve2 (sData *prob, StochVector &x, SimpleVector &xp)=0
 
virtual void solveCompressed (OoqpVector &rhs)
 
virtual void putXDiagonal (OoqpVector &xdiag_)=0
 
virtual void putSDiagonal (OoqpVector &sdiag_)=0
 
virtual void putYDualDiagonal (OoqpVector &ydiag_)=0
 
virtual void putZDiagonal (OoqpVector &zdiag)=0
 
virtual void setAdditiveDiagonal ()=0
 
void joinRHS (OoqpVector &rhs_in, OoqpVector &rhs1_in, OoqpVector &rhs2_in, OoqpVector &rhs3_in)
 
void separateVars (OoqpVector &x_in, OoqpVector &y_in, OoqpVector &z_in, OoqpVector &vars_in)
 
void joinRHSXSYZ (OoqpVector &rhs_in, OoqpVector &rhs1_in, OoqpVector &rhs2_in, OoqpVector &rhs3_in, OoqpVector &rhs4_in)
 
void separateVarsXSYZ (OoqpVector &x_in, OoqpVector &s_in, OoqpVector &y_in, OoqpVector &z_in, OoqpVector &vars_in)
 
virtual void sync ()=0
 
virtual void deleteChildren ()=0
 
virtual void addLnizi (sData *prob, OoqpVector &z0, OoqpVector &zi)
 
void LniTransMult (sData *prob, OoqpVector &y, double alpha, OoqpVector &x)
 
virtual void allocU (DenseGenMatrix **Ut, int np)
 
virtual void allocV (DenseGenMatrix **V, int np)
 
virtual void computeU_V (sData *prob, DenseGenMatrix *U, DenseGenMatrix *V)
 
virtual void addTermToDenseSchurCompl (sData *prob, DenseSymMatrix &SC)
 
virtual void addColsToDenseSchurCompl (sData *prob, DenseGenMatrix &out, int startcol, int endcol)
 
virtual void symAddColsToDenseSchurCompl (sData *prob, double *out, int startcol, int endcol)
 
virtual void addTermToSchurResidual (sData *prob, SimpleVector &res, SimpleVector &x)
 
virtual int GetNegEigVal ()
 
virtual void _backSolve (sData *prob, OoqpVector &ParSol_, OoqpVector &Vec_, StochVector *End_Par_Pos_)
 
virtual void _addTargetParsLnizi (sData *prob, OoqpVector &ParSol_, OoqpVector &Vec_, OoqpVector *goal_Par)
 
virtual void _setupColOfBordMat (sData *prob, OoqpVector *rhs_St, const int ColIDX, bool &allzero, const int aimlevel)
 
virtual void _assembleSC (sData *prob, OoqpVector *rhs_St_in, const int ColIDX, const int aimlevel, DenseSymMatrix &SC)
 
virtual void _setupYaddLniTx (sData *prob, OoqpVector &y_, double alpha, SimpleVector &x, const int aimlevel)
 
- Public Member Functions inherited from NlpGenLinsys
 NlpGenLinsys (NlpGen *factory, NlpGenData *data, LinearAlgebraPackage *la)
 
 NlpGenLinsys ()
 
 ~NlpGenLinsys ()
 
virtual void solve (Data *prob, Variables *vars, Residuals *res, Variables *step)
 
virtual void solve_NTsteps (Data *prob, Variables *vars, Residuals *resids, Variables *Nstep, Variables *Tstep, Variables *NTstep)
 
virtual void solve_IterRefine (Data *prob_in, Variables *vars_in, Residuals *res_in, Variables *step_in, Residuals *KKT_Resid_in, Variables *KKT_sol_in)
 
virtual void solveXYZS (OoqpVector &stepx, OoqpVector &stepy, OoqpVector &stepz, OoqpVector &steps, OoqpVector &ztemp, NlpGenData *data)
 
virtual void solveCompressedAugXSYZ (OoqpVector &stepx, OoqpVector &steps, OoqpVector &stepy, OoqpVector &stepz, NlpGenData *prob)
 
virtual void solveCompressedAugXSYZ_PETSC (OoqpVector &stepx, OoqpVector &steps, OoqpVector &stepy, OoqpVector &stepz, NlpGenData *prob)
 
virtual void solveBiCGStab (OoqpVector &stepx, OoqpVector &steps, OoqpVector &stepy, OoqpVector &stepz, NlpGenData *data)
 
virtual void computeDiagonals (OoqpVector &dd, OoqpVector &omega, OoqpVector &t, OoqpVector &lambda, OoqpVector &u, OoqpVector &pi, OoqpVector &v, OoqpVector &gamma, OoqpVector &w, OoqpVector &phi)
 
virtual void solveCompressedBiCGStab (OoqpVector &stepx, OoqpVector &stepy, OoqpVector &stepz, NlpGenData *data)
 
virtual void solveCompressedIterRefin (OoqpVector &stepx, OoqpVector &stepy, OoqpVector &stepz, NlpGenData *data)
 
virtual void matXYZMult (double beta, OoqpVector &res, double alpha, OoqpVector &sol, NlpGenData *data, OoqpVector &solx, OoqpVector &soly, OoqpVector &solz)
 
virtual void matXSYZMult (double beta, OoqpVector &res, double alpha, OoqpVector &sol, NlpGenData *data, OoqpVector &solx, OoqpVector &sols, OoqpVector &soly, OoqpVector &solz)
 
virtual void factorNoMatChange (Data *prob_in, Variables *vars_in, RegularizationAlg *RegInfo)
 
virtual void UpdateMatrices (Data *prob_in, int const updateLevel=2)
 
virtual double computeResidual (NlpGenData *data, OoqpVector &res_, OoqpVector &sol_, OoqpVector &solx_, OoqpVector &sols_, OoqpVector &soly_, OoqpVector &solz_)
 
virtual double computeResidual_FullKKT (NlpGenData *data, NlpGenResiduals *res_, NlpGenVars *sol_, NlpGenVars *var_)
 
virtual double eval_xWx (NlpGenData *prob, NlpGenResiduals *resid, NlpGenVars *steps)
 
virtual void computeQuantitiesForDualReg (NlpGenData *prob, NlpGenVars *vars, NlpGenResiduals *resid, NlpGenVars *steps, double *dualRegQuantities)
 
virtual void setXDiagonal (OoqpVector &xdiag)=0
 
virtual void setSDiagonal (OoqpVector &sdiag)=0
 
virtual void setYDiagonal (OoqpVector &ydiag)=0
 
virtual void setZDiagonal (OoqpVector &zdiag)=0
 
virtual void copyXSYZ_fromArray (OoqpVector &vec_xsyz, double *array_in, const int nb_col)
 
virtual void copyXSYZ_toArray (OoqpVector &vec_xsyz, double *array_in, const int nb_col)
 
- Public Member Functions inherited from LinearSystem
virtual ~LinearSystem ()
 

Public Attributes

int negEigVal
 
SymMatrixkkt
 
MPI_Comm mpiComm
 
sTreestochNode
 
bool isActive
 
- Public Attributes inherited from NlpGenLinsys
OoqpVectornomegaInv
 
OoqpVectorrhs
 
OoqpVectorrhs_back
 
NlpGenfactory
 
long long nx
 
long long my
 
long long mz
 
double priReg
 
double dualReg
 
OoqpVectordd
 
OoqpVectordq
 
OoqpVectortemp_diagX
 
OoqpVectortemp_diagS
 
OoqpVectortemp_diagY
 
OoqpVectortemp_diagZ
 
OoqpVectoradditiveDiag
 
OoqpVectorixupp
 
OoqpVectoricupp
 
OoqpVectorixlow
 
OoqpVectoriclow
 
int nxupp
 
int nxlow
 
int mcupp
 
int mclow
 
int num_slacks
 
int useRefs
 
OoqpVectorsol
 
OoqpVectorres
 
OoqpVectorresx
 
OoqpVectorress
 
OoqpVectorresy
 
OoqpVectorresz
 
OoqpVectorsol2
 
OoqpVectorres2
 
OoqpVectorres3
 
OoqpVectorres4
 
OoqpVectorres5
 
OoqpVectorsol2Bicg
 
OoqpVectorres2Bicg
 
OoqpVectorres3Bicg
 
OoqpVectorres4Bicg
 
OoqpVectorres5Bicg
 
int KryIter
 
bool allocateSpace
 

Protected Member Functions

 sLinsys ()
 

Protected Attributes

int locnx
 
int locmy
 
int locmz
 
DoubleLinearSolversolver
 
sDatadata
 
- Protected Attributes inherited from NlpGenLinsys
bool fullQ
 

Constructor & Destructor Documentation

sLinsys::sLinsys ( sFactory factory,
sData prob 
)
sLinsys::sLinsys ( sFactory factory,
sData prob,
OoqpVector dd,
OoqpVector dq,
OoqpVector nomegaInv,
OoqpVector rhs,
OoqpVector additiveDiag_ = NULL 
)
sLinsys::~sLinsys ( )
virtual
sLinsys::sLinsys ( )
inlineprotected

Member Function Documentation

void sLinsys::_addTargetParsLnizi ( sData prob,
OoqpVector ParSol_,
OoqpVector Vec_,
OoqpVector goal_Par 
)
virtual

Reimplemented in sDummyLinsys.

void sLinsys::_assembleSC ( sData prob,
OoqpVector rhs_St_in,
const int  ColIDX,
const int  aimlevel,
DenseSymMatrix SC 
)
virtual

Reimplemented in sDummyLinsys.

void sLinsys::_backSolve ( sData prob,
OoqpVector ParSol_,
OoqpVector Vec_,
StochVector End_Par_Pos_ 
)
virtual

Reimplemented in sDummyLinsys.

void sLinsys::_setupColOfBordMat ( sData prob,
OoqpVector rhs_St,
const int  ColIDX,
bool &  allzero,
const int  aimlevel 
)
virtual

Reimplemented in sDummyLinsys.

void sLinsys::_setupYaddLniTx ( sData prob,
OoqpVector y_,
double  alpha,
SimpleVector x,
const int  aimlevel 
)
virtual
void sLinsys::addColsToDenseSchurCompl ( sData prob,
DenseGenMatrix out,
int  startcol,
int  endcol 
)
virtual
void sLinsys::addLnizi ( sData prob,
OoqpVector z0_,
OoqpVector zi_ 
)
virtual

[ R^i^T Ai^T Ci^T ] [ ] z0 -= [ 0 0 0 ] * Li\ [ zi ] [ 0 0 0 ] [ ]

if gOuterSolve>=3 && separateHandDiag==0 [ R^i^T 0 Ai^T Ci^T ] [ ] z0 -= [ 0 0 0 0 ] * Li\ [ zi ] [ 0 0 0 0 ] [ ]

Reimplemented in sDummyLinsys.

void sLinsys::addTermToDenseSchurCompl ( sData prob,
DenseSymMatrix SC 
)
virtual

Method(s) that use a memory-friendly mechanism for computing the terms from the Schur Complement

Computes U = Gi * inv(H_i) * Gi^T. [ R 0 0 ] Gi^T = [ A 0 0 ] [ C 0 0]

A and C are the recourse eq. and ineq. matrices, R is the cross Hessian term.

if gOuterSolve>=3 && separateHandDiag==0 [ R 0 0 ] [ 0 0 0 ] <— for the Ineq Cons slack var Gi^T = [ A 0 0 ] [ C 0 0]

A and C are the recourse eq. and ineq. matrices, R is the cross Hessian term.

void sLinsys::addTermToSchurResidual ( sData prob,
SimpleVector res,
SimpleVector x 
)
virtual

Used in the iterative refinement for the dense Schur complement systems Computes res += [0 A^T C^T ]*inv(KKT)*[0;A;C] x

Reimplemented in sDummyLinsys.

void sLinsys::allocU ( DenseGenMatrix **  Ut,
int  np 
)
virtual

Methods that use dense matrices U and V to compute the terms from the Schur complement.

Reimplemented in sDummyLinsys.

void sLinsys::allocV ( DenseGenMatrix **  V,
int  np 
)
virtual

Reimplemented in sDummyLinsys.

void sLinsys::computeU_V ( sData prob,
DenseGenMatrix U,
DenseGenMatrix V 
)
virtual

Computes U = Li^T. [ 0 0 0 ] Gi^T = [ A 0 0 ] [ C 0 0]

We have special structure here: [ 0 ] U = Li\ [ A ] , U is (nx+my+mz)-by-(np) [ C ]

V = Di

Reimplemented in sDummyLinsys.

virtual void sLinsys::deleteChildren ( )
pure virtual

Implemented in sDummyLinsys, sLinsysLeaf, and sLinsysRoot.

virtual void sLinsys::Dsolve ( sData prob,
OoqpVector x 
)
pure virtual
void sLinsys::factor ( Data prob,
Variables vars,
RegularizationAlg RegInfo 
)
virtual

sets up the matrix for the main linear system in "augmented system" form. The actual factorization is performed by a routine specific to either the sparse or dense case.

See also
NlpGenSparseLinsys::factor
NlpGenDenseLinsys::factor

Reimplemented from NlpGenLinsys.

void sLinsys::factor ( Data prob,
Variables vars 
)
virtual

factorizes the matrix, stores data related to the factorization to prepare for later calls to "solve"

Reimplemented from NlpGenLinsys.

virtual int sLinsys::factor2 ( sData prob,
Variables vars 
)
pure virtual
virtual int sLinsys::GetNegEigVal ( )
inlinevirtual
void sLinsys::joinRHS ( OoqpVector rhs,
OoqpVector rhs1,
OoqpVector rhs2,
OoqpVector rhs3 
)
virtual

assembles a single vector object from three given vectors

Parameters
rhs(output) final joined vector
rhs1(input) first part of rhs
rhs2(input) middle part of rhs
rhs3(input) last part of rhs

Reimplemented from NlpGenLinsys.

void sLinsys::joinRHSXSYZ ( OoqpVector rhs_in,
OoqpVector rhs1_in,
OoqpVector rhs2_in,
OoqpVector rhs3_in,
OoqpVector rhs4_in 
)
virtual

Reimplemented from NlpGenLinsys.

void sLinsys::LniTransMult ( sData prob,
OoqpVector y,
double  alpha,
OoqpVector x 
)

y += alpha * Lni^T * x

memopt

virtual void sLinsys::Lsolve ( sData prob,
OoqpVector x 
)
pure virtual
virtual void sLinsys::Ltsolve ( sData prob,
OoqpVector x 
)
pure virtual
virtual void sLinsys::Ltsolve2 ( sData prob,
StochVector x,
SimpleVector xp 
)
pure virtual

Implemented in sLinsysLeaf, sLinsysRoot, and sDummyLinsys.

virtual void sLinsys::putSDiagonal ( OoqpVector xdiag)
pure virtual

places the diagonal resulting from the bounds on Cx into the augmented system matrix — corresponding to slack variables S

Implements NlpGenLinsys.

Implemented in sLinsysLeaf, sLinsysRoot, and sDummyLinsys.

virtual void sLinsys::putXDiagonal ( OoqpVector xdiag)
pure virtual

places the diagonal resulting from the bounds on x into the augmented system matrix — corresponding to pri variables X

Implements NlpGenLinsys.

Implemented in sLinsysLeaf, sLinsysRoot, and sDummyLinsys.

virtual void sLinsys::putYDualDiagonal ( OoqpVector ydiag)
pure virtual

places the diagonal resulting from the bounds on x into the augmented system matrix — for Regularization dual Y

Implements NlpGenLinsys.

Implemented in sLinsysLeaf, sLinsysRoot, and sDummyLinsys.

virtual void sLinsys::putZDiagonal ( OoqpVector sdiag)
pure virtual

places the diagonal resulting from the bounds on Cx into the augmented system matrix — corresponding to slack variables S, z is the dual for s

Implements NlpGenLinsys.

Implemented in sLinsysLeaf, sLinsysRoot, and sDummyLinsys.

void sLinsys::separateVars ( OoqpVector vars1,
OoqpVector vars2,
OoqpVector vars3,
OoqpVector vars 
)
virtual

extracts three component vectors from a given aggregated vector.

Parameters
vars(input) aggregated vector
vars1(output) first part of vars
vars2(output) middle part of vars
vars3(output) last part of vars

Reimplemented from NlpGenLinsys.

void sLinsys::separateVarsXSYZ ( OoqpVector x_in,
OoqpVector s_in,
OoqpVector y_in,
OoqpVector z_in,
OoqpVector vars_in 
)
virtual

Reimplemented from NlpGenLinsys.

virtual void sLinsys::setAdditiveDiagonal ( )
pure virtual

Implemented in sLinsysLeaf, sLinsysRoot, and sDummyLinsys.

void sLinsys::solveCompressed ( OoqpVector rhs)
virtual

perform the actual solve using the factors produced in factor.

Parameters
rhson input contains the aggregated right-hand side of the augmented system; on output contains the solution in aggregated form
See also
NlpGenSparseLinsys::solveCompressed
NlpGenDenseLinsys::solveCompressed

Implements NlpGenLinsys.

Reimplemented in sDummyLinsys.

void sLinsys::symAddColsToDenseSchurCompl ( sData prob,
double *  out,
int  startcol,
int  endcol 
)
virtual

code needs to consider the cross Hessian; fixme

virtual void sLinsys::sync ( )
pure virtual

Implemented in sDummyLinsys, sLinsysLeaf, and sLinsysRoot.

Member Data Documentation

sData* sLinsys::data
protected
bool sLinsys::isActive
SymMatrix* sLinsys::kkt
int sLinsys::locmy
protected
int sLinsys::locmz
protected
int sLinsys::locnx
protected
MPI_Comm sLinsys::mpiComm
int sLinsys::negEigVal
DoubleLinearSolver* sLinsys::solver
protected
sTree* sLinsys::stochNode

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