#4013 Sort ensemble parameters by variation

This commit is contained in:
Gaute Lindkvist
2019-01-29 15:04:04 +01:00
parent 8a5cbf60fd
commit eb498ad0dc
7 changed files with 174 additions and 15 deletions

View File

@@ -0,0 +1,50 @@
#include "gtest/gtest.h"
#include "RimSummaryCaseCollection.h"
#include <random>
#include <QDebug>
TEST(RimSummaryCaseCollection, logarithmicVariationIndex)
{
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_real_distribution<double> meanDistribution(-10000.0, 10000.0);
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;
for (size_t i = 0; i < N; ++i)
{
EnsembleParameter param;
param.type = EnsembleParameter::TYPE_NUMERIC;
size_t valueCount = countDistribution(gen);
double meanValue = meanDistribution(gen);
double range = variationDistribution(gen);
std::uniform_real_distribution<double> valueDistribution(meanValue - range, meanValue + range);
double maxValue = -std::numeric_limits<double>::max();
double minValue = std::numeric_limits<double>::max();
for (size_t j = 0; j < valueCount; ++j)
{
double value = valueDistribution(gen);
maxValue = std::max(maxValue, value);
minValue = std::min(minValue, value);
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]++;
}
for (auto countPair : indexCounts)
{
qDebug() << "Variation index " << countPair.first << " count = " << countPair.second;
}
}