13 #ifndef OSDECOMPSOLVER_H
14 #define OSDECOMPSOLVER_H
17 #include "OSInstance.h"
170 virtual void getCutsTheta(
const double* thetaVar,
const int numThetaVar,
171 int &numNewRows,
int* &numNonz,
int** &colIdx,
172 double** &
values,
double* &rowLB,
double* &rowUB) = 0 ;
191 int &numNewRows,
int* &numNonz,
int** &colIdx,
192 double** &
values,
double* &rowLB,
double* &rowUB) = 0;
212 virtual void getColumns(
const double* yA,
const int numARows,
213 const double* yB,
const int numBRows,
214 int &numNewColumns,
int* &numNonz,
double* &cost,
215 int** &rowIdx,
double** &
values,
double &lowerBound) = 0;
240 virtual void getBranchingCut(
const double* thetaVar,
const int numThetaVar,
241 const std::map<int, int> &varConMap,
int &varIdx,
int &numNonz,
242 int* &indexes,
double* &
values) = 0 ;
268 const int numThetaVar,
const std::map<int, int> &varConMap,
269 int &varIdx,
int &numNonz,
int* &indexes,
double* &
values) = 0 ;
276 virtual void pauHana(std::vector<int> &m_zOptIndexes,
277 std::vector<double> &m_zRootLPx_vals,
278 int numNodes,
int numColsGen, std::string message) = 0;
292 virtual void resetMaster(std::map<int, int> &inVars, OsiSolverInterface *si ) = 0;
virtual void getCutsTheta(const double *thetaVar, const int numThetaVar, int &numNewRows, int *&numNonz, int **&colIdx, double **&values, double *&rowLB, double *&rowUB)=0
RETURN VALUES:
int m_maxMasterRows
m_maxMasterColumns is the maximumn number of rows we allow in the master, in this application it is e...
OSInstance * m_osinstanceMaster
OSDecompSolver()
Default Constructor.
int m_numBmatrixCon
m_numBmatrixCon is the number of constraints in B - 1, we have the -1 because: m_pntBmatrix[ k] point...
virtual void getCutsMultiCommod(const double *thetaVar, const int numThetaVar, int &numNewRows, int *&numNonz, int **&colIdx, double **&values, double *&rowLB, double *&rowUB)=0
This is the routine that generates the multi-item cuts.
std::set< std::pair< int, double > > intVarSet
intVarSet holds and std::pair where the first element is the index of an integer variable and the sec...
virtual void getColumns(const double *yA, const int numARows, const double *yB, const int numBRows, int &numNewColumns, int *&numNonz, double *&cost, int **&rowIdx, double **&values, double &lowerBound)=0
RETURN VALUES:
virtual ~OSDecompSolver()=0
Default destructor.
virtual void initializeDataStructures()=0
allocate memory and initialize arrays
int m_multiCommodCutLimit
virtual void pauHana(std::vector< int > &m_zOptIndexes, std::vector< double > &m_zRootLPx_vals, int numNodes, int numColsGen, std::string message)=0
int m_numNodes
m_numNodes is the number of nodes (both pickup and hub) in the model
virtual void getBranchingCut(const double *thetaVar, const int numThetaVar, const std::map< int, int > &varConMap, int &varIdx, int &numNonz, int *&indexes, double *&values)=0
Dense Version.
std::string * m_variableNames
int m_maxBmatrixNonz
m_maxBmatrixNonz is the maximum number of nonzero elements in the B matrix constraints ...
The in-memory representation of an OSiL instance..
virtual void resetMaster(std::map< int, int > &inVars, OsiSolverInterface *si)=0
INPUT:
OSDecompParam m_osDecompParam
share the parameters with the decomposition solver
int m_numHubs
m_numHubs is the number of hubs/routes
int m_maxMasterColumns
m_maxMasterColumns is the maximumn number of columns we allow in the master
int m_maxBmatrixCon
m_maxBmatrixCon is the maximum number of B matrix constraints it is the number of tour breaking const...
virtual OSInstance * getInitialRestrictedMaster()=0