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 int varSelection);
00031
00033 CouenneVarObject (const CouenneVarObject &src):
00034 CouenneObject (src),
00035 varSelection_ (src.varSelection_) {}
00036
00038 ~CouenneVarObject () {}
00039
00041 virtual CouenneObject *clone () const
00042 {return new CouenneVarObject (*this);}
00043
00049 virtual double infeasibility (const OsiBranchingInformation *info, int &way) const;
00050
00053 virtual double checkInfeasibility (const OsiBranchingInformation * info) const;
00054
00057 virtual OsiBranchingObject *createBranch (OsiSolverInterface*,
00058 const OsiBranchingInformation*, int) const;
00059
00061 virtual double feasibleRegion (OsiSolverInterface *, const OsiBranchingInformation *) const;
00062
00064 virtual bool isCuttable () const;
00065
00066 protected:
00067
00071 int varSelection_;
00072
00074 CouNumber computeBranchingPoint (const OsiBranchingInformation *info,
00075 int& bestWay,
00076 const CouenneObject *&criticalObject) const;
00077 };
00078
00079 #endif