Minotaur 0.4.1
Docs for developers
KnapCovHandler.h
Go to the documentation of this file.
1//
2// Minotaur -- It's only 1/2 bull
3//
4// (C)opyright 2008 - 2025 The Minotaur Team.
5//
6
14#ifndef MINOTAURKNAPCOVHANDLER_H
15#define MINOTAURKNAPCOVHANDLER_H
16
17#include "Handler.h"
18#include "Types.h"
19#include "Solution.h"
20#include "Variable.h"
21#include "Relaxation.h"
22#include "CoverCutGenerator.h"
23
24namespace Minotaur {
25
26 // Pointers for knapsack cover cut handler are defined.
27 class KnapCovHandler;
28 typedef KnapCovHandler *KnapCovHandlerPtr;
29 typedef const KnapCovHandler *ConstKnapCovHandler;
30
31 class Logger;
32
33
34 struct KCStats
35 {
36 UInt knaps;
44 double time;
46 };
47
52 class KnapCovHandler : public Handler {
53 public:
56
58 KnapCovHandler(EnvPtr env, ProblemPtr problem);
59
62
65
68
71
74
78 bool isFeasible(ConstSolutionPtr sol, RelaxationPtr relaxation,
79 bool &should_prune, double &inf_meas);
80
81
88 CutManager *cutman, SolutionPoolPtr, ModVector &p_mods,
89 ModVector &r_mods, bool *, SeparationStatus *status);
90
92 virtual void getBranchingCandidates(RelaxationPtr, const DoubleVector &,
93 ModVector &, BrVarCandSet &,
94 BrCandVector &, bool &) {};
95
99 {
100 return ModificationPtr();
101 };
102
104 virtual Branches getBranches(BrCandPtr, DoubleVector &, RelaxationPtr,
106 {
107 return Branches();
108 };
109
111 SolveStatus presolve(PreModQ *, bool *, Solution **) { return Finished; };
112
114 //void postsolveGetX(const double *, UInt, DoubleVector *) {};
115
116 // Does nothing.
118 ModVector &, ModVector &)
119 {
120 return false;
121 };
122
123 // Write name.
124 std::string getName() const;
125
127 void writeStats(std::ostream &) const;
128
131 // void updateStats(ConsCovCutGenStatsPtr covstats);
132
133 // Return specific statistics.
134 UInt KC_knaps() { return stats_->knaps; }
135 UInt KC_cuts() { return stats_->cuts; }
136 UInt KC_extended() { return stats_->extended; }
137 UInt KC_simple() { return stats_->simple; }
138 UInt KC_gns() { return stats_->gns; }
139 UInt KC_singlectwo() { return stats_->singlectwo; }
140 double KC_time() { return stats_->time; }
141
142 private:
144 EnvPtr env_;
145
147 ProblemPtr minlp_;
148
150 LoggerPtr logger_;
151
153 KCStats *stats_;
154
155 // Number of variables in the MINLP.
156 size_t numvars_;
157
159 double intTol_;
160
162 static const std::string me_;
163 };
164} //namespace Minotaur
165
166
167#endif // MINOTAURKNAPCOVHANDLER_H
Declare base class CoverCutGenerator.
Define abstract base class for handlers of various kinds.
Declare the class Relaxation for storing and manipulating relaxations.
Implement base class Solution.
Declare important 'types' used in Minotaur.
Define the Variable class.
Base class for describing candidates for branching on a node in branch-and-bound.
Definition: BrCand.h:32
Abstract base class to manage cuts in the relaxation.
Definition: CutManager.h:42
Definition: Environment.h:28
Base class for handling specific types of constraints or objective.
Definition: Handler.h:49
Definition: KnapCovHandler.h:52
void relaxInitInc(RelaxationPtr, SolutionPool *, bool *)
Does nothing.
Definition: KnapCovHandler.h:67
virtual void getBranchingCandidates(RelaxationPtr, const DoubleVector &, ModVector &, BrVarCandSet &, BrCandVector &, bool &)
Does nothing.
Definition: KnapCovHandler.h:92
std::string getName() const
Return the name of the handler.
Definition: KnapCovHandler.cpp:156
SolveStatus presolve(PreModQ *, bool *, Solution **)
Does nothing.
Definition: KnapCovHandler.h:111
virtual ModificationPtr getBrMod(BrCandPtr, DoubleVector &, RelaxationPtr, BranchDirection)
Does nothing.
Definition: KnapCovHandler.h:97
void relaxNodeInc(NodePtr, RelaxationPtr, bool *)
Does nothing.
Definition: KnapCovHandler.h:73
void relaxNodeFull(NodePtr, RelaxationPtr, bool *)
Does nothing.
Definition: KnapCovHandler.h:70
void separate(ConstSolutionPtr, NodePtr, RelaxationPtr, CutManager *cutman, SolutionPoolPtr, ModVector &p_mods, ModVector &r_mods, bool *, SeparationStatus *status)
Definition: KnapCovHandler.cpp:82
UInt KC_knaps()
Definition: KnapCovHandler.h:134
~KnapCovHandler()
Destroy.
Definition: KnapCovHandler.cpp:64
void writeStats(std::ostream &) const
Show statistics.
Definition: KnapCovHandler.cpp:162
void relaxInitFull(RelaxationPtr, SolutionPool *, bool *)
Does nothing.
Definition: KnapCovHandler.h:64
virtual Branches getBranches(BrCandPtr, DoubleVector &, RelaxationPtr, SolutionPoolPtr)
Does nothing.
Definition: KnapCovHandler.h:104
virtual bool presolveNode(RelaxationPtr, NodePtr, SolutionPoolPtr, ModVector &, ModVector &)
Does nothing.
Definition: KnapCovHandler.h:117
bool isFeasible(ConstSolutionPtr sol, RelaxationPtr relaxation, bool &should_prune, double &inf_meas)
Definition: KnapCovHandler.cpp:74
KnapCovHandler()
Default constructor.
Definition: KnapCovHandler.cpp:31
Definition: Modification.h:29
Definition: Node.h:54
Definition: Problem.h:74
Definition: Relaxation.h:53
Definition: SolutionPool.h:28
Definition: Solution.h:30
Definition: ActiveNodeStore.h:20
BranchDirection
Two directions for branching.
Definition: Types.h:201
unsigned int UInt
Unsigned integer.
Definition: Types.h:30
SeparationStatus
Status from separation routine:
Definition: Types.h:217
SolveStatus
Different states an algorithm like branch-and-bound can be in.
Definition: Types.h:158
Definition: KnapCovHandler.h:35
UInt cuts
Number of knapsacks solved.
Definition: KnapCovHandler.h:37
UInt extended
Number of cover cuts generated.
Definition: KnapCovHandler.h:38
UInt singlectwo
Definition: KnapCovHandler.h:42
UInt cutdel
Total time used to generate cuts.
Definition: KnapCovHandler.h:45
UInt simple
Number of extended cover cuts generated.
Definition: KnapCovHandler.h:39
double time
Definition: KnapCovHandler.h:44
UInt gns
Number of simple lifted cuts generated.
Definition: KnapCovHandler.h:40

Minotaur source code documented by Doxygen 1.9.4 on Thu Apr 24 2025