Cbc  2.9.8
CbcBranchCut.hpp
Go to the documentation of this file.
1 /* $Id: CbcBranchCut.hpp 1573 2011-01-05 01:12:36Z lou $ */
2 // Copyright (C) 2004, International Business Machines
3 // Corporation and others. All Rights Reserved.
4 // This code is licensed under the terms of the Eclipse Public License (EPL).
5 
6 #ifndef CbcBranchCut_H
7 #define CbcBranchCut_H
8 
9 #include "CbcBranchBase.hpp"
10 #include "OsiRowCut.hpp"
11 #include "CoinPackedMatrix.hpp"
12 
17 class CbcBranchCut : public CbcObject {
18 
19 public:
20 
21  // Default Constructor
22  CbcBranchCut ();
23 
27  // Copy constructor
28  CbcBranchCut ( const CbcBranchCut &);
29 
31  virtual CbcObject * clone() const;
32 
33  // Assignment operator
34  CbcBranchCut & operator=( const CbcBranchCut& rhs);
35 
36  // Destructor
37  ~CbcBranchCut ();
38 
40  virtual double infeasibility(const OsiBranchingInformation * info,
41  int &preferredWay) const;
42 
53  virtual void feasibleRegion();
54 
57  virtual bool boundBranch() const ;
58 
60  virtual CbcBranchingObject * createCbcBranch(OsiSolverInterface * solver, const OsiBranchingInformation * info, int way) ;
61 
77  virtual CbcBranchingObject * preferredNewFeasible() const;
78 
89 
96  virtual void resetBounds();
97 
98 
99 protected:
101 
102 };
109 
110 public:
111 
114 
120  CbcCutBranchingObject (CbcModel * model, OsiRowCut & down, OsiRowCut &up, bool canFix);
121 
124 
127 
129  virtual CbcBranchingObject * clone() const;
130 
132  virtual ~CbcCutBranchingObject ();
133 
139  virtual double branch();
140 
144  virtual void print();
145 
148  virtual bool boundBranch() const;
149 
151  virtual CbcBranchObjType type() const {
152  return CutBranchingObj;
153  }
154 
162  virtual int compareOriginalObject(const CbcBranchingObject* brObj) const;
163 
172  virtual CbcRangeCompare compareBranchingObject
173  (const CbcBranchingObject* brObj, const bool replaceIfOverlap = false);
174 
175 protected:
177  OsiRowCut down_;
179  OsiRowCut up_;
181  bool canFix_;
182 };
183 #endif
virtual double infeasibility(const OsiBranchingInformation *info, int &preferredWay) const
Infeasibility.
virtual void feasibleRegion()=0
For the variable(s) referenced by the object, look at the current solution and set bounds to match th...
Define a cut branching class.
CbcRangeCompare
bool canFix_
True if one way can fix variables.
virtual CbcBranchingObject * preferredNewFeasible() const
Given a valid solution (with reduced costs, etc.), return a branching object which would give a new f...
virtual CbcBranchObjType type() const
Return the type (an integer identifier) of this.
CbcBranchCut & operator=(const CbcBranchCut &rhs)
virtual CbcBranchingObject * createCbcBranch(OsiSolverInterface *solver, const OsiBranchingInformation *info, int way)
Creates a branching object.
virtual void feasibleRegion()
Set bounds to contain the current solution.
virtual CbcBranchingObject * notPreferredNewFeasible() const
Given a valid solution (with reduced costs, etc.), return a branching object which would give a new f...
OsiRowCut down_
Cut for the down arm (way_ = -1)
Cut branching object.
virtual bool boundBranch() const
Return true if branch created by object should fix variables.
OsiRowCut up_
Cut for the up arm (way_ = 1)
Abstract branching object base class Now just difference with OsiBranchingObject. ...
virtual void resetBounds(const OsiSolverInterface *)
Reset variable bounds to their original values.
Definition: CbcObject.hpp:189
CbcBranchObjType
CbcModel * model() const
Return model.
Definition: CbcObject.hpp:240
virtual double branch()=0
Execute the actions required to branch, as specified by the current state of the branching object...
virtual void print() const
Print something about branch - only if log level high.
virtual CbcObject * clone() const
Clone.
virtual void resetBounds()
Reset original upper and lower bound values from the solver.
Simple Branch and bound class.
Definition: CbcModel.hpp:101
int preferredWay() const
If -1 down always chosen first, +1 up always, 0 normal.
Definition: CbcObject.hpp:245