00001
00002
00003
00004
00005
00006 #ifndef CbcBranchUser_H
00007 #define CbcBranchUser_H
00008
00009 #include "CbcBranchBase.hpp"
00010 #include "CbcBranchActual.hpp"
00011
00014 class CbcBranchUserDecision : public CbcBranchDecision {
00015 public:
00016
00017 CbcBranchUserDecision ();
00018
00019
00020 CbcBranchUserDecision ( const CbcBranchUserDecision &);
00021
00022 virtual ~CbcBranchUserDecision();
00023
00025 virtual CbcBranchDecision * clone() const;
00026
00028 virtual void initialize(CbcModel * model);
00029
00037 virtual int betterBranch(CbcBranchingObject * thisOne,
00038 CbcBranchingObject * bestSoFar,
00039 double changeUp, int numberInfeasibilitiesUp,
00040 double changeDown, int numberInfeasibilitiesDown);
00041
00049 virtual int
00050 bestBranch (CbcBranchingObject ** objects, int numberObjects, int numberUnsatisfied,
00051 double * changeUp, int * numberInfeasibilitiesUp,
00052 double * changeDown, int * numberInfeasibilitiesDown,
00053 double objectiveValue) ;
00054 private:
00055
00057 CbcBranchUserDecision & operator=(const CbcBranchUserDecision& rhs);
00058
00059 };
00060
00062
00063
00064 class CbcSimpleIntegerFixed : public CbcSimpleInteger {
00065
00066 public:
00067
00068
00069 CbcSimpleIntegerFixed ();
00070
00071
00072 CbcSimpleIntegerFixed (CbcModel * model, int iColumn, double breakEven=0.5);
00073
00074
00075 CbcSimpleIntegerFixed (const CbcSimpleInteger & simple);
00076
00077
00078 CbcSimpleIntegerFixed ( const CbcSimpleIntegerFixed &);
00079
00081 virtual CbcObject * clone() const;
00082
00083
00084 CbcSimpleIntegerFixed & operator=( const CbcSimpleIntegerFixed& rhs);
00085
00086
00087 ~CbcSimpleIntegerFixed ();
00088
00090 virtual double infeasibility(int & preferredWay) const;
00091
00096
00102 virtual CbcBranchingObject * createBranch(OsiSolverInterface * solver,
00103 const OsiBranchingInformation * info, int way) ;
00104
00105 protected:
00107 };
00108
00109 #endif