ConicBundle
Public Member Functions | Private Attributes | List of all members
ConicBundle::BoxOracle Class Reference

Oracle interface providing the lower and upper bounds for the internally implemented support function over this box for an affine function given by an AffineFucntionTransfomation or, equivalently, Lagrangian relaxation of linear programs over box domains. No modifications of the box groundset are supported so far. More...

#include <BoxOracle.hxx>

Inheritance diagram for ConicBundle::BoxOracle:
ConicBundle::ModifiableOracleObject ConicBundle::FunctionObject

Public Member Functions

 BoxOracle (const CH_Matrix_Classes::Matrix &in_lb, const CH_Matrix_Classes::Matrix &in_ub)
 constructor initializing lower and upper bounds (must have the same dimesnion, not checked)
 
virtual ~BoxOracle ()
 destructor
 
const CH_Matrix_Classes::Matrixget_lower_bounds ()
 returns the lower bounds vector of the box
 
const CH_Matrix_Classes::Matrixget_upper_bounds ()
 returns the upper bounds vector of the box
 
virtual int apply_modification (const OracleModification &, const CH_Matrix_Classes::Matrix *, const CH_Matrix_Classes::Matrix *, bool &, bool &, bool &, MinorantExtender *&)
 This routine need not be implemented unless variables (constraints in Lagrangean relaxation) are added or deleted on the fly. More...
 
virtual bool check_correctness () const
 switch on/off some correctnes checks on the oracle
 
- Public Member Functions inherited from ConicBundle::ModifiableOracleObject
virtual ~ModifiableOracleObject ()
 virtual destructor
 

Private Attributes

CH_Matrix_Classes::Matrix lb
 column vector of lower bounds, same dimension as ub
 
CH_Matrix_Classes::Matrix ub
 column vector of upper bounds, same dimension as lb
 

Detailed Description

Oracle interface providing the lower and upper bounds for the internally implemented support function over this box for an affine function given by an AffineFucntionTransfomation or, equivalently, Lagrangian relaxation of linear programs over box domains. No modifications of the box groundset are supported so far.

The support function is fully implemented in BoxModel.

Member Function Documentation

◆ apply_modification()

virtual int ConicBundle::BoxOracle::apply_modification ( const OracleModification ,
const CH_Matrix_Classes::Matrix ,
const CH_Matrix_Classes::Matrix ,
bool &  ,
bool &  ,
bool &  ,
MinorantExtender *&   
)
inlinevirtual

This routine need not be implemented unless variables (constraints in Lagrangean relaxation) are added or deleted on the fly.

The routine is only called by the solver if the variables indeed get modified by the solver or a modification is passed on by the user via the solver interface. oracle_modification is then used to either transfer user supplied instructions to the oracle on how to modify itself or to inform the oracle about changes the solver was asked to perform on the variables. If available, the solver will also show the effect of these changes on the center point in new_center and old_center; if these are not available then they hold NULL. A user supplied oracle_modification will be checked for consistency with the actual changes in the variables and mismatches will cause failures.

The remaining variables are output variables by which the oracle tells the solver which information has a chance to be preserved in view of these changes. If e.g. the deletion of some nonzero variables invalidates the function value in the new center, the oracle has to set discard_objective_in_center=true. If the entire model cannot be preserved (this includes the aggregates and the function values), the oracle needs to set discard_model=true; If only aggregate minorants cannot be preserved, the oracle needs to set discard_aggregates=true; in the current implementation of BoxModel this removes all minorants generated by generate_minorant() because each of them is typically generated by more than one Ritz vector. Whenever new variables were added, the model can only be preserved if the remaining minorants (maybe without aggregates) can be extended for these new variables. In this case the oracle has to supply the appropriate MinorantExtender via minorant_extender and only those minorants will be kept for which this operation succeeds.

Return value 0 indicates that these actions allow to continue without errors, other return values result in an overall error on these changes.

Reimplemented from ConicBundle::ModifiableOracleObject.


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