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.
virtual bool isCuttable() const
are we on the bad or good side of the expression?
virtual OsiBranchingObject * createBranch(OsiSolverInterface *, const OsiBranchingInformation *, int) const
create CouenneBranchingObject or CouenneThreeWayBranchObj based on this object
void fint fint fint real fint real real real real real real real real real fint real fint fint fint real fint fint fint fint * info
OsiObject for auxiliary variables $w=f(x)$.
virtual double feasibleRegion(OsiSolverInterface *, const OsiBranchingInformation *) const
fix nonlinear coordinates of current integer-nonlinear feasible solution
virtual CouenneObject * clone() const
Cloning method.
CouNumber computeBranchingPoint(const OsiBranchingInformation *info, int &bestWay, const CouenneObject *&criticalObject) const
Method computing the branching point.
A class to have all elements necessary to setup a branch-and-bound.
int varSelection_
branching scheme used.
Class for MINLP problems with symbolic information.
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...
CouenneVarObject(CouenneCutGenerator *c, CouenneProblem *p, exprVar *ref, Bonmin::BabSetupBase *base, JnlstPtr jnlst, int varSelection)
Constructor with information for branching point selection strategy.
double CouNumber
main number type in Couenne
variable-type operator
virtual double checkInfeasibility(const OsiBranchingInformation *info) const
compute infeasibility of this variable, |w - f(x)|, where w is the auxiliary variable defined as w = ...
CouenneVarObject(const CouenneVarObject &src)
Copy constructor.
real c
OsiObject for variables in a MINLP.