CouenneVarObject.hpp
Go to the documentation of this file.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 namespace Couenne {
00017
00018 class CouenneProblem;
00019
00020
00022 class CouenneVarObject: public CouenneObject {
00023
00024 public:
00025
00027 CouenneVarObject (CouenneCutGenerator *c,
00028 CouenneProblem *p,
00029 exprVar *ref,
00030 Bonmin::BabSetupBase *base,
00031 JnlstPtr jnlst,
00032 int varSelection);
00033
00035 CouenneVarObject (const CouenneVarObject &src):
00036 CouenneObject (src),
00037 varSelection_ (src.varSelection_) {}
00038
00040 ~CouenneVarObject () {}
00041
00043 virtual CouenneObject *clone () const
00044 {return new CouenneVarObject (*this);}
00045
00051 virtual double infeasibility (const OsiBranchingInformation *info, int &way) const;
00052
00055 virtual double checkInfeasibility (const OsiBranchingInformation * info) const;
00056
00059 virtual OsiBranchingObject *createBranch (OsiSolverInterface*,
00060 const OsiBranchingInformation*, int) const;
00061
00063 virtual double feasibleRegion (OsiSolverInterface *, const OsiBranchingInformation *) const;
00064
00066 virtual bool isCuttable () const;
00067
00068 protected:
00069
00073 int varSelection_;
00074
00076 CouNumber computeBranchingPoint (const OsiBranchingInformation *info,
00077 int& bestWay,
00078 const CouenneObject *&criticalObject) const;
00079 };
00080
00081 }
00082
00083 #endif