Cbc  2.9.9
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
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 
173  (const CbcBranchingObject* brObj, const bool replaceIfOverlap = false);
174 
175 protected:
181  bool canFix_;
182 };
183 #endif
virtual int compareOriginalObject(const CbcBranchingObject *brObj) const
Compare the original object of this with the original object of brObj.
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.
CbcCutBranchingObject & operator=(const CbcCutBranchingObject &rhs)
Assignment operator.
CbcBranchCut & operator=(const CbcBranchCut &rhs)
virtual CbcBranchingObject * createCbcBranch(OsiSolverInterface *solver, const OsiBranchingInformation *info, int way)
Creates a branching object.
virtual CbcRangeCompare compareBranchingObject(const CbcBranchingObject *brObj, const bool replaceIfOverlap=false)
Compare the this with brObj.
int preferredWay() const
If -1 down always chosen first, +1 up always, 0 normal.
Definition: CbcObject.hpp:245
Abstract Base Class for describing an interface to a solver.
virtual CbcObject * clone() const
Clone.
virtual CbcBranchingObject * preferredNewFeasible() const
Given a valid solution (with reduced costs, etc.), return a branching object which would give a new f...
virtual void feasibleRegion()
Set bounds to contain the current solution.
OsiRowCut down_
Cut for the down arm (way_ = -1)
double infeasibility() const
Return infeasibility.
Cut branching object.
CbcCutBranchingObject()
Default constructor.
OsiRowCut up_
Cut for the up arm (way_ = 1)
CbcModel * model() const
Return model.
Definition: CbcObject.hpp:240
virtual CbcBranchingObject * clone() const
Clone.
Abstract branching object base class Now just difference with OsiBranchingObject. ...
virtual void print()
Print something about branch - only if log level high.
virtual void resetBounds(const OsiSolverInterface *)
Reset variable bounds to their original values.
Definition: CbcObject.hpp:189
CbcBranchObjType
Row Cut Class.
Definition: OsiRowCut.hpp:29
CbcModel * model() const
Return model.
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 double branch()
Sets the bounds for variables or adds a cut depending on the current arm of the branch and advances t...
virtual bool boundBranch() const
Return true if branch created by object should fix variables.
virtual void resetBounds()
Reset original upper and lower bound values from the solver.
virtual ~CbcCutBranchingObject()
Destructor.
virtual bool boundBranch() const
Return true if branch should fix variables.
virtual CbcBranchingObject * notPreferredNewFeasible() const
Given a valid solution (with reduced costs, etc.), return a branching object which would give a new f...
Simple Branch and bound class.
Definition: CbcModel.hpp:101
virtual CbcBranchObjType type() const
Return the type (an integer identifier) of this.