ConicBundle
QPIterativeKKTSolver.hxx
Go to the documentation of this file.
1 
2 #ifndef CONICBUNDLE_QPITERATIVEKKTSOLVER_HXX
3 #define CONICBUNDLE_QPITERATIVEKKTSOLVER_HXX
4 
14 #include "QPKKTSolverObject.hxx"
15 #include "QPKKTPrecondObject.hxx"
17 
18 namespace ConicBundle {
19 
23 
50 {
51 protected:
52 
53  //--- data describing the KKT system
54  //QPSolverProxObject* Hp; ///< points to the quadratic cost representation, may NOT be NULL afer init
55  //QPModelBlockObject* model; ///< points to the cutting model information, may be NULL
56  //const CH_Matrix_Classes::Sparsemat* A; ///< points to a possibly present constraint matrix, may be NULL
57  //const Indexmatrix* eq_indices; ///< if not NULL, these rows of A correspond to equations; needed for checking applicability of this Object
58 
61 
65 
70 
74 
76 
78 
79 public:
81  virtual void clear();
82 
85  CBout(cb,cbinc),QPKKTSolverObject(cb,cbinc),solver(insolver),precond(inprecond)
86  {}
87 
89  virtual ~QPIterativeKKTSolver();
90 
91 
93  virtual int QPinit_KKTdata(QPSolverProxObject* Hp,
97  );
98 
100  virtual int QPinit_KKTsystem(const CH_Matrix_Classes::Matrix& KKTdiagx,
101  const CH_Matrix_Classes::Matrix& KKTdiagy,
102  CH_Matrix_Classes::Real Hfactor,
104  QPSolverParameters* params);
105 
109  const CH_Matrix_Classes::Matrix& primalrhs,
110  const CH_Matrix_Classes::Matrix& dualrhs,
112  CH_Matrix_Classes::Real rhscorr,
114  QPSolverParameters* params);
115 
118  {return sysrhs;}
119 
121  virtual int ItSys_mult(const CH_Matrix_Classes::Matrix& in_vec,CH_Matrix_Classes::Matrix& out_vec);
122 
125  {return (precond?precond->precondM1(vec):0);}
126 
129  {return (precond?precond->precondM2(vec):0);}
130 
133  {return nmult;}
134 
137 
140  {return (precond?precond->get_precond_rank():-1);}
141 
144  {return KKTdiagx.rowdim()+KKTdiagy.rowdim()+(model?(model->dim_model()+model->dim_constraints()):0);}
145  };
146 
147 
148 
149 
150 
152 
153 }
154 
155 #endif
156 
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
Header declaring the abstract classes CH_Matrix_Classes::IterativeSystemObject and CH_Matrix_Classes:...
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...
QPIterativeKKTSolver(CH_Matrix_Classes::IterativeSolverObject *insolver, QPKKTPrecondObject *inprecond=0, CBout *cb=0, int cbinc=-1)
default constructor
Definition: QPIterativeKKTSolver.hxx:84
virtual CH_Matrix_Classes::Integer dim_constraints()=0
returns the dimension of the system describing the model set (may contain further constraints) ...
Integer rowdim() const
returns the row dimension
Definition: matrix.hxx:215
double Real
all real numbers in calculations are of this type
Definition: matop.hxx:50
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
virtual CH_Matrix_Classes::Integer QPget_nmult() const
for evaluation purposes with iterative solvers, return the number of matrix vector multiplications si...
Definition: QPIterativeKKTSolver.hxx:132
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::Real Hfactor
factor for H, usually ==1. unless a SOC model is used for the quadratic term
Definition: QPIterativeKKTSolver.hxx:62
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 int ItSys_precondM1(CH_Matrix_Classes::Matrix &vec)
returns M1^{-1}*vec; default: M1=I
Definition: QPIterativeKKTSolver.hxx:124
virtual CH_Matrix_Classes::Integer dim_model()=0
returns the dimension of the model set
virtual CH_Matrix_Classes::Integer QPget_system_size()
for evaluation purposes with iterative solvers, return the size of the system matrix ...
Definition: QPIterativeKKTSolver.hxx:143
conic bundle method solver for sum of convex functions. See the ConicBundle_Manual for a quick introd...
Definition: CBSolver.hxx:22
virtual CH_Matrix_Classes::Integer QPget_precond_rank()
for evaluation purposes with iterative solvers, return the rank of the precondiontioner used (or the ...
Definition: QPIterativeKKTSolver.hxx:139
base class for uniform use of WARNINGS and ERRORS (at some point in time)
Definition: CBout.hxx:30
CH_Matrix_Classes::Matrix in_model
temporary storage for model part of in_vec in ItSys_mult
Definition: QPIterativeKKTSolver.hxx:73
CH_Matrix_Classes::Matrix KKTdiagx
diagonal term to be added to the H-block due to bounds on the qudratic variables
Definition: QPIterativeKKTSolver.hxx:63
virtual ~QPIterativeKKTSolver()
virtual destructor
Header declaring the class ConicBundle::QPKKTSolverObject.
CH_Matrix_Classes::Matrix in_vecy
temporary storage for y part of in_vec in ItSys_mult
Definition: QPIterativeKKTSolver.hxx:72
Header declaring the abstract class ConicBundle::QPKKTPrecondObject.
CH_Matrix_Classes::Matrix in_vecx
temporary storage for x part of in_vec in ItSys_mult
Definition: QPIterativeKKTSolver.hxx:71
Abstract base class for supplying the system for an iterative solver.
Definition: IterativeSystemObject.hxx:37
Matrix class for real values of type Real
Definition: matrix.hxx:74
CH_Matrix_Classes::Integer nmult
holds number of calls to ItSys_mult, reset to 0 in QPinitKKTdata
Definition: QPIterativeKKTSolver.hxx:77
Matrix class of sparse matrices with real values of type Real
Definition: sparsmat.hxx:74
Iterative solver for the full symmetric, in general indefinite primal dual KKT System within QPSolver...
Definition: QPIterativeKKTSolver.hxx:49
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::Matrix sysrhs
the right hand side of the system
Definition: QPIterativeKKTSolver.hxx:66
virtual void clear()
reset data to empty but keep solver and preconditioner
CH_Matrix_Classes::Matrix sol
solution vector of the entire system
Definition: QPIterativeKKTSolver.hxx:67
virtual const CH_Matrix_Classes::Matrix & ItSys_rhs()
returns the right hand side vector (dense)
Definition: QPIterativeKKTSolver.hxx:117
abstract interface for model blocks in the constrained QPSolver
Definition: QPModelBlockObject.hxx:89
CH_Matrix_Classes::Matrix solcstr
temporary solution part of the model constraint variables
Definition: QPIterativeKKTSolver.hxx:69
CH_Matrix_Classes::Matrix solmod
temporary solution part of the model variables
Definition: QPIterativeKKTSolver.hxx:68
Abstract Interface for preconditioners to be used with a QPIterativeKKTSolver and a CH_Matrix_Classes...
Definition: QPKKTPrecondObject.hxx:52
QPSolverProxObject * Hp
points to the quadratic cost representation, may NOT be NULL afer init
Definition: QPKKTSolverObject.hxx:106
CH_Matrix_Classes::Matrix KKTdiagy
diagonal term to be added to the A-block due to bounds on the constraints
Definition: QPIterativeKKTSolver.hxx:64
virtual int precondM2(CH_Matrix_Classes::Matrix &)
returns M2^{-1}vec; default: M2=I
Definition: QPKKTPrecondObject.hxx:100
CH_Matrix_Classes::Integer maxit_bnd
dynamic bound for maximum number of iterations (bnd relative to maximum encountered so far)...
Definition: QPIterativeKKTSolver.hxx:75
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...
virtual int ItSys_precondM2(CH_Matrix_Classes::Matrix &vec)
returns M2^{-1}vec; default: M2=I
Definition: QPIterativeKKTSolver.hxx:128
virtual int precondM1(CH_Matrix_Classes::Matrix &)
returns M1^{-1}*vec; default: M1=I
Definition: QPKKTPrecondObject.hxx:97
abstract class for setting up and solving the primal dual KKT System within QPSolverBasicStructures ...
Definition: QPKKTSolverObject.hxx:101
QPKKTPrecondObject * precond
a preconditioning routine compatible with this system AND the solver, may be NULL (no preconditioning...
Definition: QPIterativeKKTSolver.hxx:60
const CH_Matrix_Classes::Sparsemat * A
points to a possibly present constraint matrix, may be NULL
Definition: QPKKTSolverObject.hxx:108
Abstract interface to iterative methods for solving Ax=b given by an IterativeSystemObject.
Definition: IterativeSystemObject.hxx:61
CH_Matrix_Classes::IterativeSolverObject * solver
the iterative solution method to be used, may not be NULL, deleted on destruction or replacemnt ...
Definition: QPIterativeKKTSolver.hxx:59
virtual int ItSys_mult(const CH_Matrix_Classes::Matrix &in_vec, CH_Matrix_Classes::Matrix &out_vec)
returns out_vec=(system matrix)*in_vec
virtual CH_Matrix_Classes::Real QPget_condition_number()
for evaluation purposes with iterative solvers, return an estimate of the condition number (returns -...
in order to pass a ConicBundle::BundleProxObject, see Quadratic Proximal Terms, to a custzomized QPSo...
Definition: QPSolverObject.hxx:55