|
| BundleDiagonalTrustRegionProx (const CH_Matrix_Classes::Matrix &Din, VariableMetricSelection *vp=0, bool local_scaling=false, bool bounds_scaling=false, CBout *cb=0, int cbinc=-1) |
| initialize to this diagonal matrix
|
|
| BundleDiagonalTrustRegionProx (CH_Matrix_Classes::Integer dim, CH_Matrix_Classes::Real d, VariableMetricSelection *vp=0, bool local_scaling=false, bool bounds_scaling=false, CBout *cb=0, int cbinc=-1) |
| initialize to a diaognal matrix d*identity of dimesion dim
|
|
| BundleDiagonalTrustRegionProx (CH_Matrix_Classes::Integer dim=0, VariableMetricSelection *vp=0, bool local_scaling=false, bool bounds_scaling=false, CBout *cb=0, int cbinc=-1) |
| initialize to a zero diaognal matrix of dimesion dim
|
|
virtual | ~BundleDiagonalTrustRegionProx () |
| destructor
|
|
void | set_weightu (CH_Matrix_Classes::Real in_weightu) |
| set the weight of the proximal term
|
|
CH_Matrix_Classes::Real | get_weightu () const |
| returns the current weight of the proximal term
|
|
CH_Matrix_Classes::Real | get_term_corr () const |
| returns a correction factor for termination precision if the quadratic term is strong
|
|
const CH_Matrix_Classes::Matrix & | get_D () const |
| returns the diagonal D of the diagonal scaling matrix
|
|
void | set_D (CH_Matrix_Classes::Matrix &in_D) |
| set the diagonal (it needs to be >=0 but this is not checked)
|
|
CH_Matrix_Classes::Integer | dim () const |
| returns the dimension of the diagonal
|
|
CH_Matrix_Classes::Real | operator() (CH_Matrix_Classes::Integer i) const |
| return the i-th element of the diagonal matrix D
|
|
CH_Matrix_Classes::Real | operator[] (CH_Matrix_Classes::Integer i) const |
| return the i-th element of the diagonal matrix D
|
|
virtual CH_Matrix_Classes::Real | norm_sqr (const CH_Matrix_Classes::Matrix &B) const |
| returns
|
|
virtual CH_Matrix_Classes::Real | dnorm_sqr (const MinorantPointer &B) const |
| returns
|
|
virtual bool | is_DLR () const |
| return true if H is of the form diagonal matrix plus Gram matrix of a low rank matrix
|
|
virtual int | add_H (CH_Matrix_Classes::Symmatrix &big_sym, CH_Matrix_Classes::Integer start_index=0) const |
| add H to the dense symmetric matrix as a principal submatrix starting at position start_index
|
|
virtual CH_Matrix_Classes::Matrix & | add_Hx (const CH_Matrix_Classes::Matrix &x, CH_Matrix_Classes::Matrix &outplusHx, CH_Matrix_Classes::Real alpha=1.) const |
| adds to outplusHx and returns this
|
|
virtual CH_Matrix_Classes::Matrix & | apply_Hinv (CH_Matrix_Classes::Matrix &x) const |
| returns
|
|
virtual void | get_precond (CH_Matrix_Classes::Matrix &inD, const CH_Matrix_Classes::Matrix *&Vp) const |
| returns a suitable approximation for preconditioning, see BundleProxObject::get_precond
|
|
virtual int | compute_QP_costs (CH_Matrix_Classes::Symmatrix &Q, CH_Matrix_Classes::Matrix &d, CH_Matrix_Classes::Real &offset, const MinorantPointer &constant_minorant, const MinorantBundle &bundle, const CH_Matrix_Classes::Matrix &y, const MinorantPointer &groundset_minorant, CH_Matrix_Classes::Indexmatrix *yfixed) |
| computes the dual QP costs Q, d, and the constant offset to the bundle subproblem, see BundleProxObject::compute_QP_costs
|
|
virtual int | update_QP_costs (CH_Matrix_Classes::Symmatrix &delta_Q, CH_Matrix_Classes::Matrix &delta_d, CH_Matrix_Classes::Real &delta_offset, const MinorantPointer &constant_minorant, const MinorantBundle &bundle, const CH_Matrix_Classes::Matrix ¢er_y, const MinorantPointer &groundset_minorant, const MinorantPointer &delta_groundset_minorant, const CH_Matrix_Classes::Indexmatrix &delta_index, CH_Matrix_Classes::Indexmatrix *yfixed) |
| updates the dual QP costs Q, d, and the constant offset to the bundle subproblem, see BundleProxObject::update_QP_costs
|
|
virtual int | apply_modification (const GroundsetModification &gsmdf) |
| when BundleSolver is called to modify the groundset it also calls this
|
|
virtual BundleProxObject * | projected_clone (const CH_Matrix_Classes::Indexmatrix &indices) |
| in order to allow for fixed variables, this generates a clone restricted to the given indices
|
|
virtual bool | supports_diagonal_bounds_scaling () const |
| this implementation supports a diagonal scaling heuristic for bounds in the groundset, therefore the following routine has to return true.
|
|
virtual int | diagonal_bounds_scaling_update (const CH_Matrix_Classes::Matrix &D_update) |
| if supported, D_update has to contain nonnegative numbers that are permanently added to the diagonal here. It is important to keep track of this change only if afterwards update_QP_costs is called before compute_QP_costs. In this case the only nonzero enries in D_update must be those of delta_index
|
|
virtual bool | supports_lowrank_variable_metric () const |
| returns true if dynamic scaling with low rank matrices is supported
|
|
virtual bool | supports_diagonal_variable_metric () const |
| returns true if dynamic scaling with diagonal matrices is supported
|
|
virtual int | apply_variable_metric (VariableMetricModel *groundset, VariableMetricModel *model, const CH_Matrix_Classes::Matrix &aggr, CH_Matrix_Classes::Integer y_id, const CH_Matrix_Classes::Matrix &y, bool descent_step, CH_Matrix_Classes::Real ¤t_weight, CH_Matrix_Classes::Real model_maxviol, const CH_Matrix_Classes::Indexmatrix *new_indices=0) |
| see VariableMetric
|
|
virtual int | add_variable_metric (CH_Matrix_Classes::Matrix &diagH, CH_Matrix_Classes::Matrix &vecH) |
| see BundleProxObject::add_dynamic_scaling()
|
|
virtual int | push_aft (const AffineFunctionTransformation *aft) |
| see BundleProxObject::push_aft();
|
|
virtual int | pop_aft () |
| see BundleProxObject::pop_aft();
|
|
virtual int | mfile_data (std::ostream &out) const |
| output the description of the scaling in mfile-suitable format
|
|
| BundleProxObject (VariableMetricSelection *vp=0, bool local_scaling=false, bool bounds_scaling=false, CBout *cb=0, int cbincr=-1) |
| default constructor, switching on dynamic scaling only works for classes with corresponding support
|
|
virtual void | set_short_QPsteps (CH_Matrix_Classes::Integer shortQPst) |
| may be used to indicate seemingly conservative step sizes possibly due to the quadratic term
|
|
virtual CH_Matrix_Classes::Integer | get_short_QPsteps () |
| retrieves the number of conservative step sizes possibly due to the quadratic term passed on to this
|
|
int | apply_factor (CH_Matrix_Classes::Real f) |
| allows AFTModel and SumModel to accumulate a compensation factor for tracing the effects of recursive applications of function_factor in update_model (does not affect H but can be retrieved by get_factor() for this purpose)
|
|
CH_Matrix_Classes::Real | get_factor () |
| returns the current accumulated compensation factor by which H would need to be scaled in order to reflect the curvature relative to the current function without function_factor;
|
|
virtual | ~VariableMetric () |
| virtual destructor
|
|
| VariableMetric (VariableMetricSelection *vp=0, bool use_loc_metric=false, bool use_bnds_scaling=false, CBout *cbo=0, int cbinc=-1) |
| default constructor; if vp is not zero, ownership of *vp is passed over to *this and *this will delete vp
|
|
VariableMetricSelection * | get_variable_metric_selection () const |
| returns 0 or an available VariableMetricSelection object, that may be employed for computing a variable metric term in accordance with the value of use_local_metric
|
|
void | set_variable_metric_selection (VariableMetricSelection *vp=0) |
| sets use_variable_metric; the object passed is then owned by this
|
|
virtual bool | supports_dense_variable_metric () const |
| returns true if add_dense_variable_metric() is supported
|
|
bool | employ_variable_metric () const |
| returns true if some dynamic scaling is supported and switched on
|
|
virtual int | add_variable_metric (CH_Matrix_Classes::Symmatrix &) |
| adds a suitable modification of symH (symH may be modified in this) to the scaling matrix H More...
|
|
bool | get_use_bounds_scaling () const |
| returns use_bounds_scaling
|
|
void | set_use_bounds_scaling (bool bounds_scaling) |
| sets use_bounds_scaling
|
|
bool | employ_diagonal_bounds_scaling () const |
| if the respective implementation supports a diagonal bounds scaling heuristic, the following routine has to return true; see also diagonal_bounds_scaling_update()
|
|
bool | get_use_local_metric () const |
| returns use_local_metric
|
|
void | set_use_local_metric (bool local_metric) |
| sets use_local_metric
|
|
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 | ~QPSolverProxObject () |
| virtual destructor
|
|
implements the abstract interface ConicBundle::BundleProxObject for with H=D+weight*I, where D is a diagonal matrix, giving rise to an augmented model with diagonal scaling