Changeset 17100 for stable/HeuristicLab.Tests
- Timestamp:
- 07/07/19 23:47:53 (5 years ago)
- Location:
- stable
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
stable
- Property svn:mergeinfo changed
/trunk merged: 16629,16631,16646,16740,16743,16757-16758,16769,16822
- Property svn:mergeinfo changed
-
stable/HeuristicLab.Tests
- Property svn:mergeinfo changed
/trunk/HeuristicLab.Tests merged: 16631,16646,16743,16757-16758,16769
- Property svn:mergeinfo changed
-
stable/HeuristicLab.Tests/HeuristicLab.Problems.DataAnalysis-3.4/IntervalTest.cs
r16436 r17100 1 1 using System; 2 using HeuristicLab.Problems.DataAnalysis;3 2 using Microsoft.VisualStudio.TestTools.UnitTesting; 4 3 … … 52 51 //([-1, 1] * [0, 3]) * [-2, 2] = [-6, 6] 53 52 Assert.AreEqual<Interval>(Interval.Multiply(Interval.Multiply(a, c), b), new Interval(-6, 6)); 53 54 // [-2, 0] * [-2, 0] = [0, 4] 55 Assert.AreEqual<Interval>(new Interval(0, 4), Interval.Multiply(new Interval(-2, 0), new Interval(-2, 0))); 54 56 } 55 57 … … 124 126 Assert.AreEqual<Interval>(new Interval(1, Math.Exp(1)), Interval.Exponential(new Interval(0, 1))); 125 127 } 128 129 130 [TestMethod] 131 [TestCategory("Problems.DataAnalysis")] 132 [TestProperty("Time", "short")] 133 public void TestIntervalSqrOperator() { 134 Assert.AreEqual<Interval>(new Interval(1, 4), Interval.Square(new Interval(1, 2))); 135 Assert.AreEqual<Interval>(new Interval(1, 4), Interval.Square(new Interval(-2, -1))); 136 Assert.AreEqual<Interval>(new Interval(0, 4), Interval.Square(new Interval(-2, 2))); 137 } 138 139 [TestMethod] 140 [TestCategory("Problems.DataAnalysis")] 141 [TestProperty("Time", "short")] 142 public void TestIntervalSqrtOperator() { 143 Assert.AreEqual<Interval>(new Interval(1, 2), Interval.SquareRoot(new Interval(1, 4))); 144 Assert.AreEqual<Interval>(new Interval(double.NaN, double.NaN), Interval.SquareRoot(new Interval(-4, -1))); 145 } 146 147 [TestMethod] 148 [TestCategory("Problems.DataAnalysis")] 149 [TestProperty("Time", "short")] 150 public void TestIntervalCubeOperator() { 151 Assert.AreEqual<Interval>(new Interval(1, 8), Interval.Cube(new Interval(1, 2))); 152 Assert.AreEqual<Interval>(new Interval(-8, -1), Interval.Cube(new Interval(-2, -1))); 153 Assert.AreEqual<Interval>(new Interval(-8, 8), Interval.Cube(new Interval(-2, 2))); 154 } 155 156 [TestMethod] 157 [TestCategory("Problems.DataAnalysis")] 158 [TestProperty("Time", "short")] 159 public void TestIntervalCbrtOperator() { 160 Assert.AreEqual<Interval>(new Interval(1, 2), Interval.CubicRoot(new Interval(1, 8))); 161 Assert.AreEqual<Interval>(new Interval(double.NaN, double.NaN), Interval.CubicRoot(new Interval(-8, -1))); 162 } 126 163 } 127 164 } -
stable/HeuristicLab.Tests/HeuristicLab.Problems.DataAnalysis.Symbolic-3.4/IntervalInterpreterTest.cs
r16438 r17100 34 34 } 35 35 36 private void EvaluateTest(string expression, Interval expectedResult, Dictionary<string, Interval> variableRanges = null ) {36 private void EvaluateTest(string expression, Interval expectedResult, Dictionary<string, Interval> variableRanges = null, double lowerDelta =0, double upperDelta = 0) { 37 37 var parser = new InfixExpressionParser(); 38 38 var tree = parser.Parse(expression); … … 40 40 Interval result; 41 41 if (variableRanges == null) 42 result = interpreter.GetSymbolicEx ressionTreeInterval(tree, problemData.Dataset, problemData.AllIndices);42 result = interpreter.GetSymbolicExpressionTreeInterval(tree, problemData.Dataset, problemData.AllIndices); 43 43 else 44 result = interpreter.GetSymbolicEx ressionTreeInterval(tree, variableRanges);44 result = interpreter.GetSymbolicExpressionTreeInterval(tree, variableRanges); 45 45 46 Assert.AreEqual(expectedResult, result); 46 Assert.AreEqual(expectedResult.LowerBound, result.LowerBound, lowerDelta); 47 Assert.AreEqual(expectedResult.UpperBound, result.UpperBound, upperDelta); 47 48 } 48 49 … … 79 80 EvaluateTest("sin(x1+x2)", new Interval(-1, 1), variableRanges); 80 81 EvaluateTest("sin(1+2)", new Interval(Math.Sin(3), Math.Sin(3))); 82 83 var localVarRanges = new Dictionary<string, Interval>(); 84 localVarRanges.Add("x1", new Interval(-1, 1)); 85 localVarRanges.Add("x2", new Interval(-(Math.PI / 2), 0)); 86 localVarRanges.Add("x3", new Interval(0, Math.PI / 2)); 87 localVarRanges.Add("x4", new Interval(-Math.PI, Math.PI)); 88 localVarRanges.Add("x5", new Interval(Math.PI/4, Math.PI*3.0/4)); 89 90 EvaluateTest("sin(x1)", new Interval(Math.Sin(-1), Math.Sin(1)), localVarRanges, 1E-8, 1E-8); 91 EvaluateTest("sin(x2)", new Interval(-1, 0), localVarRanges, 1E-8, 1E-8); 92 EvaluateTest("sin(x3)", new Interval(0, 1), localVarRanges, 1E-8, 1E-8); 93 EvaluateTest("sin(x4)", new Interval(-1, 1), localVarRanges, 1E-8, 1E-8); 94 EvaluateTest("sin(x5)", new Interval(Math.Sin(Math.PI/4), 1), localVarRanges, 1E-8, 1E-8); 81 95 } 82 96 … … 87 101 EvaluateTest("cos(x1+x2)", new Interval(-1, 1)); 88 102 EvaluateTest("cos(x1+x2)", new Interval(-1, 1), variableRanges); 89 EvaluateTest("cos(1+2)", new Interval(Math.Sin(3 - Math.PI / 2), Math.Sin(3 - Math.PI / 2))); 103 EvaluateTest("cos(1+2)", new Interval(Math.Sin(3 + Math.PI / 2), Math.Sin(3 + Math.PI / 2))); 104 105 var localVarRanges = new Dictionary<string, Interval>(); 106 localVarRanges.Add("x1", new Interval(-1, 1)); 107 localVarRanges.Add("x2", new Interval(-(Math.PI / 2), 0)); 108 localVarRanges.Add("x3", new Interval(0, Math.PI / 2)); 109 localVarRanges.Add("x4", new Interval(-Math.PI, Math.PI)); 110 localVarRanges.Add("x5", new Interval(Math.PI / 4, Math.PI * 3.0 / 4)); 111 112 EvaluateTest("cos(x1)", new Interval(Math.Cos(-1), 1), localVarRanges, 1E-8, 1E-8); 113 EvaluateTest("cos(x2)", new Interval(0, 1), localVarRanges, 1E-8, 1E-8); 114 EvaluateTest("cos(x3)", new Interval(0, 1), localVarRanges, 1E-8, 1E-8); 115 EvaluateTest("cos(x4)", new Interval(-1, 1), localVarRanges, 1E-8, 1E-8); 116 EvaluateTest("cos(x5)", new Interval(Math.Cos(Math.PI *3.0/ 4), Math.Cos(Math.PI/ 4)), localVarRanges, 1E-8, 1E-8); 117 90 118 } 119 120 [TestMethod] 121 [TestCategory("Problems.DataAnalysis.Symbolic")] 122 [TestProperty("Time", "short")] 123 public void TestIntervalInterpreterTan() { 124 // critical values: 125 // lim tan(x) = -inf for x => -pi/2 126 // lim tan(x) = +inf for x => pi/2 127 var variableRanges = new Dictionary<string, Interval>(); 128 variableRanges.Add("x1", new Interval(-1, 1)); 129 variableRanges.Add("x2", new Interval(-(Math.PI / 2), 0)); 130 variableRanges.Add("x3", new Interval(0, Math.PI / 2)); 131 variableRanges.Add("x4", new Interval(-Math.PI, Math.PI)); 132 133 EvaluateTest("tan(x1)", new Interval(Math.Tan(-1), Math.Tan(1)), variableRanges, 1E-8, 1E-8); 134 EvaluateTest("tan(x2)", new Interval(double.NegativeInfinity, 0), variableRanges, 0, 1E-8); 135 EvaluateTest("tan(x3)", new Interval(0, 8.16588936419192E+15), variableRanges, 0, 1E6); // actually upper bound should be infinity. 136 EvaluateTest("tan(x4)", new Interval(double.NegativeInfinity, double.PositiveInfinity), variableRanges); 137 } 138 139 [TestMethod] 140 [TestCategory("Problems.DataAnalysis.Symbolic")] 141 [TestProperty("Time", "short")] 142 public void TestIntervalInterpreterTanh() { 143 // critical values: 144 // lim tanh(x) = -1 for x => -inf 145 // lim tanh(x) = 1 for x => inf 146 var variableRanges = new Dictionary<string, Interval>(); 147 variableRanges.Add("x1", new Interval(-1, 1)); 148 variableRanges.Add("x2", new Interval(double.NegativeInfinity, 0)); 149 variableRanges.Add("x3", new Interval(0, double.PositiveInfinity)); 150 151 EvaluateTest("tanh(x1)", new Interval(Math.Tanh(-1), Math.Tanh(1)), variableRanges); 152 EvaluateTest("tanh(x2)", new Interval(-1, 0), variableRanges); 153 EvaluateTest("tanh(x3)", new Interval(0, 1), variableRanges); 154 } 155 91 156 92 157 [TestMethod]
Note: See TracChangeset
for help on using the changeset viewer.