15 #ifndef VRP_CVRPSEP_INCLUDED
16 #define VRP_CVRPSEP_INCLUDED
113 const double etol = 1.0e-8){
127 for(e = 0; e < nEdges; e++){
139 = uv.second == 0 ? nVerts : uv.second;
141 = uv.first == 0 ? nVerts : uv.first;
143 printf(
"XLP[%d,%d -> %d,%d] = %g\n",
148 (*m_osLog) <<
"XLP[" << uv.first <<
"," << uv.second;
151 (*m_osLog) <<
" = " << x[e] << endl;
167 const int capacity = graphLib.
capacity;
174 char IntegerAndFeasible;
178 CAPSEP_SeparateCapCuts(nVerts - 1,
179 const_cast<int*>(demand),
192 printf(
"Found %d capacity cuts. MaxViolation=%g\n",
204 const int capacity = graphLib.
capacity;
213 dynamic_bitset<> inS(nVerts);
214 for(j = 1; j <= CP->IntListSize; j++){
215 if(CP->IntList[j] == nVerts)
218 inS.set(CP->IntList[j]);
228 newCuts.push_back(cut);
void buildLpSol(const double *x, const int nNzs, const double etol=1.0e-8)
std::list< DecompCut * > DecompCutList
bool UtilIsZero(const double x, const double etol=1.0e-8)
double getUpperBound() const
pair< int, int > UtilBothEndsU(const int index)
void init(const VRP_Instance *vrp)
VRP_CVRPsep(const int maxCuts=500)
#define CoinAssertHint(expression, hint)
int sepCapacityCuts(const int maxCuts=500)
void createVrpCuts(DecompCutList &newCuts, double infinity)
UtilGraphLib m_graphLib
Data for an instance from VRPLIB.
CnstrMgrPointer m_oldCuts
#define UTIL_DEBUG(param, level, x)
const VRP_Instance * m_vrp
#define CoinAssert(expression)
CnstrMgrPointer m_newCuts