ConicBundle
QPDirectKKTSolver.hxx
Go to the documentation of this file.
1 
2 #ifndef CONICBUNDLE_QPDIRECTKKTSOLVER_HXX
3 #define CONICBUNDLE_QPDIRECTKKTSOLVER_HXX
4 
14 #include "QPKKTSolverObject.hxx"
15 
16 namespace ConicBundle {
17 
21 
61 {
62 private:
63 
64  //--- data describing the KKT system
65  //BundleProxObject* Hp; ///< points to the quadratic cost representation, may NOT be NULL afer init
66  //QPModelBlockObject* model; ///< points to the cutting model information, may be NULL
67  //const CH_Matrix_Classes::Sparsemat* A; ///< points to a possibly present constraint matrix, may be NULL
68  //const Indexmatrix* eq_indices; ///< if not NULL, these rows of A correspond to equations; needed for checking applicability of this Object
69 
75 
76  //--- data for computing and storing precomputed parts of the system
85 
86  //--- parameters for the solution method
88 
91 
94 
95 public:
97  virtual void clear();
98 
100  QPDirectKKTSolver(bool in_factorize_ABC=false,CBout* cb=0,int cbinc=-1):
101  QPKKTSolverObject(cb,cbinc),factorize_ABC(in_factorize_ABC)
102  { clear();}
103 
105  virtual ~QPDirectKKTSolver();
106 
107 
109  virtual int QPinit_KKTdata(QPSolverProxObject* Hp,
113  );
114 
116  virtual int QPinit_KKTsystem(const CH_Matrix_Classes::Matrix& KKTdiagx,
117  const CH_Matrix_Classes::Matrix& KKTdiagy,
118  CH_Matrix_Classes::Real Hfactor,
120  QPSolverParameters* params);
121 
125  const CH_Matrix_Classes::Matrix& primalrhs,
126  const CH_Matrix_Classes::Matrix& dualrhs,
128  CH_Matrix_Classes::Real rhscorr,
130  QPSolverParameters* params);
131 
132 };
133 
135 
136 }
137 
138 #endif
139 
int Integer
all integer numbers in calculations and indexing are of this type
Definition: matop.hxx:40
parameters for steering the termination criteria and solution method of the solver ...
Definition: QPSolverParameters.hxx:26
double Real
all real numbers in calculations are of this type
Definition: matop.hxx:50
QPModelBlockObject * model
points to the cutting model information, may be NULL
Definition: QPKKTSolverObject.hxx:107
Matrix class for integral values of type Integer
Definition: indexmat.hxx:195
CH_Matrix_Classes::Matrix Diag_inv
inverse of the KKT diagonal in low rank versions
Definition: QPDirectKKTSolver.hxx:78
bool factorize_ABC
if true, use Aasen to factor the ABC block
Definition: QPDirectKKTSolver.hxx:87
implements a direct KKT Solver variant of QPKKTSolverObject
Definition: QPDirectKKTSolver.hxx:60
CH_Matrix_Classes::Integer Anr
number of rows in the constrain matrix =(A==0)?0:A->rowdim();
Definition: QPDirectKKTSolver.hxx:71
Matrix class of symmetric matrices with real values of type Real
Definition: symmat.hxx:43
CH_Matrix_Classes::Integer csz
number of constraints within the cutting model
Definition: QPDirectKKTSolver.hxx:73
CH_Matrix_Classes::Symmatrix Qchol
Cholesky facotr of KKT Q or of its low rank part.
Definition: QPDirectKKTSolver.hxx:79
conic bundle method solver for sum of convex functions. See the ConicBundle_Manual for a quick introd...
Definition: CBSolver.hxx:22
CH_Matrix_Classes::Integer dim
dimension of the quadratic term
Definition: QPDirectKKTSolver.hxx:70
base class for uniform use of WARNINGS and ERRORS (at some point in time)
Definition: CBout.hxx:30
virtual int QPinit_KKTsystem(const CH_Matrix_Classes::Matrix &KKTdiagx, const CH_Matrix_Classes::Matrix &KKTdiagy, CH_Matrix_Classes::Real Hfactor, CH_Matrix_Classes::Real prec, QPSolverParameters *params)
set up the primal dual KKT system for being solved for predictor and corrector rhs in QPsolve_KKTsyst...
Header declaring the class ConicBundle::QPKKTSolverObject.
virtual ~QPDirectKKTSolver()
virtual destructor
CH_Matrix_Classes::Indexmatrix piv
pivot sequence for Aasen
Definition: QPDirectKKTSolver.hxx:84
Matrix class for real values of type Real
Definition: matrix.hxx:74
virtual int QPsolve_KKTsystem(CH_Matrix_Classes::Matrix &solx, CH_Matrix_Classes::Matrix &soly, const CH_Matrix_Classes::Matrix &primalrhs, const CH_Matrix_Classes::Matrix &dualrhs, CH_Matrix_Classes::Real rhsmu, CH_Matrix_Classes::Real rhscorr, CH_Matrix_Classes::Real prec, QPSolverParameters *params)
solve the KKTsystem to precision prec for the given right hand sides that have been computed for the ...
virtual void clear()
reset data to empty
Matrix class of sparse matrices with real values of type Real
Definition: sparsmat.hxx:74
const CH_Matrix_Classes::Indexmatrix * eq_indices
if not NULL, these rows of A correspond to equations; needed for checking applicability of this Objec...
Definition: QPKKTSolverObject.hxx:109
CH_Matrix_Classes::Real Hfactor
scalar factor for H term
Definition: QPDirectKKTSolver.hxx:77
abstract interface for model blocks in the constrained QPSolver
Definition: QPModelBlockObject.hxx:89
QPSolverProxObject * Hp
points to the quadratic cost representation, may NOT be NULL afer init
Definition: QPKKTSolverObject.hxx:106
CH_Matrix_Classes::Matrix LinvC
for partial Schur complement w.r.t. C block
Definition: QPDirectKKTSolver.hxx:83
QPDirectKKTSolver(bool in_factorize_ABC=false, CBout *cb=0, int cbinc=-1)
default constructor
Definition: QPDirectKKTSolver.hxx:100
CH_Matrix_Classes::Symmatrix AQiAt_inv
Cholesky or Aasen factor of ABC with Schur complement.
Definition: QPDirectKKTSolver.hxx:81
CH_Matrix_Classes::Integer bsz
size of the bundle information in the cutting model
Definition: QPDirectKKTSolver.hxx:72
int compute_DLR_Schur_complement(CH_Matrix_Classes::Symmatrix &sc)
computes the Schur complement if Hp->is_DLR()==TRUE, i.e., the quadratic term is representable as dia...
virtual int QPinit_KKTdata(QPSolverProxObject *Hp, QPModelBlockObject *model, const CH_Matrix_Classes::Sparsemat *A, const CH_Matrix_Classes::Indexmatrix *eq_indices)
returns 1 if this class is not applicable in the current data situation, otherwise it stores the data...
abstract class for setting up and solving the primal dual KKT System within QPSolverBasicStructures ...
Definition: QPKKTSolverObject.hxx:101
CH_Matrix_Classes::Symmatrix CABinvCt_inv
for forming partial Schur complements
Definition: QPDirectKKTSolver.hxx:82
int compute_dense_Schur_complement(CH_Matrix_Classes::Symmatrix &sc)
computes the Schur compelement if the quadratic term is only retrievable in dense form ...
const CH_Matrix_Classes::Sparsemat * A
points to a possibly present constraint matrix, may be NULL
Definition: QPKKTSolverObject.hxx:108
const CH_Matrix_Classes::Matrix * Vp
used for low rank precondititioning
Definition: QPDirectKKTSolver.hxx:74
CH_Matrix_Classes::Symmatrix Schur_complement
Schur complement of ABC with Q if no bounds.
Definition: QPDirectKKTSolver.hxx:80
in order to pass a ConicBundle::BundleProxObject, see Quadratic Proximal Terms, to a custzomized QPSo...
Definition: QPSolverObject.hxx:55