Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
07/27/18 19:28:18 (6 years ago)
Author:
bburlacu
Message:

#2886:

  • replace functionally-overlapping classes Production and SymbolString with a single class SymbolList
  • refactor methods from Grammar class as methods and properties of SymbolList
  • add parameter for the number of constant optimization iterations
  • refactor code
Location:
branches/2886_SymRegGrammarEnumeration/Test
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/2886_SymRegGrammarEnumeration/Test/GrammarEnumerationTest.cs

    r15915 r16026  
    4444    }
    4545
    46 
    4746    private void EvaluateGrammarEnumeration() {
    4847      // Evaluate results
     
    5554      Assert.AreEqual(1.0, ((IRegressionSolution)alg.Results["Best solution (Training)"].Value).TestRSquared, eps, "Test quality too low!");
    5655    }
    57 
    5856
    5957    [TestMethod]
     
    7270      TerminalSymbol addSymbol = alg.Grammar.Addition;
    7371
    74       SymbolString targetSolution = new SymbolString(new[] {
     72      SymbolList targetSolution = new SymbolList(new[] {
    7573        constSymbol, varSymbol, varSymbol, varSymbol, mulSymbol, mulSymbol, mulSymbol,
    7674        constSymbol, varSymbol, varSymbol, mulSymbol, mulSymbol, addSymbol,
     
    132130
    133131      // c * sin(c x + c) + c * sin(c * x * x + c * x) + c
    134       SymbolString targetSolution = new SymbolString(new[] {
     132      SymbolList targetSolution = new SymbolList(new[] {
    135133        varSymbol, constSymbol, mulSymbol, constSymbol, addSymbol, sinSymbol, constSymbol, mulSymbol,
    136134        varSymbol, varSymbol, mulSymbol, constSymbol, mulSymbol, varSymbol, constSymbol, mulSymbol, addSymbol, constSymbol, addSymbol, sinSymbol, constSymbol, mulSymbol, addSymbol,
     
    165163
    166164      // c*sin(c*x + c) + c*sin(c*y*y + c) + c
    167       SymbolString targetSolution = new SymbolString(new[] {
     165      SymbolList targetSolution = new SymbolList(new[] {
    168166        xSymbol, constSymbol, mulSymbol, constSymbol, addSymbol, sinSymbol, constSymbol, mulSymbol,
    169167        ySymbol, ySymbol, mulSymbol, constSymbol, mulSymbol, constSymbol, addSymbol, sinSymbol, constSymbol, mulSymbol, addSymbol,
     
    222220      TerminalSymbol logSymbol = alg.Grammar.Log;
    223221
    224       SymbolString targetSolution = new SymbolString(new[] {
     222      SymbolList targetSolution = new SymbolList(new[] {
    225223        varSymbol, constSymbol, mulSymbol, constSymbol, addSymbol, logSymbol, constSymbol, mulSymbol,
    226224        varSymbol, varSymbol, mulSymbol, constSymbol, mulSymbol, constSymbol, addSymbol, logSymbol, constSymbol, mulSymbol, addSymbol,
     
    266264      TerminalSymbol addSymbol = alg.Grammar.Addition;
    267265
    268       SymbolString targetSolution = new SymbolString(new[] {
     266      SymbolList targetSolution = new SymbolList(new[] {
    269267        constSymbol, varSymbol, mulSymbol, constSymbol, addSymbol, alg.Grammar.Sin,
    270268        varSymbol, mulSymbol,
     
    303301      // 30 * x * z * 1/(x*y*y - 10*y*y)
    304302      // --> x z * c *     x y * y * c *  y y * c * + c + inv c +
    305       SymbolString targetSolution = new SymbolString(new[] {
     303      SymbolList targetSolution = new SymbolList(new[] {
    306304        xSymbol, zSymbol, mulSymbol, constSymbol, mulSymbol,
    307305        xSymbol, ySymbol, mulSymbol, ySymbol, mulSymbol, constSymbol, mulSymbol,
     
    337335      TerminalSymbol addSymbol = alg.Grammar.Addition;
    338336
    339       SymbolString targetSolution = new SymbolString(new[] {
     337      SymbolList targetSolution = new SymbolList(new[] {
    340338        xSymbol, xSymbol, mulSymbol, xSymbol, mulSymbol, xSymbol, mulSymbol, constSymbol, mulSymbol,
    341339        xSymbol, xSymbol, mulSymbol, xSymbol, mulSymbol, constSymbol, mulSymbol, addSymbol,
     
    376374
    377375      // x x mul c mul y y mul c mul add const add inv const mul const add
    378       SymbolString targetSolution = new SymbolString(new[] {
     376      SymbolList targetSolution = new SymbolList(new[] {
    379377        xSymbol, xSymbol, mulSymbol, constSymbol, mulSymbol,
    380378        ySymbol, ySymbol, mulSymbol, constSymbol, mulSymbol, addSymbol,
     
    412410
    413411      // x x * x * const * y y * y * const * + y const * + x const * const +
    414       SymbolString targetSolution = new SymbolString(new[] {
     412      SymbolList targetSolution = new SymbolList(new[] {
    415413        xSymbol, xSymbol, mulSymbol, xSymbol, mulSymbol, constSymbol, mulSymbol,
    416414        ySymbol, ySymbol, mulSymbol, ySymbol, mulSymbol, constSymbol, mulSymbol, addSymbol,
  • branches/2886_SymRegGrammarEnumeration/Test/TreeHashingTest.cs

    r15849 r16026  
    2727    [TestCategory("TreeHashing")]
    2828    public void SimpleEqualityAddition() {
    29       SymbolString s1 = new SymbolString(new[] { varA, varB, grammar.Addition, varC, grammar.Addition });
    30       SymbolString s2 = new SymbolString(new[] { varA, varB, grammar.Addition, varC, grammar.Addition });
     29      SymbolList s1 = new SymbolList(new[] { varA, varB, grammar.Addition, varC, grammar.Addition });
     30      SymbolList s2 = new SymbolList(new[] { varA, varB, grammar.Addition, varC, grammar.Addition });
    3131
    3232      int hash1 = grammar.Hasher.CalcHashCode(s1);
     
    3939    [TestCategory("TreeHashing")]
    4040    public void SimpleInequalityAddition() {
    41       SymbolString s1 = new SymbolString(new[] { varA, varB, grammar.Addition, varC, grammar.Addition });
    42       SymbolString s2 = new SymbolString(new[] { varB, varB, grammar.Addition, varB, grammar.Addition });
     41      SymbolList s1 = new SymbolList(new[] { varA, varB, grammar.Addition, varC, grammar.Addition });
     42      SymbolList s2 = new SymbolList(new[] { varB, varB, grammar.Addition, varB, grammar.Addition });
    4343
    4444      int hash1 = grammar.Hasher.CalcHashCode(s1);
     
    5151    [TestCategory("TreeHashing")]
    5252    public void CommutativityAddition() {
    53       SymbolString s1 = new SymbolString(new[] { varA, varB, grammar.Addition });
    54       SymbolString s2 = new SymbolString(new[] { varB, varA, grammar.Addition });
     53      SymbolList s1 = new SymbolList(new[] { varA, varB, grammar.Addition });
     54      SymbolList s2 = new SymbolList(new[] { varB, varA, grammar.Addition });
    5555
    5656      int hash1 = grammar.Hasher.CalcHashCode(s1);
     
    6363    [TestCategory("TreeHashing")]
    6464    public void AssociativityAddition() {
    65       SymbolString s1 = new SymbolString(new[] { varA, varB, grammar.Addition, varA, grammar.Addition });
    66       SymbolString s2 = new SymbolString(new[] { varA, varB, varA, grammar.Addition, grammar.Addition });
     65      SymbolList s1 = new SymbolList(new[] { varA, varB, grammar.Addition, varA, grammar.Addition });
     66      SymbolList s2 = new SymbolList(new[] { varA, varB, varA, grammar.Addition, grammar.Addition });
    6767
    6868      int hash1 = grammar.Hasher.CalcHashCode(s1);
     
    7575    [TestCategory("TreeHashing")]
    7676    public void RepeatedAddition() {
    77       SymbolString s1 = new SymbolString(new[] { varA, varA, grammar.Addition, varA, grammar.Addition });
    78       SymbolString s2 = new SymbolString(new[] { varA });
     77      SymbolList s1 = new SymbolList(new[] { varA, varA, grammar.Addition, varA, grammar.Addition });
     78      SymbolList s2 = new SymbolList(new[] { varA });
    7979
    8080      int hash1 = grammar.Hasher.CalcHashCode(s1);
     
    8787    [TestCategory("TreeHashing")]
    8888    public void ComplexInequality() {
    89       SymbolString s1 = new SymbolString(new[] { varA, varA, varA, grammar.Multiplication, grammar.Multiplication });
    90       SymbolString s2 = new SymbolString(new[] { varA, varA, varA, grammar.Multiplication, grammar.Addition });
     89      SymbolList s1 = new SymbolList(new[] { varA, varA, varA, grammar.Multiplication, grammar.Multiplication });
     90      SymbolList s2 = new SymbolList(new[] { varA, varA, varA, grammar.Multiplication, grammar.Addition });
    9191
    9292      int hash1 = grammar.Hasher.CalcHashCode(s1);
     
    9999    [TestCategory("TreeHashing")]
    100100    public void NonterminalHashing() {
    101       SymbolString s1 = new SymbolString(new Symbol[] { varA, varA, grammar.Expr, grammar.Addition, grammar.Addition });
    102       SymbolString s2 = new SymbolString(new Symbol[] { varA, grammar.Expr, grammar.Addition });
     101      SymbolList s1 = new SymbolList(new Symbol[] { varA, varA, grammar.Expr, grammar.Addition, grammar.Addition });
     102      SymbolList s2 = new SymbolList(new Symbol[] { varA, grammar.Expr, grammar.Addition });
    103103
    104104      int hash1 = grammar.Hasher.CalcHashCode(s1);
     
    112112    public void InverseFactorCancelationSimple() {
    113113      // 1/a * b * a * a
    114       SymbolString s1 = new SymbolString(new Symbol[] { varA, grammar.Inv, varB, grammar.Multiplication, varA, grammar.Multiplication, varA, grammar.Multiplication });
     114      SymbolList s1 = new SymbolList(new Symbol[] { varA, grammar.Inv, varB, grammar.Multiplication, varA, grammar.Multiplication, varA, grammar.Multiplication });
    115115      // a * b
    116       SymbolString s2 = new SymbolString(new Symbol[] { varA, varB, grammar.Multiplication });
     116      SymbolList s2 = new SymbolList(new Symbol[] { varA, varB, grammar.Multiplication });
    117117
    118118      int hash1 = grammar.Hasher.CalcHashCode(s1);
     
    125125    [TestCategory("TreeHashing")]
    126126    public void InverseFactorCancelationComplex() {
    127       SymbolString s1 = new SymbolString(new Symbol[] { varA, grammar.Sin, varA, varA, grammar.Multiplication, varA, grammar.Addition, grammar.Sin, grammar.Addition });
    128       SymbolString s2 = new SymbolString(new Symbol[] { varA, varA, varA, grammar.Multiplication, grammar.Addition, grammar.Sin, varA, grammar.Inv, varA, grammar.Sin, varA, grammar.Multiplication, grammar.Multiplication, grammar.Addition });
     127      SymbolList s1 = new SymbolList(new Symbol[] { varA, grammar.Sin, varA, varA, grammar.Multiplication, varA, grammar.Addition, grammar.Sin, grammar.Addition });
     128      SymbolList s2 = new SymbolList(new Symbol[] { varA, varA, varA, grammar.Multiplication, grammar.Addition, grammar.Sin, varA, grammar.Inv, varA, grammar.Sin, varA, grammar.Multiplication, grammar.Multiplication, grammar.Addition });
    129129
    130130      int hash1 = grammar.Hasher.CalcHashCode(s1);
     
    138138    [TestCategory("TreeHashing")]
    139139    public void SimpleConst() {
    140       SymbolString s1 = new SymbolString(new Symbol[] { c, varA, grammar.Multiplication, c, grammar.Addition});
    141       SymbolString s2 = new SymbolString(new Symbol[] { c, varA, grammar.Multiplication, c, varA, grammar.Multiplication, grammar.Addition, c, grammar.Addition });
     140      SymbolList s1 = new SymbolList(new Symbol[] { c, varA, grammar.Multiplication, c, grammar.Addition});
     141      SymbolList s2 = new SymbolList(new Symbol[] { c, varA, grammar.Multiplication, c, varA, grammar.Multiplication, grammar.Addition, c, grammar.Addition });
    142142
    143143      int hash1 = grammar.Hasher.CalcHashCode(s1);
     
    151151    [TestCategory("TreeHashing")]
    152152    public void CompoundInverseCancellationToSingleInverse() {
    153       SymbolString s1 = new SymbolString(new Symbol[] { varA, varB, grammar.Addition, grammar.Inv, grammar.Inv, grammar.Inv });
    154       SymbolString s2 = new SymbolString(new Symbol[] { varA, varB, grammar.Addition, grammar.Inv });
     153      SymbolList s1 = new SymbolList(new Symbol[] { varA, varB, grammar.Addition, grammar.Inv, grammar.Inv, grammar.Inv });
     154      SymbolList s2 = new SymbolList(new Symbol[] { varA, varB, grammar.Addition, grammar.Inv });
    155155
    156156      int hash1 = grammar.CalcHashCode(s1);
     
    163163    [TestCategory("TreeHashing")]
    164164    public void CompoundInverseCancellationToDivisor() {
    165       SymbolString s1 = new SymbolString(new Symbol[] { varA, varB, grammar.Addition, grammar.Inv, grammar.Inv });
    166       SymbolString s2 = new SymbolString(new Symbol[] { varA, varB, grammar.Addition });
     165      SymbolList s1 = new SymbolList(new Symbol[] { varA, varB, grammar.Addition, grammar.Inv, grammar.Inv });
     166      SymbolList s2 = new SymbolList(new Symbol[] { varA, varB, grammar.Addition });
    167167
    168168      int hash1 = grammar.CalcHashCode(s1);
     
    176176    public void UncancelableCompoundInverse() {
    177177      // 1 / ( 1/b + sin(a*c) )
    178       SymbolString s1 = new SymbolString(new Symbol[] { varB, grammar.Inv, varA, varC, grammar.Multiplication, grammar.Sin, grammar.Addition, grammar.Inv });
     178      SymbolList s1 = new SymbolList(new Symbol[] { varB, grammar.Inv, varA, varC, grammar.Multiplication, grammar.Sin, grammar.Addition, grammar.Inv });
    179179      // b + sin(a*c)
    180       SymbolString s2 = new SymbolString(new Symbol[] { varB, varA, varC, grammar.Multiplication, grammar.Sin, grammar.Addition });
     180      SymbolList s2 = new SymbolList(new Symbol[] { varB, varA, varC, grammar.Multiplication, grammar.Sin, grammar.Addition });
    181181
    182182      int hash1 = grammar.CalcHashCode(s1);
Note: See TracChangeset for help on using the changeset viewer.