ConicBundle
Public Member Functions | List of all members
ConicBundle::PrimalData Class Referenceabstract

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>

Inheritance diagram for ConicBundle::PrimalData:
ConicBundle::PrimalDVector ConicBundle::PrimalMatrix ConicBundle::PSCPrimal ConicBundle::BlockPSCPrimal ConicBundle::DensePSCPrimal ConicBundle::GramSparsePSCPrimal ConicBundle::SparsePSCPrimal

Public Member Functions

virtual PrimalDataclone_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
 

Detailed Description

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


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