Couenne  0.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
CouenneVarObject.hpp
Go to the documentation of this file.
1 /* $Id: CouenneVarObject.hpp 522 2011-03-07 21:13:46Z pbelotti $
2  *
3  * Name: CouenneVarObject.hpp
4  * Authors: Pietro Belotti, Carnegie Mellon University
5  * Purpose: Object for branching on variables
6  *
7  * (C) Carnegie-Mellon University, 2008-11.
8  * This file is licensed under the Eclipse Public License (EPL)
9  */
10 
11 #ifndef COUENNEVAROBJECT_HPP
12 #define COUENNEVAROBJECT_HPP
13 
14 #include "CouenneObject.hpp"
15 
16 namespace Couenne {
17 
18 class CouenneProblem;
19 
20 
23 
24 public:
25 
28  CouenneProblem *p,
29  exprVar *ref,
30  Bonmin::BabSetupBase *base,
31  JnlstPtr jnlst,
32  int varSelection); //< either OSI_SIMPLE or OSI_STRONG
33 
36  CouenneObject (src),
38 
41 
43  virtual CouenneObject *clone () const
44  {return new CouenneVarObject (*this);}
45 
51  virtual double infeasibility (const OsiBranchingInformation *info, int &way) const;
52 
55  virtual double checkInfeasibility (const OsiBranchingInformation * info) const;
56 
59  virtual OsiBranchingObject *createBranch (OsiSolverInterface*,
60  const OsiBranchingInformation*, int) const;
61 
63  virtual double feasibleRegion (OsiSolverInterface *, const OsiBranchingInformation *) const;
64 
66  virtual bool isCuttable () const;
67 
68 protected:
69 
74 
76  CouNumber computeBranchingPoint (const OsiBranchingInformation *info,
77  int& bestWay,
78  const CouenneObject *&criticalObject) const;
79 };
80 
81 }
82 
83 #endif
Cut Generator for linear convexifications.
OsiObject for auxiliary variables $w=f(x)$.
virtual CouenneObject * clone() const
Cloning method.
virtual bool isCuttable() const
are we on the bad or good side of the expression?
virtual double feasibleRegion(OsiSolverInterface *, const OsiBranchingInformation *) const
fix nonlinear coordinates of current integer-nonlinear feasible solution
virtual double infeasibility(const OsiBranchingInformation *info, int &way) const
compute infeasibility of this variable x as the sum/min/max of all infeasibilities of auxiliaries w w...
int varSelection_
branching scheme used.
Class for MINLP problems with symbolic information.
virtual OsiBranchingObject * createBranch(OsiSolverInterface *, const OsiBranchingInformation *, int) const
create CouenneBranchingObject or CouenneThreeWayBranchObj based on this object
CouNumber computeBranchingPoint(const OsiBranchingInformation *info, int &bestWay, const CouenneObject *&criticalObject) const
Method computing the branching point.
double CouNumber
main number type in Couenne
CouenneVarObject(CouenneCutGenerator *c, CouenneProblem *p, exprVar *ref, Bonmin::BabSetupBase *base, JnlstPtr jnlst, int varSelection)
Constructor with information for branching point selection strategy.
virtual double checkInfeasibility(const OsiBranchingInformation *info) const
compute infeasibility of this variable, |w - f(x)|, where w is the auxiliary variable defined as w = ...
variable-type operator
CouenneVarObject(const CouenneVarObject &src)
Copy constructor.
OsiObject for variables in a MINLP.