Dip 0.95.0
|
The main application class. More...
#include <DecompApp.h>
Public Member Functions | |
virtual void | initializeApp () |
Initialize applications. | |
void | createModels () |
Create model parts. | |
DecompConstraintSet * | createModelPart (const int nRowsPart, const int *rowsPart) |
void | createModelPart (DecompConstraintSet *model, const int nRowsPart, const int *rowsPart) |
void | createModelPartSparse (DecompConstraintSet *model, const int nRowsPart, const int *rowsPart) |
void | readInitSolutionFile (DecompVarList &initVars) |
void | readBlockFile () |
Read block file. | |
void | readProblem () |
Read Problem. | |
void | singlyBorderStructureDetection () |
Automatically detect singly bordered structure. | |
void | findActiveColumns (const std::vector< int > &rowsPart, std::set< int > &activeColsSet) |
Find the active columns for some block. | |
const std::string | getInstanceName () |
Get Intance name. | |
const CoinPackedMatrix * | getMatrix () |
Get constraint matrix for analysis. | |
void | setInfinity () |
Set the value of infinity. | |
DecompApp (UtilParameters &utilParam) | |
Constructor for base DecompApp class. | |
virtual | ~DecompApp () |
Destructor. | |
Helper functions. | |
void | preprocess () |
Preprocess (standard ): on the TODO list. | |
void | startupLog () |
Print startup message to log. | |
int | createModel () |
const double | getBestKnownLB () const |
const double | getBestKnownUB () const |
void | setBestKnownLB (const double bestKnownLB) |
void | setBestKnownUB (const double bestKnownUB) |
void | setModelObjective (const double *objective, const int length) |
Set the model objective function. | |
void | setModelCore (DecompConstraintSet *model, const std::string modelName) |
Set the model core constraint matrix. | |
void | setModelRelax (DecompConstraintSet *model, const std::string modelName="", const int blockId=0) |
Set the model relaxed constraint matrix (for a particular block). | |
void | setModelRelaxNest (DecompConstraintSet *model, const std::string modelName, const int blockId=0) |
Set the model relaxed (nested) constraint matrix (for a particular block). | |
DecompAlgo * | getDecompAlgo () const |
Get a pointer to the base algorithm class. | |
Interface methods for user derivation (virtual). | |
virtual void | initDualVector (std::vector< double > &dualVector) |
Initialize the dual vector for PhaseII of PC. | |
virtual bool | APPisUserFeasible (const double *x, const int numCols, const double tolZero) |
Method to determine if the solution (x) is feasible to the original model. | |
virtual int | APPheuristics (const double *xhat, const double *origCost, std::vector< DecompSolution * > &xhatIPFeas) |
virtual const double * | getDualForGenerateVars (const double *dual) |
This function allows the user to return their own dual vector to be used in the generation of new variables (in the reduced-cost calculation). | |
virtual int | generateInitVars (DecompVarList &initVars) |
virtual int | generateCuts (const double *x, DecompCutList &newCuts) |
virtual void | solveRelaxedWhich (std::vector< int > &blocksToSolve, std::map< int, std::vector< double > > &userDualsByBlock) |
virtual DecompSolverStatus | solveRelaxed (const int whichBlock, const double *redCostX, const double target, DecompVarList &varList) |
virtual DecompSolverStatus | solveRelaxedNest (const int whichBlock, const double *redCostX, const double target, DecompVarList &varList) |
virtual void | printOriginalColumn (const int index, std::ostream *os=&std::cout) const |
virtual void | printOriginalSolution (const int n_cols, const std::vector< std::string > &colNames, const double *solution, std::ostream *os=&std::cout) const |
Public Attributes | |
int | NumBlocks |
Number of Blocks defalut value 0 set by BlockNumInput parameter. | |
DecompParam | m_param |
Parameters. | |
UtilParameters * | m_utilParam |
const double * | m_objective |
Model data: objective function. | |
DecompModel | m_modelCore |
Model data: the core model (A'') | |
std::map< int, DecompModel > | m_modelRelax |
Model data: the relaxed model(s) (A') | |
std::map< int, std::vector< DecompModel > > | m_modelRelaxNest |
Model data: the relaxed (nested) model(s) (A') | |
DecompAlgo * | m_decompAlgo |
Pointer to the base algorithmic object. | |
CoinMpsIO | m_mpsIO |
MPS object for reading instances. | |
CoinLpIO | m_lpIO |
LP object for reading instances. | |
const CoinPackedMatrix * | m_matrix |
Original constraint matrix for the instance. | |
DecompConstraintSet * | m_modelC |
The model constraint systems used for different algos. | |
std::map< int, DecompConstraintSet * > | m_modelR |
std::map< int, std::vector< int > > | m_blocks |
Definition of blocks (by rows) | |
int | m_threadIndex |
serves as an index to track different DecompApp object during Concurrent process, where when m_threadIndex is 0, problem is solved by cutting plance from standalone solver, when it is greater than 0, it is solved by branch-and-price, | |
double | m_infinity |
The value of infinity. | |
Protected Attributes | |
std::ostream * | m_osLog |
Log file. | |
double | m_bestKnownLB |
The best known LB/UB for this application (if known, for debugging). | |
double | m_bestKnownUB |
The main application class.
The main application class where the user will define the model decomposition and define any application specific methods.
Definition at line 48 of file DecompApp.h.
|
inline |
Constructor for base DecompApp class.
This accepts a generic parameters object (UtilParameters) and reads in the parameter settings into the DecompApp paramter object.
Definition at line 442 of file DecompApp.h.
|
inlinevirtual |
Destructor.
Definition at line 472 of file DecompApp.h.
void DecompApp::preprocess | ( | ) |
Preprocess (standard ): on the TODO list.
void DecompApp::startupLog | ( | ) |
Print startup message to log.
int DecompApp::createModel | ( | ) |
|
inline |
Definition at line 169 of file DecompApp.h.
|
inline |
Definition at line 172 of file DecompApp.h.
|
inline |
Definition at line 176 of file DecompApp.h.
|
inline |
Definition at line 179 of file DecompApp.h.
|
inline |
Set the model objective function.
NOTE: The user application MUST call this method.
Definition at line 189 of file DecompApp.h.
|
inline |
Set the model core constraint matrix.
NOTE: The user application MUST call this method.
Definition at line 205 of file DecompApp.h.
void DecompApp::setModelRelax | ( | DecompConstraintSet * | model, |
const std::string | modelName = "" , |
||
const int | blockId = 0 |
||
) |
Set the model relaxed constraint matrix (for a particular block).
NOTE: The user application MUST call this method IF they are not deriving the function DecompApp::solveRelaxed.
void DecompApp::setModelRelaxNest | ( | DecompConstraintSet * | model, |
const std::string | modelName, | ||
const int | blockId = 0 |
||
) |
Set the model relaxed (nested) constraint matrix (for a particular block).
|
inline |
Get a pointer to the base algorithm class.
Definition at line 256 of file DecompApp.h.
|
inlinevirtual |
Initialize the dual vector for PhaseII of PC.
The user is passed a reference to the internal data and can manipulate it directly.
This is only called when dual stabilization is used, i.e., when m_param.DualStab > 0, at the first iteration of PhaseII of PC. The vector is immediately smoothed with the initial restricted master duals. By default, the restricted mater is used as the initial dual and, therefore, no smoothing occurs in the first iteration.
Definition at line 282 of file DecompApp.h.
|
inlinevirtual |
Method to determine if the solution (x) is feasible to the original model.
For explicitly defined model components, like the model core constraints (A''), the feasibility of the solution is automatically checked against the constraints. In the case when the relaxed problem constraints (A') are explicitly defined - these are also checked automatically.
However, for some applications, a valid feasible constraint system cannot be explicitly defined (even for the core set of constraints). For example, think of the case of TSP, where A'' is defined as the subtour elimination constraints. These constraints are implicitly defined by deriving the method DecompApp::generateCuts. Therefore, the framework cannot automatically tell if a solution is feasible by checking against the constraint system. In this case, the user must provide this method.
[in] | x | The solution point to check. |
[in] | numCols | The number of variables. |
[in] | tolZero | The integrality tolerance (currently ignored). |
Reimplemented in DippyDecompApp.
Definition at line 310 of file DecompApp.h.
|
inlinevirtual |
Reimplemented in DippyDecompApp.
Definition at line 316 of file DecompApp.h.
|
inlinevirtual |
This function allows the user to return their own dual vector to be used in the generation of new variables (in the reduced-cost calculation).
For reference, the user is given the dual vector from the restricted master (or the stabilized dual, if using m_param.DualStab).
Definition at line 330 of file DecompApp.h.
|
virtual |
Reimplemented in DippyDecompApp.
|
virtual |
Reimplemented in DippyDecompApp.
|
inlinevirtual |
Definition at line 339 of file DecompApp.h.
|
inlinevirtual |
Reimplemented in DippyDecompApp.
Definition at line 344 of file DecompApp.h.
|
inlinevirtual |
Definition at line 350 of file DecompApp.h.
|
virtual |
|
virtual |
|
virtual |
Initialize applications.
void DecompApp::createModels | ( | ) |
Create model parts.
DecompConstraintSet * DecompApp::createModelPart | ( | const int | nRowsPart, |
const int * | rowsPart | ||
) |
void DecompApp::createModelPart | ( | DecompConstraintSet * | model, |
const int | nRowsPart, | ||
const int * | rowsPart | ||
) |
void DecompApp::createModelPartSparse | ( | DecompConstraintSet * | model, |
const int | nRowsPart, | ||
const int * | rowsPart | ||
) |
void DecompApp::readInitSolutionFile | ( | DecompVarList & | initVars | ) |
void DecompApp::readBlockFile | ( | ) |
Read block file.
void DecompApp::readProblem | ( | ) |
Read Problem.
void DecompApp::singlyBorderStructureDetection | ( | ) |
Automatically detect singly bordered structure.
void DecompApp::findActiveColumns | ( | const std::vector< int > & | rowsPart, |
std::set< int > & | activeColsSet | ||
) |
Find the active columns for some block.
|
inline |
Get Intance name.
Definition at line 414 of file DecompApp.h.
|
inline |
Get constraint matrix for analysis.
Definition at line 429 of file DecompApp.h.
void DecompApp::setInfinity | ( | ) |
Set the value of infinity.
|
protected |
Log file.
Definition at line 60 of file DecompApp.h.
|
protected |
The best known LB/UB for this application (if known, for debugging).
Definition at line 65 of file DecompApp.h.
|
protected |
Definition at line 66 of file DecompApp.h.
int DecompApp::NumBlocks |
Number of Blocks defalut value 0 set by BlockNumInput parameter.
Definition at line 74 of file DecompApp.h.
DecompParam DecompApp::m_param |
Parameters.
Definition at line 79 of file DecompApp.h.
UtilParameters* DecompApp::m_utilParam |
Definition at line 80 of file DecompApp.h.
const double* DecompApp::m_objective |
Model data: objective function.
Definition at line 85 of file DecompApp.h.
DecompModel DecompApp::m_modelCore |
Model data: the core model (A'')
Definition at line 90 of file DecompApp.h.
std::map<int, DecompModel> DecompApp::m_modelRelax |
Model data: the relaxed model(s) (A')
Definition at line 95 of file DecompApp.h.
std::map<int, std::vector<DecompModel> > DecompApp::m_modelRelaxNest |
Model data: the relaxed (nested) model(s) (A')
Definition at line 100 of file DecompApp.h.
DecompAlgo* DecompApp::m_decompAlgo |
Pointer to the base algorithmic object.
NOTE: only for the advanced user
Definition at line 106 of file DecompApp.h.
CoinMpsIO DecompApp::m_mpsIO |
MPS object for reading instances.
Definition at line 113 of file DecompApp.h.
CoinLpIO DecompApp::m_lpIO |
LP object for reading instances.
Definition at line 116 of file DecompApp.h.
const CoinPackedMatrix* DecompApp::m_matrix |
Original constraint matrix for the instance.
Definition at line 120 of file DecompApp.h.
DecompConstraintSet* DecompApp::m_modelC |
The model constraint systems used for different algos.
Definition at line 123 of file DecompApp.h.
std::map<int, DecompConstraintSet*> DecompApp::m_modelR |
Definition at line 124 of file DecompApp.h.
std::map<int, std::vector<int> > DecompApp::m_blocks |
Definition of blocks (by rows)
Definition at line 128 of file DecompApp.h.
int DecompApp::m_threadIndex |
serves as an index to track different DecompApp object during Concurrent process, where when m_threadIndex is 0, problem is solved by cutting plance from standalone solver, when it is greater than 0, it is solved by branch-and-price,
Definition at line 140 of file DecompApp.h.
double DecompApp::m_infinity |
The value of infinity.
Definition at line 144 of file DecompApp.h.