source: branches/Couenne/Couenne/src/branch/CouenneThreeWayBranchObj.hpp @ 531

Last change on this file since 531 was 531, checked in by pbelotti, 13 years ago

added reduced cost fixing. Separated bound tightening from generateCuts. Started three-way branching, not used yet.

File size: 1.6 KB
Line 
1/*
2 * Name:    CouenneThreeWayBranchObj.hpp
3 * Authors: Pierre Bonami, IBM Corp.
4 *          Pietro Belotti, Carnegie Mellon University
5 * Purpose: Three way branching object for auxiliary variables
6 *
7 * (C) Pietro Belotti. This file is licensed under the Common Public License (CPL)
8 */
9
10#ifndef COUENNETHREEWAYBRANCHOBJ_HPP
11#define COUENNETHREEWAYBRANCHOBJ_HPP
12
13#include <CoinFinite.hpp>
14#include <OsiBranchingObject.hpp>
15#include <exprAux.h>
16
17
18/// Spatial, Three-way Branching object. Branching is performed on
19/// continuous variables but a better convexification is sought around
20/// the current point by dividing the interval in three parts
21
22class CouenneThreeWayBranchObj: public OsiBranchingObject {
23
24public:
25
26  /// Constructor
27  CouenneThreeWayBranchObj (expression * = NULL);
28
29  /// Copy constructor
30  CouenneThreeWayBranchObj (const CouenneThreeWayBranchObj &src):
31    reference_ (src.reference_),
32    lcrop_     (src.lcrop_),
33    rcrop_     (src.rcrop_) {}
34
35  /// Cloning method
36  virtual OsiBranchingObject * clone() const
37  {return new CouenneThreeWayBranchObj (*this);}
38
39  /** \brief Execute the actions required to branch, as specified by the
40             current state of the branching object, and advance the object's
41             state.
42             Returns change in guessed objective on next branch
43  */
44  virtual double branch (OsiSolverInterface * solver = NULL);
45
46protected:
47
48  /// The variable this branching object refers to. If the
49  /// corresponding CouenneObject was created on w=f(x,y), it is
50  /// either x or y.
51  expression *reference_;
52
53  /// Dividing points of interval
54  CouNumber lcrop_;
55  CouNumber rcrop_;
56};
57
58#endif
Note: See TracBrowser for help on using the repository browser.