mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#4013 Create variation bins for ensemble parameters based on current data
* Rather than having a fixed index. * This way the variation is more or less always normal distributed.
This commit is contained in:
@@ -6,7 +6,7 @@
|
||||
|
||||
#include <QDebug>
|
||||
|
||||
TEST(RimSummaryCaseCollection, logarithmicVariationIndex)
|
||||
TEST(RimSummaryCaseCollection, EnsembleParameter)
|
||||
{
|
||||
std::random_device rd;
|
||||
std::mt19937 gen(rd());
|
||||
@@ -14,7 +14,8 @@ TEST(RimSummaryCaseCollection, logarithmicVariationIndex)
|
||||
std::uniform_real_distribution<double> variationDistribution(0.0, 5000.0);
|
||||
std::uniform_int_distribution<size_t> countDistribution(1u, 1000u);
|
||||
size_t N = 1000;
|
||||
std::map<int, size_t> indexCounts;
|
||||
|
||||
std::vector<EnsembleParameter::NameParameterPair> parameters;
|
||||
for (size_t i = 0; i < N; ++i)
|
||||
{
|
||||
EnsembleParameter param;
|
||||
@@ -34,17 +35,25 @@ TEST(RimSummaryCaseCollection, logarithmicVariationIndex)
|
||||
param.values.push_back(QVariant(value));
|
||||
}
|
||||
|
||||
param.calculateStdDeviation();
|
||||
param.minValue = minValue;
|
||||
param.maxValue = maxValue;
|
||||
int variationIndex = param.logarithmicVariationIndex();
|
||||
EXPECT_GE(variationIndex, -1);
|
||||
EXPECT_LE(variationIndex, 2);
|
||||
indexCounts[variationIndex]++;
|
||||
|
||||
double normStdDev = param.normalizedStdDeviation();
|
||||
EXPECT_GE(normStdDev, 0.0);
|
||||
EXPECT_LE(normStdDev, std::sqrt(2.0));
|
||||
parameters.push_back(std::make_pair(QString("%1").arg(i), param));
|
||||
}
|
||||
|
||||
for (auto countPair : indexCounts)
|
||||
size_t previousSize = parameters.size();
|
||||
EnsembleParameter::sortByBinnedVariation(parameters);
|
||||
size_t currentSize = parameters.size();
|
||||
EXPECT_EQ(previousSize, currentSize);
|
||||
|
||||
int currentVariation = (int)EnsembleParameter::HIGH_VARIATION;
|
||||
for (const EnsembleParameter::NameParameterPair& nameParamPair : parameters)
|
||||
{
|
||||
qDebug() << "Variation index " << countPair.first << " count = " << countPair.second;
|
||||
EXPECT_GE(nameParamPair.second.variationBin, (int) EnsembleParameter::LOW_VARIATION);
|
||||
EXPECT_LE(nameParamPair.second.variationBin, (int) EnsembleParameter::HIGH_VARIATION);
|
||||
EXPECT_LE(nameParamPair.second.variationBin, currentVariation);
|
||||
currentVariation = nameParamPair.second.variationBin;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user