[1271] | 1 | /* $Id: CbcStatistics.hpp 2464 2019-01-03 19:03:23Z unxusr $ */ |
---|
[150] | 2 | // Copyright (C) 2005, International Business Machines |
---|
| 3 | // Corporation and others. All Rights Reserved. |
---|
[1573] | 4 | // This code is licensed under the terms of the Eclipse Public License (EPL). |
---|
| 5 | |
---|
[150] | 6 | #ifndef CbcStatistics_H |
---|
| 7 | #define CbcStatistics_H |
---|
| 8 | |
---|
| 9 | #include "CbcModel.hpp" |
---|
| 10 | |
---|
| 11 | /** For gathering statistics */ |
---|
| 12 | |
---|
| 13 | class CbcStatistics { |
---|
| 14 | public: |
---|
[2464] | 15 | // Default Constructor |
---|
| 16 | CbcStatistics(); |
---|
| 17 | // Branch |
---|
| 18 | CbcStatistics(CbcNode *node, CbcModel *model); |
---|
[150] | 19 | |
---|
[2464] | 20 | ~CbcStatistics(); |
---|
| 21 | // Copy |
---|
| 22 | CbcStatistics(const CbcStatistics &rhs); |
---|
| 23 | // Assignment |
---|
| 24 | CbcStatistics &operator=(const CbcStatistics &rhs); |
---|
| 25 | // Update at end of branch |
---|
| 26 | void endOfBranch(int numberIterations, double objectiveValue); |
---|
| 27 | // Update number of infeasibilities |
---|
| 28 | void updateInfeasibility(int numberInfeasibilities); |
---|
| 29 | // Branch found to be infeasible by chooseBranch |
---|
| 30 | void sayInfeasible(); |
---|
| 31 | // Just prints |
---|
| 32 | void print(const int *sequenceLookup = NULL) const; |
---|
| 33 | // Node number |
---|
| 34 | inline int node() const |
---|
| 35 | { |
---|
| 36 | return id_; |
---|
| 37 | } |
---|
| 38 | // Parent node number |
---|
| 39 | inline int parentNode() const |
---|
| 40 | { |
---|
| 41 | return parentId_; |
---|
| 42 | } |
---|
| 43 | // depth |
---|
| 44 | inline int depth() const |
---|
| 45 | { |
---|
| 46 | return depth_; |
---|
| 47 | } |
---|
| 48 | // way |
---|
| 49 | inline int way() const |
---|
| 50 | { |
---|
| 51 | return way_; |
---|
| 52 | } |
---|
| 53 | // value |
---|
| 54 | inline double value() const |
---|
| 55 | { |
---|
| 56 | return value_; |
---|
| 57 | } |
---|
| 58 | // starting objective |
---|
| 59 | inline double startingObjective() const |
---|
| 60 | { |
---|
| 61 | return startingObjective_; |
---|
| 62 | } |
---|
| 63 | // Unsatisfied at beginning |
---|
| 64 | inline int startingInfeasibility() const |
---|
| 65 | { |
---|
| 66 | return startingInfeasibility_; |
---|
| 67 | } |
---|
| 68 | // starting objective |
---|
| 69 | inline double endingObjective() const |
---|
| 70 | { |
---|
| 71 | return endingObjective_; |
---|
| 72 | } |
---|
| 73 | // Unsatisfied at end |
---|
| 74 | inline int endingInfeasibility() const |
---|
| 75 | { |
---|
| 76 | return endingInfeasibility_; |
---|
| 77 | } |
---|
| 78 | // Number iterations |
---|
| 79 | inline int numberIterations() const |
---|
| 80 | { |
---|
| 81 | return numberIterations_; |
---|
| 82 | } |
---|
[150] | 83 | |
---|
| 84 | protected: |
---|
[2464] | 85 | // Data |
---|
| 86 | /// Value |
---|
| 87 | double value_; |
---|
| 88 | /// Starting objective |
---|
| 89 | double startingObjective_; |
---|
| 90 | /// Ending objective |
---|
| 91 | double endingObjective_; |
---|
| 92 | /// id |
---|
| 93 | int id_; |
---|
| 94 | /// parent id |
---|
| 95 | int parentId_; |
---|
| 96 | /// way -1 or +1 is first branch -10 or +10 is second branch |
---|
| 97 | int way_; |
---|
| 98 | /// sequence number branched on |
---|
| 99 | int sequence_; |
---|
| 100 | /// depth |
---|
| 101 | int depth_; |
---|
| 102 | /// starting number of integer infeasibilities |
---|
| 103 | int startingInfeasibility_; |
---|
| 104 | /// ending number of integer infeasibilities |
---|
| 105 | int endingInfeasibility_; |
---|
| 106 | /// number of iterations |
---|
| 107 | int numberIterations_; |
---|
[150] | 108 | }; |
---|
| 109 | |
---|
| 110 | #endif |
---|