[1271] | 1 | /* $Id: CbcStatistics.hpp 1573 2011-01-05 01:12:36Z lou $ */ |
---|
[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: |
---|
[1286] | 15 | // Default Constructor |
---|
| 16 | CbcStatistics (); |
---|
| 17 | // Branch |
---|
| 18 | CbcStatistics(CbcNode * node, CbcModel * model); |
---|
[150] | 19 | |
---|
[1286] | 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 | return id_; |
---|
| 36 | } |
---|
| 37 | // Parent node number |
---|
| 38 | inline int parentNode() const { |
---|
| 39 | return parentId_; |
---|
| 40 | } |
---|
| 41 | // depth |
---|
| 42 | inline int depth() const { |
---|
| 43 | return depth_; |
---|
| 44 | } |
---|
| 45 | // way |
---|
| 46 | inline int way() const { |
---|
| 47 | return way_; |
---|
| 48 | } |
---|
| 49 | // value |
---|
| 50 | inline double value() const { |
---|
| 51 | return value_; |
---|
| 52 | } |
---|
| 53 | // starting objective |
---|
| 54 | inline double startingObjective() const { |
---|
| 55 | return startingObjective_; |
---|
| 56 | } |
---|
| 57 | // Unsatisfied at beginning |
---|
| 58 | inline int startingInfeasibility() const { |
---|
| 59 | return startingInfeasibility_; |
---|
| 60 | } |
---|
| 61 | // starting objective |
---|
| 62 | inline double endingObjective() const { |
---|
| 63 | return endingObjective_; |
---|
| 64 | } |
---|
| 65 | // Unsatisfied at end |
---|
| 66 | inline int endingInfeasibility() const { |
---|
| 67 | return endingInfeasibility_; |
---|
| 68 | } |
---|
| 69 | // Number iterations |
---|
| 70 | inline int numberIterations() const { |
---|
| 71 | return numberIterations_; |
---|
| 72 | } |
---|
[150] | 73 | |
---|
| 74 | protected: |
---|
[1286] | 75 | // Data |
---|
| 76 | /// Value |
---|
| 77 | double value_; |
---|
| 78 | /// Starting objective |
---|
| 79 | double startingObjective_; |
---|
| 80 | /// Ending objective |
---|
| 81 | double endingObjective_; |
---|
| 82 | /// id |
---|
| 83 | int id_; |
---|
| 84 | /// parent id |
---|
| 85 | int parentId_; |
---|
| 86 | /// way -1 or +1 is first branch -10 or +10 is second branch |
---|
| 87 | int way_; |
---|
| 88 | /// sequence number branched on |
---|
| 89 | int sequence_; |
---|
| 90 | /// depth |
---|
| 91 | int depth_; |
---|
| 92 | /// starting number of integer infeasibilities |
---|
| 93 | int startingInfeasibility_; |
---|
| 94 | /// ending number of integer infeasibilities |
---|
| 95 | int endingInfeasibility_; |
---|
| 96 | /// number of iterations |
---|
| 97 | int numberIterations_; |
---|
[150] | 98 | }; |
---|
| 99 | |
---|
| 100 | #endif |
---|
[1432] | 101 | |
---|