|
| QPSolverBasicStructures (QPSolverParameters *params=0, CBout *cb=0) |
| default constructor
|
|
virtual | ~QPSolverBasicStructures () |
| virtual destructor, deletes the parameters
|
|
virtual void | QPIclear () |
| reset all values of the internal basic structures and variables
|
|
virtual int | QPset_solver_parameters (QPSolverParameters *params) |
| pass on new parameters, ownership is tranferred to this, will be deleted here
|
|
virtual int | QPset_startx (const CH_Matrix_Classes::Matrix &startx) |
| set a starting value for the quadratic variables
|
|
virtual int | QPset_starts (const CH_Matrix_Classes::Matrix &starts) |
| set a starting value for the slack variables of the constraints
|
|
virtual int | QPset_starty (const CH_Matrix_Classes::Matrix &starty) |
| set a starting value for the dual variables of the constraints
|
|
virtual int | QPset_startzlb (const CH_Matrix_Classes::Matrix &startzlb) |
| set a starting value for the dual variables of the lower bounds on the quadratic variables
|
|
virtual int | QPset_startzub (const CH_Matrix_Classes::Matrix &startzub) |
| set a starting value for the dual variables of the upper bounds on the quadratic variables
|
|
virtual int | QPset_startmu (CH_Matrix_Classes::Real startmu) |
| set a starting value for the barrier parameter mu
|
|
virtual int | QPIsolve (bool reinitialize=true, CH_Matrix_Classes::Real skip_factor=-1.) |
| solve the problem to the precision specified by the parameters; if the problem is resolved for slightly modified cost data (the feasible set should not change), setting reinitialize=false and a skip_factor for previous "central path" solutions might help to speed up the resolve
|
|
virtual CH_Matrix_Classes::Real | QPget_primalval () const |
| after QPIsolve, retrieve the primal objective value (of the quadratic variables)
|
|
virtual CH_Matrix_Classes::Real | QPget_dualval () const |
| after QPIsolve, retrieve the dual objective value (quadratic and dual variables)
|
|
virtual QPSolverParameters * | QPget_parameters () const |
| return the current parameters for potential modification (do not delete!)
|
|
virtual const CH_Matrix_Classes::Matrix & | QPget_x () const |
| return the current value of the quadratic variables (after a successful QPIsolve the optimal solution)
|
|
virtual int | QPget_x (CH_Matrix_Classes::Matrix &xout, CH_Matrix_Classes::Indexmatrix &x_activity) const |
| return the current value of the quadratic variables (after a successful QPIsolve the optimal solution) together with an activity estimate (1 ... active, 0 ... at bounds); in xout inactive components are set to the respective bound
|
|
virtual const CH_Matrix_Classes::Matrix & | QPget_y () const |
| return the current value of the dual variables to the constraints (after a successful QPIsolve the optimal solution)
|
|
virtual const CH_Matrix_Classes::Matrix & | QPget_zlb () const |
| return the current value of the dual variables to the lower bounds of the quadratic variables (after a successful QPIsolve the optimal solution)
|
|
virtual const CH_Matrix_Classes::Matrix & | QPget_zub () const |
| return the current value of the dual variables to the upper bounds of the quadratic variables (after a successful QPIsolve the optimal solution)
|
|
virtual const CH_Matrix_Classes::Matrix & | QPget_s () const |
| return the current value of the slack variables of the constraints (after a successful QPIsolve the optimal solution)
|
|
virtual int | QPget_s (CH_Matrix_Classes::Matrix &sout, CH_Matrix_Classes::Indexmatrix &s_activity) const |
| return the current value of the slack variables of the constraints (after a successful QPIsolve the optimal solution) together with an activity estimate (1 ... active, 0 ... at bounds); in sout inactive components are set to the respective bound
|
|
virtual const CH_Matrix_Classes::Matrix & | QPget_rhszlb () const |
| return the current value of the dual variables to the lower bounds of the constraints (after a successful QPIsolve the optimal solution)
|
|
virtual const CH_Matrix_Classes::Matrix & | QPget_rhszub () const |
| return the current value of the dual variables to the upper bounds of the constraints (after a successful QPIsolve the optimal solution)
|
|
virtual const SOCIPProxBlock & | QPget_socqp () const |
| return the second order cone data which models the quadratic part in case the paramaeters hold use_socqp==true
|
|
virtual SOCIPProxBlock & | QPset_socqp () |
| give access to the second order cone data which models the quadratic part in case the paramaeters hold use_socqp==true
|
|
virtual CH_Matrix_Classes::Real | QPget_mu () const |
| return the current value of the barrier parameter mu
|
|
virtual CH_Matrix_Classes::Integer | QPget_large_predictor_cnt () const |
| return the number of iterations where predictor promises large progress but the barrier parameter is reduced only by a little
|
|
virtual CH_Matrix_Classes::Integer | QPget_iter () const |
| return the number of iterations until termination
|
|
virtual | ~QPSolverBasicInterface () |
| virtual destructor
|
|
virtual CH_Matrix_Classes::Integer | QPget_xdim () const =0 |
| dimension of the quadratic variable x
|
|
virtual CH_Matrix_Classes::Integer | QPget_ydim () const =0 |
| dimension of the dual variables to the linear constraints (number of rows of A)
|
|
virtual CH_Matrix_Classes::Matrix & | QPadd_Qx (const CH_Matrix_Classes::Matrix &vecin, CH_Matrix_Classes::Matrix &vecout) const =0 |
| vecout += quadratic term * vecin
|
|
virtual CH_Matrix_Classes::Matrix & | QPadd_Ax (const CH_Matrix_Classes::Matrix &xin, CH_Matrix_Classes::Matrix &outplusAx) const =0 |
| outplusAx += A * xin
|
|
virtual CH_Matrix_Classes::Matrix & | QPadd_Aty (const CH_Matrix_Classes::Matrix &yin, CH_Matrix_Classes::Matrix &outplusAty) const =0 |
| outplusAty += transpose(A) * yin
|
|
virtual const CH_Matrix_Classes::Matrix & | QPget_c () const =0 |
| returns the linear cost vector for the quadratic variable x
|
|
virtual CH_Matrix_Classes::Real | QPget_gamma () const =0 |
| returns a potential constant offset of the cost function
|
|
virtual const CH_Matrix_Classes::Matrix & | QPget_rhslb () const =0 |
| returns rhslb of rhslb <= Ax
|
|
virtual const CH_Matrix_Classes::Matrix & | QPget_rhsub () const =0 |
| returns rhsub of Ax <= rhsub
|
|
virtual const CH_Matrix_Classes::Indexmatrix & | QPget_rhslbind () const =0 |
| returns the indices where rhslb is not minus infinity (sorted increasingly)
|
|
virtual const CH_Matrix_Classes::Indexmatrix & | QPget_rhsubind () const =0 |
| returns the indices where rhsub is not plus infinity (sorted increasingly)
|
|
virtual const CH_Matrix_Classes::Matrix & | QPget_lb () const =0 |
| returns lb of lb <= x
|
|
virtual const CH_Matrix_Classes::Matrix & | QPget_ub () const =0 |
| returns ub of x <= ub
|
|
virtual const CH_Matrix_Classes::Indexmatrix & | QPget_lbind () const =0 |
| returns the indices where lb is not minus infinity (sorted increasingly)
|
|
virtual const CH_Matrix_Classes::Indexmatrix & | QPget_ubind () const =0 |
| returns the indices where ub is not plus infinity (sorted increasingly)
|
|
virtual void | set_out (std::ostream *out=0, int print_level=1) |
| Specifies the output level (out==NULL: no output at all, out!=NULL and level=0: errors and warnings, level>0 increasingly detailed information) More...
|
|
virtual void | set_cbout (const CBout *cb, int incr=-1) |
| Specifies the output level relative to the given CBout class. More...
|
|
void | clear_cbout () |
| reset to default settings (out=0,print_level=1)
|
|
| CBout (const CBout *cb=0, int incr=-1) |
| calls set_cbout
|
|
| CBout (std::ostream *outp, int pl=1) |
| initialize correspondingly
|
|
| CBout (const CBout &cb, int incr=0) |
| copy constructor
|
|
virtual bool | cb_out (int pl=-1) const |
| Returns true if out!=0 and (pl<print_level), pl<0 should be used for WARNINGS and ERRORS only, pl==0 for usual output.
|
|
std::ostream & | get_out () const |
| If cb_out() returned true, this returns the output stream, but it will abort if called with out==0.
|
|
std::ostream * | get_out_ptr () const |
| returns the pointer to the output stream
|
|
int | get_print_level () const |
| returns the print_level
|
|
virtual int | mfile_data (std::ostream &out) const |
| writes problem data to the given outstream
|
|
| QPModelPointer (CBout *cb=0, int cbinc=-1) |
| default constructor
|
|
virtual | ~QPModelPointer () |
| virtual destructor
|
|
void | clear_model_data_ptr () |
| set the pointer to NULL
|
|
int | set_model_data (QPModelDataObject *inbp) |
| store the pointer to the object if it matches the required type for the QP solver, otherwise return a nonzero value as error; this is used in the models to return the local qp model data
|
|
QPSumModelDataObject * | generate_summodel_data (BundleModel *bmp=0) |
| returns a new QPSumModelDataObject, that has to be deleted by the caller. The argument is optional and allows to potentially generate different blocks for different derived BundleModel objects; this is used in SumModel to collect the models of the various oracles that are summed over
|
|
QPConeModelDataObject * | generate_conemodel_data (BundleModel *bmp=0) |
| returns a new QPConeModelDataObject suitable for the default conic BundleModel implementations; it has to be deleted by the caller. The argument is optional and allows to potentially generate specialized objects for special BundleModel objects
|
|
QPModelDataObject * | get_model_data_ptr () const |
| returns the pointer value
|
|
| QPModelDataPointer (CBout *cb=0, int cbinc=-1) |
| default constructor
|
|
virtual | ~QPModelDataPointer () |
| virtual destructor
|
|
virtual void | QPclear ()=0 |
| clear
|
|
| QPSolverObject (CBout *cb=0, int cbinc=-1) |
| default constructor
|
|
virtual | ~QPSolverObject () |
| virtual destructor
|
|
virtual int | QPset_parameters (QPSolverParametersObject *params)=0 |
| the parameter object passed here will be owned and deleted by *this
|
|
virtual bool | QPsupports_yfixing ()=0 |
| in the case of box constraints it may be worth to fix some variables to their upper or lower bounds; return true if the QPsolver supports this in QPSolve More...
|
|
virtual bool | QPsupports_updates ()=0 |
| return true iff the code supports QPupdate(), i.e., it supports external updates of the groundset aggregate in order to model constraints not included explicitly in the QP's model
|
|
virtual int | QPsolve (const CH_Matrix_Classes::Matrix ¢er_y, CH_Matrix_Classes::Real lower_bound, CH_Matrix_Classes::Real upper_bound, CH_Matrix_Classes::Real relprec, QPSolverProxObject *Hp, const MinorantPointer &gs_aggr, CH_Matrix_Classes::Indexmatrix *yfixed)=0 |
| solve for the data described by Hp and QPModelDataPointer for the center of stability center_y terminating when the relative precision relprec of the objective value with respect to lower_bound and upper_bound is reached More...
|
|
virtual int | QPupdate (const CH_Matrix_Classes::Matrix ¢er_y, CH_Matrix_Classes::Real lower_bound, CH_Matrix_Classes::Real upper_bound, CH_Matrix_Classes::Real relprec, QPSolverProxObject *Hp, const MinorantPointer &gs_aggr, CH_Matrix_Classes::Indexmatrix *yfixed, const MinorantPointer &delta_gs_aggr, const CH_Matrix_Classes::Indexmatrix &delta_index)=0 |
| resolve after a call to QPsolve for a modified groundset minorant, whose changes are described in delta_gs_subg for the indices in delta_index More...
|
|
virtual int | QPresolve (CH_Matrix_Classes::Real lower_bound, CH_Matrix_Classes::Real upper_bound, CH_Matrix_Classes::Real relprec)=0 |
| if in the model description some trace/penalty values were adapted, this may require resolving without any other change in information More...
|
|
virtual int | QPget_solution (CH_Matrix_Classes::Real &augval_lb, CH_Matrix_Classes::Real &augval_ub, CH_Matrix_Classes::Matrix &new_point, CH_Matrix_Classes::Real &gs_aggr_offset, CH_Matrix_Classes::Matrix &gs_aggr_gradient)=0 |
| returns 0 and the solution to the last solving call if the data is available, otherwise it returns 1
|
|
virtual CH_Matrix_Classes::Real | QPget_lower_bound ()=0 |
| returns the last lower bound used for termination
|
|
virtual GroundsetModification * | QPstart_modification ()=0 |
| return a new modification object on the heap that is initialized for modification of *this, return 0 if no modifications applicable
|
|
virtual int | QPapply_modification (const GroundsetModification &mdf)=0 |
| apply the modification, return 0 if successful and 1 if unsuccessful
|
|
virtual bool | QPis_feasible (const CH_Matrix_Classes::Matrix &y, CH_Matrix_Classes::Real relprec=1e-10)=0 |
| check whether the point y is feasible with respect to the constraints describing the groundset of the QP for y
|
|
virtual int | QPensure_feasibility (CH_Matrix_Classes::Matrix &y, bool &ychanged, QPSolverProxObject *Hp, CH_Matrix_Classes::Real relprec=1e-10)=0 |
| makes y feasible if it is not feasible for the groundset of the QP, see Groundset::ensure_feasibility()
|
|
virtual bool | QPprefer_UQPSolver (QPSolverProxObject *) const =0 |
| returns true if, for the current constraints and the requested ProxObject, it might be better to use the internal unconstrained QP solver (which can deal with box constraints by a work-around)
|
|
virtual bool | QPconstrained () const =0 |
| returns false if the feasible set is the entire space (unconstrained optimization), true otherwise.
|
|
virtual bool | QPboxconstrained (const CH_Matrix_Classes::Matrix *&lb, const CH_Matrix_Classes::Matrix *&ub, const CH_Matrix_Classes::Indexmatrix *&lbind, const CH_Matrix_Classes::Indexmatrix *&ubind) const =0 |
| returns true if and only if there exist box constraints and these are the only constraints; if there are box constraints (and maybe others), the pointers return the reference to them (full dimensional dense vectors lb und ub; lbind and ubind are index vectors giving only the indices i of entries lb(i)>-infty and ub(i)<infty respectively sorted by increasing index values); if the corresponding objects do not exist, the value returned is null
|
|
virtual std::ostream & | QPprint_statistics (std::ostream &out, int printlevel=0)=0 |
| allows to output some implementation dependent statistics on run time behaviour
|
|