Changeset 17318 for branches/2994-AutoDiffForIntervals/HeuristicLab.Tests/HeuristicLab.Problems.DataAnalysis.Symbolic-3.4/SymbolicDataAnalysisExpressionTreeInterpreterTest.cs
- Timestamp:
- 10/04/19 16:27:08 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2994-AutoDiffForIntervals/HeuristicLab.Tests/HeuristicLab.Problems.DataAnalysis.Symbolic-3.4/SymbolicDataAnalysisExpressionTreeInterpreterTest.cs
r17303 r17318 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 grammar.Symbols.First(s => s is Exponential).Enabled = true;288 grammar.Symbols.First(s => s is Logarithm).Enabled = true;289 grammar.Symbols.First(s => s is Sine).Enabled = true;290 grammar.Symbols.First(s => s is Cosine).Enabled = true;291 grammar.Symbols.First(s => s is Absolute).Enabled = true;292 grammar.Symbols.First(s => s is AnalyticQuotient).Enabled = true;293 294 var refInterpreter = new SymbolicDataAnalysisExpressionTreeLinearInterpreter();295 var newInterpreter = new VectorEvaluator();296 var newAutoDiffInterpreter = new VectorAutoDiffEvaluator();297 298 var rows = Enumerable.Range(0, numRows).ToList();299 var randomTrees = Util.CreateRandomTrees(twister, dataset, grammar, N, 1, 10, 0, 0);300 foreach (ISymbolicExpressionTree tree in randomTrees) {301 Util.InitTree(tree, twister, new List<string>(dataset.VariableNames));302 }303 304 for (int i = 0; i < randomTrees.Length; ++i) {305 var tree = randomTrees[i];306 var refValues = refInterpreter.GetSymbolicExpressionTreeValues(tree, dataset, rows).ToArray();307 var newValues = newInterpreter.Evaluate(tree, dataset, rows.ToArray()).ToArray();308 var newAutoDiffValues = new double[numRows];309 newAutoDiffInterpreter.Evaluate(tree, dataset, rows.ToArray(), new ISymbolicExpressionTreeNode[0], newAutoDiffValues, null);310 311 for (int j = 0; j < rows.Count; j++) {312 if (double.IsNaN(refValues[j]) && double.IsNaN(newValues[j]) && double.IsNaN(newAutoDiffValues[j])) continue;313 string errorMessage = string.Format("Interpreters do not agree on tree {0} {1}.", i, (new InfixExpressionFormatter()).Format(tree));314 315 var relDelta = Math.Abs(refValues[j]) * 1e-5;316 Assert.AreEqual(refValues[j], newValues[j], relDelta, errorMessage);317 Assert.AreEqual(newValues[j], newAutoDiffValues[j], relDelta, errorMessage);318 268 } 319 269 }
Note: See TracChangeset
for help on using the changeset viewer.