6 #ifndef CglKnapsackCover_H
7 #define CglKnapsackCover_H
17 const std::string mpdDir );
28 virtual void generateCuts(
const OsiSolverInterface & si, OsiCuts & cs,
63 {
if (value>0) maxInKnapsack_ = value;}
66 {
return maxInKnapsack_;}
69 { expensiveCuts_=
false;}
72 { expensiveCuts_=
true;}
89 const OsiSolverInterface & si,
91 CoinPackedVector & krow,
99 const double * element);
102 const OsiSolverInterface & si,
104 CoinPackedVector & krow,
109 const CoinPackedVectorBase & matrixRow);
116 int findExactMostViolatedMinCover(
119 CoinPackedVector & krow,
122 CoinPackedVector & cover,
123 CoinPackedVector & remainder);
128 int findLPMostViolatedMinCover(
131 CoinPackedVector & krow,
134 CoinPackedVector & cover,
135 CoinPackedVector & remainder);
140 CoinPackedVector & krow,
143 CoinPackedVector & cover,
144 CoinPackedVector & remainder
151 CoinPackedVector & cover,
152 CoinPackedVector & remainder,
153 CoinPackedVector &
cut );
156 int liftAndUncomplementAndAdd(
158 CoinPackedVector & krow,
162 CoinPackedVector & cover,
163 CoinPackedVector & remainder,
167 void seqLiftAndUncomplementAndAdd(
174 CoinPackedVector & cover,
175 CoinPackedVector & remainder,
179 void liftUpDownAndUncomplementAndAdd(
188 CoinPackedVector & fracCover,
190 CoinPackedVector & atOne,
192 CoinPackedVector & remainder,
196 int findPseudoJohnAndEllisCover (
198 CoinPackedVector & krow,
201 CoinPackedVector & cover,
202 CoinPackedVector & remainder);
205 int findJohnAndEllisCover (
207 CoinPackedVector & krow,
210 CoinPackedVector & fracCover,
211 CoinPackedVector & atOnes,
212 CoinPackedVector & remainder);
222 int exactSolveKnapsack(
230 int gubifyCut(CoinPackedVector &
cut);
238 int minimumSize=2,
int maximumSize=100,
bool extendCliques=
false);
241 void deleteCliques();
264 const OsiSolverInterface * solver_;
272 unsigned int equality:1;
274 CliqueType * cliqueType_;
308 const std::string mpdDir );