Dip
0.92.4
|
Base class for DECOMP algorithms. More...
#include <DecompAlgo.h>
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) |
OsiSolverInterface * | initSolverInterface () |
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) |
OsiSolverInterface * | getMasterSolverInterface () |
virtual const double * | getRowPrice () const |
const double * | getX () |
DecompApp * | getApp () |
const DecompSolution * | getXhatIPBest () |
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 () |
OsiSolverInterface * | initSolverInterface () |
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) |
OsiSolverInterface * | getMasterSolverInterface () |
virtual const double * | getRowPrice () const |
const double * | getX () |
DecompApp * | getApp () |
const DecompSolution * | getXhatIPBest () |
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) |
Create the master problem (all algorithms must define this function). More... | |
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 AlpsDecompTreeNode * | getCurrentNode () 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 () |
The main DECOMP process loop for a node. More... | |
virtual int | adjustColumnsEffCnt () |
The main DECOMP process loop for a node. More... | |
virtual int | compressColumns () |
The main DECOMP process loop for a node. More... | |
Helper functions. | |
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... | |
OsiSolverInterface * | getOsiLpSolverInterface () |
Initial setup of algorithm structures and solver interfaces. More... | |
OsiSolverInterface * | getOsiIpSolverInterface () |
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 DecompSolverResult * | solveDirect (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... | |
Set/get methods. | |
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... | |
DecompStats & | getStats () |
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 DecompSubModel & | getModelCore () 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 DecompParam & | getParam () const |
Get a ptr to the current solution (in x-space). More... | |
DecompParam & | getMutableParam () |
Get a ptr to the current solution (in x-space). More... | |
OsiSolverInterface * | getMasterOSI () |
Get a ptr to the current solution (in x-space). More... | |
DecompSubModel & | getModelRelax (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 DecompSolution * | getXhatIPBest () 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... | |
DecompStats & | getDecompStats () |
Get a ptr to the current solution (in x-space). More... | |
const DecompParam & | getDecompParam () const |
Get a ptr to the current solution (in x-space). More... | |
const DecompApp * | getDecompApp () const |
Get a ptr to the current solution (in x-space). More... | |
DecompApp * | getDecompAppMutable () |
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... | |
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 |
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... | |
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) |
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... | |
Constructors and destructor. | |
DecompAlgo (const DecompAlgoType algo, DecompApp *app, UtilParameters &utilParam, bool doSetup=true) | |
Default constructors. More... | |
virtual | ~DecompAlgo () |
Destructor. More... | |
Public Attributes | |
DecompConstraintSet * | m_modelCore |
DecompConstraintSet * | m_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... | |
UtilParameters * | m_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... | |
DecompApp * | m_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... | |
DecompAlgoCGL * | m_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... | |
OsiSolverInterface * | m_masterSI |
Solver interface(s) for subproblems (P'). More... | |
OsiClpSolverInterface * | m_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... | |
OsiSolverInterface * | m_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, DecompSubModel > | m_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... | |
DecompSolution * | m_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< DecompRowType > | m_masterRowType |
Store the name of the class (for logging/debugging) - "who am I?". More... | |
std::vector< DecompColType > | m_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 AlpsDecompTreeNode * | m_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... | |
Private Member Functions | |
DecompAlgo (const DecompAlgo &) | |
DecompAlgo & | operator= (const DecompAlgo &) |
DecompAlgo (const DecompAlgo &) | |
DecompAlgo & | operator= (const DecompAlgo &) |
Private Attributes | |
decompAlgoType | m_algo |
Static Private Attributes | |
static const char * | m_classTag |
static const char * | versionTag |
Base class for DECOMP algorithms.
Definition at line 62 of file DecompAlgo.h.
|
inline |
Default constructors.
Definition at line 979 of file DecompAlgo.h.
References DecompParam::BranchEnforceInMaster, DecompParam::BranchEnforceInSubProb, DecompAlgoStr, DecompBranchInMaster, DecompBranchInSubproblem, DecompParam::dumpSettings(), DecompParam::getSettings(), initSetup(), DecompParam::LogLevel, m_app, m_branchingImplementation, DecompApp::m_decompAlgo, m_osLog, m_param, and UtilException.
|
inlinevirtual |
Destructor.
Definition at line 1063 of file DecompAlgo.h.
References m_auxSI, m_cgl, m_colLBNode, m_colUBNode, m_cutgenSI, m_cuts, m_masterSI, m_vars, m_xhat, m_xhatIPFeas, UTIL_DELARR, UTIL_DELPTR, UtilDeleteListPtr(), and UtilDeleteVectorPtr().
|
private |
|
inline |
Definition at line 326 of file DecompAlgo.h.
|
inlinevirtual |
Definition at line 359 of file DecompAlgo.h.
References m_cuts, m_masterSI, m_subprobSI, m_vars, m_xhat, m_xhatIPFeas, UTIL_DELARR, UTIL_DELPTR, UtilDeleteListPtr(), and UtilDeleteVectorPtr().
|
private |
|
inline |
Definition at line 314 of file DecompAlgo.old.h.
|
inlinevirtual |
Definition at line 348 of file DecompAlgo.old.h.
References m_cuts, m_masterSI, m_subprobSI, m_vars, m_xhat, m_xhatIPFeas, UTIL_DELARR, UTIL_DELPTR, UtilDeleteListPtr(), and UtilDeleteVectorPtr().
|
virtual |
Create the master problem (all algorithms must define this function).
Reimplemented in DecompAlgoPC, DecompAlgoD, DecompAlgoRC, DecompAlgoC, DecompAlgoRC, DecompAlgoD, DecompAlgoPC, and DecompAlgoC.
Referenced by DecompAlgoPC::createMasterProblem().
void DecompAlgo::loadSIFromModel | ( | OsiSolverInterface * | si, |
bool | doInt = false |
||
) |
Create the master problem (all algorithms must define this function).
|
virtual |
Compose solution in x-space from current space.
Reimplemented in DecompAlgoRC, DecompAlgoC, DecompAlgoPC, DecompAlgoD, and DecompAlgoC.
|
virtual |
The main DECOMP process loop for a node.
Referenced by DecompAlgoD::solveD().
|
inline |
Provide the current node the algorithm is solving.
Definition at line 316 of file DecompAlgo.h.
References m_curNode.
|
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.
|
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.
|
virtual |
Generate initial variables for master problem (PC/DC/RC).
Reimplemented in DecompAlgoC, and DecompAlgoC.
|
virtual |
Update of the solution vectors (primal and/or dual).
|
virtual |
Update of the phase for process loop.
Reimplemented in DecompAlgoC, and DecompAlgoD.
|
inlinevirtual |
Run the initial phase for processing node.
Reimplemented in DecompAlgoPC, and DecompAlgoC.
Definition at line 359 of file DecompAlgo.h.
References getNodeIndex(), and PHASE_PRICE1.
|
inlinevirtual |
Run the done phase for processing node.
Reimplemented in DecompAlgoPC, DecompAlgoRC, DecompAlgoC, and DecompAlgoD.
Definition at line 368 of file DecompAlgo.h.
|
virtual |
Calculate the current LB and update best/history.
Reimplemented in DecompAlgoRC, and DecompAlgoC.
|
inlinevirtual |
The main DECOMP process loop for a node.
Reimplemented in DecompAlgoPC.
Definition at line 376 of file DecompAlgo.h.
|
inlinevirtual |
The main DECOMP process loop for a node.
Reimplemented in DecompAlgoPC.
Definition at line 378 of file DecompAlgo.h.
References DecompStatOk.
|
inlinevirtual |
The main DECOMP process loop for a node.
Reimplemented in DecompAlgoPC.
Definition at line 381 of file DecompAlgo.h.
References DecompStatOk.
|
inline |
Definition at line 387 of file DecompAlgo.h.
References DecompParam::LogDebugLevel, m_param, m_relGap, DecompParam::MasterGapLimit, and UtilDblToStr().
|
inline |
|
inlinevirtual |
Reimplemented in DecompAlgoRC, and DecompAlgoRC.
Definition at line 416 of file DecompAlgo.h.
References DecompNodeStats::cutsThisCall, m_nodeStats, and DecompNodeStats::varsThisCall.
std::vector<double*> DecompAlgo::getDualRays | ( | int | maxNumRays | ) |
std::vector<double*> DecompAlgo::getDualRaysCpx | ( | int | maxNumRays | ) |
std::vector<double*> DecompAlgo::getDualRaysOsi | ( | int | maxNumRays | ) |
|
virtual |
Reimplemented in DecompAlgoRC, and DecompAlgoPC.
Referenced by DecompAlgoPC::generateVars().
|
virtual |
|
virtual |
|
virtual |
|
virtual |
Reimplemented in DecompAlgoPC, and DecompAlgoPC.
|
virtual |
Reimplemented in DecompAlgoPC, DecompAlgoRC, DecompAlgoRC, and DecompAlgoPC.
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 |
||
) |
bool DecompAlgo::isLPFeasible | ( | const double * | x, |
const bool | isXSparse = false , |
||
const double | feasVarTol = 1.0e-6 , |
||
const double | feasConTol = 1.0e-5 |
||
) |
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 | ||
) |
|
inline |
Definition at line 466 of file DecompAlgo.h.
References m_vars.
|
inline |
Definition at line 469 of file DecompAlgo.h.
References m_vars.
|
virtual |
Reimplemented in DecompAlgoC, and DecompAlgoPC.
|
virtual |
Reimplemented in DecompAlgoC.
|
virtual |
Reimplemented in DippyAlgoRC, DippyAlgoPC, and DippyAlgoC.
void DecompAlgo::initSetup | ( | ) |
Initial setup of algorithm structures and solver interfaces.
Referenced by DecompAlgo(), and DecompAlgoC::DecompAlgoC().
void DecompAlgo::getModelsFromApp | ( | ) |
Initial setup of algorithm structures and solver interfaces.
void DecompAlgo::createOsiSubProblem | ( | DecompSubModel & | subModel | ) |
Initial setup of algorithm structures and solver interfaces.
OsiSolverInterface* DecompAlgo::getOsiLpSolverInterface | ( | ) |
Initial setup of algorithm structures and solver interfaces.
OsiSolverInterface* DecompAlgo::getOsiIpSolverInterface | ( | ) |
Initial setup of algorithm structures and solver interfaces.
void DecompAlgo::coreMatrixAppendColBounds | ( | ) |
Calculate gap: |(ub-lb)|/|lb|.
void DecompAlgo::checkMasterDualObj | ( | ) |
Initial setup of algorithm structures and solver interfaces.
bool DecompAlgo::checkPointFeasible | ( | const DecompConstraintSet * | modelCore, |
const double * | x | ||
) |
Initial setup of algorithm structures and solver interfaces.
bool DecompAlgo::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.
bool DecompAlgo::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.
void DecompAlgo::printBasisInfo | ( | OsiSolverInterface * | si, |
std::ostream * | os | ||
) |
Initial setup of algorithm structures and solver interfaces.
void DecompAlgo::printCurrentProblemDual | ( | OsiSolverInterface * | si, |
const std::string | baseName, | ||
const int | nodeIndex, | ||
const int | cutPass, | ||
const int | pricePass | ||
) |
Initial setup of algorithm structures and solver interfaces.
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 |
||
) |
Initial setup of algorithm structures and solver interfaces.
void DecompAlgo::printCurrentProblem | ( | const OsiSolverInterface * | si, |
const std::string | fileName, | ||
const bool | printMps = true , |
||
const bool | printLp = true |
||
) |
Initial setup of algorithm structures and solver interfaces.
void DecompAlgo::printVars | ( | std::ostream * | os | ) |
Initial setup of algorithm structures and solver interfaces.
void DecompAlgo::printCuts | ( | std::ostream * | os | ) |
Initial setup of algorithm structures and solver interfaces.
void DecompAlgo::checkDuals | ( | ) |
Initial setup of algorithm structures and solver interfaces.
void DecompAlgo::checkReducedCost | ( | const double * | u, |
const double * | u_adjusted | ||
) |
Initial setup of algorithm structures and solver interfaces.
void DecompAlgo::createFullMps | ( | const std::string | fileName | ) |
Initial setup of algorithm structures and solver interfaces.
|
inlinevirtual |
Initial setup of algorithm structures and solver interfaces.
Reimplemented in DecompAlgoC.
Definition at line 585 of file DecompAlgo.h.
void DecompAlgo::masterMatrixAddMOCols | ( | CoinPackedMatrix * | masterM, |
double * | colLB, | ||
double * | colUB, | ||
double * | objCoeff, | ||
std::vector< std::string > & | colNames | ||
) |
Initial setup of algorithm structures and solver interfaces.
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 | ||
) |
Initial setup of algorithm structures and solver interfaces.
|
virtual |
Initial setup of algorithm structures and solver interfaces.
void DecompAlgo::masterPhaseItoII | ( | ) |
Initial setup of algorithm structures and solver interfaces.
void DecompAlgo::masterPhaseIItoI | ( | ) |
Initial setup of algorithm structures and solver interfaces.
|
inline |
Initial setup of algorithm structures and solver interfaces.
Definition at line 618 of file DecompAlgo.h.
References DecompCol_MasterOnly, and m_masterColType.
|
inline |
Initial setup of algorithm structures and solver interfaces.
Definition at line 621 of file DecompAlgo.h.
References DecompCol_Structural, DecompCol_Structural_NoDelete, and m_masterColType.
|
inline |
Initial setup of algorithm structures and solver interfaces.
Definition at line 625 of file DecompAlgo.h.
References DecompCol_ArtForBranchG, DecompCol_ArtForBranchL, DecompCol_ArtForConvexG, DecompCol_ArtForConvexL, DecompCol_ArtForCutG, DecompCol_ArtForCutL, DecompCol_ArtForRowG, DecompCol_ArtForRowL, and m_masterColType.
void DecompAlgo::breakOutPartial | ( | const double * | xHat, |
DecompVarList & | newVars, | ||
const double | intTol = 1.0e-5 |
||
) |
Initial setup of algorithm structures and solver interfaces.
void DecompAlgo::generateVarsAdjustDuals | ( | const double * | uOld, |
double * | uNew | ||
) |
Create an adjusted dual vector with the duals from the convexity constraints removed.
void DecompAlgo::generateVarsCalcRedCost | ( | const double * | u, |
double * | redCostX | ||
) |
Calculated reduced cost vector (over vars in compact space) for a given dual vector.
|
inline |
Get a ptr to the current solution (in x-space).
Definition at line 667 of file DecompAlgo.h.
References m_colLBNode.
|
inline |
Get a ptr to the current solution (in x-space).
Definition at line 670 of file DecompAlgo.h.
References m_colUBNode.
|
inline |
Get a ptr to the current solution (in x-space).
Definition at line 677 of file DecompAlgo.h.
References m_stats.
|
inline |
Get a ptr to the current solution (in x-space).
Definition at line 681 of file DecompAlgo.h.
References m_app, and DecompApp::m_objective.
|
inline |
Get a ptr to the current solution (in x-space).
Definition at line 684 of file DecompAlgo.h.
References m_modelCore.
Referenced by AlpsDecompModel::getColNames(), AlpsDecompModel::getNumCoreCols(), AlpsDecompModel::getNumCoreRows(), AlpsDecompModel::getRowNames(), and AlpsDecompSolution::print().
|
inline |
Get a ptr to the current solution (in x-space).
Definition at line 688 of file DecompAlgo.h.
References m_algo.
|
inline |
Get a ptr to the current solution (in x-space).
Definition at line 692 of file DecompAlgo.h.
References m_param.
|
inline |
Get a ptr to the current solution (in x-space).
Definition at line 696 of file DecompAlgo.h.
References m_param.
|
inline |
Get a ptr to the current solution (in x-space).
Definition at line 700 of file DecompAlgo.h.
References m_masterSI.
|
inline |
Get a ptr to the current solution (in x-space).
Definition at line 704 of file DecompAlgo.h.
References m_modelRelax.
|
inline |
Get a ptr to the current solution (in x-space).
Definition at line 715 of file DecompAlgo.h.
References m_xhat.
|
inline |
Get a ptr to the current solution (in x-space).
Definition at line 719 of file DecompAlgo.h.
References m_cutoffUB, and setObjBoundIP().
|
inline |
Get a ptr to the current solution (in x-space).
Definition at line 725 of file DecompAlgo.h.
References m_xhatIPBest.
Referenced by AlpsDecompModel::getBestSolution().
|
inline |
Get a ptr to the current solution (in x-space).
Definition at line 729 of file DecompAlgo.h.
References m_xhatIPFeas.
|
inline |
Get a ptr to the current solution (in x-space).
Definition at line 733 of file DecompAlgo.h.
References m_cutoffUB.
|
inline |
Get a ptr to the current solution (in x-space).
Definition at line 737 of file DecompAlgo.h.
References m_stats.
|
inline |
Get a ptr to the current solution (in x-space).
Definition at line 741 of file DecompAlgo.h.
References m_param.
|
inline |
Get a ptr to the current solution (in x-space).
Definition at line 745 of file DecompAlgo.h.
References m_app.
|
inline |
Get a ptr to the current solution (in x-space).
Definition at line 748 of file DecompAlgo.h.
References m_app.
|
inline |
Get a ptr to the current solution (in x-space).
Definition at line 752 of file DecompAlgo.h.
References m_nodeStats, and DecompNodeStats::nodeIndex.
Referenced by DecompAlgoC::phaseInit(), phaseInit(), and setObjBound().
|
inline |
Get a ptr to the current solution (in x-space).
Definition at line 756 of file DecompAlgo.h.
References DecompNodeStats::cutCallsTotal, and m_nodeStats.
|
inline |
Get a ptr to the current solution (in x-space).
Definition at line 760 of file DecompAlgo.h.
References m_nodeStats, and DecompNodeStats::priceCallsTotal.
|
inline |
Get current primal solution for master problem.
Definition at line 767 of file DecompAlgo.h.
References m_primSolution.
Referenced by getMasterObjValue().
|
inline |
Get a ptr to the current solution (in x-space).
Definition at line 771 of file DecompAlgo.h.
References m_reducedCost.
|
inlinevirtual |
Get current dual solution for master problem.
Reimplemented in DecompAlgoPC.
Definition at line 777 of file DecompAlgo.h.
References m_dualSolution.
|
inlinevirtual |
Adjust the current dual solution for master problem.
Reimplemented in DecompAlgoPC.
Definition at line 784 of file DecompAlgo.h.
|
inline |
Get a ptr to the current solution (in x-space).
Definition at line 787 of file DecompAlgo.h.
References getMasterPrimalSolution(), OsiSolverInterface::getObjCoefficients(), m_infinity, m_masterSI, and m_primSolution.
|
inline |
Get a ptr to the current solution (in x-space).
Definition at line 805 of file DecompAlgo.h.
References m_stopCriteria.
|
inline |
Get the current global (integrality) gap.
Definition at line 812 of file DecompAlgo.h.
References m_globalLB, m_globalUB, m_infinity, and UtilCalculateGap().
|
inline |
Get the current node (integrality) gap.
Definition at line 819 of file DecompAlgo.h.
References getObjBestBoundLB(), getObjBestBoundUB(), m_infinity, and UtilCalculateGap().
|
inline |
Get the current node (continuous) gap.
Definition at line 826 of file DecompAlgo.h.
References getObjBestBoundLB(), m_infinity, m_nodeStats, DecompNodeStats::objHistoryBound, DecompObjBound::thisBoundUB, and UtilCalculateGap().
|
inline |
Get the current best LB.
Definition at line 842 of file DecompAlgo.h.
References m_nodeStats, and DecompNodeStats::objBest.
Referenced by getNodeIPGap(), and getNodeLPGap().
|
inline |
Set the object to be in strong branching mode.
Definition at line 849 of file DecompAlgo.h.
References m_isStrongBranch.
|
inline |
Get the current best UB.
Definition at line 856 of file DecompAlgo.h.
References m_nodeStats, and DecompNodeStats::objBest.
Referenced by getNodeIPGap().
|
inline |
|
inlinevirtual |
Set the current continuous bounds and update best/history.
Reimplemented in DecompAlgoPC.
Definition at line 870 of file DecompAlgo.h.
References DecompObjBound::bestBound, DecompObjBound::bestBoundIP, DecompNodeStats::cutCallsTotal, DecompObjBound::cutPass, getNodeIndex(), UtilTimer::getRealTime(), globalTimer, DecompParam::LogDebugLevel, m_classTag, m_globalLB, m_infinity, m_nodeStats, m_osLog, m_param, m_phase, DecompNodeStats::objBest, DecompNodeStats::objHistoryBound, DecompObjBound::phase, PHASE_PRICE1, DecompNodeStats::priceCallsTotal, DecompObjBound::pricePass, DecompObjBound::thisBound, DecompObjBound::thisBoundUB, DecompObjBound::timeStamp, UtilPrintFuncBegin(), and UtilPrintFuncEnd().
Referenced by DecompAlgoPC::setObjBound().
|
inlinevirtual |
Set the current integer bound and update best/history.
Reimplemented in DecompAlgoPC, and DecompAlgoD.
Definition at line 904 of file DecompAlgo.h.
References DecompObjBound::bestBoundIP, DecompNodeStats::getLastBound(), UtilTimer::getRealTime(), globalTimer, DecompParam::LogDebugLevel, m_app, m_classTag, m_infinity, m_nodeStats, m_osLog, DecompApp::m_param, m_param, DecompNodeStats::objBest, DecompNodeStats::objHistoryBound, DecompObjBound::thisBoundIP, DecompObjBound::timeStamp, UTIL_MSG, UtilDblToStr(), UtilPrintFuncBegin(), and UtilPrintFuncEnd().
Referenced by setCutoffUB(), and DecompAlgoPC::setObjBoundIP().
bool DecompAlgo::isTailoffLB | ( | const int | changeLen = 10 , |
const double | changePerLimit = 0.1 |
||
) |
Get a ptr to the current solution (in x-space).
|
inline |
Get a ptr to the current solution (in x-space).
Definition at line 942 of file DecompAlgo.h.
References m_masterRowType.
void DecompAlgo::checkBlocksColumns | ( | ) |
Get a ptr to the current solution (in x-space).
|
private |
OsiSolverInterface* DecompAlgo::initSolverInterface | ( | ) |
void DecompAlgo::startupLog | ( | ) |
void DecompAlgo::initSetup | ( | int | whichModel = 1 | ) |
void DecompAlgo::tighten | ( | int | whichModel | ) |
void DecompAlgo::solve | ( | int | whichModel = 1 | ) |
Referenced by DecompAlgoD::solveD().
|
inline |
Definition at line 134 of file DecompAlgo.h.
References m_tlb.
|
inline |
Definition at line 137 of file DecompAlgo.h.
References m_tub.
void DecompAlgo::setTrueLowerBound | ( | const double | mostNegReducedCost | ) |
|
inline |
Definition at line 143 of file DecompAlgo.h.
References m_tub.
double DecompAlgo::calcConstant | ( | const int | m, |
const double * | u | ||
) |
bool DecompAlgo::isDualRayInfProof | ( | const double * | dualRay, |
const CoinPackedMatrix * | rowMatrix, | ||
const double * | colLB, | ||
const double * | colUB, | ||
const double * | rowRhs, | ||
ostream * | os = 0 |
||
) |
void DecompAlgo::printBasisInfo | ( | OsiSolverInterface * | si, |
ostream * | os | ||
) |
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 |
||
) |
void DecompAlgo::printCurrentProblem | ( | const OsiSolverInterface * | si, |
const string | fileName, | ||
const bool | printMps = true , |
||
const bool | printLp = true |
||
) |
void DecompAlgo::printVars | ( | ostream * | os = &cout | ) |
void DecompAlgo::printCuts | ( | ostream * | os = &cout | ) |
void DecompAlgo::solveBruteForce | ( | ) |
void DecompAlgo::createFullMps | ( | const string | filename | ) |
vector<double*> DecompAlgo::getDualRays | ( | int | maxNumRays | ) |
|
inline |
Definition at line 177 of file DecompAlgo.h.
References m_app.
|
inline |
Definition at line 182 of file DecompAlgo.h.
References m_bestUpperBound.
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 | ||
) |
|
pure virtual |
Implemented in DecompAlgoPC, DecompAlgoD, DecompAlgoRC, DecompAlgoC, DecompAlgoRC, DecompAlgoD, DecompAlgoPC, and DecompAlgoC.
|
virtual |
Reimplemented in DecompAlgoRC.
|
virtual |
Reimplemented in DecompAlgoD, and DecompAlgoC.
|
virtual |
Reimplemented in DecompAlgoC, and DecompAlgoPC.
|
inline |
Definition at line 226 of file DecompAlgo.h.
References m_masterSI.
|
inlinevirtual |
Reimplemented in DecompAlgoRC.
Definition at line 230 of file DecompAlgo.h.
References OsiSolverInterface::getRowPrice(), and m_masterSI.
|
inline |
Definition at line 234 of file DecompAlgo.h.
References m_xhat.
|
inline |
Definition at line 238 of file DecompAlgo.h.
References m_app.
|
inline |
Definition at line 242 of file DecompAlgo.h.
References m_xhatIPBest.
|
inlinevirtual |
Definition at line 247 of file DecompAlgo.h.
References m_modelCore.
|
inlinevirtual |
Definition at line 251 of file DecompAlgo.h.
References m_modelCore.
int DecompAlgo::heuristics | ( | const double * | xhat, |
vector< DecompSolution * > & | xhatIPFeas | ||
) |
|
virtual |
Reimplemented in DecompAlgoRC, and DecompAlgoC.
|
virtual |
|
inlinevirtual |
Reimplemented in DecompAlgoRC, DecompAlgoC, DecompAlgoPC, DecompAlgoD, and DecompAlgoC.
Definition at line 267 of file DecompAlgo.h.
|
virtual |
Reimplemented in DecompAlgoC, and DecompAlgoC.
|
inlinevirtual |
Reimplemented in DecompAlgoRC, and DecompAlgoRC.
Definition at line 273 of file DecompAlgo.h.
void DecompAlgo::addVarsToPool | ( | DecompVarList & | newVars | ) |
void DecompAlgo::addVarsFromPool | ( | ) |
bool DecompAlgo::isIPFeasible | ( | const double * | x, |
const double | feasTol = 1.0e-4 , |
||
const double | intTol = 1.0e-4 |
||
) |
bool DecompAlgo::isLPFeasible | ( | const double * | x, |
const double | feasTol = 1.0e-4 |
||
) |
|
virtual |
Reimplemented in DecompAlgoPC, and DecompAlgoPC.
|
virtual |
Reimplemented in DecompAlgoPC, DecompAlgoRC, DecompAlgoRC, and DecompAlgoPC.
int DecompAlgo::chooseBranchVar | ( | int & | branchedOnIndex, |
double & | branchedOnValue | ||
) |
|
virtual |
Reimplemented in DecompAlgoC.
decompStat DecompAlgo::processNode | ( | const int | nodeIndex = 0 | ) |
|
inline |
Definition at line 307 of file DecompAlgo.h.
References m_vars.
|
inline |
Definition at line 310 of file DecompAlgo.h.
References m_vars.
|
private |
OsiSolverInterface* DecompAlgo::initSolverInterface | ( | ) |
void DecompAlgo::startupLog | ( | ) |
void DecompAlgo::initSetup | ( | int | whichModel = 1 | ) |
void DecompAlgo::tighten | ( | int | whichModel | ) |
|
inline |
Definition at line 124 of file DecompAlgo.old.h.
References m_tlb.
|
inline |
Definition at line 127 of file DecompAlgo.old.h.
References m_tub.
void DecompAlgo::setTrueLowerBound | ( | const double | mostNegReducedCost | ) |
|
inline |
Definition at line 133 of file DecompAlgo.old.h.
References m_tub.
double DecompAlgo::calcConstant | ( | const int | m, |
const double * | u | ||
) |
bool DecompAlgo::isDualRayInfProof | ( | const double * | dualRay, |
const CoinPackedMatrix * | rowMatrix, | ||
const double * | colLB, | ||
const double * | colUB, | ||
const double * | rowRhs, | ||
ostream * | os = 0 |
||
) |
void DecompAlgo::printBasisInfo | ( | OsiSolverInterface * | si, |
ostream * | os | ||
) |
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 |
||
) |
void DecompAlgo::printCurrentProblem | ( | const OsiSolverInterface * | si, |
const string | fileName, | ||
const bool | printMps = true , |
||
const bool | printLp = true |
||
) |
void DecompAlgo::printVars | ( | ostream * | os = &cout | ) |
void DecompAlgo::printCuts | ( | ostream * | os = &cout | ) |
void DecompAlgo::solveBruteForce | ( | ) |
void DecompAlgo::createFullMps | ( | const string | filename | ) |
vector<double*> DecompAlgo::getDualRays | ( | int | maxNumRays | ) |
|
inline |
Definition at line 167 of file DecompAlgo.old.h.
References m_app.
|
inline |
Definition at line 172 of file DecompAlgo.old.h.
References m_bestUpperBound.
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 | ||
) |
|
pure virtual |
Implemented in DecompAlgoPC, DecompAlgoD, DecompAlgoRC, DecompAlgoC, DecompAlgoRC, DecompAlgoD, DecompAlgoPC, and DecompAlgoC.
|
virtual |
Reimplemented in DecompAlgoRC.
|
virtual |
|
virtual |
Reimplemented in DecompAlgoC, and DecompAlgoPC.
|
inline |
Definition at line 216 of file DecompAlgo.old.h.
References m_masterSI.
|
inlinevirtual |
Reimplemented in DecompAlgoRC.
Definition at line 220 of file DecompAlgo.old.h.
References OsiSolverInterface::getRowPrice(), and m_masterSI.
|
inline |
Definition at line 224 of file DecompAlgo.old.h.
References m_xhat.
|
inline |
Definition at line 228 of file DecompAlgo.old.h.
References m_app.
|
inline |
Definition at line 232 of file DecompAlgo.old.h.
References m_xhatIPBest.
|
inlinevirtual |
Definition at line 237 of file DecompAlgo.old.h.
References m_modelCore.
|
inlinevirtual |
Definition at line 241 of file DecompAlgo.old.h.
References m_modelCore.
int DecompAlgo::heuristics | ( | const double * | xhat, |
vector< DecompSolution * > & | xhatIPFeas | ||
) |
|
virtual |
|
virtual |
|
inlinevirtual |
Reimplemented in DecompAlgoRC, DecompAlgoC, DecompAlgoPC, DecompAlgoD, and DecompAlgoC.
Definition at line 257 of file DecompAlgo.old.h.
|
virtual |
Reimplemented in DecompAlgoC, and DecompAlgoC.
|
inlinevirtual |
Reimplemented in DecompAlgoRC, and DecompAlgoRC.
Definition at line 263 of file DecompAlgo.old.h.
void DecompAlgo::addVarsToPool | ( | DecompVarList & | newVars | ) |
void DecompAlgo::addVarsFromPool | ( | ) |
bool DecompAlgo::isIPFeasible | ( | const double * | x, |
const double | feasTol = 1.0e-4 , |
||
const double | intTol = 1.0e-4 |
||
) |
bool DecompAlgo::isLPFeasible | ( | const double * | x, |
const double | feasTol = 1.0e-4 |
||
) |
|
virtual |
Reimplemented in DecompAlgoPC, and DecompAlgoPC.
|
virtual |
Reimplemented in DecompAlgoPC, DecompAlgoRC, DecompAlgoRC, and DecompAlgoPC.
int DecompAlgo::chooseBranchVar | ( | int & | branchedOnIndex, |
double & | branchedOnValue | ||
) |
|
virtual |
Reimplemented in DecompAlgoC.
DecompStat DecompAlgo::processNode | ( | const int | nodeIndex = 0 , |
const double | globalLB = -DecompInf , |
||
const double | globalUB = DecompInf |
||
) |
|
inline |
Definition at line 297 of file DecompAlgo.old.h.
References m_vars.
|
inline |
Definition at line 300 of file DecompAlgo.old.h.
References m_vars.
|
protected |
Store the name of the class (for logging/debugging) - "who am I?".
Definition at line 75 of file DecompAlgo.h.
Referenced by setObjBound(), and setObjBoundIP().
|
protected |
Parameters.
Definition at line 80 of file DecompAlgo.h.
Referenced by DecompAlgo(), DecompAlgoD::DecompAlgoD(), DecompAlgoPC::DecompAlgoPC(), getDecompParam(), DecompAlgoPC::getMasterDualSolution(), getMutableParam(), getParam(), isGapTight(), DecompAlgoPC::setObjBound(), setObjBound(), DecompAlgoD::setObjBoundIP(), setObjBoundIP(), and DecompAlgoD::solveD().
|
protected |
Store the name of the class (for logging/debugging) - "who am I?".
Definition at line 81 of file DecompAlgo.h.
|
protected |
Type of algorithm for this instance.
Definition at line 86 of file DecompAlgo.h.
Referenced by getAlgo().
|
protected |
The current algorithm status.
Definition at line 91 of file DecompAlgo.h.
|
protected |
The value of "infinity".
Definition at line 96 of file DecompAlgo.h.
Referenced by getGlobalGap(), getInfinity(), getMasterObjValue(), getNodeIPGap(), getNodeLPGap(), setObjBound(), setObjBoundIP(), and DecompAlgoD::solveD().
|
protected |
The current algorithm phase.
Definition at line 101 of file DecompAlgo.h.
Referenced by setObjBound().
|
protected |
Store the name of the class (for logging/debugging) - "who am I?".
Definition at line 102 of file DecompAlgo.h.
|
protected |
Store the name of the class (for logging/debugging) - "who am I?".
Definition at line 103 of file DecompAlgo.h.
|
protected |
Pointer to current active DECOMP application.
Definition at line 108 of file DecompAlgo.h.
Referenced by DecompAlgo(), getApp(), getDecompApp(), getDecompAppMutable(), getOrigObjective(), setApp(), DecompAlgoD::setObjBoundIP(), setObjBoundIP(), and DecompAlgoD::solveD().
|
protected |
Storage of statistics for run and node.
Definition at line 113 of file DecompAlgo.h.
Referenced by getDecompStats(), and getStats().
|
protected |
Store the name of the class (for logging/debugging) - "who am I?".
Definition at line 114 of file DecompAlgo.h.
Referenced by getCutCallsTotal(), getNodeIndex(), getNodeLPGap(), getObjBestBoundLB(), getObjBestBoundUB(), getPriceCallsTotal(), isDone(), DecompAlgoPC::setObjBound(), setObjBound(), DecompAlgoD::setObjBoundIP(), and setObjBoundIP().
|
protected |
Memory pool used to reduce the number of allocations needed.
Definition at line 119 of file DecompAlgo.h.
|
protected |
Stream for log file (default to stdout).
Definition at line 124 of file DecompAlgo.h.
Referenced by DecompAlgo(), DecompAlgoPC::setObjBound(), setObjBound(), DecompAlgoD::setObjBoundIP(), and setObjBoundIP().
|
protected |
Store the name of the class (for logging/debugging) - "who am I?".
Definition at line 126 of file DecompAlgo.h.
Referenced by ~DecompAlgo().
|
protected |
Pointer (and label) to current active model core/relax.
Definition at line 133 of file DecompAlgo.h.
|
protected |
Store the name of the class (for logging/debugging) - "who am I?".
Definition at line 134 of file DecompAlgo.h.
|
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.
Referenced by getMasterObjValue(), getMasterOSI(), getMasterSolverInterface(), getRowPrice(), and ~DecompAlgo().
|
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.
Referenced by ~DecompAlgo().
|
protected |
Store the name of the class (for logging/debugging) - "who am I?".
Definition at line 156 of file DecompAlgo.h.
|
protected |
Store the name of the class (for logging/debugging) - "who am I?".
Definition at line 157 of file DecompAlgo.h.
Referenced by ~DecompAlgo().
|
protected |
Store the name of the class (for logging/debugging) - "who am I?".
Definition at line 160 of file DecompAlgo.h.
|
protected |
Store the name of the class (for logging/debugging) - "who am I?".
Definition at line 161 of file DecompAlgo.h.
Referenced by getModelCore(), BcpsDecompModel::getNumCols(), BcpsDecompModel::getNumRows(), getRightHandSide(), and getRowSense().
|
protected |
Store the name of the class (for logging/debugging) - "who am I?".
Definition at line 162 of file DecompAlgo.h.
Referenced by getModelRelax().
|
protected |
Store the name of the class (for logging/debugging) - "who am I?".
Definition at line 163 of file DecompAlgo.h.
|
protected |
Containers for variables (current and pool).
Definition at line 169 of file DecompAlgo.h.
Referenced by appendVars(), and ~DecompAlgo().
|
protected |
Store the name of the class (for logging/debugging) - "who am I?".
Definition at line 170 of file DecompAlgo.h.
|
protected |
Containers for cuts (current and pool).
Definition at line 175 of file DecompAlgo.h.
Referenced by ~DecompAlgo().
|
protected |
Store the name of the class (for logging/debugging) - "who am I?".
Definition at line 176 of file DecompAlgo.h.
|
protected |
Storage for current solution (in x-space).
Definition at line 181 of file DecompAlgo.h.
Referenced by getX(), getXhat(), and ~DecompAlgo().
|
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.
Referenced by getCutoffUB(), and setCutoffUB().
|
protected |
Store the name of the class (for logging/debugging) - "who am I?".
Definition at line 189 of file DecompAlgo.h.
Referenced by getXhatIPFeas(), and ~DecompAlgo().
|
protected |
Store the name of the class (for logging/debugging) - "who am I?".
Definition at line 190 of file DecompAlgo.h.
Referenced by getXhatIPBest().
|
protected |
Store the name of the class (for logging/debugging) - "who am I?".
Definition at line 194 of file DecompAlgo.h.
Referenced by getMasterObjValue(), and getMasterPrimalSolution().
|
protected |
Store the name of the class (for logging/debugging) - "who am I?".
Definition at line 195 of file DecompAlgo.h.
Referenced by DecompAlgoPC::getMasterDualSolution(), and getMasterDualSolution().
|
protected |
Store the name of the class (for logging/debugging) - "who am I?".
Definition at line 196 of file DecompAlgo.h.
Referenced by getMasterColReducedCost().
|
protected |
Store the name of the class (for logging/debugging) - "who am I?".
Definition at line 197 of file DecompAlgo.h.
|
protected |
Store the name of the class (for logging/debugging) - "who am I?".
Definition at line 199 of file DecompAlgo.h.
|
protected |
Store the name of the class (for logging/debugging) - "who am I?".
Definition at line 201 of file DecompAlgo.h.
|
protected |
Store the name of the class (for logging/debugging) - "who am I?".
Definition at line 204 of file DecompAlgo.h.
|
protected |
Store the name of the class (for logging/debugging) - "who am I?".
Definition at line 205 of file DecompAlgo.h.
|
protected |
Store the name of the class (for logging/debugging) - "who am I?".
Definition at line 208 of file DecompAlgo.h.
|
protected |
Store the name of the class (for logging/debugging) - "who am I?".
Definition at line 211 of file DecompAlgo.h.
|
protected |
Store the name of the class (for logging/debugging) - "who am I?".
Definition at line 212 of file DecompAlgo.h.
|
protected |
Store the name of the class (for logging/debugging) - "who am I?".
Definition at line 213 of file DecompAlgo.h.
|
protected |
Store the name of the class (for logging/debugging) - "who am I?".
Definition at line 214 of file DecompAlgo.h.
|
protected |
Store the name of the class (for logging/debugging) - "who am I?".
Definition at line 215 of file DecompAlgo.h.
Referenced by getMasterRowType(), and getNumRowType().
|
protected |
Store the name of the class (for logging/debugging) - "who am I?".
Definition at line 216 of file DecompAlgo.h.
Referenced by isMasterColArtificial(), isMasterColMasterOnly(), and isMasterColStructural().
|
protected |
Store the name of the class (for logging/debugging) - "who am I?".
Definition at line 217 of file DecompAlgo.h.
|
protected |
Store the name of the class (for logging/debugging) - "who am I?".
Definition at line 220 of file DecompAlgo.h.
Referenced by getColLBNode(), and ~DecompAlgo().
|
protected |
Store the name of the class (for logging/debugging) - "who am I?".
Definition at line 221 of file DecompAlgo.h.
Referenced by getColUBNode(), and ~DecompAlgo().
|
protected |
Store the name of the class (for logging/debugging) - "who am I?".
Definition at line 223 of file DecompAlgo.h.
|
protected |
Store the name of the class (for logging/debugging) - "who am I?".
Definition at line 224 of file DecompAlgo.h.
|
protected |
Current node gap (bestUB-bestLB)/bestLB.
Definition at line 229 of file DecompAlgo.h.
Referenced by isGapTight().
|
protected |
Store the name of the class (for logging/debugging) - "who am I?".
Definition at line 231 of file DecompAlgo.h.
Referenced by getStopCriteria().
|
protected |
Store the name of the class (for logging/debugging) - "who am I?".
Definition at line 232 of file DecompAlgo.h.
|
protected |
Store the name of the class (for logging/debugging) - "who am I?".
Definition at line 233 of file DecompAlgo.h.
|
protected |
Store the name of the class (for logging/debugging) - "who am I?".
Definition at line 234 of file DecompAlgo.h.
|
protected |
Store the name of the class (for logging/debugging) - "who am I?".
Definition at line 237 of file DecompAlgo.h.
|
protected |
Store the name of the class (for logging/debugging) - "who am I?".
Definition at line 238 of file DecompAlgo.h.
|
protected |
Store the name of the class (for logging/debugging) - "who am I?".
Definition at line 239 of file DecompAlgo.h.
|
protected |
Store the name of the class (for logging/debugging) - "who am I?".
Definition at line 241 of file DecompAlgo.h.
Referenced by getGlobalGap(), and setObjBound().
|
protected |
Store the name of the class (for logging/debugging) - "who am I?".
Definition at line 242 of file DecompAlgo.h.
Referenced by getGlobalGap().
|
protected |
Store the name of the class (for logging/debugging) - "who am I?".
Definition at line 244 of file DecompAlgo.h.
|
protected |
Store the name of the class (for logging/debugging) - "who am I?".
Definition at line 246 of file DecompAlgo.h.
|
protected |
Store the name of the class (for logging/debugging) - "who am I?".
Definition at line 247 of file DecompAlgo.h.
|
protected |
Store the name of the class (for logging/debugging) - "who am I?".
Definition at line 248 of file DecompAlgo.h.
Referenced by setStrongBranchIter().
|
protected |
Store the name of the class (for logging/debugging) - "who am I?".
Definition at line 250 of file DecompAlgo.h.
Referenced by getCurrentNode().
|
protected |
Store the name of the class (for logging/debugging) - "who am I?".
Definition at line 252 of file DecompAlgo.h.
|
protected |
Map from original index to master index for master-only vars.
Definition at line 256 of file DecompAlgo.h.
|
protected |
Store the name of the class (for logging/debugging) - "who am I?".
Definition at line 261 of file DecompAlgo.h.
Referenced by DecompAlgo().
|
staticprivate |
Definition at line 46 of file DecompAlgo.h.
|
staticprivate |
Definition at line 47 of file DecompAlgo.h.
|
private |
Definition at line 48 of file DecompAlgo.h.
|
protected |
Definition at line 51 of file DecompAlgo.h.
|
protected |
Definition at line 54 of file DecompAlgo.h.
|
protected |
Definition at line 55 of file DecompAlgo.h.
|
protected |
Definition at line 56 of file DecompAlgo.h.
|
protected |
Definition at line 57 of file DecompAlgo.h.
|
protected |
Definition at line 58 of file DecompAlgo.h.
|
protected |
Definition at line 59 of file DecompAlgo.h.
|
protected |
Definition at line 60 of file DecompAlgo.h.
|
protected |
Definition at line 61 of file DecompAlgo.h.
|
protected |
Definition at line 62 of file DecompAlgo.h.
|
protected |
Definition at line 63 of file DecompAlgo.h.
|
protected |
Definition at line 64 of file DecompAlgo.h.
|
protected |
Definition at line 66 of file DecompAlgo.h.
|
protected |
Definition at line 68 of file DecompAlgo.h.
|
protected |
Definition at line 73 of file DecompAlgo.h.
Referenced by ~DecompAlgo().
|
protected |
Definition at line 90 of file DecompAlgo.h.
|
protected |
Definition at line 95 of file DecompAlgo.h.
Referenced by getTrueLowerBound().
|
protected |
Definition at line 96 of file DecompAlgo.h.
Referenced by getTrueUpperBound(), and setTrueUpperBound().
|
protected |
Definition at line 97 of file DecompAlgo.h.
Referenced by setBestUpperBound().
|
protected |
Definition at line 103 of file DecompAlgo.h.
|
protected |
Definition at line 106 of file DecompAlgo.h.
|
protected |
Definition at line 108 of file DecompAlgo.h.
|
protected |
Definition at line 111 of file DecompAlgo.h.
|
protected |
Definition at line 112 of file DecompAlgo.h.
DecompConstraintSet* DecompAlgo::m_modelCore |
Definition at line 116 of file DecompAlgo.h.
DecompConstraintSet* DecompAlgo::m_modelRelax |
Definition at line 117 of file DecompAlgo.h.