Changeset 16803 for branches/2931_OR-Tools_LP_MIP/HeuristicLab.Tests
- Timestamp:
- 04/17/19 19:43:45 (5 years ago)
- Location:
- branches/2931_OR-Tools_LP_MIP
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2931_OR-Tools_LP_MIP
- Property svn:mergeinfo changed
/trunk merged: 16729,16737,16740,16743,16757-16758,16762-16764,16768-16769,16779,16782-16784,16788,16792,16794-16799,16802
- Property svn:mergeinfo changed
-
branches/2931_OR-Tools_LP_MIP/HeuristicLab.Tests
- Property svn:mergeinfo changed
/trunk/HeuristicLab.Tests merged: 16737,16743,16757-16758,16769
- Property svn:mergeinfo changed
-
branches/2931_OR-Tools_LP_MIP/HeuristicLab.Tests/HeuristicLab.Problems.DataAnalysis.Symbolic-3.4/DeriveTest.cs
r16720 r16803 65 65 66 66 Assert.AreEqual("0", Derive("(a+b)/(x+SQR(x))", "y")); // df(a,b,x) / dy = 0 67 68 69 Assert.AreEqual("('a' * 'b' * 'c')", Derive("a*b*c*d", "d")); 70 Assert.AreEqual("('a' / ('b' * 'c' * SQR('d') * (-1)))", Derive("a/b/c/d", "d")); 67 71 68 72 { -
branches/2931_OR-Tools_LP_MIP/HeuristicLab.Tests/HeuristicLab.Problems.DataAnalysis.Symbolic-3.4/IntervalInterpreterTest.cs
r16720 r16803 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.