Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Mpp
MLUQ
Commits
512e5de1
Commit
512e5de1
authored
May 12, 2021
by
niklas.baumgarten
Browse files
rename to MultilevelData
parent
429a3dc0
Pipeline
#149208
passed with stages
in 51 minutes and 47 seconds
Changes
11
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
mlmc/src/estimators/MultilevelMonteCarlo.cpp
View file @
512e5de1
...
...
@@ -68,21 +68,13 @@ void MultilevelMonteCarlo::PrintInfo() const {
}
void
MultilevelMonteCarlo
::
MultilevelResults
()
const
{
mout
.
PrintInfo
(
"MC Results"
,
verbose
,
PrintInfoEntry
(
"E(Qf-Qc)"
,
vec2str
(
data
.
avgs
.
GetYVector
())),
PrintInfoEntry
(
"E(Qf)"
,
vec2str
(
data
.
avgs
.
GetQVector
())),
PrintInfoEntry
(
"V(Qf-Qc)"
,
vec2str
(
data
.
vars
.
GetYVector
())),
PrintInfoEntry
(
"V(Qf)"
,
vec2str
(
data
.
vars
.
GetQVector
())),
PrintInfoEntry
(
"kurtosis"
,
vec2str
(
data
.
kurtosis
.
GetYVector
())),
PrintInfoEntry
(
"E(cost)"
,
vec2str
(
data
.
avgs
.
GetCostVector
())),
PrintInfoEntry
(
"Used Levels"
,
vec2str
(
data
.
avgs
.
GetLevelVector
())),
PrintInfoEntry
(
"Used Samples"
,
vec2str
(
data
.
ctrs
.
GetMVector
())));
data
.
MultilevelResults
();
}
void
MultilevelMonteCarlo
::
EstimatorResults
()
const
{
mout
.
PrintInfo
(
"MLMC Results"
,
verbose
,
PrintInfoEntry
(
"Value"
,
data
.
avg
s
.
Q
),
PrintInfoEntry
(
"Cost"
,
data
.
avg
s
.
Cost
),
PrintInfoEntry
(
"Value"
,
data
.
mean
s
.
Q
),
PrintInfoEntry
(
"Cost"
,
data
.
mean
s
.
Cost
),
PrintInfoEntry
(
"Epsilon"
,
epsilon
),
PrintInfoEntry
(
"Total Error"
,
errors
.
total
),
PrintInfoEntry
(
"Statistical Error"
,
errors
.
stochastic
),
...
...
@@ -95,10 +87,3 @@ void MultilevelMonteCarlo::ExponentResults() const {
PrintInfoEntry
(
"Final beta"
,
exponents
.
beta
),
PrintInfoEntry
(
"Final gamma"
,
exponents
.
gamma
));
}
void
MultiLevelMonteCarloData
::
ExtractDataFrom
(
const
MonteCarloMap
&
mcMap
)
{
ctrs
.
Update
(
mcMap
);
avgs
.
Update
(
mcMap
);
vars
.
Update
(
mcMap
);
kurtosis
.
Update
(
mcMap
);
}
mlmc/src/estimators/MultilevelMonteCarlo.hpp
View file @
512e5de1
...
...
@@ -9,7 +9,6 @@
#include "IEstimator.hpp"
class
MultilevelMonteCarlo
:
public
IEstimator
{
private:
int
verbose
=
1
;
...
...
@@ -28,7 +27,7 @@ public:
MonteCarloMap
mcMap
;
// Here Could be EstimatorMap
Multi
L
evel
MonteCarlo
Data
data
;
Multi
l
evelData
data
;
Exponents
exponents
;
...
...
mlmc/src/estimators/datastructure/EmpiricMeasureLevelMaps.hpp
View file @
512e5de1
...
...
@@ -84,32 +84,52 @@ struct KurtosisMap : LevelMap<Kurtosis> {
void
Update
(
const
MonteCarloMap
&
mcMap
);
};
struct
Multi
L
evel
MonteCarlo
Data
{
struct
Multi
l
evelData
{
SampleCounterMap
ctrs
;
MeanMap
avgs
;
SVarMap
vars
;
MeanMap
means
;
SVarMap
sVars
;
KurtosisMap
kurtosis
;
Multi
L
evel
MonteCarlo
Data
()
{};
Multi
l
evelData
()
{};
Multi
L
evel
MonteCarlo
Data
(
const
MonteCarloMap
&
mcMap
)
{
Multi
l
evelData
(
const
MonteCarloMap
&
mcMap
)
{
ExtractDataFrom
(
mcMap
);
}
Multi
L
evel
MonteCarlo
Data
(
const
SampleCounterMap
&
ctrs
,
const
MeanMap
&
avgs
,
const
SVarMap
&
vars
,
const
KurtosisMap
&
kurtosis
)
:
ctrs
(
ctrs
),
avg
s
(
avgs
),
v
ars
(
vars
),
kurtosis
(
kurtosis
)
{};
Multi
l
evelData
(
const
SampleCounterMap
&
ctrs
,
const
MeanMap
&
avgs
,
const
SVarMap
&
vars
,
const
KurtosisMap
&
kurtosis
)
:
ctrs
(
ctrs
),
mean
s
(
avgs
),
sV
ars
(
vars
),
kurtosis
(
kurtosis
)
{};
void
ExtractDataFrom
(
const
MonteCarloMap
&
mcMap
);
void
ExtractDataFrom
(
const
MonteCarloMap
&
mcMap
)
{
ctrs
.
Update
(
mcMap
);
means
.
Update
(
mcMap
);
sVars
.
Update
(
mcMap
);
kurtosis
.
Update
(
mcMap
);
}
void
MultilevelResults
()
const
{
mout
.
PrintInfo
(
"Multilevel Results"
,
1
,
PrintInfoEntry
(
"E(Qf-Qc)"
,
vec2str
(
means
.
GetYVector
())),
PrintInfoEntry
(
"E(Qf)"
,
vec2str
(
means
.
GetQVector
())),
PrintInfoEntry
(
"V(Qf-Qc)"
,
vec2str
(
sVars
.
GetYVector
())),
PrintInfoEntry
(
"V(Qf)"
,
vec2str
(
sVars
.
GetQVector
())),
PrintInfoEntry
(
"kurtosis"
,
vec2str
(
kurtosis
.
GetYVector
())),
PrintInfoEntry
(
"E(cost)"
,
vec2str
(
means
.
GetCostVector
())),
PrintInfoEntry
(
"Used Levels"
,
vec2str
(
means
.
GetLevelVector
())),
PrintInfoEntry
(
"Used Samples"
,
vec2str
(
ctrs
.
GetMVector
())));
}
friend
Logging
&
operator
<<
(
Logging
&
s
,
const
Multi
L
evel
MonteCarlo
Data
&
data
)
{
return
s
<<
"E(Qf-Qc)="
<<
data
.
avg
s
.
GetYVector
()
<<
endl
<<
"E(Qf)="
<<
data
.
avg
s
.
GetQVector
()
<<
endl
<<
"V(Qf-Qc)="
<<
data
.
v
ars
.
GetYVector
()
<<
endl
<<
"V(Qf)="
<<
data
.
v
ars
.
GetQVector
()
<<
endl
friend
Logging
&
operator
<<
(
Logging
&
s
,
const
Multi
l
evelData
&
data
)
{
return
s
<<
"E(Qf-Qc)="
<<
data
.
mean
s
.
GetYVector
()
<<
endl
<<
"E(Qf)="
<<
data
.
mean
s
.
GetQVector
()
<<
endl
<<
"V(Qf-Qc)="
<<
data
.
sV
ars
.
GetYVector
()
<<
endl
<<
"V(Qf)="
<<
data
.
sV
ars
.
GetQVector
()
<<
endl
<<
"kurtosis="
<<
data
.
kurtosis
.
GetYVector
()
<<
endl
<<
"E(cost)="
<<
data
.
avg
s
.
GetCostVector
()
<<
endl
<<
"Used Levels="
<<
data
.
avg
s
.
GetLevelVector
()
<<
endl
<<
"E(cost)="
<<
data
.
mean
s
.
GetCostVector
()
<<
endl
<<
"Used Levels="
<<
data
.
mean
s
.
GetLevelVector
()
<<
endl
<<
"Used Samples"
<<
data
.
ctrs
.
GetMVector
()
<<
endl
;
}
};
...
...
mlmc/src/estimators/datastructure/Errors.cpp
View file @
512e5de1
...
...
@@ -2,19 +2,19 @@
void
Errors
::
Estimate
(
const
MonteCarloMap
&
mcMap
)
{
Estimate
(
Multi
L
evel
MonteCarlo
Data
(
mcMap
));
Estimate
(
Multi
l
evelData
(
mcMap
));
}
void
Errors
::
Estimate
(
const
Multi
L
evel
MonteCarlo
Data
&
data
)
{
void
Errors
::
Estimate
(
const
Multi
l
evelData
&
data
)
{
exponents
.
ComputeExponents
(
data
);
numeric
=
EstimateNumeric
(
data
);
stochastic
=
EstimateStochastic
(
data
);
total
=
numeric
+
stochastic
;
}
double
Errors
::
EstimateNumeric
(
const
Multi
L
evel
MonteCarlo
Data
&
data
)
{
double
Errors
::
EstimateNumeric
(
const
Multi
l
evelData
&
data
)
{
exponents
.
ComputeExponents
(
data
);
return
EstimateNumeric
(
data
.
avg
s
);
return
EstimateNumeric
(
data
.
mean
s
);
}
double
Errors
::
EstimateNumeric
(
const
MeanMap
&
avgs
)
{
...
...
@@ -34,8 +34,8 @@ double Errors::EstimateNumeric(const MeanMap &avgs) {
return
err
;
}
double
Errors
::
EstimateStochastic
(
const
Multi
L
evel
MonteCarlo
Data
&
data
)
{
return
EstimateStochastic
(
data
.
ctrs
,
data
.
v
ars
);
double
Errors
::
EstimateStochastic
(
const
Multi
l
evelData
&
data
)
{
return
EstimateStochastic
(
data
.
ctrs
,
data
.
sV
ars
);
}
double
Errors
::
EstimateStochastic
(
const
SampleCounterMap
&
ctrs
,
const
SVarMap
&
vars
)
{
...
...
mlmc/src/estimators/datastructure/Errors.hpp
View file @
512e5de1
...
...
@@ -13,13 +13,13 @@ struct Errors {
void
Estimate
(
const
MonteCarloMap
&
mcMap
);
void
Estimate
(
const
Multi
L
evel
MonteCarlo
Data
&
mcMap
);
void
Estimate
(
const
Multi
l
evelData
&
mcMap
);
double
EstimateNumeric
(
const
Multi
L
evel
MonteCarlo
Data
&
data
);
double
EstimateNumeric
(
const
Multi
l
evelData
&
data
);
double
EstimateNumeric
(
const
MeanMap
&
avgs
);
double
EstimateStochastic
(
const
Multi
L
evel
MonteCarlo
Data
&
data
);
double
EstimateStochastic
(
const
Multi
l
evelData
&
data
);
double
EstimateStochastic
(
const
SampleCounterMap
&
ctrs
,
const
SVarMap
&
vars
);
};
...
...
mlmc/src/estimators/datastructure/Exponents.cpp
View file @
512e5de1
#include "Exponents.hpp"
void
Exponents
::
ComputeExponents
(
const
MonteCarloMap
&
mcMap
)
{
ComputeExponents
(
Multi
L
evel
MonteCarlo
Data
(
mcMap
));
ComputeExponents
(
Multi
l
evelData
(
mcMap
));
}
void
Exponents
::
ComputeExponents
(
const
Multi
L
evel
MonteCarlo
Data
&
data
)
{
ComputeExponents
(
data
.
avg
s
,
data
.
v
ars
);
void
Exponents
::
ComputeExponents
(
const
Multi
l
evelData
&
data
)
{
ComputeExponents
(
data
.
mean
s
,
data
.
sV
ars
);
}
void
Exponents
::
ComputeExponents
(
const
MeanMap
&
mean
,
const
SVarMap
&
sVar
)
{
...
...
mlmc/src/estimators/datastructure/Exponents.hpp
View file @
512e5de1
...
...
@@ -15,11 +15,11 @@ struct Exponents {
ComputeExponents
(
mcMap
);
};
Exponents
(
const
Multi
L
evel
MonteCarlo
Data
&
data
)
{
Exponents
(
const
Multi
l
evelData
&
data
)
{
ComputeExponents
(
data
);
};
void
ComputeExponents
(
const
Multi
L
evel
MonteCarlo
Data
&
data
);
void
ComputeExponents
(
const
Multi
l
evelData
&
data
);
void
ComputeExponents
(
const
MonteCarloMap
&
mcMap
);
...
...
mlmc/tests/montecarlo/datastructure/TestData.hpp
View file @
512e5de1
...
...
@@ -41,7 +41,7 @@ struct TestData {
{
6
,
Kurtosis
()}
};
const
Multi
L
evel
MonteCarlo
Data
_data
{
_ctrs
,
_means
,
_sVars
,
_kurtosis
};
const
Multi
l
evelData
_data
{
_ctrs
,
_means
,
_sVars
,
_kurtosis
};
MonteCarloMap
GenerateMonteCarloMapWithData
()
{
for
(
auto
&
[
level
,
mc
]
:
_mcMap
)
{
...
...
mlmc/tests/montecarlo/datastructure/TestEmpiricMeasureLevelMaps.cpp
View file @
512e5de1
...
...
@@ -5,7 +5,7 @@
class
TestEmpiricMeasureLevelMaps
:
public
Test
{
protected:
Multi
L
evel
MonteCarlo
Data
data
;
Multi
l
evelData
data
;
MonteCarloMap
mcMap
;
void
SetUp
()
override
{
...
...
mlmc/tests/montecarlo/datastructure/TestErrors.cpp
View file @
512e5de1
...
...
@@ -6,7 +6,7 @@
class
TestErrors
:
public
Test
{
protected:
Multi
L
evel
MonteCarlo
Data
data
;
Multi
l
evelData
data
;
Errors
errors
;
void
SetUp
()
override
{
...
...
mlmc/tests/montecarlo/datastructure/TestExponents.cpp
View file @
512e5de1
...
...
@@ -6,7 +6,7 @@
class
TestErrors
:
public
Test
{
protected:
Multi
L
evel
MonteCarlo
Data
data
;
Multi
l
evelData
data
;
Exponents
exponents
;
void
SetUp
()
override
{
...
...
@@ -18,15 +18,15 @@ protected:
};
TEST_F
(
TestErrors
,
TestAlpha
)
{
EXPECT_FLOAT_EQ
(
exponents
.
ComputeAlpha
(
data
.
avg
s
),
1.0
);
EXPECT_FLOAT_EQ
(
exponents
.
ComputeAlpha
(
data
.
mean
s
),
1.0
);
}
TEST_F
(
TestErrors
,
TestBeta
)
{
EXPECT_FLOAT_EQ
(
exponents
.
ComputeBeta
(
data
.
v
ars
),
2.0
);
EXPECT_FLOAT_EQ
(
exponents
.
ComputeBeta
(
data
.
sV
ars
),
2.0
);
}
TEST_F
(
TestErrors
,
TestGamma
)
{
EXPECT_FLOAT_EQ
(
exponents
.
ComputeGamma
(
data
.
avg
s
),
1.0
);
EXPECT_FLOAT_EQ
(
exponents
.
ComputeGamma
(
data
.
mean
s
),
1.0
);
}
int
main
(
int
argc
,
char
**
argv
)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment