14#ifndef MINOTAURCOVERCUTGENERATOR_H
15#define MINOTAURCOVERCUTGENERATOR_H
81 typedef ofstream *OfstreamPtr;
109 void generateKnapList();
112 bool hasCover(ConstraintIterator it);
115 bool GUB(ConstraintIterator itcons);
119 CoverSetPtr zerovars);
125 void sortReducedCosts(CoverSetPtr &vars);
179 void generateAllCuts();
184 const ConstCoverSetPtr cover, CoverSetPtr cone,
185 CoverSetPtr ctwo, CoverSetPtr fset,
189 void cBar(
const ConstCoverSetPtr coverSetPtr, CoverSetPtr cBar,
193 double lift(
const ConstCoverSetPtr obj,
const ConstCoverSetPtr constraint,
194 const CoverSetConstIterator variable,
double &rhs,
195 double &inititalb,
bool uplift);
198 void simple(
const ConstCoverSetPtr cover,
const ConstCoverSetPtr cbar,
202 void allCTwo(
const ConstCoverSetPtr cover,
const ConstCoverSetPtr cone,
207 void initCoverIneq(
const ConstCoverSetPtr coverset,
208 CoverSetPtr coverineq);
211 bool liftingGNS(
const ConstCoverSetPtr cone,
const ConstCoverSetPtr ctwo,
212 const ConstCoverSetPtr fset,
const ConstCoverSetPtr rset,
219 void liftSetF(CoverSetPtr obj, CoverSetPtr consknap,
220 const ConstCoverSetPtr setf, CoverSetPtr coverineq,
221 double &ub,
double &initialb,
const bool liftup);
225 void liftSet(CoverSetPtr obj, CoverSetPtr consknap,
226 const ConstCoverSetPtr varset, CoverSetPtr constraint,
227 double &ub,
double &initialb,
bool liftup);
233 CutPtr generateCut(
const ConstCoverSetPtr constraint,
const double ub);
240 bool checkExists(CoverSetPtr cov,
double rhs);
250 UInt binaryKnapsackSolver(
size_t n,
double b,
double const *c,
251 double const *a,
double &z,
int *x);
254 double violation(
CutPtr cut);
266 ConstSolutionPtr getSolution()
const {
return ConstSolutionPtr(s_); }
269 CutVector getCutList()
const {
return cutVec_; }
272 DoubleVector getViolList()
const {
return violList_; }
275 UInt getNumCons()
const {
return numCons_; }
278 ConstCovCutGenStatsPtr getStats()
const
280 return ConstCovCutGenStatsPtr(stats_);
288 bool addCut(CoverSetPtr cov,
double rhs,
UInt cuttype);
291 CutVector getViolatedCutList()
const {
return violatedCuts_; };
294 bool checkIntegral(RelaxationPtr p, ConstSolutionPtr s);
297 void printIneq(
const ConstCoverSetPtr cov,
double rhs, PrintType type,
301 void printLiftProb(
const ConstCoverSetPtr obj,
302 const ConstCoverSetPtr consknap,
303 const CoverSetConstIterator variable,
double rhs,
304 double initialb,
bool uplift,
double b,
double gamma,
318 CutVector violatedCuts_;
321 DoubleVector violList_;
324 KnapsackListPtr knapsackListPtr_;
336 CovCutGenStatsPtr stats_;
339 std::map<std::vector<double>,
UInt> cutmap;
Declare the Cut class of valid inequalities.
Define the Environment class.
Declare base class KnapsackList.
Declare the base class Modification.
Declare the class Relaxation for storing and manipulating relaxations.
Implement base class Solution.
Declare important 'types' used in Minotaur.
The Constraint class is used to manage a constraint.
Definition: Constraint.h:61
Definition: CoverCutGenerator.h:91
void minimalCover(CoverSetPtr cover, ConstConstraintPtr cons)
Definition: CoverCutGenerator.cpp:520
void sortNonIncreasing(CoverSetPtr nonzeros)
Definition: CoverCutGenerator.cpp:280
double sumCoeffs(CoverSetPtr cover)
Definition: CoverCutGenerator.cpp:506
void variableCoeffPair(CoverSetPtr cover, LinearFunctionPtr lf)
CoverSetPtr varCoeff(LinearFunctionPtr lf)
Definition: CoverCutGenerator.cpp:336
CoverSetPtr coverSetGeneratorDefault(ConstConstraintPtr cons)
Definition: CoverCutGenerator.cpp:358
bool coverSetGeneratorGNS(ConstConstraintPtr cons, CoverSetPtr cover)
Definition: CoverCutGenerator.cpp:395
Store function, bounds and other information about a cut.
Definition: Cut.h:52
Definition: Environment.h:28
Definition: KnapsackList.h:25
The base class linear function is of the form c'x.
Definition: LinearFunction.h:31
Definition: Relaxation.h:53
Definition: Solution.h:30
Definition: ActiveNodeStore.h:20
unsigned int UInt
Unsigned integer.
Definition: Types.h:30
Definition: CoverCutGenerator.h:56
UInt gns
Number of simple lifted cover cuts generated.
Definition: CoverCutGenerator.h:63
UInt violated
Number of total cover cuts generated.
Definition: CoverCutGenerator.h:60
UInt extended
Number of violated cuts.
Definition: CoverCutGenerator.h:61
UInt cuts
Number of all cuts i.e. included duplicates as well.
Definition: CoverCutGenerator.h:59
UInt totalcuts
Number of total knapsacks solved.
Definition: CoverCutGenerator.h:58
UInt basic
is downlifted.
Definition: CoverCutGenerator.h:67
UInt noviol
Number of cuts generated from initial cover set.
Definition: CoverCutGenerator.h:70
UInt singlectwo
Number of Gu, Nemhauser, Savelsbergh cuts generated.
Definition: CoverCutGenerator.h:65
UInt simple
Number of extended cuts generated.
Definition: CoverCutGenerator.h:62