14#ifndef MINOTAURLGCIGENERATOR_H
15#define MINOTAURLGCIGENERATOR_H
83typedef std::map<ConstVariablePtr, ConstVariablePtr> OrigLiftVars;
84typedef OrigLiftVars* OrigLiftVarsPtr;
118 bool hasCover(ConstraintConstIterator it);
121 bool hasGubCover(ConstraintConstIterator it,
122 ConstConstraintVectorPtr gublist);
153 void generateAllCuts();
157 const ConstCoverSetPtr cover,
164 double lift(
const ConstCoverSetPtr obj,
165 const ConstCoverSetPtr inequality,
166 const CoverSetConstIterator variable,
173 void initCoverIneq(
const ConstCoverSetPtr cover, CoverSetPtr coverineq);
180 const ConstCoverSetPtr ctwo,
181 const ConstCoverSetPtr fset,
182 const ConstCoverSetPtr rset,
183 CoverSetPtr constraint,
185 ConstConstraintVectorPtr gublist,
192 CoverSetPtr constraintset,
193 const ConstCoverSetPtr varset,
194 CoverSetPtr inequality,
203 CutPtr generateCut(
const ConstCoverSetPtr inequality,
double ub);
212 bool addCut(CoverSetPtr cov,
double rhs,
UInt cuttype, CutFail& failtype);
215 bool checkExists(CoverSetPtr inequality,
double rhs);
218 double liftingProbsolver();
221 double violation(
CutPtr cut);
225 CoverSetPtr nonzerovars,
226 CoverSetPtr zerovars);
232 void cBar(
const ConstCoverSetPtr cover,
237 void generateGubMaps(ConstConstraintVectorPtr gublist,
238 std::vector<CoverSetPtr>* gubcoverlist,
239 std::vector<CoverSetPtr>* guborigcoeffs);
242 void nonOverlap(std::vector<CoverSetPtr> * gubcoverlist);
245 void initGubCons(
const ConstCoverSetPtr cone,
246 std::vector<CoverSetPtr> * gubcoverlist,
247 std::vector<CoverSetPtr> * gubcons);
251 std::vector<CoverSetPtr>* origgubs,
252 CoverSetPtr consknap,
253 std::vector<CoverSetPtr> * gubcons,
254 const ConstCoverSetPtr varset,
255 CoverSetPtr coverineq,
257 double & initialknap,
262 double lift(CoverSetPtr obj,
263 std::vector<CoverSetPtr> * origgubs,
264 CoverSetPtr consknap,
265 std::vector<CoverSetPtr> * gubcons,
266 const CoverSetConstIterator variable,
268 double & initialbknap,
274 {
return probstruct_;}
281 ConstLGCIGenStatsPtr getStats()
const
282 {
return ConstLGCIGenStatsPtr(stats_);}
285 void printIneq(
const ConstCoverSetPtr cov,
double rhs,
286 PrintType type,
string message);
290 CoverSetPtr consknap,
292 std::vector<CoverSetPtr> * gubcons,
294 OrigLiftVarsPtr varmap,
295 ProblemPtr liftprob);
297 VariablePtr
addVar(VariablePtr var, OrigLiftVarsPtr varmap, ProblemPtr liftprob);
300 double roundHeur(ProblemPtr prob);
312 CutVector violatedCuts_;
314 DoubleVector violList_;
316 KnapsackListPtr knapList_;
323 ConstProbStructPtr probstruct_;
327 LGCIGenStatsPtr stats_;
329 std::map< std::vector<double>,
UInt> cutmap_;
338 LPEnginePtr lpengine_;
Declare the Cut class of valid inequalities.
Define the Environment class.
Declare base class KnapsackList.
Declare the class LPEngine for solving LPs and getting solution.
Declare base class ProbStructure.
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
Store function, bounds and other information about a cut.
Definition: Cut.h:52
Definition: Environment.h:28
Definition: KnapsackList.h:25
Definition: LGCIGenerator.h:95
void minimalCover(CoverSetPtr cover, ConstConstraintPtr cons)
Definition: LGCIGenerator.cpp:1528
bool liftSet(CoverSetPtr obj, CoverSetPtr constraintset, const ConstCoverSetPtr varset, CoverSetPtr inequality, double &ub, double &initialb, bool liftup)
bool checkExists(CoverSetPtr inequality, double rhs)
Definition: LGCIGenerator.cpp:1713
bool liftingGNS(const ConstCoverSetPtr cone, const ConstCoverSetPtr ctwo, const ConstCoverSetPtr fset, const ConstCoverSetPtr rset, CoverSetPtr constraint, const ConstConstraintPtr cons, ConstConstraintVectorPtr gublist, double &ub)
Definition: LGCIGenerator.cpp:610
void cBar(const ConstCoverSetPtr cover, CoverSetPtr cbar, const ConstConstraintPtr cons)
Definition: LGCIGenerator.cpp:1479
void addCons(CoverSetPtr obj, CoverSetPtr consknap, double bknap, std::vector< CoverSetPtr > *gubcons, double *bgubs, OrigLiftVarsPtr varmap, ProblemPtr liftprob)
Definition: LGCIGenerator.cpp:926
void varCoeff(ConstConstraintPtr cons, CoverSetPtr cover)
Definition: LGCIGenerator.cpp:1583
VariablePtr addVar(VariablePtr var, OrigLiftVarsPtr varmap, ProblemPtr liftprob)
Definition: LGCIGenerator.cpp:1016
bool coverSetGeneratorGNS(ConstConstraintPtr cons, CoverSetPtr cover)
Definition: LGCIGenerator.cpp:408
void coverPartitionGNS(const ConstConstraintPtr cons, const ConstCoverSetPtr cover, CoverSetPtr cone, CoverSetPtr ctwo, CoverSetPtr fset, CoverSetPtr rset)
Definition: LGCIGenerator.cpp:516
void sortNonIncreasing(CoverSetPtr nonzeros)
Definition: LGCIGenerator.cpp:501
double sumCoeffs(CoverSetPtr cover)
Definition: LGCIGenerator.cpp:1565
Definition: LPEngine.h:29
The base class linear function is of the form c'x.
Definition: LinearFunction.h:31
Definition: ProbStructure.h:53
Definition: Relaxation.h:53
Definition: Solution.h:30
Definition: ActiveNodeStore.h:20
unsigned int UInt
Unsigned integer.
Definition: Types.h:30
Definition: LGCIGenerator.h:59
UInt gns
Definition: LGCIGenerator.h:69
UInt noinitcov
Definition: LGCIGenerator.h:72
UInt cuts
Number of all cuts i.e. including duplicates as well.
Definition: LGCIGenerator.h:62
UInt totalcuts
Number of total subproblems solved for lifting.
Definition: LGCIGenerator.h:61
UInt knapcons
Number of violated cuts.
Definition: LGCIGenerator.h:64
UInt knapgub
Definition: LGCIGenerator.h:67
double time
GNS procedure terminated since no inital GNS cover constructed.
Definition: LGCIGenerator.h:73
UInt violated
Number of total cover cuts generated excluding duplicates.
Definition: LGCIGenerator.h:63
UInt noviol
Number of Gu, Nemhauser, Savelsbergh cuts generated.
Definition: LGCIGenerator.h:70