ConicBundle

In Lagrangean relaxation an approximate primal solution can be generated by supplying primal information derived from this abstract class for each epsilon subgradient within ConicBundle::FunctionOracle::evaluate(). More...
#include <CBSolver.hxx>
Public Member Functions  
virtual PrimalData *  clone_primal_data () const =0 
Returns a newly generated identical Object.  
virtual int  aggregate_primal_data (const PrimalData &it, double factor=1.)=0 
add factor*it to this (types will need to be compatible to this)  
virtual int  scale_primal_data (double myfactor)=0 
multiply/scale *this with a nonnegative myfactor  
In Lagrangean relaxation an approximate primal solution can be generated by supplying primal information derived from this abstract class for each epsilon subgradient within ConicBundle::FunctionOracle::evaluate().
In many applications, e.g. in Lagrangean relaxation, the convex minimization problem arises as the dual of a convex primal maximization problem. In this case one is typically interested in obtaining a primal approximate solution in addition to the dual solution. Under reasonable conditions this is possible if the primal solutions that give rise to the subgradients are aggregated along with the subgradients maintained by the bundle algorithm. Within the interface the user can achieve this by specifying and returning in the oracle an appropriate derivation of the class ConicBundle::PrimalData. The classical case of a primal ConicBundle::DVector is supplied as an example implementation below.
The primal data has to be supplied within ConicBundle::FunctionOracle::evaluate() and can be retrieved via the methods ConicBundle::CBSolver::get_approximate_primal() and ConicBundle::CBSolver::get_center_primal()