ConicBundle

The classes and routines here help to dynamically specify the part of the quadratic term within the proximal term (see Quadratic Proximal Terms) that is responsible for the shape of the level sets of the prox term in the bundle subproblem. In the smooth case this quadratic contribution should be the Hessian of the function. Generally the term should make it easy to move into directions that are still considered promising and where "curvature" also seems to allow for larger steps. More...
Classes  
class  ConicBundle::VariableMetricModel 
declares the interface that a BundelModel needs to provide for contributing to VariableMetric information More...  
class  ConicBundle::VariableMetricBundleData 
abstract interface providing the bundle data that is typically needed in VariableMetricSelection classes. More...  
class  ConicBundle::VariableMetricSelection 
abstract interface, that allows to specify a routine for providing or computing a suitable variable metric for specific models. Per current default, no such information is generated. More...  
class  ConicBundle::VariableMetric 
interface class that allows a VariableMetricModel to contribute information to a VariableMetric object for use in a BundleProxObject More...  
class  ConicBundle::VariableMetricSVDSelection 
general implementation of a VariableMetricSelection routine to form and add variable metric information to a BundleProxObject generically mainly from the aggregate and a collection of minorants given by a MinorantBundle More...  
class  ConicBundle::PSCVariableMetricSelection 
iplementation of a VariableMetricSelection routine for PSCModel for forming and adding variable metric information to a BundleProxObject More...  
The classes and routines here help to dynamically specify the part of the quadratic term within the proximal term (see Quadratic Proximal Terms) that is responsible for the shape of the level sets of the prox term in the bundle subproblem. In the smooth case this quadratic contribution should be the Hessian of the function. Generally the term should make it easy to move into directions that are still considered promising and where "curvature" also seems to allow for larger steps.
The class VariableMetric gives the abstract interface to classes describing the quadratic term. VariableMetric implementations may offer one or several possible ways to add second order information (diagonal, low rank, or dense) for cutting models. To provide this, the latter tpyically use collected subgradient or curvature information depending on the oracle/model in use. An istance of the class VariableMetricSelection may be passed to VariableMetric via the constructor or VariableMetric::set_variable_metric_selection(), that provides a default routine for constructing and adding such information from default data provided by a call of the model to VariableMetricSelection::add_variable_metric() with the data requested in VariableMetricBundleData . VariableMetric specifies several further interface routines that are needed for the BundleSolver and the BundleModel to ensure treatment consistent with the use of AffineFunctionTransformation, SumBundle etc. or options on which models should contribute at what stage to the VariableMetric.
For a model to provide customized "second order" information it must be a VariableMetricModel and the model has to implement the virtual routine VariableMetricModel::add_variable_metric() (all SumBlockModel implementations in ConicBundle have this). This routine may query VariableMetric on which matrix structures are supported (diagonal, low rank, or dense) and the model may use a corresponding VariableMetric::add_variable_metric() routine to add its second order data. Potentional transformations due to a possible cascade of AffineFunctionTransformation applications will be performed automatically when used within the standard framework; for this the VariableMetric class is informed about such transformations recursively by VariableMetric::push_aft() and VariableMetric::pop_aft(). Alternatively the model may be equipped with a separate implemented version of a VariableMetricSelection class that does so. The VariableMetricBundleData passed on should then give access to the respective BundleData of the model via a suitable dynamic cast.
A VariableMetric implementation that supports a dynamic metric allows to switch on or off various scaling components: