Dip  0.92.4
Public Member Functions | Private Member Functions | Static Private Attributes | List of all members
DecompAlgoPC Class Reference

Class for DECOMP algorithm Price and Cut. More...

#include <DecompAlgoPC.h>

Inheritance diagram for DecompAlgoPC:
Inheritance graph
[legend]
Collaboration diagram for DecompAlgoPC:
Collaboration graph
[legend]

Public Member Functions

virtual void setMasterBounds (const double *lbs, const double *ubs)
 
virtual void createMasterProblem (DecompVarList &initVars)
 Create the master problem (all algorithms must define this function). More...
 
void createMasterStabilization ()
 
void addCutsToPool (const double *x, DecompCutList &newCuts, int &n_newCuts)
 
int addCutsFromPool ()
 
void recomposeSolution (const double *solution, double *rsolution)
 Compose solution in x-space from current space. More...
 
 DecompAlgoPC (DecompApp *app)
 
 ~DecompAlgoPC ()
 
Constructors and destructor.
std::vector< double > & getDualBest ()
 Default constructors. More...
 
std::vector< double > & getDualRMP ()
 Default constructors. More...
 
 DecompAlgoPC (DecompApp *app, UtilParameters &utilParam, bool doSetup=true, const DecompAlgoType algo=PRICE_AND_CUT)
 Default constructors. More...
 
 ~DecompAlgoPC ()
 Destructor. More...
 
- Public Member Functions inherited from DecompAlgo
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 generateCuts (double *xhat, DecompCutList &newCuts)
 
virtual void addVarsToPool (DecompVarList &newVars)
 
virtual void addVarsFromPool ()
 
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 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 decompStat solutionUpdate (const decompPhase phase, const int maxInnerIter, const int maxOuterIter)
 
virtual decompPhase phaseUpdate (const decompPhase phase, const decompStat stat)
 
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 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)
 
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 DecompStat solutionUpdate (const DecompPhase phase, const int maxInnerIter, const int maxOuterIter)
 
virtual DecompPhase phaseUpdate (const DecompPhase phase, const DecompStat stat)
 
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 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)
 
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 ()
 
void loadSIFromModel (OsiSolverInterface *si, bool doInt=false)
 Create the master problem (all algorithms must define this function). More...
 
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 bool updateObjBound (const double mostNegRC=-DecompBigNum)
 Calculate the current LB and update best/history. More...
 
void initSetup ()
 Initial setup of algorithm structures and solver interfaces. More...
 
void getModelsFromApp ()
 Initial setup of algorithm structures and solver interfaces. More...
 
void createOsiSubProblem (DecompSubModel &subModel)
 Initial setup of algorithm structures and solver interfaces. More...
 
OsiSolverInterfacegetOsiLpSolverInterface ()
 Initial setup of algorithm structures and solver interfaces. More...
 
OsiSolverInterfacegetOsiIpSolverInterface ()
 Initial setup of algorithm structures and solver interfaces. More...
 
void coreMatrixAppendColBounds ()
 Calculate gap: |(ub-lb)|/|lb|. More...
 
void checkMasterDualObj ()
 Initial setup of algorithm structures and solver interfaces. More...
 
bool checkPointFeasible (const DecompConstraintSet *modelCore, const double *x)
 Initial setup of algorithm structures and solver interfaces. More...
 
bool isDualRayInfProof (const double *dualRay, const CoinPackedMatrix *rowMatrix, const double *colLB, const double *colUB, const double *rowRhs, std::ostream *os)
 Initial setup of algorithm structures and solver interfaces. More...
 
bool isDualRayInfProofCpx (const double *dualRay, const CoinPackedMatrix *rowMatrix, const double *colLB, const double *colUB, const double *rowRhs, std::ostream *os)
 Initial setup of algorithm structures and solver interfaces. More...
 
void printBasisInfo (OsiSolverInterface *si, std::ostream *os)
 Initial setup of algorithm structures and solver interfaces. More...
 
void printCurrentProblemDual (OsiSolverInterface *si, const std::string baseName, const int nodeIndex, const int cutPass, const int pricePass)
 Initial setup of algorithm structures and solver interfaces. More...
 
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)
 Initial setup of algorithm structures and solver interfaces. More...
 
void printCurrentProblem (const OsiSolverInterface *si, const std::string fileName, const bool printMps=true, const bool printLp=true)
 Initial setup of algorithm structures and solver interfaces. More...
 
void printVars (std::ostream *os)
 Initial setup of algorithm structures and solver interfaces. More...
 
void printCuts (std::ostream *os)
 Initial setup of algorithm structures and solver interfaces. More...
 
void checkDuals ()
 Initial setup of algorithm structures and solver interfaces. More...
 
void checkReducedCost (const double *u, const double *u_adjusted)
 Initial setup of algorithm structures and solver interfaces. More...
 
void createFullMps (const std::string fileName)
 Initial setup of algorithm structures and solver interfaces. More...
 
virtual DecompSolverResultsolveDirect (const DecompSolution *startSol=NULL)
 Initial setup of algorithm structures and solver interfaces. More...
 
void masterMatrixAddMOCols (CoinPackedMatrix *masterM, double *colLB, double *colUB, double *objCoeff, std::vector< std::string > &colNames)
 Initial setup of algorithm structures and solver interfaces. More...
 
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)
 Initial setup of algorithm structures and solver interfaces. More...
 
virtual void masterMatrixAddArtCols (CoinPackedMatrix *masterM, double *colLB, double *colUB, double *objCoeff, std::vector< std::string > &colNames, int startRow, int endRow, DecompRowType rowType)
 Initial setup of algorithm structures and solver interfaces. More...
 
void masterPhaseItoII ()
 Initial setup of algorithm structures and solver interfaces. More...
 
void masterPhaseIItoI ()
 Initial setup of algorithm structures and solver interfaces. More...
 
bool isMasterColMasterOnly (const int index) const
 Initial setup of algorithm structures and solver interfaces. More...
 
bool isMasterColStructural (const int index) const
 Initial setup of algorithm structures and solver interfaces. More...
 
bool isMasterColArtificial (const int index) const
 Initial setup of algorithm structures and solver interfaces. More...
 
void breakOutPartial (const double *xHat, DecompVarList &newVars, const double intTol=1.0e-5)
 Initial setup of algorithm structures and solver interfaces. More...
 
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...
 
const double * getColLBNode () const
 Get a ptr to the current solution (in x-space). More...
 
const double * getColUBNode () const
 Get a ptr to the current solution (in x-space). More...
 
DecompStatsgetStats ()
 Get a ptr to the current solution (in x-space). More...
 
const double * getOrigObjective () const
 Get a ptr to the current solution (in x-space). More...
 
const DecompSubModelgetModelCore () const
 Get a ptr to the current solution (in x-space). More...
 
const int getAlgo () const
 Get a ptr to the current solution (in x-space). More...
 
const DecompParamgetParam () const
 Get a ptr to the current solution (in x-space). More...
 
DecompParamgetMutableParam ()
 Get a ptr to the current solution (in x-space). More...
 
OsiSolverInterfacegetMasterOSI ()
 Get a ptr to the current solution (in x-space). More...
 
DecompSubModelgetModelRelax (const int blockId)
 Get a ptr to the current solution (in x-space). More...
 
const double * getXhat () const
 Get a ptr to the current solution (in x-space). More...
 
void setCutoffUB (const double thisBound)
 Get a ptr to the current solution (in x-space). More...
 
const DecompSolutiongetXhatIPBest () const
 Get a ptr to the current solution (in x-space). More...
 
const std::vector
< DecompSolution * > & 
getXhatIPFeas () const
 Get a ptr to the current solution (in x-space). More...
 
const double getCutoffUB () const
 Get a ptr to the current solution (in x-space). More...
 
DecompStatsgetDecompStats ()
 Get a ptr to the current solution (in x-space). More...
 
const DecompParamgetDecompParam () const
 Get a ptr to the current solution (in x-space). More...
 
const DecompAppgetDecompApp () const
 Get a ptr to the current solution (in x-space). More...
 
DecompAppgetDecompAppMutable ()
 Get a ptr to the current solution (in x-space). More...
 
const int getNodeIndex () const
 Get a ptr to the current solution (in x-space). More...
 
const int getCutCallsTotal () const
 Get a ptr to the current solution (in x-space). More...
 
const int getPriceCallsTotal () const
 Get a ptr to the current solution (in x-space). More...
 
const double * getMasterPrimalSolution () const
 Get current primal solution for master problem. More...
 
const double * getMasterColReducedCost () const
 Get a ptr to the current solution (in x-space). More...
 
double getMasterObjValue () const
 Get a ptr to the current solution (in x-space). More...
 
const int getStopCriteria () const
 Get a ptr to the current solution (in x-space). More...
 
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...
 
bool isTailoffLB (const int changeLen=10, const double changePerLimit=0.1)
 Get a ptr to the current solution (in x-space). More...
 
int getNumRowType (DecompRowType rowType)
 Get a ptr to the current solution (in x-space). More...
 
void checkBlocksColumns ()
 Get a ptr to the current solution (in x-space). More...
 
 DecompAlgo (const DecompAlgoType algo, DecompApp *app, UtilParameters &utilParam, bool doSetup=true)
 Default constructors. More...
 
virtual ~DecompAlgo ()
 Destructor. More...
 

Private Member Functions

 DecompAlgoPC (const DecompAlgoPC &)
 
DecompAlgoPCoperator= (const DecompAlgoPC &)
 
Derived from pure virtual functions of DecompAlgo.
virtual void createMasterProblem (DecompVarList &initVars)
 Create the master problem (all algorithms must define this function). More...
 
virtual int generateVars (DecompVarList &newVars, double &mostNegReducedCost)
 Create the master problem (all algorithms must define this function). More...
 
virtual void phaseInit (DecompPhase &phase)
 Create the master problem (all algorithms must define this function). More...
 
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...
 
virtual void setObjBound (const double thisBound, const double thisBoundUB)
 Create the master problem (all algorithms must define this function). More...
 
virtual void setObjBoundIP (const double thisBound)
 Set the current integer bound and update best/history. More...
 
Derived from virtual functions of DecompAlgo
void addCutsToPool (const double *x, DecompCutList &newCuts, int &n_newCuts)
 
void phaseDone ()
 Run the done phase for processing node. More...
 
int addCutsFromPool ()
 
void solveMasterAsMIP ()
 The main DECOMP process loop for a node. More...
 
void solveMasterAsMIPSym (DecompSolverResult *result)
 
void solveMasterAsMIPCbc (DecompSolverResult *result)
 
void solveMasterAsMIPCpx (DecompSolverResult *result)
 
void solveMasterAsMIPGrb (DecompSolverResult *result)
 
int adjustColumnsEffCnt ()
 The main DECOMP process loop for a node. More...
 
int compressColumns ()
 The main DECOMP process loop for a node. More...
 

Private Attributes

Data.
std::string m_classTag
 Store the name of the class (for logging/debugging) - "who am I?". More...
 
std::vector< double > m_dual
 Dual vector. More...
 
std::vector< double > m_dualRM
 Dual vector from restricted master. More...
 
std::vector< double > m_dualST
 Dual vector stabilized. More...
 

Static Private Attributes

static const char * classTag
 

Additional Inherited Members

- Public Attributes inherited from DecompAlgo
DecompConstraintSetm_modelCore
 
DecompConstraintSetm_modelRelax
 
- Protected Attributes inherited from DecompAlgo
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
 
std::string m_classTag
 Store the name of the class (for logging/debugging) - "who am I?". More...
 
DecompParam m_param
 Parameters. More...
 
UtilParametersm_utilParam
 Store the name of the class (for logging/debugging) - "who am I?". More...
 
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
 Store the name of the class (for logging/debugging) - "who am I?". More...
 
DecompPhase m_phaseForce
 Store the name of the class (for logging/debugging) - "who am I?". More...
 
DecompAppm_app
 Pointer to current active DECOMP application. More...
 
DecompStats m_stats
 Storage of statistics for run and node. More...
 
DecompNodeStats m_nodeStats
 Store the name of the class (for logging/debugging) - "who am I?". More...
 
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
 Store the name of the class (for logging/debugging) - "who am I?". More...
 
std::vector< double > m_origColLB
 Pointer (and label) to current active model core/relax. More...
 
std::vector< double > m_origColUB
 Store the name of the class (for logging/debugging) - "who am I?". More...
 
OsiSolverInterfacem_masterSI
 Solver interface(s) for subproblems (P'). More...
 
OsiClpSolverInterfacem_cutgenSI
 Solver interface(s) for entire problem (Q''). More...
 
int m_cutgenObjCutInd
 Store the name of the class (for logging/debugging) - "who am I?". More...
 
OsiSolverInterfacem_auxSI
 Store the name of the class (for logging/debugging) - "who am I?". More...
 
const double * m_objective
 Store the name of the class (for logging/debugging) - "who am I?". More...
 
DecompSubModel m_modelCore
 Store the name of the class (for logging/debugging) - "who am I?". More...
 
std::map< int, DecompSubModelm_modelRelax
 Store the name of the class (for logging/debugging) - "who am I?". More...
 
std::map< int, std::vector
< DecompSubModel > > 
m_modelRelaxNest
 Store the name of the class (for logging/debugging) - "who am I?". More...
 
DecompVarList m_vars
 Containers for variables (current and pool). More...
 
DecompVarPool m_varpool
 Store the name of the class (for logging/debugging) - "who am I?". More...
 
DecompCutList m_cuts
 Containers for cuts (current and pool). More...
 
DecompCutPool m_cutpool
 Store the name of the class (for logging/debugging) - "who am I?". More...
 
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
 Store the name of the class (for logging/debugging) - "who am I?". More...
 
DecompSolutionm_xhatIPBest
 Store the name of the class (for logging/debugging) - "who am I?". More...
 
std::vector< double > m_primSolution
 Store the name of the class (for logging/debugging) - "who am I?". More...
 
std::vector< double > m_dualSolution
 Store the name of the class (for logging/debugging) - "who am I?". More...
 
std::vector< double > m_reducedCost
 Store the name of the class (for logging/debugging) - "who am I?". More...
 
int m_numCols
 Store the name of the class (for logging/debugging) - "who am I?". More...
 
bool m_isColGenExact
 Store the name of the class (for logging/debugging) - "who am I?". More...
 
int m_numConvexCon
 Store the name of the class (for logging/debugging) - "who am I?". More...
 
int m_rrLastBlock
 Store the name of the class (for logging/debugging) - "who am I?". More...
 
int m_rrIterSinceAll
 Store the name of the class (for logging/debugging) - "who am I?". More...
 
int m_nArtCols
 Store the name of the class (for logging/debugging) - "who am I?". More...
 
int m_nRowsOrig
 Store the name of the class (for logging/debugging) - "who am I?". More...
 
int m_nRowsBranch
 Store the name of the class (for logging/debugging) - "who am I?". More...
 
int m_nRowsConvex
 Store the name of the class (for logging/debugging) - "who am I?". More...
 
int m_nRowsCuts
 Store the name of the class (for logging/debugging) - "who am I?". More...
 
std::vector< DecompRowTypem_masterRowType
 Store the name of the class (for logging/debugging) - "who am I?". More...
 
std::vector< DecompColTypem_masterColType
 Store the name of the class (for logging/debugging) - "who am I?". More...
 
std::vector< int > m_masterArtCols
 Store the name of the class (for logging/debugging) - "who am I?". More...
 
double * m_colLBNode
 Store the name of the class (for logging/debugging) - "who am I?". More...
 
double * m_colUBNode
 Store the name of the class (for logging/debugging) - "who am I?". More...
 
int m_compressColsLastPrice
 Store the name of the class (for logging/debugging) - "who am I?". More...
 
int m_compressColsLastNumCols
 Store the name of the class (for logging/debugging) - "who am I?". More...
 
double m_relGap
 Current node gap (bestUB-bestLB)/bestLB. More...
 
DecompAlgoStop m_stopCriteria
 Store the name of the class (for logging/debugging) - "who am I?". More...
 
int m_colIndexUnique
 Store the name of the class (for logging/debugging) - "who am I?". More...
 
double m_masterObjLast
 Store the name of the class (for logging/debugging) - "who am I?". More...
 
bool m_objNoChange
 Store the name of the class (for logging/debugging) - "who am I?". More...
 
double m_stabEpsilon
 Store the name of the class (for logging/debugging) - "who am I?". More...
 
bool m_useInitLpDuals
 Store the name of the class (for logging/debugging) - "who am I?". More...
 
std::map< int, int > m_artColIndToRowInd
 Store the name of the class (for logging/debugging) - "who am I?". More...
 
double m_globalLB
 Store the name of the class (for logging/debugging) - "who am I?". More...
 
double m_globalUB
 Store the name of the class (for logging/debugging) - "who am I?". More...
 
std::vector< double > m_phaseIObj
 Store the name of the class (for logging/debugging) - "who am I?". More...
 
int m_function
 Store the name of the class (for logging/debugging) - "who am I?". More...
 
bool m_firstPhase2Call
 Store the name of the class (for logging/debugging) - "who am I?". More...
 
bool m_isStrongBranch
 Store the name of the class (for logging/debugging) - "who am I?". More...
 
const AlpsDecompTreeNodem_curNode
 Store the name of the class (for logging/debugging) - "who am I?". More...
 
std::vector< int > m_masterOnlyCols
 Store the name of the class (for logging/debugging) - "who am I?". More...
 
std::map< int, int > m_masterOnlyColsMap
 Map from original index to master index for master-only vars. More...
 
DecompBranchingImplementation m_branchingImplementation
 Store the name of the class (for logging/debugging) - "who am I?". More...
 

Detailed Description

Class for DECOMP algorithm Price and Cut.

Definition at line 31 of file DecompAlgoPC.h.

Constructor & Destructor Documentation

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

Default constructors.

Definition at line 197 of file DecompAlgoPC.h.

References DecompParam::CutCglGomory, and DecompAlgo::m_param.

DecompAlgoPC::~DecompAlgoPC ( )
inline

Destructor.

Definition at line 213 of file DecompAlgoPC.h.

DecompAlgoPC::DecompAlgoPC ( const DecompAlgoPC )
private
DecompAlgoPC::DecompAlgoPC ( DecompApp app)
inline

Definition at line 63 of file DecompAlgoPC.h.

DecompAlgoPC::~DecompAlgoPC ( )
inline

Definition at line 65 of file DecompAlgoPC.h.

Member Function Documentation

virtual void DecompAlgoPC::createMasterProblem ( DecompVarList initVars)
inlineprivatevirtual

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

Reimplemented from DecompAlgo.

Reimplemented in DecompAlgoD, and DecompAlgoD.

Definition at line 82 of file DecompAlgoPC.h.

References DecompAlgo::createMasterProblem().

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

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

Reimplemented from DecompAlgo.

Definition at line 85 of file DecompAlgoPC.h.

References DecompAlgo::generateVars().

virtual void DecompAlgoPC::phaseInit ( DecompPhase phase)
privatevirtual

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

Reimplemented from DecompAlgo.

virtual const double* DecompAlgoPC::getMasterDualSolution ( ) const
inlineprivatevirtual

Get current dual solution for master problem.

When using dual stabilization, this comes from the stabilized dual vector (m_dualST). Otherwise, it comes from m_dualSolution (which comes directly from the LP solver).

Reimplemented from DecompAlgo.

Definition at line 99 of file DecompAlgoPC.h.

References DecompParam::DualStab, DecompAlgo::m_dualSolution, m_dualST, and DecompAlgo::m_param.

virtual void DecompAlgoPC::adjustMasterDualSolution ( )
privatevirtual

Adjust the current dual solution for master problem.

When using dual stabilization, this adjusts based on Wengtes smoothing.

Reimplemented from DecompAlgo.

virtual void DecompAlgoPC::setObjBound ( const double  thisBound,
const double  thisBoundUB 
)
inlineprivatevirtual
virtual void DecompAlgoPC::setObjBoundIP ( const double  thisBound)
inlineprivatevirtual

Set the current integer bound and update best/history.

Reimplemented from DecompAlgo.

Reimplemented in DecompAlgoD.

Definition at line 143 of file DecompAlgoPC.h.

References DecompAlgo::setObjBoundIP().

void DecompAlgoPC::addCutsToPool ( const double *  x,
DecompCutList newCuts,
int &  n_newCuts 
)
privatevirtual

Reimplemented from DecompAlgo.

void DecompAlgoPC::phaseDone ( )
privatevirtual

Run the done phase for processing node.

Reimplemented from DecompAlgo.

int DecompAlgoPC::addCutsFromPool ( )
privatevirtual

Reimplemented from DecompAlgo.

void DecompAlgoPC::solveMasterAsMIP ( )
privatevirtual

The main DECOMP process loop for a node.

Reimplemented from DecompAlgo.

void DecompAlgoPC::solveMasterAsMIPSym ( DecompSolverResult result)
private
void DecompAlgoPC::solveMasterAsMIPCbc ( DecompSolverResult result)
private
void DecompAlgoPC::solveMasterAsMIPCpx ( DecompSolverResult result)
private
void DecompAlgoPC::solveMasterAsMIPGrb ( DecompSolverResult result)
private
int DecompAlgoPC::adjustColumnsEffCnt ( )
privatevirtual

The main DECOMP process loop for a node.

Reimplemented from DecompAlgo.

int DecompAlgoPC::compressColumns ( )
privatevirtual

The main DECOMP process loop for a node.

Reimplemented from DecompAlgo.

std::vector<double>& DecompAlgoPC::getDualBest ( )
inline

Default constructors.

Definition at line 186 of file DecompAlgoPC.h.

References m_dual.

std::vector<double>& DecompAlgoPC::getDualRMP ( )
inline

Default constructors.

Definition at line 189 of file DecompAlgoPC.h.

References m_dualRM.

DecompAlgoPC& DecompAlgoPC::operator= ( const DecompAlgoPC )
private
virtual void DecompAlgoPC::setMasterBounds ( const double *  lbs,
const double *  ubs 
)
virtual

Reimplemented from DecompAlgo.

virtual void DecompAlgoPC::createMasterProblem ( DecompVarList initVars)
virtual

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

Reimplemented from DecompAlgo.

Reimplemented in DecompAlgoD, and DecompAlgoD.

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

Reimplemented from DecompAlgo.

int DecompAlgoPC::addCutsFromPool ( )
virtual

Reimplemented from DecompAlgo.

void DecompAlgoPC::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 from DecompAlgo.

Member Data Documentation

std::string DecompAlgoPC::m_classTag
private

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

Definition at line 44 of file DecompAlgoPC.h.

Referenced by setObjBound().

std::vector<double> DecompAlgoPC::m_dual
private

Dual vector.

The stabilized dual (copied from m_dualST) when the bound has improved. This dual vector is the one used in reduced-cost calculations when using a stabilized dual method (m_param.DualStab > 0).

Definition at line 53 of file DecompAlgoPC.h.

Referenced by getDualBest(), and setObjBound().

std::vector<double> DecompAlgoPC::m_dualRM
private

Dual vector from restricted master.

A copy of the dual vector from the restricted master.

Definition at line 60 of file DecompAlgoPC.h.

Referenced by getDualRMP().

std::vector<double> DecompAlgoPC::m_dualST
private

Dual vector stabilized.

The stabilized dual from dual stabilization method.

Definition at line 67 of file DecompAlgoPC.h.

Referenced by getMasterDualSolution(), and setObjBound().

const char* DecompAlgoPC::classTag
staticprivate

Definition at line 28 of file DecompAlgoPC.h.


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