From aa2377235b0f0522d7f78756f4e556292c38d3f5 Mon Sep 17 00:00:00 2001 From: Michael Krisper <michael.krisper@tugraz.at> Date: Thu, 10 Nov 2016 10:05:03 +0100 Subject: [PATCH] SumFile: Corrected Bug with Cruise Time Share. Added invariant to check that timeshares always add up to 100% --- .../VectoCore/OutputData/IModalDataContainer.cs | 2 +- .../OutputData/SummaryDataContainer.cs | 17 ++++++++++++++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/VectoCore/VectoCore/OutputData/IModalDataContainer.cs b/VectoCore/VectoCore/OutputData/IModalDataContainer.cs index 3239ca6967..33ccd8bad6 100644 --- a/VectoCore/VectoCore/OutputData/IModalDataContainer.cs +++ b/VectoCore/VectoCore/OutputData/IModalDataContainer.cs @@ -200,7 +200,7 @@ namespace TUGraz.VectoCore.OutputData public static Scalar CruiseTimeShare(this MeterPerSquareSecond[] acceleration3SecondAverage) { if (acceleration3SecondAverage.Length > 0) { - return 100.SI<Scalar>() * acceleration3SecondAverage.Count(x => x.IsBetween(-0.125, -0.125)) / + return 100.SI<Scalar>() * acceleration3SecondAverage.Count(x => x.IsBetween(-0.125, 0.125)) / acceleration3SecondAverage.Length; } return null; diff --git a/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs b/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs index 87be1e16ff..48c3978c90 100644 --- a/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs +++ b/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs @@ -275,10 +275,21 @@ namespace TUGraz.VectoCore.OutputData row[ACC] = modData.AccelerationAverage(); row[ACC_POS] = acc.AccelerationsPositive(); row[ACC_NEG] = acc.AccelerationsNegative(); - row[ACC_TIMESHARE] = acc.AccelerationTimeShare(); - row[DEC_TIMESHARE] = acc.DecelerationTimeShare(); - row[CRUISE_TIMESHARE] = acc.CruiseTimeShare(); + var accTimeShare = acc.AccelerationTimeShare(); + row[ACC_TIMESHARE] = accTimeShare; + var decTimeShare = acc.DecelerationTimeShare(); + row[DEC_TIMESHARE] = decTimeShare; + var cruiseTimeShare = acc.CruiseTimeShare(); + row[CRUISE_TIMESHARE] = cruiseTimeShare; row[STOP_TIMESHARE] = modData.StopTimeShare(); + + var shareSum = accTimeShare + decTimeShare + cruiseTimeShare; + if (!shareSum.IsEqual(100)) { + Log.Error( + "Sumfile Error: driving behavior timeshares must sum up to 100%: acc: {0}%, dec: {1}%, cruise: {2}%, sum: {3}%", + accTimeShare.ToOutputFormat(1, null, false), decTimeShare.ToOutputFormat(1, null, false), + cruiseTimeShare.ToOutputFormat(1, null, false), shareSum.ToOutputFormat(1, null, false)); + } } private static string ReplaceNotAllowedCharacters(string text) -- GitLab