ConicBundle
QPKKTPrecondObject.hxx
Go to the documentation of this file.
1 
2 
3 #ifndef CONICBUNDLE_QPKKTPRECONDOBJECT_HXX
4 #define CONICBUNDLE_QPKKTPRECONDOBJECT_HXX
5 
14 #include "QPSolverObject.hxx"
15 #include "QPModelBlockObject.hxx"
16 #include "clock.hxx"
17 
18 namespace ConicBundle {
19 
20 class QPSolverParameters;
21 
22 
26 
52 class QPKKTPrecondObject: public virtual CBout
53 {
54 protected:
55 
56  //--- data describing the KKT system
62 
64 
65 public:
67  virtual void clear()
68  {Hp=0;model=0;A=0;eq_indices=0;}
69 
71  QPKKTPrecondObject(CBout* cb=0,int cbinc=-1):
72  CBout(cb,cbinc),Hp(0),model(0),A(0),eq_indices(0),SchurComplAineq(false)
73  {}
74 
76  virtual ~QPKKTPrecondObject();
77 
79  virtual int init_data(QPSolverProxObject* Hp,
80  QPModelBlockObject* model,
82  const CH_Matrix_Classes::Indexmatrix* eq_indices,
83  bool SchurComplAineq
84  )=0;
85 
87  virtual int init_system(const CH_Matrix_Classes::Matrix& KKTdiagx,
88  const CH_Matrix_Classes::Matrix& KKTdiagy,
91  QPSolverParameters* params) =0;
92 
94  virtual CH_Matrix_Classes::Real get_lmin_invM1() {return 1.;}
95 
97  virtual int precondM1(CH_Matrix_Classes::Matrix& /* vec */) {return 0;}
98 
100  virtual int precondM2(CH_Matrix_Classes::Matrix& /* vec */) {return 0;}
101 
103  virtual int precond_invG1(CH_Matrix_Classes::Matrix& /* vec */) {return 0;}
104 
106  virtual int precond_invG1tran(CH_Matrix_Classes::Matrix& /* vec */) {return 0;}
107 
110 
113  const CH_Matrix_Classes::Matrix& /* KKTdiagx */,
114  const CH_Matrix_Classes::Matrix& /* KKTdiagy */)
115  {return 1;}
116 
119  const CH_Matrix_Classes::Matrix& KKTdiagy);
120 
123  {return -1;}
124 
127  {return 0;}
128 
130  virtual void reset_t_precond_mult()
131  {}
132 };
133 
134 
135 
136 
138 
139 }
140 
141 #endif
142 
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
QPKKTPrecondObject(CBout *cb=0, int cbinc=-1)
default constructor
Definition: QPKKTPrecondObject.hxx:71
double Real
all real numbers in calculations are of this type
Definition: matop.hxx:50
virtual CH_Tools::Microseconds get_t_precond_mult()
for evaluation purposes with iterative solvers, return the time spent in the multiplication with the ...
Definition: QPKKTPrecondObject.hxx:126
virtual CH_Matrix_Classes::Integer get_precond_rank()
for evaluation purposes with iterative solvers, return the rank of the precondiontioner used (or the ...
Definition: QPKKTPrecondObject.hxx:122
Matrix class for integral values of type Integer
Definition: indexmat.hxx:195
QPSolverProxObject * Hp
points to the quadratic cost representation, may NOT be NULL afer init
Definition: QPKKTPrecondObject.hxx:57
virtual ~QPKKTPrecondObject()
virtual destructor
Header declaring the abstract class ConicBundle::QPSolverObject.
CH_Matrix_Classes::Real Hfactor
the prox term of Hp is multiplied by this
Definition: QPKKTPrecondObject.hxx:63
conic bundle method solver for sum of convex functions. See the ConicBundle_Manual for a quick introd...
Definition: CBSolver.hxx:22
QPModelBlockObject * model
points to the cutting model information, may be NULL
Definition: QPKKTPrecondObject.hxx:58
base class for uniform use of WARNINGS and ERRORS (at some point in time)
Definition: CBout.hxx:30
extra long integer number for expressing and computing time measurements in microseconds.
Definition: clock.hxx:46
virtual void clear()
reset data to empty
Definition: QPKKTPrecondObject.hxx:67
const CH_Matrix_Classes::Sparsemat * A
points to a possibly present constraint matrix, may be NULL
Definition: QPKKTPrecondObject.hxx:59
virtual CH_Matrix_Classes::Real get_condition_number(const CH_Matrix_Classes::Matrix &KKTdiagx, const CH_Matrix_Classes::Matrix &KKTdiagy)
for estimating the condition number directly for the preconditioned part only
virtual int init_data(QPSolverProxObject *Hp, QPModelBlockObject *model, const CH_Matrix_Classes::Sparsemat *A, const CH_Matrix_Classes::Indexmatrix *eq_indices, bool SchurComplAineq)=0
returns 1 if this class is not applicable in the current data situation, otherwise it stores the data...
virtual int init_system(const CH_Matrix_Classes::Matrix &KKTdiagx, const CH_Matrix_Classes::Matrix &KKTdiagy, CH_Matrix_Classes::Real Hfactor, CH_Matrix_Classes::Real prec, QPSolverParameters *params)=0
set up the primal dual KKT system for being solved for predictor and corrector rhs; the input objects...
Header declaring the classes ConicBundle::QPModelBlockObject.
virtual int precond_invG1tran(CH_Matrix_Classes::Matrix &)
for estimating the condition number with M1=G*G^T this returns G^{-T}*vec; default: G=I ...
Definition: QPKKTPrecondObject.hxx:106
virtual int precond_invG1(CH_Matrix_Classes::Matrix &)
for estimating the condition number with M1=G*G^T this returns G^{-1}*vec; default: G=I ...
Definition: QPKKTPrecondObject.hxx:103
Matrix class for real values of type Real
Definition: matrix.hxx:74
virtual void reset_t_precond_mult()
for evaluation purposes with iterative solvers, reset the time spent in the multiplication with the p...
Definition: QPKKTPrecondObject.hxx:130
virtual CH_Matrix_Classes::Integer precond_size()
for estimating the condition number directly for the preconditioned part only; negative numbers indic...
Definition: QPKKTPrecondObject.hxx:109
Matrix class of sparse matrices with real values of type Real
Definition: sparsmat.hxx:74
abstract interface for model blocks in the constrained QPSolver
Definition: QPModelBlockObject.hxx:89
Abstract Interface for preconditioners to be used with a QPIterativeKKTSolver and a CH_Matrix_Classes...
Definition: QPKKTPrecondObject.hxx:52
virtual int cond_number_mult(CH_Matrix_Classes::Matrix &, const CH_Matrix_Classes::Matrix &, const CH_Matrix_Classes::Matrix &)
for estimating the condition number directly for the preconditioned part only
Definition: QPKKTPrecondObject.hxx:112
bool SchurComplAineq
if true, the inequalities of A are Schur complemented into the H block
Definition: QPKKTPrecondObject.hxx:61
virtual int precondM2(CH_Matrix_Classes::Matrix &)
returns M2^{-1}vec; default: M2=I
Definition: QPKKTPrecondObject.hxx:100
Header declaring and (inline) implementing the classes CH_Tools::Microseconds and CH_Tools::Clock as ...
virtual CH_Matrix_Classes::Real get_lmin_invM1()
return (an estimate of) the minimum eigenvalue of the preconditioner M1^{-1}; this is used...
Definition: QPKKTPrecondObject.hxx:94
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: QPKKTPrecondObject.hxx:60
virtual int precondM1(CH_Matrix_Classes::Matrix &)
returns M1^{-1}*vec; default: M1=I
Definition: QPKKTPrecondObject.hxx:97
in order to pass a ConicBundle::BundleProxObject, see Quadratic Proximal Terms, to a custzomized QPSo...
Definition: QPSolverObject.hxx:55