source: branches/Couenne/Couenne/src/branch/CouenneBranchingObject.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:    CouenneBranchingObject.hpp
3 * Authors: Pierre Bonami, IBM Corp.
4 *          Pietro Belotti, Carnegie Mellon University
5 * Purpose: Branching object for auxiliary variables
6 *
7 * (C) Pietro Belotti. This file is licensed under the Common Public License (CPL)
8 */
9
10#ifndef COUENNEBRANCHINGOBJECT_HPP
11#define COUENNEBRANCHINGOBJECT_HPP
12
13#include <CoinFinite.hpp>
14#include <OsiBranchingObject.hpp>
15#include <exprAux.h>
16
17
18/// "Spatial" Branching object. Branching can also be performed on
19/// continuous variables.
20
21class CouenneBranchingObject: public OsiTwoWayBranchingObject {
22
23public:
24
25  /// return global value for convex combination between current point
26  /// and midpoint
27  static CouNumber Alpha () {return alpha_;}
28
29  /// Constructor
30  CouenneBranchingObject (expression * = NULL);
31
32  /// Copy constructor
33  CouenneBranchingObject (const CouenneBranchingObject &src):
34    reference_ (src.reference_) {}
35
36  /// Cloning method
37  virtual OsiBranchingObject * clone() const
38  {return new CouenneBranchingObject (*this);}
39
40  /** \brief Execute the actions required to branch, as specified by the
41             current state of the branching object, and advance the object's
42             state.
43             Returns change in guessed objective on next branch
44  */
45  virtual double branch (OsiSolverInterface * solver = NULL);
46
47protected:
48
49  /// The variable this branching object refers to. If the
50  /// corresponding CouenneObject was created on w=f(x,y), it is
51  /// either x or y.
52  expression *reference_;
53
54  /// Global value for convex combination between current point and
55  /// midpoint
56  static CouNumber alpha_;
57};
58
59#endif
Note: See TracBrowser for help on using the repository browser.