Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
03/13/19 23:55:38 (5 years ago)
Author:
gkronber
Message:

#2994: worked on auto diff for intervals and vectors

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2994-AutoDiffForIntervals/Tests/AutoDiffTest.cs

    r16674 r16682  
    1111  public class AutoDiffTest {
    1212    [TestMethod]
    13     public void TestMethod1() {
     13    public void Test() {
    1414      {
     15        // eval
    1516        var parser = new InfixExpressionParser();
    1617        var t = parser.Parse("2.0*x+y");
    1718
     19        // interval eval
    1820        var evaluator = new IntervalEvaluator();
    19         var intervals = new Dictionary<string, AlgebraicInterval>();
    20         intervals.Add("x", new AlgebraicInterval(-1.0, 1.0));
    21         intervals.Add("y", new AlgebraicInterval(2.0, 10.0));
     21        var intervals = new Dictionary<string, Interval>();
     22        intervals.Add("x", new Interval(-1.0, 1.0));
     23        intervals.Add("y", new Interval(2.0, 10.0));
    2224        var resultInterval = evaluator.Evaluate(t, intervals);
    2325        Assert.AreEqual(0, resultInterval.LowerBound);
     
    2628
    2729      {
     30        // vector eval
    2831        var parser = new InfixExpressionParser();
    2932        var t = parser.Parse("2.0*x+y");
     
    5457
    5558      {
     59        // vector eval and auto-diff
    5660        var parser = new InfixExpressionParser();
    5761        var t = parser.Parse("2.0*x+y");
     
    98102      }
    99103
     104      {
     105        // interval eval and auto-diff
     106        var parser = new InfixExpressionParser();
     107        var t = parser.Parse("2.0*x+y");
     108        var p0 = t.IterateNodesPostfix().First(n => n is ConstantTreeNode);
     109        var p1 = t.IterateNodesPostfix().First(n => (n is VariableTreeNode var) && var.VariableName == "y");
     110        var paramNodes = new ISymbolicExpressionTreeNode[] { p0, p1 };
     111
     112        var evaluator = new IntervalEvaluator();
     113        var intervals = new Dictionary<string, Interval>();
     114        intervals.Add("x", new Interval(-1.0, 1.0));
     115        intervals.Add("y", new Interval(2.0, 10.0));
     116        var resultInterval = evaluator.Evaluate(t, intervals, paramNodes, out double[] lowerGradient, out double[] upperGradient);
     117        Assert.AreEqual(0, resultInterval.LowerBound);
     118        Assert.AreEqual(12, resultInterval.UpperBound);
     119
     120        Assert.AreEqual(-1, lowerGradient[0]);
     121        Assert.AreEqual(2, lowerGradient[1]);
     122        Assert.AreEqual(1, upperGradient[0]);
     123        Assert.AreEqual(10, upperGradient[1]);
     124      }
     125
    100126    }
    101127  }
Note: See TracChangeset for help on using the changeset viewer.