00001
00002
00003 #ifndef CbcBranchUser_H
00004 #define CbcBranchUser_H
00005
00006 #include "CbcBranchBase.hpp"
00007 #include "CbcBranchActual.hpp"
00008
00011 class CbcBranchUserDecision : public CbcBranchDecision {
00012 public:
00013
00014 CbcBranchUserDecision ();
00015
00016
00017 CbcBranchUserDecision ( const CbcBranchUserDecision &);
00018
00019 virtual ~CbcBranchUserDecision();
00020
00022 virtual CbcBranchDecision * clone() const;
00023
00025 virtual void initialize(CbcModel * model);
00026
00034 virtual int betterBranch(CbcBranchingObject * thisOne,
00035 CbcBranchingObject * bestSoFar,
00036 double changeUp, int numberInfeasibilitiesUp,
00037 double changeDown, int numberInfeasibilitiesDown);
00038
00046 virtual int
00047 bestBranch (CbcBranchingObject ** objects, int numberObjects, int numberUnsatisfied,
00048 double * changeUp, int * numberInfeasibilitiesUp,
00049 double * changeDown, int * numberInfeasibilitiesDown,
00050 double objectiveValue) ;
00051 private:
00052
00054 CbcBranchUserDecision & operator=(const CbcBranchUserDecision& rhs);
00055
00056 };
00057
00059
00060
00061 class CbcSimpleIntegerFixed : public CbcSimpleInteger {
00062
00063 public:
00064
00065
00066 CbcSimpleIntegerFixed ();
00067
00068
00069 CbcSimpleIntegerFixed (CbcModel * model, int iColumn, double breakEven=0.5);
00070
00071
00072 CbcSimpleIntegerFixed (const CbcSimpleInteger & simple);
00073
00074
00075 CbcSimpleIntegerFixed ( const CbcSimpleIntegerFixed &);
00076
00078 virtual CbcObject * clone() const;
00079
00080
00081 CbcSimpleIntegerFixed & operator=( const CbcSimpleIntegerFixed& rhs);
00082
00083
00084 ~CbcSimpleIntegerFixed ();
00085
00087 virtual double infeasibility(int & preferredWay) const;
00088
00093
00099 virtual CbcBranchingObject * createBranch(OsiSolverInterface * solver,
00100 const OsiBranchingInformation * info, int way) ;
00101
00102 protected:
00104 };
00105
00106 #endif