A Discrete-Event Network Simulator
Home
Tutorials ▼
English
Portuguese
Docs ▼
Wiki
Manual
Models
Develop ▼
API
Bugs
API
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Groups
Pages
basic-data-calculators.h
Go to the documentation of this file.
1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2
/*
3
* Copyright (c) 2008 Drexel University
4
*
5
* This program is free software; you can redistribute it and/or modify
6
* it under the terms of the GNU General Public License version 2 as
7
* published by the Free Software Foundation;
8
*
9
* This program is distributed in the hope that it will be useful,
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
* GNU General Public License for more details.
13
*
14
* You should have received a copy of the GNU General Public License
15
* along with this program; if not, write to the Free Software
16
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17
*
18
* Author: Joe Kopena (tjkopena@cs.drexel.edu)
19
*/
20
21
#ifndef BASIC_DATA_CALCULATORS_H
22
#define BASIC_DATA_CALCULATORS_H
23
24
#include "
data-calculator.h
"
25
#include "
data-output-interface.h
"
26
27
namespace
ns3 {
28
34
//------------------------------------------------------------
35
//--------------------------------------------
36
template
<
typename
T = u
int
32_t>
37
class
MinMaxAvgTotalCalculator
:
public
DataCalculator
,
38
public
StatisticalSummary
{
39
public
:
40
MinMaxAvgTotalCalculator
();
41
virtual
~MinMaxAvgTotalCalculator
();
42
43
void
Update
(
const
T i);
44
void
Reset
();
45
46
virtual
void
Output
(
DataOutputCallback
&callback)
const
;
47
48
long
getCount
()
const
{
return
m_count
; }
49
double
getSum
()
const
{
return
m_total
; }
50
double
getMin
()
const
{
return
m_min
; }
51
double
getMax
()
const
{
return
m_max
; }
52
double
getMean
()
const
{
return
m_meanCurr
; }
53
double
getStddev
()
const
{
return
std::sqrt (
m_varianceCurr
); }
54
double
getVariance
()
const
{
return
m_varianceCurr
; }
55
double
getSqrSum
()
const
{
return
m_squareTotal
; }
56
57
protected
:
58
virtual
void
DoDispose
(
void
);
59
60
uint32_t
m_count
;
61
62
T
m_total
;
63
T
m_squareTotal
;
64
T
m_min
;
65
T
m_max
;
66
67
double
m_meanCurr
;
68
double
m_sCurr
;
69
double
m_varianceCurr
;
70
71
double
m_meanPrev
;
72
double
m_sPrev
;
73
74
// end MinMaxAvgTotalCalculator
75
};
76
77
//----------------------------------------------
78
template
<
typename
T>
79
MinMaxAvgTotalCalculator<T>::MinMaxAvgTotalCalculator
()
80
{
81
m_count = 0;
82
83
m_total = 0;
84
m_squareTotal = 0;
85
86
m_meanCurr =
NaN
;
87
m_sCurr =
NaN
;
88
m_varianceCurr =
NaN
;
89
90
m_meanPrev =
NaN
;
91
m_sPrev =
NaN
;
92
}
93
94
template
<
typename
T>
95
MinMaxAvgTotalCalculator<T>::~MinMaxAvgTotalCalculator
()
96
{
97
}
98
template
<
typename
T>
99
void
100
MinMaxAvgTotalCalculator<T>::DoDispose
(
void
)
101
{
102
DataCalculator::DoDispose
();
103
// MinMaxAvgTotalCalculator::DoDispose
104
}
105
106
template
<
typename
T>
107
void
108
MinMaxAvgTotalCalculator<T>::Update
(
const
T i)
109
{
110
if
(m_enabled) {
111
m_count++;
112
113
m_total += i;
114
m_squareTotal += i*i;
115
116
if
(m_count == 1)
117
{
118
m_min = i;
119
m_max = i;
120
}
121
else
122
{
123
if
(i < m_min)
124
{
125
m_min = i;
126
}
127
if
(i > m_max)
128
{
129
m_max = i;
130
}
131
}
132
133
// Calculate the variance based on equations (15) and (16) on
134
// page 216 of "The Art of Computer Programming, Volume 2",
135
// Second Edition. Donald E. Knuth. Addison-Wesley
136
// Publishing Company, 1973.
137
//
138
// The relationships between the variance, standard deviation,
139
// and s are as follows
140
//
141
// s
142
// variance = -----------
143
// count - 1
144
//
145
// -------------
146
// /
147
// standard_deviation = / variance
148
// \/
149
//
150
if
(m_count == 1)
151
{
152
// Set the very first values.
153
m_meanCurr = i;
154
m_sCurr = 0;
155
m_varianceCurr = m_sCurr;
156
}
157
else
158
{
159
// Save the previous values.
160
m_meanPrev = m_meanCurr;
161
m_sPrev = m_sCurr;
162
163
// Update the current values.
164
m_meanCurr = m_meanPrev + (i - m_meanPrev) / m_count;
165
m_sCurr = m_sPrev + (i - m_meanPrev) * (i - m_meanCurr);
166
m_varianceCurr = m_sCurr / (m_count - 1);
167
}
168
}
169
// end MinMaxAvgTotalCalculator::Update
170
}
171
172
template
<
typename
T>
173
void
174
MinMaxAvgTotalCalculator<T>::Reset
()
175
{
176
m_count = 0;
177
178
m_total = 0;
179
m_squareTotal = 0;
180
181
m_meanCurr =
NaN
;
182
m_sCurr =
NaN
;
183
m_varianceCurr =
NaN
;
184
185
m_meanPrev =
NaN
;
186
m_sPrev =
NaN
;
187
// end MinMaxAvgTotalCalculator::Reset
188
}
189
190
template
<
typename
T>
191
void
192
MinMaxAvgTotalCalculator<T>::Output
(
DataOutputCallback
&callback)
const
193
{
194
callback.
OutputStatistic
(m_context, m_key,
this
);
195
}
196
197
202
//------------------------------------------------------------
203
//--------------------------------------------
204
template
<
typename
T = u
int
32_t>
205
class
CounterCalculator
:
public
DataCalculator
{
206
public
:
207
CounterCalculator
();
208
virtual
~CounterCalculator
();
209
210
void
Update
();
211
void
Update
(
const
T i);
212
213
T
GetCount
()
const
;
214
215
virtual
void
Output
(
DataOutputCallback
&callback)
const
;
216
217
protected
:
218
virtual
void
DoDispose
(
void
);
219
220
T
m_count
;
221
222
// end CounterCalculator
223
};
224
225
226
//--------------------------------------------
227
template
<
typename
T>
228
CounterCalculator<T>::CounterCalculator
() :
229
m_count (0)
230
{
231
}
232
233
template
<
typename
T>
234
CounterCalculator<T>::~CounterCalculator
()
235
{
236
}
237
template
<
typename
T>
238
void
239
CounterCalculator<T>::DoDispose
(
void
)
240
{
241
DataCalculator::DoDispose
();
242
// CounterCalculator::DoDispose
243
}
244
245
template
<
typename
T>
246
void
247
CounterCalculator<T>::Update
()
248
{
249
if
(m_enabled) {
250
m_count++;
251
}
252
// end CounterCalculator::Update
253
}
254
255
template
<
typename
T>
256
void
257
CounterCalculator<T>::Update
(
const
T i)
258
{
259
if
(m_enabled) {
260
m_count += i;
261
}
262
// end CounterCalculator::Update
263
}
264
265
template
<
typename
T>
266
T
267
CounterCalculator<T>::GetCount
()
const
268
{
269
return
m_count;
270
// end CounterCalculator::GetCount
271
}
272
273
template
<
typename
T>
274
void
275
CounterCalculator<T>::Output
(
DataOutputCallback
&callback)
const
276
{
277
callback.
OutputSingleton
(m_context, m_key, m_count);
278
// end CounterCalculator::Output
279
}
280
281
// end namespace ns3
282
};
283
284
285
#endif
/* BASIC_DATA_CALCULATORS_H */
ns3::MinMaxAvgTotalCalculator::getSum
double getSum() const
Definition:
basic-data-calculators.h:49
ns3::StatisticalSummary
Definition:
data-calculator.h:34
ns3::MinMaxAvgTotalCalculator::getMax
double getMax() const
Definition:
basic-data-calculators.h:51
ns3::MinMaxAvgTotalCalculator::m_min
T m_min
Definition:
basic-data-calculators.h:64
ns3::MinMaxAvgTotalCalculator::getMin
double getMin() const
Definition:
basic-data-calculators.h:50
ns3::CounterCalculator::GetCount
T GetCount() const
Definition:
basic-data-calculators.h:267
ns3::MinMaxAvgTotalCalculator::m_total
T m_total
Definition:
basic-data-calculators.h:62
ns3::MinMaxAvgTotalCalculator::getSqrSum
double getSqrSum() const
Definition:
basic-data-calculators.h:55
ns3::MinMaxAvgTotalCalculator::~MinMaxAvgTotalCalculator
virtual ~MinMaxAvgTotalCalculator()
Definition:
basic-data-calculators.h:95
ns3::MinMaxAvgTotalCalculator::getVariance
double getVariance() const
Definition:
basic-data-calculators.h:54
ns3::MinMaxAvgTotalCalculator::Output
virtual void Output(DataOutputCallback &callback) const
Definition:
basic-data-calculators.h:192
ns3::MinMaxAvgTotalCalculator::Reset
void Reset()
Definition:
basic-data-calculators.h:174
data-calculator.h
ns3::DataCalculator::DoDispose
virtual void DoDispose(void)
Definition:
data-calculator.cc:47
ns3::MinMaxAvgTotalCalculator::MinMaxAvgTotalCalculator
MinMaxAvgTotalCalculator()
Definition:
basic-data-calculators.h:79
ns3::NaN
const double NaN
Definition:
data-calculator.cc:31
ns3::CounterCalculator::m_count
T m_count
Definition:
basic-data-calculators.h:220
ns3::MinMaxAvgTotalCalculator::DoDispose
virtual void DoDispose(void)
Definition:
basic-data-calculators.h:100
ns3::MinMaxAvgTotalCalculator
Definition:
basic-data-calculators.h:37
ns3::MinMaxAvgTotalCalculator::m_meanPrev
double m_meanPrev
Definition:
basic-data-calculators.h:71
ns3::MinMaxAvgTotalCalculator::m_meanCurr
double m_meanCurr
Definition:
basic-data-calculators.h:67
ns3::DataOutputCallback
Definition:
data-output-interface.h:60
data-output-interface.h
ns3::MinMaxAvgTotalCalculator::Update
void Update(const T i)
Definition:
basic-data-calculators.h:108
ns3::MinMaxAvgTotalCalculator::getStddev
double getStddev() const
Definition:
basic-data-calculators.h:53
ns3::MinMaxAvgTotalCalculator::m_varianceCurr
double m_varianceCurr
Definition:
basic-data-calculators.h:69
ns3::MinMaxAvgTotalCalculator::m_sPrev
double m_sPrev
Definition:
basic-data-calculators.h:72
ns3::DataCalculator
Definition:
data-calculator.h:87
ns3::MinMaxAvgTotalCalculator::m_max
T m_max
Definition:
basic-data-calculators.h:65
ns3::CounterCalculator::Update
void Update()
Definition:
basic-data-calculators.h:247
ns3::MinMaxAvgTotalCalculator::getMean
double getMean() const
Definition:
basic-data-calculators.h:52
ns3::CounterCalculator::Output
virtual void Output(DataOutputCallback &callback) const
Definition:
basic-data-calculators.h:275
ns3::CounterCalculator::CounterCalculator
CounterCalculator()
Definition:
basic-data-calculators.h:228
ns3::DataOutputCallback::OutputStatistic
virtual void OutputStatistic(std::string key, std::string variable, const StatisticalSummary *statSum)=0
ns3::CounterCalculator
Definition:
basic-data-calculators.h:205
ns3::CounterCalculator::~CounterCalculator
virtual ~CounterCalculator()
Definition:
basic-data-calculators.h:234
ns3::DataOutputCallback::OutputSingleton
virtual void OutputSingleton(std::string key, std::string variable, int val)=0
ns3::MinMaxAvgTotalCalculator::m_squareTotal
T m_squareTotal
Definition:
basic-data-calculators.h:63
ns3::MinMaxAvgTotalCalculator::m_sCurr
double m_sCurr
Definition:
basic-data-calculators.h:68
ns3::MinMaxAvgTotalCalculator::getCount
long getCount() const
Definition:
basic-data-calculators.h:48
ns3::CounterCalculator::DoDispose
virtual void DoDispose(void)
Definition:
basic-data-calculators.h:239
ns3::MinMaxAvgTotalCalculator::m_count
uint32_t m_count
Definition:
basic-data-calculators.h:60
src
stats
model
basic-data-calculators.h
Generated on Sun Apr 20 2014 11:15:02 for ns-3 by
1.8.6