Dip 0.95.0
Loading...
Searching...
No Matches
DecompAlgo Class Reference

Base class for DECOMP algorithms. More...

#include <DecompAlgo.h>

+ Inheritance diagram for DecompAlgo:
+ Collaboration diagram for DecompAlgo:

Public Member Functions

bool isGapTight ()
 
double getInfinity ()
 Return the value of infinity.
 
virtual bool isDone ()
 
std::vector< double * > getDualRays (int maxNumRays)
 
std::vector< double * > getDualRaysCpx (int maxNumRays)
 
std::vector< double * > getDualRaysOsi (int maxNumRays)
 
virtual int generateVars (DecompVarList &newVars, double &mostNegReducedCost)
 
virtual int generateCuts (double *xhat, DecompCutList &newCuts)
 
virtual void addVarsToPool (DecompVarList &newVars)
 
virtual void addVarsFromPool ()
 
virtual void addCutsToPool (const double *x, DecompCutList &newCuts, int &m_cutsThisCall)
 
virtual int addCutsFromPool ()
 
bool isIPFeasible (const double *x, const bool isXSparse=false, const double feasVarTol=1.0e-6, const double feasConTol=1.0e-5, const double intTol=1.0e-5)
 
bool isLPFeasible (const double *x, const bool isXSparse=false, const double feasVarTol=1.0e-6, const double feasConTol=1.0e-5)
 
DecompStatus solveRelaxed (const double *redCostX, const double *origCost, const double alpha, const int n_origCols, const bool isNested, DecompSubModel &subModel, DecompSolverResult *solveResult, std::list< DecompVar * > &vars, double timeLimit)
 
void appendVars (DecompVar *var)
 
void appendVars (DecompVarList &varList)
 
virtual void setMasterBounds (const double *lbs, const double *ubs)
 
virtual void setSubProbBounds (const double *lbs, const double *ubs)
 
virtual bool chooseBranchSet (std::vector< std::pair< int, double > > &downBranchLb, std::vector< std::pair< int, double > > &downBranchUb, std::vector< std::pair< int, double > > &upBranchLb, std::vector< std::pair< int, double > > &upBranchUb)
 
Pure virtual functions.
virtual void createMasterProblem (DecompVarList &initVars)
 Create the master problem (all algorithms must define this function).
 
void loadSIFromModel (OsiSolverInterface *si, bool doInt=false)
 
virtual void recomposeSolution (const double *solution, double *rsolution)
 Compose solution in x-space from current space.
 
Virtual functions.
virtual DecompStatus processNode (const AlpsDecompTreeNode *node, const double globalLB, const double globalUB)
 The main DECOMP process loop for a node.
 
const AlpsDecompTreeNodegetCurrentNode () const
 Provide the current node the algorithm is solving.
 
virtual void postProcessNode (DecompStatus decompStatus)
 Do some information sending after the current node has been processed.
 
virtual void postProcessBranch (DecompStatus decompStatus)
 Do some information sending after the current node has been branched.
 
virtual int generateInitVars (DecompVarList &initVars)
 Generate initial variables for master problem (PC/DC/RC).
 
virtual DecompStatus solutionUpdate (const DecompPhase phase, const bool resolve=true, const int maxInnerIter=COIN_INT_MAX, const int maxOuterIter=COIN_INT_MAX)
 Update of the solution vectors (primal and/or dual).
 
virtual void phaseUpdate (DecompPhase &phase, DecompStatus &status)
 Update of the phase for process loop.
 
virtual void phaseInit (DecompPhase &phase)
 Run the initial phase for processing node.
 
virtual void phaseDone ()
 Run the done phase for processing node.
 
virtual bool updateObjBound (const double mostNegRC=-DecompBigNum)
 Calculate the current LB and update best/history.
 
virtual void solveMasterAsMIP ()
 
virtual int adjustColumnsEffCnt ()
 
virtual int compressColumns ()
 
Helper functions.
void initSetup ()
 Initial setup of algorithm structures and solver interfaces.
 
void getModelsFromApp ()
 
void createOsiSubProblem (DecompSubModel &subModel)
 
OsiSolverInterfacegetOsiLpSolverInterface ()
 
OsiSolverInterfacegetOsiIpSolverInterface ()
 
void coreMatrixAppendColBounds ()
 Calculate gap: |(ub-lb)|/|lb|.
 
void checkMasterDualObj ()
 
bool checkPointFeasible (const DecompConstraintSet *modelCore, const double *x)
 
bool isDualRayInfProof (const double *dualRay, const CoinPackedMatrix *rowMatrix, const double *colLB, const double *colUB, const double *rowRhs, std::ostream *os)
 
bool isDualRayInfProofCpx (const double *dualRay, const CoinPackedMatrix *rowMatrix, const double *colLB, const double *colUB, const double *rowRhs, std::ostream *os)
 
void printBasisInfo (OsiSolverInterface *si, std::ostream *os)
 
void printCurrentProblemDual (OsiSolverInterface *si, const std::string baseName, const int nodeIndex, const int cutPass, const int pricePass)
 
void printCurrentProblem (const OsiSolverInterface *si, const std::string baseName, const int nodeIndex, const int cutPass, const int pricePass, const int blockId=-1, const bool printMps=true, const bool printLp=true)
 
void printCurrentProblem (const OsiSolverInterface *si, const std::string fileName, const bool printMps=true, const bool printLp=true)
 
void printVars (std::ostream *os)
 
