Dip  0.92.4
Public Member Functions | Public Attributes | Protected Attributes | List of all members
DecompAlgo Class Referenceabstract

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. More...
 
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)
 
OsiSolverInterfaceinitSolverInterface ()
 
void startupLog ()
 
void initSetup (int whichModel=1)
 
void tighten (int whichModel)
 
void solve (int whichModel=1)
 
double getTrueLowerBound ()
 
double getTrueUpperBound ()
 
void setTrueLowerBound (const double mostNegReducedCost)
 
void setTrueUpperBound (const double ub)
 
double calcConstant (const int m, const double *u)
 
bool isDualRayInfProof (const double *dualRay, const CoinPackedMatrix *rowMatrix, const double *colLB, const double *colUB, const double *rowRhs, ostream *os=0)
 
void printBasisInfo (OsiSolverInterface *si, ostream *os)
 
void printCurrentProblem (const OsiSolverInterface *si, const string baseName, const int nodeIndex, const int cutPass, const int pricePass, const bool printMps=true, const bool printLp=true)
 
void printCurrentProblem (const OsiSolverInterface *si, const string fileName, const bool printMps=true, const bool printLp=true)
 
void printVars (ostream *os=&cout)
 
void printCuts (ostream *os=&cout)
 
void solveBruteForce ()
 
void createFullMps (const string filename)
 
vector< double * > getDualRays (int maxNumRays)
 
void setApp (DecompApp *app)
 
void setBestUpperBound (const double bestUpperBound)
 
decompStat solveRelaxed (const int whichModel, const double *redCostX, const double *origCost, const double alpha, const int n_origCols, const bool checkRC, const bool checkDup, OsiSolverInterface *m_subprobSI, list< DecompVar * > &vars)
 
virtual void createMasterProblem (DecompVarList &initVars)=0
 
virtual decompStat solutionUpdate (const decompPhase phase, const int maxInnerIter, const int maxOuterIter)
 
virtual decompPhase phaseUpdate (const decompPhase phase, const decompStat stat)
 
virtual void setMasterBounds (const double *lbs, const double *ubs)
 
OsiSolverInterfacegetMasterSolverInterface ()
 
virtual const double * getRowPrice () const
 
const double * getX ()
 
DecompAppgetApp ()
 
const DecompSolutiongetXhatIPBest ()
 
virtual const double * getRightHandSide () const
 
virtual const char * getRowSense () const
 
int heuristics (const double *xhat, vector< DecompSolution * > &xhatIPFeas)
 
virtual int generateVars (const decompStat stat, DecompVarList &newVars, double &mostNegReducedCost)
 
virtual int generateCuts (DecompCutList &newCuts)
 
virtual void recomposeSolution (const double *solution, double *rsolution)
 
virtual int generateInitVars (DecompVarList &initVars)
 
virtual bool isDone ()
 
void addVarsToPool (DecompVarList &newVars)
 
void addVarsFromPool ()
 
bool isIPFeasible (const double *x, const double feasTol=1.0e-4, const double intTol=1.0e-4)
 
bool isLPFeasible (const double *x, const double feasTol=1.0e-4)
 
virtual void addCutsToPool (const double *x, DecompCutList &newCuts, int &n_newCuts)
 
virtual int addCutsFromPool ()
 
int chooseBranchVar (int &branchedOnIndex, double &branchedOnValue)
 
virtual int branch (int branchedOnIndex, double branchedOnValue)
 
decompStat processNode (const int nodeIndex=0)
 
void appendVars (DecompVar *var)
 
void appendVars (DecompVarList &varList)
 
 DecompAlgo (const decompAlgoType algo, DecompApp *app)
 
virtual ~DecompAlgo ()
 
OsiSolverInterfaceinitSolverInterface ()
 
void startupLog ()
 
void initSetup (int whichModel=1)
 
void tighten (int whichModel)
 
double getTrueLowerBound ()
 
double getTrueUpperBound ()
 
void setTrueLowerBound (const double mostNegReducedCost)
 
void setTrueUpperBound (const double ub)
 
double calcConstant (const int m, const double *u)
 
bool isDualRayInfProof (const double *dualRay, const CoinPackedMatrix *rowMatrix, const double *colLB, const double *colUB, const double *rowRhs, ostream *os=0)
 
void printBasisInfo (OsiSolverInterface *si, ostream *os)
 
void printCurrentProblem (const OsiSolverInterface *si, const string baseName, const int nodeIndex, const int cutPass, const int pricePass, const bool printMps=true, const bool printLp=true)
 
void printCurrentProblem (const OsiSolverInterface *si, const string fileName, const bool printMps=true, const bool printLp=true)
 
void printVars (ostream *os=&cout)
 
void printCuts (ostream *os=&cout)
 
void solveBruteForce ()
 
void createFullMps (const string filename)
 
vector< double * > getDualRays (int maxNumRays)
 
void setApp (DecompApp *app)
 
void setBestUpperBound (const double bestUpperBound)
 
DecompStat solveRelaxed (const int whichModel, const double *redCostX, const double *origCost, const double alpha, const int n_origCols, const bool checkRC, const bool checkDup, OsiSolverInterface *m_subprobSI, list< DecompVar * > &vars)
 
virtual void createMasterProblem (DecompVarList &initVars)=0
 
virtual DecompStat solutionUpdate (const DecompPhase phase, const int maxInnerIter, const int maxOuterIter)
 
virtual DecompPhase phaseUpdate (const DecompPhase phase, const DecompStat stat)
 
virtual void setMasterBounds (const double *lbs, const double *ubs)
 
OsiSolverInterfacegetMasterSolverInterface ()
 
virtual const double * getRowPrice () const
 
const double * getX ()
 
DecompAppgetApp ()
 
const DecompSolutiongetXhatIPBest ()
 
virtual const double * getRightHandSide () const
 
virtual const char * getRowSense () const
 
int heuristics (const double *xhat, vector< DecompSolution * > &xhatIPFeas)
 
virtual int generateVars (const DecompStat stat, DecompVarList &newVars, double &mostNegReducedCost)
 
virtual int generateCuts (DecompCutList &newCuts)
 
virtual void recomposeSolution (const double *solution, double *rsolution)
 
virtual int generateInitVars (DecompVarList &initVars)
 
virtual bool isDone ()
 
void addVarsToPool (DecompVarList &newVars)
 
void addVarsFromPool ()
 
bool isIPFeasible (const double *x, const double feasTol=1.0e-4, const double intTol=1.0e-4)
 
bool isLPFeasible (const double *x, const double feasTol=1.0e-4)
 
virtual void addCutsToPool (const double *x, DecompCutList &newCuts, int &n_newCuts)
 
virtual int addCutsFromPool ()
 
int chooseBranchVar (int &branchedOnIndex, double &branchedOnValue)
 
virtual int branch (int branchedOnIndex, double branchedOnValue)
 
DecompStat processNode (const int nodeIndex=0, const double globalLB=-DecompInf, const double globalUB=DecompInf)
 
void appendVars (DecompVar *var)
 
void appendVars (DecompVarList &varList)
 
 DecompAlgo (const DecompAlgoType algo, DecompApp *app)
 
virtual ~DecompAlgo ()
 
Pure virtual functions.
virtual void createMasterProblem (DecompVarList &initVars)
 Create the master problem (all algorithms must define this function). More...
 
void loadSIFromModel (OsiSolverInterface *si, bool doInt=false)
 
virtual void recomposeSolution (const double *solution, double *rsolution)
 Compose solution in x-space from current space. More...
 
Virtual functions.
virtual DecompStatus processNode (const AlpsDecompTreeNode *node, const double globalLB, const double globalUB)
 The main DECOMP process loop for a node. More...
 
const AlpsDecompTreeNodegetCurrentNode () const
 Provide the current node the algorithm is solving. More...
 
virtual void postProcessNode (DecompStatus decompStatus)
 Do some information sending after the current node has been processed. More...
 
virtual void postProcessBranch (DecompStatus decompStatus)
 Do some information sending after the current node has been branched. More...
 
virtual int generateInitVars (DecompVarList &initVars)
 Generate initial variables for master problem (PC/DC/RC). More...
 
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). More...
 
virtual void phaseUpdate (DecompPhase &phase, DecompStatus &status)
 Update of the phase for process loop. More...
 
virtual void phaseInit (DecompPhase &phase)
 Run the initial phase for processing node. More...
 
virtual void phaseDone ()
 Run the done phase for processing node. More...
 
virtual bool updateObjBound (const double mostNegRC=-DecompBigNum)
 Calculate the current LB and update best/history. More...
 
virtual void solveMasterAsMIP ()
 
virtual int adjustColumnsEffCnt ()
 
virtual int compressColumns ()
 
Helper functions.
void initSetup ()
 Initial setup of algorithm structures and solver interfaces. More...
 
void getModelsFromApp ()
 
void createOsiSubProblem (DecompSubModel &subModel)
 
OsiSolverInterfacegetOsiLpSolverInterface ()
 
OsiSolverInterfacegetOsiIpSolverInterface ()
 
void coreMatrixAppendColBounds ()
 Calculate gap: |(ub-lb)|/|lb|. More...
 
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. More...
 
void generateVarsCalcRedCost (const double *u, double *redCostX)
 Calculated reduced cost vector (over vars in compact space) for a given dual vector. More...
 
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). More...
 
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. More...
 
const double * getMasterColReducedCost () const
 
virtual const double * getMasterDualSolution () const
 Get current dual solution for master problem. More...
 
virtual void adjustMasterDualSolution ()
 Adjust the current dual solution for master problem. More...
 
double getMasterObjValue () const
 
const int getStopCriteria () const
 
const double getGlobalGap () const
 Get the current global (integrality) gap. More...
 
const double getNodeIPGap () const
 Get the current node (integrality) gap. More...
 
const double getNodeLPGap () const
 Get the current node (continuous) gap. More...
 
const double getObjBestBoundLB () const
 Get the current best LB. More...
 
const void setStrongBranchIter (bool isStrongBranch=true)
 Set the object to be in strong branching mode. More...
 
const double getObjBestBoundUB () const
 Get the current best UB. More...
 
const double getMasterRowType (int row) const
 Get a specific row type. More...
 
virtual void setObjBound (const double thisBound, const double thisBoundUB)
 Set the current continuous bounds and update best/history. More...
 
virtual void setObjBoundIP (const double thisBound)
 Set the current integer bound and update best/history. More...
 
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. More...
 
virtual ~DecompAlgo ()
 Destructor. More...
 

Public Attributes

DecompConstraintSetm_modelCore
 
DecompConstraintSetm_modelRelax
 

Protected Attributes

DecompMemPool m_auxMemPool
 
int m_nodeIndex
 
int m_whichModel
 
int m_whichCoreModel
 
int m_priceCallsRound
 
int m_priceCallsTotal
 
int m_cutCallsRound
 
int m_cutCallsTotal
 
int m_varsThisRound
 
int m_cutsThisRound
 
int m_varsThisCall
 
int m_cutsThisCall
 
int m_isTightenAlgo
 
ostream * m_osLog
 
map< int, OsiSolverInterface * > m_subprobSI
 
DecompVarList m_initVars
 
double m_tlb
 
double m_tub
 
double m_bestUpperBound
 
vector< DecompSolution * > m_xhatIPFeas
 
int m_numOrigCols
 
vector< vector< double > > m_optPoint
 
double * m_piEstimate
 
vector< bool > isStab
 
Data.
std::string m_classTag
 Store the name of the class (for logging/debugging) - "who am I?". More...
 
DecompParam m_param
 Parameters. More...
 
UtilParametersm_utilParam
 
DecompAlgoType m_algo
 Type of algorithm for this instance. More...
 
DecompStatus m_status
 The current algorithm status. More...
 
double m_infinity
 The value of "infinity". More...
 
DecompPhase m_phase
 The current algorithm phase. More...
 
DecompPhase m_phaseLast
 
DecompPhase m_phaseForce
 
DecompAppm_app
 Pointer to current active DECOMP application. More...
 
DecompStats m_stats
 Storage of statistics for run and node. More...
 
DecompNodeStats m_nodeStats
 
DecompMemPool m_memPool
 Memory pool used to reduce the number of allocations needed. More...
 
std::ostream * m_osLog
 Stream for log file (default to stdout). More...
 
DecompAlgoCGLm_cgl
 
std::vector< double > m_origColLB
 Pointer (and label) to current active model core/relax. More...
 
std::vector< double > m_origColUB
 
OsiSolverInterfacem_masterSI
 Solver interface(s) for subproblems (P'). More...
 
OsiClpSolverInterfacem_cutgenSI
 Solver interface(s) for entire problem (Q''). More...
 
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). More...
 
DecompVarPool m_varpool
 
DecompCutList m_cuts
 Containers for cuts (current and pool). More...
 
DecompCutPool m_cutpool
 
double * m_xhat
 Storage for current solution (in x-space). More...
 
double m_cutoffUB
 User-defined cutoff (global UB) for B&B fathoming and LR. More...
 
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. More...
 
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. More...
 
DecompBranchingImplementation m_branchingImplementation
 

Detailed Description

Base class for DECOMP algorithms.

Definition at line 62 of file DecompAlgo.h.

Constructor & Destructor Documentation

◆ DecompAlgo() [1/3]

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

Default constructors.

Definition at line 979 of file DecompAlgo.h.

◆ ~DecompAlgo() [1/3]

virtual DecompAlgo::~DecompAlgo ( )
inlinevirtual

Destructor.

Definition at line 1063 of file DecompAlgo.h.

◆ DecompAlgo() [2/3]

DecompAlgo::DecompAlgo ( const decompAlgoType  algo,
DecompApp app 
)
inline

Definition at line 326 of file DecompAlgo.h.

◆ ~DecompAlgo() [2/3]

virtual DecompAlgo::~DecompAlgo ( )
inlinevirtual

Definition at line 359 of file DecompAlgo.h.

◆ DecompAlgo() [3/3]

DecompAlgo::DecompAlgo ( const DecompAlgoType  algo,
DecompApp app 
)
inline

Definition at line 314 of file DecompAlgo.old.h.

◆ ~DecompAlgo() [3/3]

virtual DecompAlgo::~DecompAlgo ( )
inlinevirtual

Definition at line 348 of file DecompAlgo.old.h.

Member Function Documentation

◆ createMasterProblem() [1/3]

virtual void DecompAlgo::createMasterProblem ( DecompVarList initVars)
virtual

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

Reimplemented in DecompAlgoRC, DecompAlgoD, DecompAlgoPC, and DecompAlgoC.

◆ loadSIFromModel()

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

◆ recomposeSolution() [1/3]

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

Reimplemented in DecompAlgoPC, DecompAlgoD, and DecompAlgoC.

◆ processNode() [1/3]

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 DippyAlgoRC, DippyAlgoPC, and DippyAlgoC.

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 DippyAlgoRC, DippyAlgoPC, and DippyAlgoC.

Definition at line 332 of file DecompAlgo.h.

◆ generateInitVars() [1/3]

virtual int DecompAlgo::generateInitVars ( DecompVarList initVars)
virtual

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

  • in CPM, this does nothing

Reimplemented in DecompAlgoC.

◆ solutionUpdate() [1/3]

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() [1/3]

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() [1/3]

virtual bool DecompAlgo::isDone ( )
inlinevirtual

Reimplemented in DecompAlgoRC, and DecompAlgoRC.

Definition at line 416 of file DecompAlgo.h.

◆ getDualRays() [1/3]

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

◆ getDualRaysCpx()

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

◆ getDualRaysOsi()

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

◆ generateVars() [1/3]

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

◆ generateCuts() [1/3]

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

◆ addVarsToPool() [1/3]

virtual void DecompAlgo::addVarsToPool ( DecompVarList newVars)
virtual

◆ addVarsFromPool() [1/3]

virtual void DecompAlgo::addVarsFromPool ( )
virtual

◆ addCutsToPool() [1/3]

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

Reimplemented in DecompAlgoPC.

◆ addCutsFromPool() [1/3]

virtual int DecompAlgo::addCutsFromPool ( )
virtual

Reimplemented in DecompAlgoRC, and DecompAlgoPC.

◆ isIPFeasible() [1/3]

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() [1/3]

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

◆ solveRelaxed() [1/3]

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/6]

void DecompAlgo::appendVars ( DecompVar var)
inline

Definition at line 466 of file DecompAlgo.h.

◆ appendVars() [2/6]

void DecompAlgo::appendVars ( DecompVarList varList)
inline

Definition at line 469 of file DecompAlgo.h.

◆ setMasterBounds() [1/3]

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

Reimplemented in DecompAlgoPC.

◆ 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 DippyAlgoRC, DippyAlgoPC, and DippyAlgoC.

◆ initSetup() [1/3]

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() [1/3]

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() [1/3]

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/6]

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/6]

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

◆ printVars() [1/3]

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

◆ printCuts() [1/3]

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

◆ checkDuals()

void DecompAlgo::checkDuals ( )

◆ checkReducedCost()

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

◆ createFullMps() [1/3]

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() [1/3]

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

◆ initSolverInterface() [1/2]

OsiSolverInterface* DecompAlgo::initSolverInterface ( )

◆ startupLog() [1/2]

void DecompAlgo::startupLog ( )

◆ initSetup() [2/3]

void DecompAlgo::initSetup ( int  whichModel = 1)

◆ tighten() [1/2]

void DecompAlgo::tighten ( int  whichModel)

◆ solve()

void DecompAlgo::solve ( int  whichModel = 1)

◆ getTrueLowerBound() [1/2]

double DecompAlgo::getTrueLowerBound ( )
inline

Definition at line 134 of file DecompAlgo.h.

◆ getTrueUpperBound() [1/2]

double DecompAlgo::getTrueUpperBound ( )
inline

Definition at line 137 of file DecompAlgo.h.

◆ setTrueLowerBound() [1/2]

void DecompAlgo::setTrueLowerBound ( const double  mostNegReducedCost)

◆ setTrueUpperBound() [1/2]

void DecompAlgo::setTrueUpperBound ( const double  ub)
inline

Definition at line 143 of file DecompAlgo.h.

◆ calcConstant() [1/2]

double DecompAlgo::calcConstant ( const int  m,
const double *  u 
)

◆ isDualRayInfProof() [2/3]

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

◆ printBasisInfo() [2/3]

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

◆ printCurrentProblem() [3/6]

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

◆ printCurrentProblem() [4/6]

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

◆ printVars() [2/3]

void DecompAlgo::printVars ( ostream *  os = &cout)

◆ printCuts() [2/3]

void DecompAlgo::printCuts ( ostream *  os = &cout)

◆ solveBruteForce() [1/2]

void DecompAlgo::solveBruteForce ( )

◆ createFullMps() [2/3]

void DecompAlgo::createFullMps ( const string  filename)

◆ getDualRays() [2/3]

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

◆ setApp() [1/2]

void DecompAlgo::setApp ( DecompApp app)
inline

Definition at line 177 of file DecompAlgo.h.

◆ setBestUpperBound() [1/2]

void DecompAlgo::setBestUpperBound ( const double  bestUpperBound)
inline

Definition at line 182 of file DecompAlgo.h.

◆ solveRelaxed() [2/3]

decompStat DecompAlgo::solveRelaxed ( const int  whichModel,
const double *  redCostX,
const double *  origCost,
const double  alpha,
const int  n_origCols,
const bool  checkRC,
const bool  checkDup,
OsiSolverInterface m_subprobSI,
list< DecompVar * > &  vars 
)

◆ createMasterProblem() [2/3]

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

◆ solutionUpdate() [2/3]

virtual decompStat DecompAlgo::solutionUpdate ( const decompPhase  phase,
const int  maxInnerIter,
const int  maxOuterIter 
)
virtual

Reimplemented in DecompAlgoRC.

◆ phaseUpdate() [2/3]

virtual decompPhase DecompAlgo::phaseUpdate ( const decompPhase  phase,
const decompStat  stat 
)
virtual

Reimplemented in DecompAlgoD, and DecompAlgoC.

◆ setMasterBounds() [2/3]

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

Reimplemented in DecompAlgoPC.

◆ getMasterSolverInterface() [1/2]

OsiSolverInterface* DecompAlgo::getMasterSolverInterface ( )
inline

Definition at line 226 of file DecompAlgo.h.

◆ getRowPrice() [1/2]

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

Reimplemented in DecompAlgoRC.

Definition at line 230 of file DecompAlgo.h.

◆ getX() [1/2]

const double* DecompAlgo::getX ( )
inline

Definition at line 234 of file DecompAlgo.h.

◆ getApp() [1/2]

DecompApp* DecompAlgo::getApp ( )
inline

Definition at line 238 of file DecompAlgo.h.

◆ getXhatIPBest() [2/3]

const DecompSolution* DecompAlgo::getXhatIPBest ( )
inline

Definition at line 242 of file DecompAlgo.h.

◆ getRightHandSide() [1/2]

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

Definition at line 247 of file DecompAlgo.h.

◆ getRowSense() [1/2]

virtual const char* DecompAlgo::getRowSense ( ) const
inlinevirtual

Definition at line 251 of file DecompAlgo.h.

◆ heuristics() [1/2]

int DecompAlgo::heuristics ( const double *  xhat,
vector< DecompSolution * > &  xhatIPFeas 
)

◆ generateVars() [2/3]

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

