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()