ConicBundle
Public Member Functions | Private Types | Private Attributes | List of all members
ConicBundle::BundleIdProx Class Reference

implements the abstract interface ConicBundle::BundleProxObject for $\|y-\hat{y}\|_H^2$ with H=weight*I, giving rise to a pure augmented model without scaling More...

#include <BundleIdProx.hxx>

Inheritance diagram for ConicBundle::BundleIdProx:
ConicBundle::BundleProxObject ConicBundle::VariableMetric ConicBundle::QPSolverProxObject ConicBundle::CBout

Public Member Functions

 BundleIdProx (CH_Matrix_Classes::Integer d=0, CH_Matrix_Classes::Real w=1., CBout *cb=0, int cbinc=-1)
 initialize with dimension and weight
 
virtual void set_weightu (CH_Matrix_Classes::Real in_weightu)
 set the weight of the proximal term
 
virtual CH_Matrix_Classes::Real get_weightu () const
 returns the current weight of the proximal term
 
virtual CH_Matrix_Classes::Real get_term_corr (void) const
 returns the correction factor for the termination criterion, here min(1,1/weight)
 
virtual CH_Matrix_Classes::Real norm_sqr (const CH_Matrix_Classes::Matrix &B) const
 returns $\|B\|^2_H$
 
virtual CH_Matrix_Classes::Real dnorm_sqr (const MinorantPointer &B) const
 returns $\|B\|^2_{H^{-1}}$
 
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::Matrixadd_Hx (const CH_Matrix_Classes::Matrix &x, CH_Matrix_Classes::Matrix &outplusHx, CH_Matrix_Classes::Real alpha=1.) const
 adds $alpha*Hx$ to outplusHx and returns this
 
virtual CH_Matrix_Classes::Matrixapply_Hinv (CH_Matrix_Classes::Matrix &x) const
 returns $H^{-1}x$
 
virtual void get_precond (CH_Matrix_Classes::Matrix &D, 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 &center_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 BundleProxObjectprojected_clone (const CH_Matrix_Classes::Indexmatrix &indices)
 in order to allow for fixed variables, this generates a clone restricted to the given indices
 
virtual int mfile_data (std::ostream &out) const
 output the description of the prox term in mfile-suitable format
 
- Public Member Functions inherited from ConicBundle::BundleProxObject
 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;
 
- Public Member Functions inherited from ConicBundle::VariableMetric
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
 
VariableMetricSelectionget_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
 
virtual bool supports_lowrank_variable_metric () const
 returns true if add_variable_metric() does not ignore the low rank argument vecH
 
virtual bool supports_diagonal_variable_metric () const
 returns true if add_variable_metric() does not ignore the diagonal argument diagH
 
bool employ_variable_metric () const
 returns true if some dynamic scaling is supported and switched on
 
virtual int apply_variable_metric (VariableMetricModel *, VariableMetricModel *, const CH_Matrix_Classes::Matrix &, CH_Matrix_Classes::Integer, const CH_Matrix_Classes::Matrix &, bool, CH_Matrix_Classes::Real &, CH_Matrix_Classes::Real, const CH_Matrix_Classes::Indexmatrix *=0)
 the BundleSolver starts an update of this by dynamic scaling by calling this in every step; negative parameters give no preferences, but the global aggregate (groundset+model) has to be provided and if descent_step==false the scaling may only increase
 
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...
 
virtual int add_variable_metric (CH_Matrix_Classes::Matrix &, CH_Matrix_Classes::Matrix &)
 adds (a suitable modification of) Diag(diagH)+vecH*transpose(vecH) to the scaling matrix H (either matrix may be modified in this) More...
 
virtual int push_aft (const AffineFunctionTransformation *)
 this AffineFunctionTransformation has to be used before applying Hinv in
 
virtual int pop_aft ()
 removes the top most aft (without deleting it!)
 
bool get_use_bounds_scaling () const
 returns use_bounds_scaling
 
void set_use_bounds_scaling (bool bounds_scaling)
 sets use_bounds_scaling
 
virtual bool supports_diagonal_bounds_scaling () const
 if the respective implementation supports a diagonal bounds scaling heuristic, the following routine has to return true; see also diagonal_scaling_heuristic_update()
 
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()
 
virtual int diagonal_bounds_scaling_update (const CH_Matrix_Classes::Matrix &)
 if supported, D_update has to contain nonnegative numbers that are permanently added to the diagonal here. More...
 
bool get_use_local_metric () const
 returns use_local_metric
 
void set_use_local_metric (bool local_metric)
 sets use_local_metric
 
- Public Member Functions inherited from ConicBundle::CBout
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
 
- Public Member Functions inherited from ConicBundle::QPSolverProxObject
virtual ~QPSolverProxObject ()
 virtual destructor
 

Private Types

typedef std::map< MinorantPointer, CH_Matrix_Classes::IntegerMinorantPointerMap
 The MinorantPointerMap serves to locate an identical MinorantPointer in a previous bundle in order to reduce the amount of computations.
 

Private Attributes

CH_Matrix_Classes::Real weightu
 the weight for the proximal term
 
CH_Matrix_Classes::Integer dim
 the dimension of the identity
 
MinorantPointerMap oldmap
 identifies which MinorantPointer was used last time in which position
 
CH_Matrix_Classes::Symmatrix oldQ
 the old quadratic cost matrix; this is where oldmap points into
 
CH_Matrix_Classes::Real oldweightu
 the weight value used for computing the old quadratic cost matrix
 
CH_Matrix_Classes::Indexmatrix old_fixed_ind
 the old fixed indices for which oldmap and oldQ were computed
 
CH_Matrix_Classes::Matrix _A
 for storing the relevant linear parts of the minorants
 
CH_Matrix_Classes::Matrix _b
 for storing the relevant linear parts of the constant minorant
 
CH_Matrix_Classes::Matrix _c
 for storing the offsets of the minorants
 
CH_Matrix_Classes::Real _delta
 for storing the offset of the constant minorant
 

Additional Inherited Members

- Protected Attributes inherited from ConicBundle::BundleProxObject
CH_Matrix_Classes::Real factor
 used to accumulate a compensation factor for function_factor; this factor is not included in H but can be applied externally via get_factor() if required
 
CH_Matrix_Classes::Integer short_QPsteps
 the QP may signal short steps that seem due to the quadratic term by setting this counter via set_short_QPsteps()
 
- Static Protected Attributes inherited from ConicBundle::BundleProxObject
static const CH_Matrix_Classes::Integer xdim_threshold = 100
 constant for possible use if QP coefficients are to be computed in parallel (still purely experimental)
 

Detailed Description

implements the abstract interface ConicBundle::BundleProxObject for $\|y-\hat{y}\|_H^2$ with H=weight*I, giving rise to a pure augmented model without scaling


The documentation for this class was generated from the following file: