AbcBranchBase.h
Go to the documentation of this file.
1 /*===========================================================================*
2  * This file is part of the Abstract Library for Parallel Search (ALPS). *
3  * *
4  * ALPS is distributed under the Eclipse Public License as part of the *
5  * COIN-OR repository (http://www.coin-or.org). *
6  * *
7  * Authors: *
8  * *
9  * Yan Xu, Lehigh University *
10  * Ted Ralphs, Lehigh University *
11  * *
12  * Conceptual Design: *
13  * *
14  * Yan Xu, Lehigh University *
15  * Ted Ralphs, Lehigh University *
16  * Laszlo Ladanyi, IBM T.J. Watson Research Center *
17  * Matthew Saltzman, Clemson University *
18  * *
19  * *
20  * Copyright (C) 2001-2013, Lehigh University, Yan Xu, and Ted Ralphs. *
21  *===========================================================================*/
22 
23 #ifndef AbcBranchBase_h_
24 #define AbcBranchBase_h_
25 
26 //#############################################################################
27 // This file is modified from SbbBranchBase.hpp
28 //#############################################################################
29 
30 #include <string>
31 #include <vector>
32 
33 class OsiSolverInterface;
34 
35 class AbcModel;
36 class AbcNode;
37 class AbcNodeDesc;
38 class AbcBranchingObject;
39 
40 //#############################################################################
41 
51  public:
54 
56  virtual ~AbcBranchDecision();
57 
59  virtual AbcBranchDecision * clone() const = 0;
60 
62  virtual void initialize(AbcModel * model) = 0;
63 
74  virtual int
75  betterBranch(int thisOne,
76  int bestSoFar,
77  double changeUp,
78  int numberInfeasibilitiesUp,
79  double changeDown,
80  int numberInfeasibilitiesDown) = 0 ;
81 
88  virtual int bestBranch ( AbcModel* model,
89  int* objects,
90  int numberObjects,
91  int numberUnsatisfied,
92  double * changeUp,
93  int * numberInfeasibilitiesUp,
94  double * changeDown,
95  int * numberInfeasibilitiesDown,
96  double objectiveValue );
97 
98  private:
99 
102 
103 };
104 
105 #endif
virtual int bestBranch(AbcModel *model, int *objects, int numberObjects, int numberUnsatisfied, double *changeUp, int *numberInfeasibilitiesUp, double *changeDown, int *numberInfeasibilitiesDown, double objectiveValue)
Compare N branching objects.
virtual AbcBranchDecision * clone() const =0
Clone.
virtual int betterBranch(int thisOne, int bestSoFar, double changeUp, int numberInfeasibilitiesUp, double changeDown, int numberInfeasibilitiesDown)=0
Compare two branching objects (current just integer variables).
AbcBranchDecision & operator=(const AbcBranchDecision &rhs)
Assignment is illegal.
AbcBranchDecision()
Default Constructor.
Abstract Base Class for describing an interface to a solver.
virtual void initialize(AbcModel *model)=0
Initialize e.g. before starting to choose a branch at a node.
virtual ~AbcBranchDecision()
Destructor.
Abstract branching decision base class.
Definition: AbcBranchBase.h:50
Model class for ALPS Branch and Cut.
Definition: AbcModel.h:55