void printCuts (std::ostream *os)
 
void checkDuals ()
 
void checkReducedCost (const double *u, const double *u_adjusted)
 
void createFullMps (const std::string fileName)
 
virtual DecompSolverResultsolveDirect (const DecompSolution *startSol=NULL)
 
void masterMatrixAddMOCols (CoinPackedMatrix *masterM, double *colLB, double *colUB, double *objCoeff, std::vector< std::string > &colNames)
 
void masterMatrixAddArtCol (std::vector< CoinBigIndex > &colBeg, std::vector< int > &colInd, std::vector< double > &colVal, char LorG, int rowIndex, int colIndex, DecompColType colType, double &colLB, double &colUB, double &objCoeff)
 
virtual void masterMatrixAddArtCols (CoinPackedMatrix *masterM, double *colLB, double *colUB, double *objCoeff, std::vector< std::string > &colNames, int startRow, int endRow, DecompRowType rowType)
 
void masterPhaseItoII ()
 
void masterPhaseIItoI ()
 
bool isMasterColMasterOnly (const int index) const
 
bool isMasterColStructural (const int index) const
 
bool isMasterColArtificial (const int index) const
 
void breakOutPartial (const double *xHat, DecompVarList &newVars, const double intTol=1.0e-5)
 
void generateVarsAdjustDuals (const double *uOld, double *uNew)
 Create an adjusted dual vector with the duals from the convexity constraints removed.
 
void generateVarsCalcRedCost (const double *u, double *redCostX)
 Calculated reduced cost vector (over vars in compact space) for a given dual vector.
 
Set/get methods.
const double * getColLBNode () const
 
const double * getColUBNode () const
 
DecompStatsgetStats ()
 
const double * getOrigObjective () const
 
const DecompSubModelgetModelCore () const
 
const int getAlgo () const
 
const DecompParamgetParam () const
 
DecompParamgetMutableParam ()
 
OsiSolverInterfacegetMasterOSI ()
 
DecompSubModelgetModelRelax (const int blockId)
 
const double * getXhat () const
 Get a ptr to the current solution (in x-space).
 
void setCutoffUB (const double thisBound)
 
const DecompSolutiongetXhatIPBest () const
 
const std::vector< DecompSolution * > & getXhatIPFeas () const
 
const double getCutoffUB () const
 
DecompStatsgetDecompStats ()
 
const DecompParamgetDecompParam () const
 
const DecompAppgetDecompApp () const
 
DecompAppgetDecompAppMutable ()
 
const int getNodeIndex () const
 
const int getCutCallsTotal () const
 
const int getPriceCallsTotal () const
 
const double * getMasterPrimalSolution () const
 Get current primal solution for master problem.
 
const double * getMasterColReducedCost () const
 
virtual const double * getMasterDualSolution () const
 Get current dual solution for master problem.
 
virtual void adjustMasterDualSolution ()
 Adjust the current dual solution for master problem.
 
double getMasterObjValue () const
 
const int getStopCriteria () const
 
const double getGlobalGap () const
 Get the current global (integrality) gap.
 
const double getNodeIPGap () const
 Get the current node (integrality) gap.
 
const double getNodeLPGap () const
 Get the current node (continuous) gap.
 
const double getObjBestBoundLB () const
 Get the current best LB.
 
const void setStrongBranchIter (bool isStrongBranch=true)
 Set the object to be in strong branching mode.
 
const double getObjBestBoundUB () const
 Get the current best UB.
 
const double getMasterRowType (int row) const
 Get a specific row type.
 
virtual void setObjBound (const double thisBound, const double thisBoundUB)
 Set the current continuous bounds and update best/history.
 
virtual void setObjBoundIP (const double thisBound)
 Set the current integer bound and update best/history.
 
bool isTailoffLB (const int changeLen=10, const double changePerLimit=0.1)
 
int getNumRowType (DecompRowType rowType)
 
void checkBlocksColumns ()
 
Constructors and destructor.
 DecompAlgo (const DecompAlgoType algo, DecompApp *app, UtilParameters &utilParam, bool doSetup=true)
 Default constructors.
 
virtual ~DecompAlgo ()
 Destructor.
 

Protected Attributes

Data.
std::string m_classTag
 Store the name of the class (for logging/debugging) - "who am I?".
 
DecompParam m_param
 Parameters.
 
UtilParametersm_utilParam
 
DecompAlgoType m_algo
 Type of algorithm for this instance.
 
DecompStatus m_status
 The current algorithm status.
 
double m_infinity
 The value of "infinity".
 
DecompPhase m_phase
 The current algorithm phase.
 
DecompPhase m_phaseLast
 
DecompPhase m_phaseForce
 
DecompAppm_app
 Pointer to current active DECOMP application.
 
DecompStats m_stats
 Storage of statistics for run and node.
 
DecompNodeStats m_nodeStats
 
DecompMemPool m_memPool
 Memory pool used to reduce the number of allocations needed.
 
std::ostream * m_osLog
 Stream for log file (default to stdout).
 
DecompAlgoCGLm_cgl
 
std::vector< double > m_origColLB
 Pointer (and label) to current active model core/relax.
 
std::vector< double > m_origColUB
 
