ConicBundle
QPSolverObject.hxx
Go to the documentation of this file.
1 
2 #ifndef CONICBUNDLE_QPSOLVEROBJECT_HXX
3 #define CONICBUNDLE_QPSOLVEROBJECT_HXX
4 
13 #include "QPModelDataObject.hxx"
14 
15 namespace ConicBundle {
16 
17 
43 
47 {
48 public:
50  virtual ~QPSolverParametersObject();
51 };
52 
56 {
57 public:
59  virtual ~QPSolverProxObject();
60 
62  virtual bool is_DLR() const =0;
63 
65  virtual int add_H(CH_Matrix_Classes::Symmatrix& big_sym,CH_Matrix_Classes::Integer start_index=0) const=0;
66 
69  CH_Matrix_Classes::Matrix& outplusHx,
70  CH_Matrix_Classes::Real alpha=1.) const =0;
71 
78  virtual CH_Matrix_Classes::Matrix& apply_Hinv(CH_Matrix_Classes::Matrix& x) const =0;
79 
86  virtual void get_precond(CH_Matrix_Classes::Matrix& D,
87  const CH_Matrix_Classes::Matrix*& Vp) const=0;
88 
89 
91  virtual void set_short_QPsteps(CH_Matrix_Classes::Integer shortQPst)=0;
92 
94  virtual CH_Matrix_Classes::Integer get_short_QPsteps()=0;
95 
96 };
97 
98 
105  class QPSolverObject: public virtual QPModelDataPointer
106 {
107 public:
109  virtual void QPclear()=0;
110 
112  QPSolverObject(CBout* cb=0,int cbinc=-1):QPModelDataPointer(cb,cbinc){}
113 
115  virtual ~QPSolverObject();
116 
118  virtual int QPset_parameters(QPSolverParametersObject* params)=0;
119 
124  virtual bool QPsupports_yfixing()=0;
125 
128  virtual bool QPsupports_updates()=0;
129 
168  virtual int QPsolve(const CH_Matrix_Classes::Matrix& center_y,
169  CH_Matrix_Classes::Real lower_bound,
170  CH_Matrix_Classes::Real upper_bound,
171  CH_Matrix_Classes::Real relprec,
172  QPSolverProxObject* Hp,
173  const MinorantPointer& gs_aggr,
175 
194  virtual int QPupdate(const CH_Matrix_Classes::Matrix& center_y,
195  CH_Matrix_Classes::Real lower_bound,
196  CH_Matrix_Classes::Real upper_bound,
197  CH_Matrix_Classes::Real relprec,
198  QPSolverProxObject* Hp,
199  const MinorantPointer& gs_aggr,
201  const MinorantPointer& delta_gs_aggr,
202  const CH_Matrix_Classes::Indexmatrix& delta_index)=0;
203 
208  virtual int QPresolve(CH_Matrix_Classes::Real lower_bound,
209  CH_Matrix_Classes::Real upper_bound,
210  CH_Matrix_Classes::Real relprec)=0;
211 
213  virtual int QPget_solution(CH_Matrix_Classes::Real& augval_lb,
214  CH_Matrix_Classes::Real& augval_ub,
215  CH_Matrix_Classes::Matrix& new_point,
216  CH_Matrix_Classes::Real& gs_aggr_offset,
217  CH_Matrix_Classes::Matrix& gs_aggr_gradient)=0;
218 
220  virtual CH_Matrix_Classes::Real QPget_lower_bound()=0;
221 
223  virtual GroundsetModification* QPstart_modification() =0;
224 
226  virtual int QPapply_modification(const GroundsetModification& mdf)=0;
227 
229  virtual bool QPis_feasible(const CH_Matrix_Classes::Matrix& y,
230  CH_Matrix_Classes::Real relprec=1e-10)=0;
231 
233  virtual int QPensure_feasibility(CH_Matrix_Classes::Matrix& y,
234  bool& ychanged,
235  QPSolverProxObject* Hp,
236  CH_Matrix_Classes::Real relprec=1e-10)=0;
237 
239  virtual bool QPprefer_UQPSolver(QPSolverProxObject*) const=0;
240 
242  virtual bool QPconstrained() const=0;
243 
245  virtual bool QPboxconstrained(const CH_Matrix_Classes::Matrix*& lb,
246  const CH_Matrix_Classes::Matrix*& ub,
247  const CH_Matrix_Classes::Indexmatrix*& lbind,
248  const CH_Matrix_Classes::Indexmatrix*& ubind) const =0;
249 
251  virtual std::ostream& QPprint_statistics(std::ostream& out,int printlevel=0)=0;
252 
253  };
254 
255 
256 
258 
259 }
260 
261 #endif
262 
int Integer
all integer numbers in calculations and indexing are of this type
Definition: matop.hxx:40
abstract interface for a QPSolver
Definition: QPSolverObject.hxx:105
double Real
all real numbers in calculations are of this type
Definition: matop.hxx:50
abstract interface for automatically generating and retrieving the qp blocks with the model data that...
Definition: QPModelDataObject.hxx:298
Matrix class for integral values of type Integer
Definition: indexmat.hxx:195
virtual ~QPSolverParametersObject()
virtual destructor
Matrix class of symmetric matrices with real values of type Real
Definition: symmat.hxx:43
in order to pass parameters to a customized QPSolverObject, derive the parameters from this object; n...
Definition: QPSolverObject.hxx:46
conic bundle method solver for sum of convex functions. See the ConicBundle_Manual for a quick introd...
Definition: CBSolver.hxx:22
base class for uniform use of WARNINGS and ERRORS (at some point in time)
Definition: CBout.hxx:30
Header declaring the class ConicBundle::QPModelDataObject, ConicBundle::QPSumModelDataObject, ConicBundle::QPConeModelDataObject, ConicBundle::QPModelDataPointer.
Matrix class for real values of type Real
Definition: matrix.hxx:74
Collects modifications for the unconstrained Groundset for appending, deleting or reassigning variabl...
Definition: GroundsetModification.hxx:32
QPSolverObject(CBout *cb=0, int cbinc=-1)
default constructor
Definition: QPSolverObject.hxx:112
points to MinorantUseData that may be shared by many and allows computations with Minorants ...
Definition: MinorantPointer.hxx:34
in order to pass a ConicBundle::BundleProxObject, see Quadratic Proximal Terms, to a custzomized QPSo...
Definition: QPSolverObject.hxx:55