limp-cbc-0.3.2.0: cbits/coin/CbcStatistics.hpp
/* $Id: CbcStatistics.hpp 1573 2011-01-05 01:12:36Z lou $ */
// Copyright (C) 2005, International Business Machines
// Corporation and others. All Rights Reserved.
// This code is licensed under the terms of the Eclipse Public License (EPL).
#ifndef CbcStatistics_H
#define CbcStatistics_H
#include "CbcModel.hpp"
/** For gathering statistics */
class CbcStatistics {
public:
// Default Constructor
CbcStatistics ();
// Branch
CbcStatistics(CbcNode * node, CbcModel * model);
~CbcStatistics();
// Copy
CbcStatistics(const CbcStatistics & rhs);
// Assignment
CbcStatistics& operator=(const CbcStatistics & rhs);
// Update at end of branch
void endOfBranch(int numberIterations, double objectiveValue);
// Update number of infeasibilities
void updateInfeasibility(int numberInfeasibilities);
// Branch found to be infeasible by chooseBranch
void sayInfeasible();
// Just prints
void print(const int * sequenceLookup = NULL) const;
// Node number
inline int node() const {
return id_;
}
// Parent node number
inline int parentNode() const {
return parentId_;
}
// depth
inline int depth() const {
return depth_;
}
// way
inline int way() const {
return way_;
}
// value
inline double value() const {
return value_;
}
// starting objective
inline double startingObjective() const {
return startingObjective_;
}
// Unsatisfied at beginning
inline int startingInfeasibility() const {
return startingInfeasibility_;
}
// starting objective
inline double endingObjective() const {
return endingObjective_;
}
// Unsatisfied at end
inline int endingInfeasibility() const {
return endingInfeasibility_;
}
// Number iterations
inline int numberIterations() const {
return numberIterations_;
}
protected:
// Data
/// Value
double value_;
/// Starting objective
double startingObjective_;
/// Ending objective
double endingObjective_;
/// id
int id_;
/// parent id
int parentId_;
/// way -1 or +1 is first branch -10 or +10 is second branch
int way_;
/// sequence number branched on
int sequence_;
/// depth
int depth_;
/// starting number of integer infeasibilities
int startingInfeasibility_;
/// ending number of integer infeasibilities
int endingInfeasibility_;
/// number of iterations
int numberIterations_;
};
#endif