16 #ifndef __OMNETPP_CHISTOGRAMSTRATEGY_H 17 #define __OMNETPP_CHISTOGRAMSTRATEGY_H 19 #include <omnetpp/chistogram.h> 67 virtual void collect(
double value) = 0;
74 virtual void collectWeighted(
double value,
double weight) = 0;
82 virtual void setUpBins() = 0;
88 virtual void clear() = 0;
111 Mode mode = cHistogram::MODE_REALS;
121 lo(lo), hi(hi), numBins(numBins), mode(mode) {}
129 void setRange(
double lo,
double hi) {this->lo = lo; this->hi = hi;}
130 double getUpperLimit()
const {
return hi;}
131 void setUpperLimit(
double hi) {this->hi = hi;}
132 double getLowerLimit()
const {
return lo;}
133 void setLowerLimit(
double lo) {this->lo = lo;}
134 Mode getMode()
const {
return mode;}
135 void setMode(Mode mode) {this->mode = mode;}
136 double getBinSize()
const {
return numBins;}
137 void setBinSize(
double binSize) {this->numBins = binSize;}
142 virtual void collect(
double value)
override;
143 virtual void collectWeighted(
double value,
double weight)
override;
144 virtual void setUpBins()
override;
160 bool inPrecollection =
true;
161 size_t numToPrecollect = 1000;
162 size_t numToCollate = 10;
163 double lastRange = NAN;
164 int rangeUnchangedCounter = 0;
165 int rangeUnchangedThreshold = 50;
166 std::vector<double> values;
167 std::vector<double> weights;
170 virtual void moveValuesIntoHistogram();
171 virtual bool precollect(
double value,
double weight=1.0);
172 virtual void createBins() = 0;
187 int getNumToPrecollect()
const {
return numToPrecollect;}
188 void setNumToPrecollect(
int numToPrecollect) {this->numToPrecollect = numToPrecollect;}
189 int getNumToCollate()
const {
return numToCollate;}
190 void setNumToCollate(
int numToCollate) {this->numToCollate = numToCollate;}
191 int getRangeUnchangedThreshold()
const {
return rangeUnchangedThreshold;}
192 void setRangeUnchangedThreshold(
int threshold) {this->rangeUnchangedThreshold = threshold;}
197 virtual void setUpBins()
override;
198 virtual void clear()
override;
221 static const int DEFAULT_NUM_BINS = 60;
222 double rangeExtensionFactor = 1.5;
223 double binSize = NAN;
224 int numBinsHint = -1;
225 int targetNumBins = DEFAULT_NUM_BINS;
226 Mode mode = cHistogram::MODE_AUTO;
227 bool autoExtend =
true;
228 bool binMerging =
true;
229 int maxNumBins = 1000;
232 virtual void createBins()
override;
233 virtual void extendBinsTo(
double value);
234 virtual void reduceNumBinsTo(
int numBins);
235 virtual void mergeAllBinsIntoOne(
double newApproxBinSize);
243 explicit cDefaultHistogramStrategy(
int numBinsHint=-1, Mode mode=cHistogram::MODE_AUTO) : numBinsHint(numBinsHint), mode(mode) {}
251 int getNumBinsHint()
const {
return numBinsHint;}
252 void setNumBinsHint(
int numBins) {this->numBinsHint = numBins;}
257 virtual void collect(
double value)
override;
258 virtual void collectWeighted(
double value,
double weight)
override;
300 static const int DEFAULT_NUM_BINS = 60;
303 double rangeExtensionFactor = 1.5;
304 int numBinsHint = -1;
305 int targetNumBins = DEFAULT_NUM_BINS;
306 double requestedBinSize = NAN;
307 double binSize = NAN;
308 Mode mode = cHistogram::MODE_AUTO;
309 bool binSizeRounding =
true;
310 bool autoExtend =
true;
311 bool binMerging =
true;
312 int maxNumBins = 1000;
315 virtual void createBins()
override;
316 virtual void extendBinsTo(
double value);
317 virtual void reduceNumBinsTo(
int numBins);
318 virtual void mergeAllBinsIntoOne(
double newApproxBinSize);
335 void setRangeHint(
double lo,
double hi) {this->lo = lo; this->hi = hi;}
336 double getUpperLimitHint()
const {
return hi;}
337 void setUpperLimitHint(
double hi) {this->hi = hi;}
338 double getLowerLimitHint()
const {
return lo;}
339 void setLowerLimitHint(
double lo) {this->lo = lo;}
340 double getRangeExtensionFactor()
const {
return rangeExtensionFactor;}
341 void setRangeExtensionFactor(
double rangeExtensionFactor) {this->rangeExtensionFactor = rangeExtensionFactor;}
342 Mode getMode()
const {
return mode;}
343 void setMode(Mode mode) {this->mode = mode;}
344 double getBinSizeHint()
const {
return requestedBinSize;}
345 void setBinSizeHint(
double binSize) {this->requestedBinSize = binSize;}
346 bool getBinSizeRounding()
const {
return binSizeRounding;}
347 void setBinSizeRounding(
bool binSizeRounding) {this->binSizeRounding = binSizeRounding;}
348 int getNumBinsHint()
const {
return numBinsHint;}
349 void setNumBinsHint(
int numBins) {this->numBinsHint = numBins;}
350 void setAutoExtend(
bool enable) {this->autoExtend = enable;}
351 bool getAutoExtend()
const {
return autoExtend;}
352 void setBinMerging(
bool enable) {this->binMerging = enable;}
353 bool getBinMerging()
const {
return binMerging;}
354 int getMaxNumBins()
const {
return maxNumBins;}
355 void setMaxNumBins(
int numBins) {this->maxNumBins = numBins;}
360 virtual void collect(
double value)
override;
361 virtual void collectWeighted(
double value,
double weight)
override;
362 virtual void clear()
override;
Root of the OMNeT++ class hierarchy. cObject is a lightweight class without any data members...
Definition: cobject.h:58
Base class for histogram strategies that employ a precollection phase in order to gather input for se...
Definition: chistogramstrategy.h:157
virtual void clear() override
Definition: chistogramstrategy.h:145
virtual void clear() override
cHistogram * getHistogram() const
Definition: chistogramstrategy.h:57
virtual cAutoRangeHistogramStrategy * dup() const override
Definition: chistogramstrategy.h:330
Histogram strategy that sets up uniform bins over a predetermined interval. The number of bins and th...
Definition: chistogramstrategy.h:105
virtual cFixedRangeHistogramStrategy * dup() const override
Definition: chistogramstrategy.h:124
Generic histogram class, capable of representing both unweighted and weighted distributions. Histogram data are stored as n+1 bin edges and n bin values, both being double-precision floating point values. Upper and lower outliers are kept both as counts and as sum of weights.
Definition: chistogram.h:86
Interface for histogram strategy classes. Histogram strategies encapsulate the task of setting up and...
Definition: chistogramstrategy.h:29
void setRangeHint(double lo, double hi)
Use NAN to leave either value unspecified.
Definition: chistogramstrategy.h:335
Definition: cabstracthistogram.h:21
Mode
Definition: chistogram.h:93
A strategy class used by the default setup of cHistogram. It is meant to provide a good quality unifo...
Definition: chistogramstrategy.h:218
A generic, very configurable histogram strategy that is meant to provide a good quality histogram for...
Definition: chistogramstrategy.h:297
virtual cDefaultHistogramStrategy * dup() const override
Definition: chistogramstrategy.h:246
virtual void clear() override
Definition: chistogramstrategy.h:259