Reimplemented in DecompAlgoRC, and DecompAlgoC.

◆ generateCuts() [2/3]

virtual int DecompAlgo::generateCuts ( DecompCutList newCuts)
virtual

◆ recomposeSolution() [2/3]

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

Reimplemented in DecompAlgoPC, DecompAlgoD, and DecompAlgoC.

Definition at line 267 of file DecompAlgo.h.

◆ generateInitVars() [2/3]

virtual int DecompAlgo::generateInitVars ( DecompVarList initVars)
virtual

Reimplemented in DecompAlgoC.

◆ isDone() [2/3]

virtual bool DecompAlgo::isDone ( )
inlinevirtual

Reimplemented in DecompAlgoRC, and DecompAlgoRC.

Definition at line 273 of file DecompAlgo.h.

◆ addVarsToPool() [2/3]

void DecompAlgo::addVarsToPool ( DecompVarList newVars)

◆ addVarsFromPool() [2/3]

void DecompAlgo::addVarsFromPool ( )

◆ isIPFeasible() [2/3]

bool DecompAlgo::isIPFeasible ( const double *  x,
const double  feasTol = 1.0e-4,
const double  intTol = 1.0e-4 
)

◆ isLPFeasible() [2/3]

bool DecompAlgo::isLPFeasible ( const double *  x,
const double  feasTol = 1.0e-4 
)

◆ addCutsToPool() [2/3]

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

Reimplemented in DecompAlgoPC.

◆ addCutsFromPool() [2/3]

virtual int DecompAlgo::addCutsFromPool ( )
virtual

Reimplemented in DecompAlgoRC, and DecompAlgoPC.

◆ chooseBranchVar() [1/2]

int DecompAlgo::chooseBranchVar ( int &  branchedOnIndex,
double &  branchedOnValue 
)

◆ branch() [1/2]

virtual int DecompAlgo::branch ( int  branchedOnIndex,
double  branchedOnValue 
)
virtual

Reimplemented in DecompAlgoC.

◆ processNode() [2/3]

decompStat DecompAlgo::processNode ( const int  nodeIndex = 0)

◆ appendVars() [3/6]

void DecompAlgo::appendVars ( DecompVar var)
inline

Definition at line 307 of file DecompAlgo.h.

◆ appendVars() [4/6]

void DecompAlgo::appendVars ( DecompVarList varList)
inline

Definition at line 310 of file DecompAlgo.h.

◆ initSolverInterface() [2/2]

OsiSolverInterface* DecompAlgo::initSolverInterface ( )

◆ startupLog() [2/2]

void DecompAlgo::startupLog ( )

◆ initSetup() [3/3]

void DecompAlgo::initSetup ( int  whichModel = 1)

◆ tighten() [2/2]

void DecompAlgo::tighten ( int  whichModel)

◆ getTrueLowerBound() [2/2]

double DecompAlgo::getTrueLowerBound ( )
inline

Definition at line 124 of file DecompAlgo.old.h.

◆ getTrueUpperBound() [2/2]

double DecompAlgo::getTrueUpperBound ( )
inline

Definition at line 127 of file DecompAlgo.old.h.

◆ setTrueLowerBound() [2/2]

void DecompAlgo::setTrueLowerBound ( const double  mostNegReducedCost)

◆ setTrueUpperBound() [2/2]

void DecompAlgo::setTrueUpperBound ( const double  ub)
inline

Definition at line 133 of file DecompAlgo.old.h.

◆ calcConstant() [2/2]

double DecompAlgo::calcConstant ( const int  m,
const double *  u 
)

◆ isDualRayInfProof() [3/3]

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

◆ printBasisInfo() [3/3]

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

◆ printCurrentProblem() [5/6]

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

◆ printCurrentProblem() [6/6]

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

◆ printVars() [3/3]

void DecompAlgo::printVars ( ostream *  os = &cout)

◆ printCuts() [3/3]

void DecompAlgo::printCuts ( ostream *  os = &cout)

◆ solveBruteForce() [2/2]

void DecompAlgo::solveBruteForce ( )

◆ createFullMps() [3/3]

void DecompAlgo::createFullMps ( const string  filename)

◆ getDualRays() [3/3]

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

◆ setApp() [2/2]

void DecompAlgo::setApp ( DecompApp app)
inline

Definition at line 167 of file DecompAlgo.old.h.

◆ setBestUpperBound() [2/2]

