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 );
virtual void refreshSolver(OsiSolverInterface *solver)
This can be used to refresh any information.
virtual std::string generateCpp(FILE *fp)
Create C++ lines to get to current state.
void setTestedRowIndices(int num, const int *ind)
A method to set which rows should be tested for knapsack covers.
Information about where the cut generator is invoked from.
CglKnapsackCover()
Default constructor.
virtual ~CglKnapsackCover()
Destructor.
CglKnapsackCover & operator=(const CglKnapsackCover &rhs)
Assignment operator.
friend void CglKnapsackCoverUnitTest(const OsiSolverInterface *siP, const std::string mpdDir)
A function that tests the methods in the CglKnapsackCover class.
Derived class to pick up probing info.
void switchOffExpensive()
Switch off expensive cuts.
Cut Generator Base Class.
int getMaxInKnapsack() const
get limit on number in knapsack
int createCliques(OsiSolverInterface &si, int minimumSize=2, int maximumSize=100, bool extendCliques=false)
Creates cliques for use by probing.
void switchOnExpensive()
Switch on expensive cuts.
virtual void generateCuts(const OsiSolverInterface &si, OsiCuts &cs, const CglTreeInfo info=CglTreeInfo())
Generate knapsack cover cuts for the model of the solver interface, si.
Knapsack Cover Cut Generator Class.
void setMaxInKnapsack(int value)
Set limit on number in knapsack.
virtual CglCutGenerator * clone() const
Clone.