ConicBundle

Interface for extending a Minorant, e.g., in Lagrangian Relaxation of cutting plane approaches. More...
#include <CBSolver.hxx>
Public Member Functions  
virtual int  extend (Minorant &minorant, int n_coords, const int *indices)=0 
called by ConicBundle to update internal Minorant objects, has to return 0 on success More...  
Interface for extending a Minorant, e.g., in Lagrangian Relaxation of cutting plane approaches.
Such an object may be returned in a call to apply_modification of an oracle, whenever additional variables are introduced (e.g. as Lagrange multipliers to new constraints) on the fly by some problem modification. It will be this objects task to fill in the new coordinates in minorants, typically by means of PrimalData supplied and updated along with the minorants that were returned by oracle calls, e.g. as in FunctionOracle::evaluate().
The object will be deleted by ConicBundle after use.
The solver calls this routine whenever new variables have been added on the fly in order to extend old subgradients to the new coordinates. If primal data was supplied for the subgradients then generating_primal holds a pointer to this (possibly aggregated) data, otherwise it is NULL.
In the presence of primal data, the new coordinates correspond to the violation of the new primal constraints. These have to be returned in new_subgradient_values; more precisely, for i=0 to varialb_indices.size()1 the element new_subgradient_values[i] has to hold the subgradient information of constraint variable_indices[i];
If generating_primal is NULL, then the routine can only successfully extend the subgradients if the new coordinates have no influence on the function; then the new subgradient coordinates are all zero and the components of new_subgradient_values have to be initialized to zero.

pure virtual 
called by ConicBundle to update internal Minorant objects, has to return 0 on success
[in,out]  minorant  (Minorant&) it holds a (possibly aggregated) minorant that was generated from minorants returned by oracle calls, e.g. as in FunctionOracle::evaluate() If PrimalData was provided in these minorants, this will be aggregated along and will also be available in this minorant. 
[in]  n_coords  (int) the number of coordinate positions that have to be filled in 
[out]  indices  (const int*) the indices of these coordinate positions (sorted in strictly increasing order) 
Implemented in ConicBundle::PSCAffineMinorantExtender, ConicBundle::NNCBoxSupportMinorantExtender, ConicBundle::SOCSupportMinorantExtender, and ConicBundle::CFunctionMinorantExtender.