void DecompAlgo::setBestUpperBound ( const double  bestUpperBound)
inline

Definition at line 172 of file DecompAlgo.old.h.

◆ solveRelaxed() [3/3]

DecompStat DecompAlgo::solveRelaxed ( const int  whichModel,
const double *  redCostX,
const double *  origCost,
const double  alpha,
const int  n_origCols,
const bool  checkRC,
const bool  checkDup,
OsiSolverInterface m_subprobSI,
list< DecompVar * > &  vars 
)

◆ createMasterProblem() [3/3]

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

◆ solutionUpdate() [3/3]

virtual DecompStat DecompAlgo::solutionUpdate ( const DecompPhase  phase,
const int  maxInnerIter,
const int  maxOuterIter 
)
virtual

◆ phaseUpdate() [3/3]

virtual DecompPhase DecompAlgo::phaseUpdate ( const DecompPhase  phase,
const DecompStat  stat 
)
virtual

◆ setMasterBounds() [3/3]

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

Reimplemented in DecompAlgoPC.

◆ getMasterSolverInterface() [2/2]

OsiSolverInterface* DecompAlgo::getMasterSolverInterface ( )
inline

Definition at line 216 of file DecompAlgo.old.h.

◆ getRowPrice() [2/2]

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

Reimplemented in DecompAlgoRC.

Definition at line 220 of file DecompAlgo.old.h.

◆ getX() [2/2]

const double* DecompAlgo::getX ( )
inline

Definition at line 224 of file DecompAlgo.old.h.

◆ getApp() [2/2]

DecompApp* DecompAlgo::getApp ( )
inline

Definition at line 228 of file DecompAlgo.old.h.

◆ getXhatIPBest() [3/3]

const DecompSolution* DecompAlgo::getXhatIPBest ( )
inline

Definition at line 232 of file DecompAlgo.old.h.

◆ getRightHandSide() [2/2]

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

Definition at line 237 of file DecompAlgo.old.h.

◆ getRowSense() [2/2]

virtual const char* DecompAlgo::getRowSense ( ) const
inlinevirtual

Definition at line 241 of file DecompAlgo.old.h.

◆ heuristics() [2/2]

int DecompAlgo::heuristics ( const double *  xhat,
vector< DecompSolution * > &  xhatIPFeas 
)

◆ generateVars() [3/3]

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

◆ generateCuts() [3/3]

virtual int DecompAlgo::generateCuts ( DecompCutList newCuts)
virtual

◆ recomposeSolution() [3/3]

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

Reimplemented in DecompAlgoPC, DecompAlgoD, and DecompAlgoC.

Definition at line 257 of file DecompAlgo.old.h.

◆ generateInitVars() [3/3]

virtual int DecompAlgo::generateInitVars ( DecompVarList initVars)
virtual

Reimplemented in DecompAlgoC.

◆ isDone() [3/3]

virtual bool DecompAlgo::isDone ( )
inlinevirtual

Reimplemented in DecompAlgoRC, and DecompAlgoRC.

Definition at line 263 of file DecompAlgo.old.h.

◆ addVarsToPool() [3/3]

void DecompAlgo::addVarsToPool ( DecompVarList newVars)

◆ addVarsFromPool() [3/3]

void DecompAlgo::addVarsFromPool ( )

◆ isIPFeasible() [3/3]

bool DecompAlgo::isIPFeasible ( const double *  x,
const double  feasTol = 1.0e-4,
const double  intTol = 1.0e-4 
)

◆ isLPFeasible() [3/3]

bool DecompAlgo::isLPFeasible ( const double *  x,
const double  feasTol = 1.0e-4 
)

◆ addCutsToPool() [3/3]

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

Reimplemented in DecompAlgoPC.

◆ addCutsFromPool() [3/3]

virtual int DecompAlgo::addCutsFromPool ( )
virtual

Reimplemented in DecompAlgoRC, and DecompAlgoPC.

◆ chooseBranchVar() [2/2]

int DecompAlgo::chooseBranchVar ( int &  branchedOnIndex,
double &  branchedOnValue 
)

◆ branch() [2/2]

virtual int DecompAlgo::branch ( int  branchedOnIndex,
double  branchedOnValue 
)
virtual

Reimplemented in DecompAlgoC.

◆ processNode() [3/3]

DecompStat DecompAlgo::processNode ( const int  nodeIndex = 0,
const double  globalLB = -DecompInf,
const double  globalUB = DecompInf 
)

