Changeset 17216 for branches/2994-AutoDiffForIntervals/HeuristicLab.Tests/HeuristicLab.Problems.DataAnalysis.Symbolic-3.4/SymbolicDataAnalysisExpressionTreeInterpreterTest.cs
- Timestamp:
- 08/13/19 19:05:08 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2994-AutoDiffForIntervals/HeuristicLab.Tests/HeuristicLab.Problems.DataAnalysis.Symbolic-3.4/SymbolicDataAnalysisExpressionTreeInterpreterTest.cs
r17209 r17216 266 266 Assert.AreEqual(sum, s, 1e-12, errorMessage); 267 267 } 268 } 269 } 270 } 271 272 [TestMethod] 273 [TestCategory("Problems.DataAnalysis.Symbolic")] 274 [TestProperty("Time", "long")] 275 public void TestVectorInterpretersEstimatedValuesConsistency() { 276 var twister = new MersenneTwister(); 277 twister.Seed(31415); 278 const int numRows = 100; 279 var dataset = Util.CreateRandomDataset(twister, numRows, Columns); 280 281 var grammar = new TypeCoherentExpressionGrammar(); 282 grammar.ConfigureAsDefaultRegressionGrammar(); 283 grammar.Symbols.First(s => s is Square).Enabled = true; 284 grammar.Symbols.First(s => s is SquareRoot).Enabled = true; 285 grammar.Symbols.First(s => s is Cube).Enabled = true; 286 grammar.Symbols.First(s => s is CubeRoot).Enabled = true; 287 288 var refInterpreter = new SymbolicDataAnalysisExpressionTreeLinearInterpreter(); 289 var newInterpreter = new VectorEvaluator(); 290 var newAutoDiffInterpreter = new VectorAutoDiffEvaluator(); 291 292 var rows = Enumerable.Range(0, numRows).ToList(); 293 var randomTrees = Util.CreateRandomTrees(twister, dataset, grammar, N, 1, 10, 0, 0); 294 foreach (ISymbolicExpressionTree tree in randomTrees) { 295 Util.InitTree(tree, twister, new List<string>(dataset.VariableNames)); 296 } 297 298 for (int i = 0; i < randomTrees.Length; ++i) { 299 var tree = randomTrees[i]; 300 var refValues = refInterpreter.GetSymbolicExpressionTreeValues(tree, dataset, rows).ToArray(); 301 var newValues = newInterpreter.Evaluate(tree, dataset, rows.ToArray()).ToArray(); 302 var newAutoDiffValues = new double[numRows]; 303 newAutoDiffInterpreter.Evaluate(tree, dataset, rows.ToArray(), new ISymbolicExpressionTreeNode[0], newAutoDiffValues, null); 304 305 for (int j = 0; j < rows.Count; j++) { 306 if (double.IsNaN(refValues[j]) && double.IsNaN(newValues[j]) && double.IsNaN(newAutoDiffValues[j])) continue; 307 string errorMessage = string.Format("Interpreters do not agree on tree {0} {1}.", i, (new InfixExpressionFormatter()).Format(tree)); 308 309 var relDelta = Math.Abs(refValues[j]) * 1e-5; 310 Assert.AreEqual(refValues[j], newValues[j], relDelta, errorMessage); 311 Assert.AreEqual(newValues[j], newAutoDiffValues[j], relDelta, errorMessage); 268 312 } 269 313 }
Note: See TracChangeset
for help on using the changeset viewer.