OsiSolverInterfacem_masterSI
 Solver interface(s) for subproblems (P').
 
OsiClpSolverInterfacem_cutgenSI
 Solver interface(s) for entire problem (Q'').
 
int m_cutgenObjCutInd
 
OsiSolverInterfacem_auxSI
 
const double * m_objective
 
DecompSubModel m_modelCore
 
std::map< int, DecompSubModelm_modelRelax
 
std::map< int, std::vector< DecompSubModel > > m_modelRelaxNest
 
DecompVarList m_vars
 Containers for variables (current and pool).
 
DecompVarPool m_varpool
 
DecompCutList m_cuts
 Containers for cuts (current and pool).
 
DecompCutPool m_cutpool
 
double * m_xhat
 Storage for current solution (in x-space).
 
double m_cutoffUB
 User-defined cutoff (global UB) for B&B fathoming and LR.
 
std::vector< DecompSolution * > m_xhatIPFeas
 
DecompSolutionm_xhatIPBest
 
std::vector< double > m_primSolution
 
std::vector< double > m_dualSolution
 
std::vector< double > m_reducedCost
 
int m_numCols
 
bool m_isColGenExact
 
int m_numConvexCon
 
int m_rrLastBlock
 
int m_rrIterSinceAll
 
int m_nArtCols
 
int m_nRowsOrig
 
int m_nRowsBranch
 
int m_nRowsConvex
 
int m_nRowsCuts
 
std::vector< DecompRowTypem_masterRowType
 
std::vector< DecompColTypem_masterColType
 
std::vector< int > m_masterArtCols
 
double * m_colLBNode
 
double * m_colUBNode
 
int m_compressColsLastPrice
 
int m_compressColsLastNumCols
 
double m_relGap
 Current node gap (bestUB-bestLB)/bestLB.
 
DecompAlgoStop m_stopCriteria
 
int m_colIndexUnique
 
double m_masterObjLast
 
bool m_objNoChange
 
double m_stabEpsilon
 
bool m_useInitLpDuals
 
std::map< int, int > m_artColIndToRowInd
 
double m_globalLB
 
double m_globalUB
 
std::vector< double > m_phaseIObj
 
int m_function
 
bool m_firstPhase2Call
 
bool m_isStrongBranch
 
const AlpsDecompTreeNodem_curNode
 
std::vector< int > m_masterOnlyCols
 
std::map< int, int > m_masterOnlyColsMap
 Map from original index to master index for master-only vars.
 
DecompBranchingImplementation m_branchingImplementation
 

Detailed Description

Base class for DECOMP algorithms.

Definition at line 62 of file DecompAlgo.h.

Constructor & Destructor Documentation

◆ DecompAlgo()

DecompAlgo::DecompAlgo ( const DecompAlgoType algo,
DecompApp * app,
UtilParameters & utilParam,
bool doSetup = true )
inline

Default constructors.

Definition at line 979 of file DecompAlgo.h.

◆ ~DecompAlgo()

virtual DecompAlgo::~DecompAlgo ( )
inlinevirtual

Destructor.

Definition at line 1063 of file DecompAlgo.h.

Member Function Documentation

◆ createMasterProblem()

virtual void DecompAlgo::createMasterProblem ( DecompVarList & initVars)
virtual

Create the master problem (all algorithms must define this function).

◆ loadSIFromModel()

void DecompAlgo::loadSIFromModel ( OsiSolverInterface * si,
bool doInt = false )

◆ recomposeSolution()

virtual void DecompAlgo::recomposeSolution ( const double * solution,
double * rsolution )
virtual

Compose solution in x-space from current space.

  • PC: this recomposes x from lambda
  • C : this just copies over LP solution

◆ processNode()

virtual DecompStatus DecompAlgo::processNode ( const AlpsDecompTreeNode * node,
const double globalLB,
const double globalUB )
virtual

The main DECOMP process loop for a node.

◆ getCurrentNode()

const AlpsDecompTreeNode * DecompAlgo::getCurrentNode ( ) const
inline

Provide the current node the algorithm is solving.

Definition at line 316 of file DecompAlgo.h.

◆ postProcessNode()

virtual void DecompAlgo::postProcessNode ( DecompStatus decompStatus)
inlinevirtual

Do some information sending after the current node has been processed.

Does nothing by default.

Reimplemented in DippyAlgoC, DippyAlgoPC, and DippyAlgoRC.

Definition at line 325 of file DecompAlgo.h.

◆ postProcessBranch()

virtual void DecompAlgo::postProcessBranch ( DecompStatus decompStatus)
inlinevirtual

Do some information sending after the current node has been branched.

Does nothing by default.

Reimplemented in DippyAlgoC, DippyAlgoPC, and DippyAlgoRC.

Definition at line 332 of file DecompAlgo.h.

◆ generateInitVars()

virtual int DecompAlgo::generateInitVars ( DecompVarList & initVars)
virtual

Generate initial variables for master problem (PC/DC/RC).

  • in CPM, this does nothing

◆ solutionUpdate()

virtual DecompStatus DecompAlgo::solutionUpdate ( const DecompPhase phase,
const bool resolve = true,
const int maxInnerIter = COIN_INT_MAX,
const int maxOuterIter = COIN_INT_MAX )
virtual

Update of the solution vectors (primal and/or dual).

◆ phaseUpdate()

virtual void DecompAlgo::phaseUpdate ( DecompPhase & phase,
DecompStatus & status )
virtual

Update of the phase for process loop.

◆ phaseInit()

virtual void DecompAlgo::phaseInit ( DecompPhase & phase)
inlinevirtual

Run the initial phase for processing node.

Definition at line 359 of file DecompAlgo.h.

◆ phaseDone()

virtual void DecompAlgo::phaseDone ( )
inlinevirtual

Run the done phase for processing node.

Definition at line 368 of file DecompAlgo.h.

◆ updateObjBound()

virtual bool DecompAlgo::updateObjBound ( const double mostNegRC = -DecompBigNum)
virtual

Calculate the current LB and update best/history.

◆ solveMasterAsMIP()

virtual void DecompAlgo::solveMasterAsMIP ( )
inlinevirtual

Definition at line 376 of file DecompAlgo.h.

◆ adjustColumnsEffCnt()

virtual int DecompAlgo::adjustColumnsEffCnt ( )
inlinevirtual

Definition at line 378 of file DecompAlgo.h.

◆ compressColumns()

virtual int DecompAlgo::compressColumns ( )
inlinevirtual

Definition at line 381 of file DecompAlgo.h.

◆ isGapTight()

bool DecompAlgo::isGapTight ( )
inline

Definition at line 387 of file DecompAlgo.h.

◆ getInfinity()

double DecompAlgo::getInfinity ( )
inline

Return the value of infinity.

Definition at line 408 of file DecompAlgo.h.

◆ isDone()

virtual bool DecompAlgo::isDone ( )
inlinevirtual

Reimplemented in DecompAlgoRC.

Definition at line 416 of file DecompAlgo.h.

◆ getDualRays()

std::vector< double * > DecompAlgo::getDualRays ( int maxNumRays)

◆ getDualRaysCpx()

std::vector< double * > DecompAlgo::getDualRaysCpx ( int maxNumRays)

◆ getDualRaysOsi()

std::vector< double * > DecompAlgo::getDualRaysOsi ( int maxNumRays)

◆ generateVars()

virtual int DecompAlgo::generateVars ( DecompVarList & newVars,
double & mostNegReducedCost )
virtual

◆ generateCuts()

virtual int DecompAlgo::generateCuts ( double * xhat,
DecompCutList & newCuts )
virtual

◆ addVarsToPool()

virtual void DecompAlgo::addVarsToPool ( DecompVarList & newVars)
virtual

◆ addVarsFromPool()

virtual void DecompAlgo::addVarsFromPool ( )
virtual

◆ addCutsToPool()

virtual void DecompAlgo::addCutsToPool ( const double * x,
DecompCutList & newCuts,
int & m_cutsThisCall )
virtual

◆ addCutsFromPool()

virtual int DecompAlgo::addCutsFromPool ( )
virtual

◆ isIPFeasible()

bool DecompAlgo::isIPFeasible ( const double * x,
const bool isXSparse = false,
const double feasVarTol = 1.0e-6,
const double feasConTol = 1.0e-5,
const double intTol = 1.0e-5 )

◆ isLPFeasible()

bool DecompAlgo::isLPFeasible ( const double * x,
const bool isXSparse = false,
const double feasVarTol = 1.0e-6,
const double feasConTol = 1.0e-5 )

◆ solveRelaxed()

DecompStatus DecompAlgo::solveRelaxed ( const double * redCostX,
const double * origCost,
const double alpha,
const int n_origCols,
const bool isNested,
DecompSubModel & subModel,
DecompSolverResult * solveResult,
std::list< DecompVar * > & vars,
double timeLimit )

◆ appendVars() [1/2]

void DecompAlgo::appendVars ( DecompVar * var)
inline

Definition at line 466 of file DecompAlgo.h.

◆ appendVars() [2/2]

void DecompAlgo::appendVars ( DecompVarList & varList)
inline

Definition at line 469 of file DecompAlgo.h.

◆ setMasterBounds()

virtual void DecompAlgo::setMasterBounds ( const double * lbs,
const double * ubs )
virtual

◆ setSubProbBounds()

virtual void DecompAlgo::setSubProbBounds ( const double * lbs,
const double * ubs )
virtual

◆ chooseBranchSet()

virtual bool DecompAlgo::chooseBranchSet ( std::vector< std::pair< int, double > > & downBranchLb,
std::vector< std::pair< int, double > > & downBranchUb,
std::vector< std::pair< int, double > > & upBranchLb,
std::vector< std::pair< int, double > > & upBranchUb )
virtual

Reimplemented in DippyAlgoC, DippyAlgoPC, and DippyAlgoRC.

◆ initSetup()

void DecompAlgo::initSetup ( )

Initial setup of algorithm structures and solver interfaces.

◆ getModelsFromApp()

void DecompAlgo::getModelsFromApp ( )

◆ createOsiSubProblem()

void DecompAlgo::createOsiSubProblem ( DecompSubModel & subModel)

◆ getOsiLpSolverInterface()

OsiSolverInterface * DecompAlgo::getOsiLpSolverInterface ( )

◆ getOsiIpSolverInterface()

OsiSolverInterface * DecompAlgo::getOsiIpSolverInterface ( )

◆ coreMatrixAppendColBounds()

void DecompAlgo::coreMatrixAppendColBounds ( )

Calculate gap: |(ub-lb)|/|lb|.

◆ checkMasterDualObj()

void DecompAlgo::checkMasterDualObj ( )

◆ checkPointFeasible()

bool DecompAlgo::checkPointFeasible ( const DecompConstraintSet * modelCore,
const double * x )

◆ isDualRayInfProof()

bool DecompAlgo::isDualRayInfProof ( const double * dualRay,
const CoinPackedMatrix * rowMatrix,
const double * colLB,
const double * colUB,
const double * rowRhs,
std::ostream * os )

◆ isDualRayInfProofCpx()

bool DecompAlgo::isDualRayInfProofCpx ( const double * dualRay,
const CoinPackedMatrix * rowMatrix,
const double * colLB,
const double * colUB,
const double * rowRhs,
std::ostream * os )

◆ printBasisInfo()

void DecompAlgo::printBasisInfo ( OsiSolverInterface * si,
std::ostream * os )

◆ printCurrentProblemDual()

void DecompAlgo::printCurrentProblemDual ( OsiSolverInterface * si,
const std::string baseName,
const int nodeIndex,
const int cutPass,
const int pricePass )

◆ printCurrentProblem() [1/2]

void DecompAlgo::printCurrentProblem ( const OsiSolverInterface * si,
const std::string baseName,
const int nodeIndex,
const int cutPass,
const int pricePass,
const int blockId = -1,
const bool printMps = true,
const bool printLp = true )

◆ printCurrentProblem() [2/2]

void DecompAlgo::printCurrentProblem ( const OsiSolverInterface * si,
const std::string fileName,
const bool printMps = true,
const bool printLp = true )

◆ printVars()

void DecompAlgo::printVars ( std::ostream * os)

◆ printCuts()

void DecompAlgo::printCuts ( std::ostream * os)

◆ checkDuals()

void DecompAlgo::checkDuals ( )

◆ checkReducedCost()

void DecompAlgo::checkReducedCost ( const double * u,
const double * u_adjusted )

◆ createFullMps()

void DecompAlgo::createFullMps ( const std::string fileName)

◆ solveDirect()

virtual DecompSolverResult * DecompAlgo::solveDirect ( const DecompSolution * startSol = NULL)
inlinevirtual

Reimplemented in DecompAlgoC.

Definition at line 585 of file DecompAlgo.h.

◆ masterMatrixAddMOCols()

void DecompAlgo::masterMatrixAddMOCols ( CoinPackedMatrix * masterM,
double * colLB,
double * colUB,
double * objCoeff,
std::vector< std::string > & colNames )

◆ masterMatrixAddArtCol()

void DecompAlgo::masterMatrixAddArtCol ( std::vector< CoinBigIndex > & colBeg,
std::vector< int > & colInd,
std::vector< double > & colVal,
char LorG,
int rowIndex,
int colIndex,
DecompColType colType,
double & colLB,
double & colUB,
double & objCoeff )

◆ masterMatrixAddArtCols()

virtual void DecompAlgo::masterMatrixAddArtCols ( CoinPackedMatrix * masterM,
double * colLB,
double * colUB,
double * objCoeff,
std::vector< std::string > & colNames,
int startRow,
int endRow,
DecompRowType rowType )
virtual

◆ masterPhaseItoII()

void DecompAlgo::masterPhaseItoII ( )

◆ masterPhaseIItoI()

void DecompAlgo::masterPhaseIItoI ( )

◆ isMasterColMasterOnly()

bool DecompAlgo::isMasterColMasterOnly ( const int index) const
inline

Definition at line 618 of file DecompAlgo.h.

◆ isMasterColStructural()

bool DecompAlgo::isMasterColStructural ( const int index) const
inline

Definition at line 621 of file DecompAlgo.h.

◆ isMasterColArtificial()

bool DecompAlgo::isMasterColArtificial ( const int index) const
inline

Definition at line 625 of file DecompAlgo.h.

◆ breakOutPartial()

void DecompAlgo::breakOutPartial ( const double * xHat,
DecompVarList & newVars,
const double intTol = 1.0e-5 )

◆ generateVarsAdjustDuals()

void DecompAlgo::generateVarsAdjustDuals ( const double * uOld,
double * uNew )

Create an adjusted dual vector with the duals from the convexity constraints removed.

◆ generateVarsCalcRedCost()

void DecompAlgo::generateVarsCalcRedCost ( const double * u,
double * redCostX )

Calculated reduced cost vector (over vars in compact space) for a given dual vector.

◆ getColLBNode()

const double * DecompAlgo::getColLBNode ( ) const
inline

Definition at line 667 of file DecompAlgo.h.

◆ getColUBNode()

const double * DecompAlgo::getColUBNode ( ) const
inline

Definition at line 670 of file DecompAlgo.h.

◆ getStats()

DecompStats & DecompAlgo::getStats ( )
inline

Definition at line 677 of file DecompAlgo.h.

◆ getOrigObjective()

const double * DecompAlgo::getOrigObjective ( ) const
inline

Definition at line 681 of file DecompAlgo.h.

◆ getModelCore()

const DecompSubModel & DecompAlgo::getModelCore ( ) const
inline

Definition at line 684 of file DecompAlgo.h.

◆ getAlgo()

const int DecompAlgo::getAlgo ( ) const
inline

Definition at line 688 of file DecompAlgo.h.

◆ getParam()

const DecompParam & DecompAlgo::getParam ( ) const
inline

Definition at line 692 of file DecompAlgo.h.

◆ getMutableParam()

DecompParam & DecompAlgo::getMutableParam ( )
inline

Definition at line 696 of file DecompAlgo.h.

◆ getMasterOSI()

OsiSolverInterface * DecompAlgo::getMasterOSI ( )
inline

Definition at line 700 of file DecompAlgo.h.

◆ getModelRelax()

DecompSubModel & DecompAlgo::getModelRelax ( const int blockId)
inline

Definition at line 704 of file DecompAlgo.h.

◆ getXhat()

const double * DecompAlgo::getXhat ( ) const
inline

Get a ptr to the current solution (in x-space).

Definition at line 715 of file DecompAlgo.h.

◆ setCutoffUB()

void DecompAlgo::setCutoffUB ( const double thisBound)
inline

Definition at line 719 of file DecompAlgo.h.

◆ getXhatIPBest()

const DecompSolution * DecompAlgo::getXhatIPBest ( ) const
inline

Definition at line 725 of file DecompAlgo.h.

◆ getXhatIPFeas()

const std::vector< DecompSolution * > & DecompAlgo::getXhatIPFeas ( ) const
inline

Definition at line 729 of file DecompAlgo.h.

◆ getCutoffUB()

const double DecompAlgo::getCutoffUB ( ) const
inline

Definition at line 733 of file DecompAlgo.h.

◆ getDecompStats()

DecompStats & DecompAlgo::getDecompStats ( )
inline

Definition at line 737 of file DecompAlgo.h.

◆ getDecompParam()

const DecompParam & DecompAlgo::getDecompParam ( ) const
inline

Definition at line 741 of file DecompAlgo.h.

◆ getDecompApp()

const DecompApp * DecompAlgo::getDecompApp ( ) const
inline

Definition at line 745 of file DecompAlgo.h.

◆ getDecompAppMutable()

DecompApp * DecompAlgo::getDecompAppMutable ( )
inline

Definition at line 748 of file DecompAlgo.h.

◆ getNodeIndex()

const int DecompAlgo::getNodeIndex ( ) const
inline

Definition at line 752 of file DecompAlgo.h.

◆ getCutCallsTotal()

const int DecompAlgo::getCutCallsTotal ( ) const
inline

Definition at line 756 of file DecompAlgo.h.

◆ getPriceCallsTotal()

const int DecompAlgo::getPriceCallsTotal ( ) const
inline

Definition at line 760 of file DecompAlgo.h.

◆ getMasterPrimalSolution()

const double * DecompAlgo::getMasterPrimalSolution ( ) const
inline

Get current primal solution for master problem.

Definition at line 767 of file DecompAlgo.h.

◆ getMasterColReducedCost()

const double * DecompAlgo::getMasterColReducedCost ( ) const
inline

Definition at line 771 of file DecompAlgo.h.

◆ getMasterDualSolution()

virtual const double * DecompAlgo::getMasterDualSolution ( ) const
inlinevirtual

Get current dual solution for master problem.

Definition at line 777 of file DecompAlgo.h.

◆ adjustMasterDualSolution()

virtual void DecompAlgo::adjustMasterDualSolution ( )
inlinevirtual

Adjust the current dual solution for master problem.

Definition at line 784 of file DecompAlgo.h.

◆ getMasterObjValue()

double DecompAlgo::getMasterObjValue ( ) const
inline

Definition at line 787 of file DecompAlgo.h.

◆ getStopCriteria()

const int DecompAlgo::getStopCriteria ( ) const
inline

Definition at line 805 of file DecompAlgo.h.

◆ getGlobalGap()

const double DecompAlgo::getGlobalGap ( ) const
inline

Get the current global (integrality) gap.

Definition at line 812 of file DecompAlgo.h.

◆ getNodeIPGap()

const double DecompAlgo::getNodeIPGap ( ) const
inline

Get the current node (integrality) gap.

Definition at line 819 of file DecompAlgo.h.

◆ getNodeLPGap()

const double DecompAlgo::getNodeLPGap ( ) const
inline

Get the current node (continuous) gap.

Definition at line 826 of file DecompAlgo.h.

◆ getObjBestBoundLB()

const double DecompAlgo::getObjBestBoundLB ( ) const
inline

Get the current best LB.

Definition at line 842 of file DecompAlgo.h.

◆ setStrongBranchIter()

const void DecompAlgo::setStrongBranchIter ( bool isStrongBranch = true)
inline

Set the object to be in strong branching mode.

Definition at line 849 of file DecompAlgo.h.

◆ getObjBestBoundUB()

const double DecompAlgo::getObjBestBoundUB ( ) const
inline

Get the current best UB.

Definition at line 856 of file DecompAlgo.h.

◆ getMasterRowType()

const double DecompAlgo::getMasterRowType ( int row) const
inline

Get a specific row type.

Definition at line 863 of file DecompAlgo.h.

◆ setObjBound()

virtual void DecompAlgo::setObjBound ( const double thisBound,
const double thisBoundUB )
inlinevirtual

Set the current continuous bounds and update best/history.

Definition at line 870 of file DecompAlgo.h.

◆ setObjBoundIP()

virtual void DecompAlgo::setObjBoundIP ( const double thisBound)
inlinevirtual

Set the current integer bound and update best/history.

Definition at line 904 of file DecompAlgo.h.

◆ isTailoffLB()

bool DecompAlgo::isTailoffLB ( const int changeLen = 10,
const double changePerLimit = 0.1 )

◆ getNumRowType()

int DecompAlgo::getNumRowType ( DecompRowType rowType)
inline

Definition at line 942 of file DecompAlgo.h.

◆ checkBlocksColumns()

void DecompAlgo::checkBlocksColumns ( )

Member Data Documentation

◆ m_classTag

std::string DecompAlgo::m_classTag
protected

Store the name of the class (for logging/debugging) - "who am I?".

Definition at line 75 of file DecompAlgo.h.

◆ m_param

DecompParam DecompAlgo::m_param
protected

Parameters.

Definition at line 80 of file DecompAlgo.h.

◆ m_utilParam

UtilParameters* DecompAlgo::m_utilParam
protected

Definition at line 81 of file DecompAlgo.h.

◆ m_algo

DecompAlgoType DecompAlgo::m_algo
protected

Type of algorithm for this instance.

Definition at line 86 of file DecompAlgo.h.

◆ m_status

DecompStatus DecompAlgo::m_status
protected

The current algorithm status.

Definition at line 91 of file DecompAlgo.h.

◆ m_infinity

double DecompAlgo::m_infinity
protected

The value of "infinity".

Definition at line 96 of file DecompAlgo.h.

◆ m_phase

DecompPhase DecompAlgo::m_phase
protected

The current algorithm phase.

Definition at line 101 of file DecompAlgo.h.

◆ m_phaseLast

DecompPhase DecompAlgo::m_phaseLast
protected

Definition at line 102 of file DecompAlgo.h.

◆ m_phaseForce

DecompPhase DecompAlgo::m_phaseForce
protected

Definition at line 103 of file DecompAlgo.h.

◆ m_app

DecompApp* DecompAlgo::m_app
protected

Pointer to current active DECOMP application.

Definition at line 108 of file DecompAlgo.h.

◆ m_stats

DecompStats DecompAlgo::m_stats
protected

Storage of statistics for run and node.

Definition at line 113 of file DecompAlgo.h.

◆ m_nodeStats

DecompNodeStats DecompAlgo::m_nodeStats
protected

Definition at line 114 of file DecompAlgo.h.

◆ m_memPool

DecompMemPool DecompAlgo::m_memPool
protected

Memory pool used to reduce the number of allocations needed.

Definition at line 119 of file DecompAlgo.h.

◆ m_osLog

std::ostream* DecompAlgo::m_osLog
protected

Stream for log file (default to stdout).

Definition at line 124 of file DecompAlgo.h.

◆ m_cgl

DecompAlgoCGL* DecompAlgo::m_cgl
protected

Definition at line 126 of file DecompAlgo.h.

◆ m_origColLB

std::vector<double> DecompAlgo::m_origColLB
protected

Pointer (and label) to current active model core/relax.

Definition at line 133 of file DecompAlgo.h.

◆ m_origColUB

std::vector<double> DecompAlgo::m_origColUB
protected

Definition at line 134 of file DecompAlgo.h.

◆ m_masterSI

OsiSolverInterface* DecompAlgo::m_masterSI
protected

Solver interface(s) for subproblems (P').

Solver interface(s) for master problem (Q''). CPM: holds model core (and optionally relaxed) in original space PC : holds model core in reformulated space

Definition at line 147 of file DecompAlgo.h.

◆ m_cutgenSI

OsiClpSolverInterface* DecompAlgo::m_cutgenSI
protected

Solver interface(s) for entire problem (Q'').

CPM: not used (use m_masterSI) PC : holds model core (and optionally relaxed) in original space - used for CGL cuts

Definition at line 155 of file DecompAlgo.h.

◆ m_cutgenObjCutInd

int DecompAlgo::m_cutgenObjCutInd
protected

Definition at line 156 of file DecompAlgo.h.

◆ m_auxSI

OsiSolverInterface* DecompAlgo::m_auxSI
protected

Definition at line 157 of file DecompAlgo.h.

◆ m_objective

const double* DecompAlgo::m_objective
protected

Definition at line 160 of file DecompAlgo.h.

◆ m_modelCore

DecompSubModel DecompAlgo::m_modelCore
protected

Definition at line 161 of file DecompAlgo.h.

◆ m_modelRelax

std::map<int, DecompSubModel> DecompAlgo::m_modelRelax
protected

Definition at line 162 of file DecompAlgo.h.

◆ m_modelRelaxNest

std::map<int, std::vector<DecompSubModel> > DecompAlgo::m_modelRelaxNest
protected

Definition at line 163 of file DecompAlgo.h.

◆ m_vars

DecompVarList DecompAlgo::m_vars
protected

Containers for variables (current and pool).

Definition at line 169 of file DecompAlgo.h.

◆ m_varpool

DecompVarPool DecompAlgo::m_varpool
protected

Definition at line 170 of file DecompAlgo.h.

◆ m_cuts

DecompCutList DecompAlgo::m_cuts
protected

Containers for cuts (current and pool).

Definition at line 175 of file DecompAlgo.h.

◆ m_cutpool

DecompCutPool DecompAlgo::m_cutpool
protected

Definition at line 176 of file DecompAlgo.h.

◆ m_xhat

double* DecompAlgo::m_xhat
protected

Storage for current solution (in x-space).

Definition at line 181 of file DecompAlgo.h.

◆ m_cutoffUB

double DecompAlgo::m_cutoffUB
protected

User-defined cutoff (global UB) for B&B fathoming and LR.

This does not imply a feasible IP solution, just a bound.

Definition at line 187 of file DecompAlgo.h.

◆ m_xhatIPFeas

std::vector<DecompSolution*> DecompAlgo::m_xhatIPFeas
protected

Definition at line 189 of file DecompAlgo.h.

◆ m_xhatIPBest

DecompSolution* DecompAlgo::m_xhatIPBest
protected

Definition at line 190 of file DecompAlgo.h.

◆ m_primSolution

std::vector<double> DecompAlgo::m_primSolution
protected

Definition at line 194 of file DecompAlgo.h.

◆ m_dualSolution

std::vector<double> DecompAlgo::m_dualSolution
protected

Definition at line 195 of file DecompAlgo.h.

◆ m_reducedCost

std::vector<double> DecompAlgo::m_reducedCost
protected

Definition at line 196 of file DecompAlgo.h.

◆ m_numCols

int DecompAlgo::m_numCols
protected

Definition at line 197 of file DecompAlgo.h.

◆ m_isColGenExact

bool DecompAlgo::m_isColGenExact
protected

Definition at line 199 of file DecompAlgo.h.

◆ m_numConvexCon

int DecompAlgo::m_numConvexCon
protected

Definition at line 201 of file DecompAlgo.h.

◆ m_rrLastBlock

int DecompAlgo::m_rrLastBlock
protected

Definition at line 204 of file DecompAlgo.h.

◆ m_rrIterSinceAll

int DecompAlgo::m_rrIterSinceAll
protected

Definition at line 205 of file DecompAlgo.h.

◆ m_nArtCols

int DecompAlgo::m_nArtCols
protected

Definition at line 208 of file DecompAlgo.h.

◆ m_nRowsOrig

int DecompAlgo::m_nRowsOrig
protected

Definition at line 211 of file DecompAlgo.h.

◆ m_nRowsBranch

int DecompAlgo::m_nRowsBranch
protected

Definition at line 212 of file DecompAlgo.h.

◆ m_nRowsConvex

int DecompAlgo::m_nRowsConvex
protected

Definition at line 213 of file DecompAlgo.h.

◆ m_nRowsCuts

int DecompAlgo::m_nRowsCuts
protected

Definition at line 214 of file DecompAlgo.h.

◆ m_masterRowType

std::vector<DecompRowType> DecompAlgo::m_masterRowType
protected

Definition at line 215 of file DecompAlgo.h.

◆ m_masterColType

std::vector<DecompColType> DecompAlgo::m_masterColType
protected

Definition at line 216 of file DecompAlgo.h.

◆ m_masterArtCols

std::vector<int> DecompAlgo::m_masterArtCols
protected

Definition at line 217 of file DecompAlgo.h.

◆ m_colLBNode

double* DecompAlgo::m_colLBNode
protected

Definition at line 220 of file DecompAlgo.h.

◆ m_colUBNode

double* DecompAlgo::m_colUBNode
protected

Definition at line 221 of file DecompAlgo.h.

◆ m_compressColsLastPrice

int DecompAlgo::m_compressColsLastPrice
protected

Definition at line 223 of file DecompAlgo.h.

◆ m_compressColsLastNumCols

int DecompAlgo::m_compressColsLastNumCols
protected

Definition at line 224 of file DecompAlgo.h.

◆ m_relGap

double DecompAlgo::m_relGap
protected

Current node gap (bestUB-bestLB)/bestLB.

Definition at line 229 of file DecompAlgo.h.

◆ m_stopCriteria

DecompAlgoStop DecompAlgo::m_stopCriteria
protected

Definition at line 231 of file DecompAlgo.h.

◆ m_colIndexUnique

int DecompAlgo::m_colIndexUnique
protected

Definition at line 232 of file DecompAlgo.h.

◆ m_masterObjLast

double DecompAlgo::m_masterObjLast
protected

Definition at line 233 of file DecompAlgo.h.

◆ m_objNoChange

bool DecompAlgo::m_objNoChange
protected

Definition at line 234 of file DecompAlgo.h.

◆ m_stabEpsilon

double DecompAlgo::m_stabEpsilon
protected

Definition at line 237 of file DecompAlgo.h.

◆ m_useInitLpDuals

bool DecompAlgo::m_useInitLpDuals
protected

Definition at line 238 of file DecompAlgo.h.

◆ m_artColIndToRowInd

std::map<int, int> DecompAlgo::m_artColIndToRowInd
protected

Definition at line 239 of file DecompAlgo.h.

◆ m_globalLB

double DecompAlgo::m_globalLB
protected

Definition at line 241 of file DecompAlgo.h.

◆ m_globalUB

double DecompAlgo::m_globalUB
protected

Definition at line 242 of file DecompAlgo.h.

◆ m_phaseIObj

std::vector<double> DecompAlgo::m_phaseIObj
protected

Definition at line 244 of file DecompAlgo.h.

◆ m_function

int DecompAlgo::m_function
protected

Definition at line 246 of file DecompAlgo.h.

◆ m_firstPhase2Call

bool DecompAlgo::m_firstPhase2Call
protected

Definition at line 247 of file DecompAlgo.h.

◆ m_isStrongBranch

bool DecompAlgo::m_isStrongBranch
protected

Definition at line 248 of file DecompAlgo.h.

◆ m_curNode

const AlpsDecompTreeNode* DecompAlgo::m_curNode
protected

Definition at line 250 of file DecompAlgo.h.

◆ m_masterOnlyCols

std:: vector<int> DecompAlgo::m_masterOnlyCols
protected

Definition at line 252 of file DecompAlgo.h.

◆ m_masterOnlyColsMap

std::map<int, int> DecompAlgo::m_masterOnlyColsMap
protected

Map from original index to master index for master-only vars.

Definition at line 256 of file DecompAlgo.h.

◆ m_branchingImplementation

DecompBranchingImplementation DecompAlgo::m_branchingImplementation
protected

Definition at line 261 of file DecompAlgo.h.


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