00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef COUENNEVAROBJECT_HPP
00012 #define COUENNEVAROBJECT_HPP
00013
00014 #include "CouenneObject.hpp"
00015
00016 class CouenneProblem;
00017
00018
00020 class CouenneVarObject: public CouenneObject {
00021
00022 public:
00023
00025 CouenneVarObject (CouenneCutGenerator *c,
00026 CouenneProblem *p,
00027 exprVar *ref,
00028 Bonmin::BabSetupBase *base,
00029 JnlstPtr jnlst);
00030
00032 CouenneVarObject (const CouenneVarObject &src):
00033 CouenneObject (src) {}
00034
00036 ~CouenneVarObject () {}
00037
00039 virtual CouenneObject *clone () const
00040 {return new CouenneVarObject (*this);}
00041
00047 virtual double infeasibility (const OsiBranchingInformation *info, int &way) const;
00048
00051 virtual double checkInfeasibility (const OsiBranchingInformation * info) const;
00052
00055 virtual OsiBranchingObject *createBranch (OsiSolverInterface*,
00056 const OsiBranchingInformation*, int) const;
00057
00059 virtual double feasibleRegion (OsiSolverInterface *, const OsiBranchingInformation *) const;
00060
00062 virtual bool isCuttable () const;
00063
00064 protected:
00065
00067 CouNumber computeBranchingPoint (const OsiBranchingInformation *info,
00068 int& bestWay,
00069 const CouenneObject *&criticalObject) const;
00070 };
00071
00072 #endif