Alps  2.0.2
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  * Aykut Bulut, Lehigh University *
11  * Ted Ralphs, Lehigh University *
12  * *
13  * Conceptual Design: *
14  * *
15  * Yan Xu, Lehigh University *
16  * Ted Ralphs, Lehigh University *
17  * Laszlo Ladanyi, IBM T.J. Watson Research Center *
18  * Matthew Saltzman, Clemson University *
19  * *
20  * *
21  * Copyright (C) 2001-2019, Lehigh University, Yan Xu, Aykut Bulut, and *
22  * Ted Ralphs. *
23  * All Rights Reserved. *
24  *===========================================================================*/
25 
26 
27 #ifndef AbcBranchBase_h_
28 #define AbcBranchBase_h_
29 
30 //#############################################################################
31 // This file is modified from SbbBranchBase.hpp
32 //#############################################################################
33 
34 #include <string>
35 #include <vector>
36 
37 class OsiSolverInterface;
38 
39 class AbcModel;
40 class AbcNode;
41 class AbcNodeDesc;
42 class AbcBranchingObject;
43 
44 //#############################################################################
45 
54 class AbcBranchDecision {
55  public:
58 
60  virtual ~AbcBranchDecision();
61 
63  virtual AbcBranchDecision * clone() const = 0;
64 
66  virtual void initialize(AbcModel * model) = 0;
67 
78  virtual int
79  betterBranch(int thisOne,
80  int bestSoFar,
81  double changeUp,
82  int numberInfeasibilitiesUp,
83  double changeDown,
84  int numberInfeasibilitiesDown) = 0 ;
85 
92  virtual int bestBranch ( AbcModel* model,
93  int* objects,
94  int numberObjects,
95  int numberUnsatisfied,
96  double * changeUp,
97  int * numberInfeasibilitiesUp,
98  double * changeDown,
99  int * numberInfeasibilitiesDown,
100  double objectiveValue );
101 
102  private:
103 
106 
107 };
108 
109 #endif
AbcBranchDecision
Abstract branching decision base class.
Definition: AbcBranchBase.h:54
AbcBranchDecision::AbcBranchDecision
AbcBranchDecision()
Default Constructor.
AbcBranchDecision::~AbcBranchDecision
virtual ~AbcBranchDecision()
Destructor.
AbcBranchDecision::betterBranch
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::initialize
virtual void initialize(AbcModel *model)=0
Initialize e.g. before starting to choose a branch at a node.
AbcBranchDecision::bestBranch
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.
AbcNodeDesc
Definition: AbcNodeDesc.h:52
AbcBranchDecision::clone
virtual AbcBranchDecision * clone() const =0
Clone.
AbcModel
Model class for ALPS Branch and Cut.
Definition: AbcModel.h:59
AbcBranchDecision::operator=
AbcBranchDecision & operator=(const AbcBranchDecision &rhs)
Assignment is illegal.