Cbc  2.10.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
OsiRowCutDebugger.hpp
Go to the documentation of this file.
1 // Copyright (C) 2000, International Business Machines
2 // Corporation and others. All Rights Reserved.
3 // This code is licensed under the terms of the Eclipse Public License (EPL).
4 
5 #ifndef OsiRowCutDebugger_H
6 #define OsiRowCutDebugger_H
7 
14 #include <string>
15 
16 #include "OsiCuts.hpp"
17 #include "OsiSolverInterface.hpp"
18 
43  friend void OsiRowCutDebuggerUnitTest(const OsiSolverInterface *siP,
44  const std::string &mpsDir);
45 
46 public:
58  virtual int validateCuts(const OsiCuts &cs, int first, int last) const;
59 
65  virtual bool invalidCut(const OsiRowCut &rowcut) const;
66 
73  bool onOptimalPath(const OsiSolverInterface &si) const;
75 
87  bool activate(const OsiSolverInterface &si, const char *model);
88 
100  bool activate(const OsiSolverInterface &si, const double *solution,
101  bool keepContinuous = false);
102 
104  bool active() const;
106 
109  inline const double *optimalSolution() const
111  {
112  return knownSolution_;
113  }
114 
116  inline int numberColumns() const { return (numberColumns_); }
117 
119  inline double optimalValue() const { return knownValue_; }
120 
131  void redoSolution(int numberColumns, const int *originalColumns);
132 
134  int printOptimalSolution(const OsiSolverInterface &si) const;
136 
141 
146  OsiRowCutDebugger(const OsiSolverInterface &si, const char *model);
147 
152  OsiRowCutDebugger(const OsiSolverInterface &si, const double *solution,
153  bool enforceOptimality = false);
154 
157 
160 
162  virtual ~OsiRowCutDebugger();
164 
165 private:
166  // Private member data
167 
170  double knownValue_;
172 
178 
181 
183  double *knownSolution_;
185 };
186 
187 #endif
188 
189 /* vi: softtabstop=2 shiftwidth=2 expandtab tabstop=2
190 */
void redoSolution(int numberColumns, const int *originalColumns)
Edit the known solution to reflect column changes.
virtual ~OsiRowCutDebugger()
Destructor.
bool active() const
Returns true if the debugger is active.
Collections of row cuts and column cuts.
Definition: OsiCuts.hpp:19
virtual int validateCuts(const OsiCuts &cs, int first, int last) const
Check that the set of cuts does not cut off the solution known to the debugger.
bool onOptimalPath(const OsiSolverInterface &si) const
Returns true if the solution held in the solver is compatible with the known solution.
Abstract Base Class for describing an interface to a solver.
int numberColumns() const
Return the number of columns in the known solution.
virtual bool invalidCut(const OsiRowCut &rowcut) const
Check that the cut does not cut off the solution known to the debugger.
double optimalValue() const
Return the value of the objective for the known solution.
Row Cut Class.
Definition: OsiRowCut.hpp:29
friend void OsiRowCutDebuggerUnitTest(const OsiSolverInterface *siP, const std::string &mpsDir)
A function that tests the methods in the OsiRowCutDebugger class.
bool * integerVariable_
array specifying integer variables
const double * optimalSolution() const
Return the known solution.
bool activate(const OsiSolverInterface &si, const char *model)
Activate a debugger using the name of a problem.
Validate cuts against a known solution.
double * knownSolution_
array specifying known solution
OsiRowCutDebugger & operator=(const OsiRowCutDebugger &rhs)
Assignment operator.
OsiRowCutDebugger()
Default constructor - no checking.
int numberColumns_
Number of columns in known solution.
int printOptimalSolution(const OsiSolverInterface &si) const
Print optimal solution (returns -1 bad debug, 0 on optimal, 1 not)
double knownValue_
Value of known solution.