Cbc  2.10.10
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
CbcBranchCut.hpp
Go to the documentation of this file.
1 /* $Id$ */
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  // Default Constructor
21  CbcBranchCut();
22 
26  // Copy constructor
27  CbcBranchCut(const CbcBranchCut &);
28 
30  virtual CbcObject *clone() const;
31 
32  // Assignment operator
33  CbcBranchCut &operator=(const CbcBranchCut &rhs);
34 
35  // Destructor
36  ~CbcBranchCut();
37 
39  virtual double infeasibility(const OsiBranchingInformation *info,
40  int &preferredWay) const;
41 
52  virtual void feasibleRegion();
53 
56  virtual bool boundBranch() const;
57 
59  virtual CbcBranchingObject *createCbcBranch(OsiSolverInterface *solver, const OsiBranchingInformation *info, int way);
60 
77 
88 
95  virtual void resetBounds();
96 
97 protected:
99 };
106 
107 public:
110 
116  CbcCutBranchingObject(CbcModel *model, OsiRowCut &down, OsiRowCut &up, bool canFix);
117 
120 
123 
125  virtual CbcBranchingObject *clone() const;
126 
128  virtual ~CbcCutBranchingObject();
129 
135  virtual double branch();
136 
140  virtual void print();
141 
144  virtual bool boundBranch() const;
145 
147  virtual CbcBranchObjType type() const
148  {
149  return CutBranchingObj;
150  }
151 
159  virtual int compareOriginalObject(const CbcBranchingObject *brObj) const;
160 
169  virtual CbcRangeCompare compareBranchingObject(const CbcBranchingObject *brObj, const bool replaceIfOverlap = false);
170 
171 protected:
173  OsiRowCut down_;
175  OsiRowCut up_;
177  bool canFix_;
178 };
179 #endif
180 
181 /* vi: softtabstop=2 shiftwidth=2 expandtab tabstop=2
182 */
CbcCutBranchingObject::~CbcCutBranchingObject
virtual ~CbcCutBranchingObject()
Destructor.
CbcObject::preferredWay
int preferredWay() const
If -1 down always chosen first, +1 up always, 0 normal.
Definition: CbcObject.hpp:258
CbcObject::feasibleRegion
virtual void feasibleRegion()=0
For the variable(s) referenced by the object, look at the current solution and set bounds to match th...
CbcCutBranchingObject::up_
OsiRowCut up_
Cut for the up arm (way_ = 1)
Definition: CbcBranchCut.hpp:175
CbcBranchingObject::branch
virtual double branch()=0
Execute the actions required to branch, as specified by the current state of the branching object,...
CbcBranchCut::~CbcBranchCut
~CbcBranchCut()
CbcCutBranchingObject::CbcCutBranchingObject
CbcCutBranchingObject()
Default constructor.
CbcCutBranchingObject::canFix_
bool canFix_
True if one way can fix variables.
Definition: CbcBranchCut.hpp:177
CbcCutBranchingObject::branch
virtual double branch()
Sets the bounds for variables or adds a cut depending on the current arm of the branch and advances t...
CbcCutBranchingObject::operator=
CbcCutBranchingObject & operator=(const CbcCutBranchingObject &rhs)
Assignment operator.
CbcBranchCut
Define a cut branching class.
Definition: CbcBranchCut.hpp:17
CbcBranchCut::CbcBranchCut
CbcBranchCut()
CbcCutBranchingObject::type
virtual CbcBranchObjType type() const
Return the type (an integer identifier) of this.
Definition: CbcBranchCut.hpp:147
CbcCutBranchingObject::compareBranchingObject
virtual CbcRangeCompare compareBranchingObject(const CbcBranchingObject *brObj, const bool replaceIfOverlap=false)
Compare the this with brObj.
CbcModel
Simple Branch and bound class.
Definition: CbcModel.hpp:100
CbcCutBranchingObject
Cut branching object.
Definition: CbcBranchCut.hpp:105
CbcBranchingObject::print
virtual void print() const
Print something about branch - only if log level high.
Definition: CbcBranchingObject.hpp:132
CbcBranchCut::createCbcBranch
virtual CbcBranchingObject * createCbcBranch(OsiSolverInterface *solver, const OsiBranchingInformation *info, int way)
Creates a branching object.
CbcBranchCut::infeasibility
virtual double infeasibility(const OsiBranchingInformation *info, int &preferredWay) const
Infeasibility.
CbcBranchingObject
Abstract branching object base class Now just difference with OsiBranchingObject.
Definition: CbcBranchingObject.hpp:51
CbcObject
Definition: CbcObject.hpp:67
CbcBranchBase.hpp
CbcCutBranchingObject::compareOriginalObject
virtual int compareOriginalObject(const CbcBranchingObject *brObj) const
Compare the original object of this with the original object of brObj.
CbcObject::model
CbcModel * model() const
Return model.
Definition: CbcObject.hpp:252
CbcObject::resetBounds
virtual void resetBounds(const OsiSolverInterface *)
Reset variable bounds to their original values.
Definition: CbcObject.hpp:195
CbcBranchCut::resetBounds
virtual void resetBounds()
Reset original upper and lower bound values from the solver.
CbcRangeCompare
CbcRangeCompare
Definition: CbcBranchBase.hpp:13
CbcCutBranchingObject::down_
OsiRowCut down_
Cut for the down arm (way_ = -1)
Definition: CbcBranchCut.hpp:173
CbcCutBranchingObject::boundBranch
virtual bool boundBranch() const
Return true if branch should fix variables.
CbcCutBranchingObject::clone
virtual CbcBranchingObject * clone() const
Clone.
CbcBranchCut::operator=
CbcBranchCut & operator=(const CbcBranchCut &rhs)
CbcBranchCut::feasibleRegion
virtual void feasibleRegion()
Set bounds to contain the current solution.
CbcBranchCut::preferredNewFeasible
virtual CbcBranchingObject * preferredNewFeasible() const
Given a valid solution (with reduced costs, etc.), return a branching object which would give a new f...
CbcBranchObjType
CbcBranchObjType
Definition: CbcBranchingObject.hpp:17
CbcBranchingObject::model
CbcModel * model() const
Return model.
Definition: CbcBranchingObject.hpp:177
CbcCutBranchingObject::print
virtual void print()
Print something about branch - only if log level high.
CutBranchingObj
@ CutBranchingObj
Definition: CbcBranchingObject.hpp:28
CbcBranchCut::clone
virtual CbcObject * clone() const
Clone.
CbcBranchCut::boundBranch
virtual bool boundBranch() const
Return true if branch created by object should fix variables.
CbcBranchCut::notPreferredNewFeasible
virtual CbcBranchingObject * notPreferredNewFeasible() const
Given a valid solution (with reduced costs, etc.), return a branching object which would give a new f...