Minotaur 0.4.1
Docs for developers
Loading...
Searching...
No Matches
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
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.8 on Mon Nov 10 2025