00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef AbcBranchBase_h_
00024 #define AbcBranchBase_h_
00025
00026
00027
00028
00029
00030 #include <string>
00031 #include <vector>
00032
00033 class OsiSolverInterface;
00034
00035 class AbcModel;
00036 class AbcNode;
00037 class AbcNodeDesc;
00038 class AbcBranchingObject;
00039
00040
00041
00050 class AbcBranchDecision {
00051 public:
00053 AbcBranchDecision ();
00054
00056 virtual ~AbcBranchDecision();
00057
00059 virtual AbcBranchDecision * clone() const = 0;
00060
00062 virtual void initialize(AbcModel * model) = 0;
00063
00074 virtual int
00075 betterBranch(int thisOne,
00076 int bestSoFar,
00077 double changeUp,
00078 int numberInfeasibilitiesUp,
00079 double changeDown,
00080 int numberInfeasibilitiesDown) = 0 ;
00081
00088 virtual int bestBranch ( AbcModel* model,
00089 int* objects,
00090 int numberObjects,
00091 int numberUnsatisfied,
00092 double * changeUp,
00093 int * numberInfeasibilitiesUp,
00094 double * changeDown,
00095 int * numberInfeasibilitiesDown,
00096 double objectiveValue );
00097
00098 private:
00099
00101 AbcBranchDecision & operator=(const AbcBranchDecision& rhs);
00102
00103 };
00104
00105 #endif