◆ appendVars() [5/6]

void DecompAlgo::appendVars ( DecompVar var)
inline

Definition at line 297 of file DecompAlgo.old.h.

◆ appendVars() [6/6]

void DecompAlgo::appendVars ( DecompVarList varList)
inline

Definition at line 300 of file DecompAlgo.old.h.

Member Data Documentation

◆ m_classTag

static const char * 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 [1/2]

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 [1/2]

DecompConstraintSet * DecompAlgo::m_modelCore
protected

Definition at line 161 of file DecompAlgo.h.

◆ m_modelRelax [1/2]

DecompConstraintSet * 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 [1/2]

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.

◆ m_auxMemPool

DecompMemPool DecompAlgo::m_auxMemPool
protected

Definition at line 51 of file DecompAlgo.h.

◆ m_nodeIndex

int DecompAlgo::m_nodeIndex
protected

Definition at line 54 of file DecompAlgo.h.

◆ m_whichModel

int DecompAlgo::m_whichModel
protected

Definition at line 55 of file DecompAlgo.h.

◆ m_whichCoreModel

int DecompAlgo::m_whichCoreModel
protected

Definition at line 56 of file DecompAlgo.h.

◆ m_priceCallsRound

int DecompAlgo::m_priceCallsRound
protected

Definition at line 57 of file DecompAlgo.h.

◆ m_priceCallsTotal

int DecompAlgo::m_priceCallsTotal
protected

Definition at line 58 of file DecompAlgo.h.

◆ m_cutCallsRound

int DecompAlgo::m_cutCallsRound
protected

Definition at line 59 of file DecompAlgo.h.

◆ m_cutCallsTotal

int DecompAlgo::m_cutCallsTotal
protected

Definition at line 60 of file DecompAlgo.h.

◆ m_varsThisRound

int DecompAlgo::m_varsThisRound
protected

Definition at line 61 of file DecompAlgo.h.

◆ m_cutsThisRound

int DecompAlgo::m_cutsThisRound
protected

Definition at line 62 of file DecompAlgo.h.

◆ m_varsThisCall

int DecompAlgo::m_varsThisCall
protected

Definition at line 63 of file DecompAlgo.h.

◆ m_cutsThisCall

int DecompAlgo::m_cutsThisCall
protected

Definition at line 64 of file DecompAlgo.h.

◆ m_isTightenAlgo

int DecompAlgo::m_isTightenAlgo
protected

Definition at line 66 of file DecompAlgo.h.

◆ m_osLog [2/2]

ostream* DecompAlgo::m_osLog
protected

Definition at line 68 of file DecompAlgo.h.

◆ m_subprobSI

map< int, OsiSolverInterface * > DecompAlgo::m_subprobSI
protected

Definition at line 73 of file DecompAlgo.h.

◆ m_initVars

DecompVarList DecompAlgo::m_initVars
protected

Definition at line 90 of file DecompAlgo.h.

◆ m_tlb

double DecompAlgo::m_tlb
protected

Definition at line 95 of file DecompAlgo.h.

◆ m_tub

double DecompAlgo::m_tub
protected

Definition at line 96 of file DecompAlgo.h.

◆ m_bestUpperBound

double DecompAlgo::m_bestUpperBound
protected

Definition at line 97 of file DecompAlgo.h.

◆ m_xhatIPFeas [2/2]

vector<DecompSolution*> DecompAlgo::m_xhatIPFeas
protected

Definition at line 103 of file DecompAlgo.h.

◆ m_numOrigCols

int DecompAlgo::m_numOrigCols
protected

Definition at line 106 of file DecompAlgo.h.

◆ m_optPoint

vector< vector< double > > DecompAlgo::m_optPoint
protected

Definition at line 108 of file DecompAlgo.h.

◆ m_piEstimate

double * DecompAlgo::m_piEstimate
protected

Definition at line 111 of file DecompAlgo.h.

◆ isStab

vector< bool > DecompAlgo::isStab
protected

Definition at line 112 of file DecompAlgo.h.

◆ m_modelCore [2/2]

DecompConstraintSet* DecompAlgo::m_modelCore

Definition at line 116 of file DecompAlgo.h.

◆ m_modelRelax [2/2]

DecompConstraintSet* DecompAlgo::m_modelRelax

Definition at line 117 of file DecompAlgo.h.


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