Camargue
safeGMI.hpp
Go to the documentation of this file.
1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
7 #ifndef CMR_SAFEGMI_H
8 #define CMR_SAFEGMI_H
9 
10 #include "config.hpp"
11 
12 #if CMR_HAVE_SAFEGMI
13 
14 
15 #include "lp_interface.hpp"
16 #include "mirgroup.hpp"
17 #include "process_cuts.hpp"
18 
19 #include <vector>
20 
21 
22 namespace CMR {
23 namespace Sep {
24 
26 class SafeGomory {
27 public:
29  const std::vector<double> &_tour_edges,
30  const std::vector<double> &lp_x);
31 
32  bool find_cuts();
33  CutQueue<LP::SparseRow> &gomory_q() { return gmi_q; }
34 
35  bool verbose = false;
36  bool filter_primal = true;
37 
38 private:
39  LP::Relaxation &lp_relax;
40  MIRgroup mir_data;
42 
43  const std::vector<double> &tour_edges;
44  const std::vector<double> &frac_x;
45 };
46 
47 }
48 }
49 
50 #endif //CMR_HAVE_SAFEGMI
51 #endif //CMR_SAFEGMI_H
Utility structures for running safe Gomory cut separation.
Configuration macros.
Class template for queue of cuts in some form.
Definition: process_cuts.hpp:30
Interface to the LP solver.
Structures for storing and processing cuts.
Class for storing an lp relaxation via interface to an lp solver.
Definition: lp_interface.hpp:33
The namespace for this project.
Definition: abc_nodesel.hpp:20
Primal separation of safe Gomory cuts.
Definition: safeGMI.hpp:26
Memory-managed access to classes needed during safe GMI separation.
Definition: mirgroup.hpp:59