From b4bd3c142896795ae4620d209bfa90e255db0863 Mon Sep 17 00:00:00 2001 From: Michael Krisper <michael.krisper@tugraz.at> Date: Wed, 5 Jul 2017 15:24:50 +0200 Subject: [PATCH] Updated SearchAlgorithm to try both direction for interpolate search --- VectoCore/VectoCore/Configuration/Constants.cs | 2 +- VectoCore/VectoCore/Utils/SearchAlgorithm.cs | 10 ++++++++-- .../VectoCoreTest/Integration/TorqueLimitsTest.cs | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/VectoCore/VectoCore/Configuration/Constants.cs b/VectoCore/VectoCore/Configuration/Constants.cs index d88a0b9497..306c57e0fc 100644 --- a/VectoCore/VectoCore/Configuration/Constants.cs +++ b/VectoCore/VectoCore/Configuration/Constants.cs @@ -146,7 +146,7 @@ namespace TUGraz.VectoCore.Configuration /// The initial search interval for the operating point search in the driver. /// </summary> public static readonly MeterPerSquareSecond OperatingPointInitialSearchIntervalAccelerating = - -0.1.SI<MeterPerSquareSecond>(); + 0.1.SI<MeterPerSquareSecond>(); public static readonly PerSecond EngineIdlingSearchInterval = 10.SI<PerSecond>(); diff --git a/VectoCore/VectoCore/Utils/SearchAlgorithm.cs b/VectoCore/VectoCore/Utils/SearchAlgorithm.cs index 5b001a4078..2316cded98 100644 --- a/VectoCore/VectoCore/Utils/SearchAlgorithm.cs +++ b/VectoCore/VectoCore/Utils/SearchAlgorithm.cs @@ -97,8 +97,14 @@ namespace TUGraz.VectoCore.Utils ref iterationCount); } catch (VectoException ex) { var log = LogManager.GetLogger(typeof(SearchAlgorithm).FullName); - log.Debug("Falling back to LineSearch. InterpolationSearch failed: " + ex.Message); - result = LineSearch(x, y, interval, getYValue, evaluateFunction, criterion, abortCriterion, ref iterationCount); + log.Debug("Falling back to InterpolationSearch in reverse. Normal InterpolationSearch failed: " + ex.Message); + try { + result = InterpolateSearch(x, y, -interval, getYValue, evaluateFunction, criterion, abortCriterion, + ref iterationCount); + } catch (VectoException ex1) { + log.Debug("Falling back to LineSearch. Reverse InterpolationSearch failed: " + ex1.Message); + result = LineSearch(x, y, interval, getYValue, evaluateFunction, criterion, abortCriterion, ref iterationCount); + } } return result; } diff --git a/VectoCore/VectoCoreTest/Integration/TorqueLimitsTest.cs b/VectoCore/VectoCoreTest/Integration/TorqueLimitsTest.cs index b48ca55f24..f4aa1ca18e 100644 --- a/VectoCore/VectoCoreTest/Integration/TorqueLimitsTest.cs +++ b/VectoCore/VectoCoreTest/Integration/TorqueLimitsTest.cs @@ -194,7 +194,7 @@ namespace TUGraz.VectoCore.Tests.Integration Assert.IsTrue(jobContainer.Runs.All(r => r.Success), string.Concat(jobContainer.Runs.Select(r => r.ExecException))); } - [TestCase(GearboxSpeedLimitJobDecl)] + [TestCategory("LongRunning"), TestCase(GearboxSpeedLimitJobDecl)] public void TestRunGbxSpeedLimitedSimulations(string file) { var fileWriter = new FileOutputWriter(file); -- GitLab