Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
04/13/10 20:44:31 (14 years ago)
Author:
gkronber
Message:

Fixed bugs related to dynamic symbol constraints with ADFs. #290 (Implement ADFs)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/ArithmeticExpressionGrammar.cs

    r3294 r3338  
    4848
    4949    public ArithmeticExpressionGrammar()
    50       : base(0, 0, 0, 0) {
     50      : base() {
    5151      Initialize();
    5252    }
     
    6262      var allSymbols = new List<Symbol>() { add, sub, mul, div, constant, variableSymbol };
    6363      var functionSymbols = new List<Symbol>() { add, sub, mul, div };
    64       allSymbols.ForEach(s => AddAllowedSymbols(StartSymbol, 0, s));
     64      foreach (var symb in allSymbols)
     65        AddSymbol(symb);
    6566
     67      foreach (var funSymb in functionSymbols) {
     68        SetMinSubtreeCount(funSymb, 1);
     69        SetMaxSubtreeCount(funSymb, 3);
     70      }
     71      SetMinSubtreeCount(constant, 0);
     72      SetMaxSubtreeCount(constant, 0);
     73      SetMinSubtreeCount(variableSymbol, 0);
     74      SetMaxSubtreeCount(variableSymbol, 0);
    6675
    67       SetMinSubTreeCount(constant, 0);
    68       SetMaxSubTreeCount(constant, 0);
    69       SetMinSubTreeCount(variableSymbol, 0);
    70       SetMaxSubTreeCount(variableSymbol, 0);
    71       int maxSubTrees = 3;
    72       foreach (var functionSymbol in functionSymbols) {
    73         SetMinSubTreeCount(functionSymbol, 1);
    74         SetMaxSubTreeCount(functionSymbol, maxSubTrees);
    75         foreach (var childSymbol in allSymbols) {
    76           for (int argumentIndex = 0; argumentIndex < maxSubTrees; argumentIndex++) {
    77             AddAllowedSymbols(functionSymbol, argumentIndex, childSymbol);
     76      // allow each symbol as child of the start symbol
     77      foreach (var symb in allSymbols) {
     78        SetAllowedChild(StartSymbol, symb, 0);
     79      }
     80
     81      // allow each symbol as child of every other symbol (except for terminals that have maxSubtreeCount == 0)
     82      foreach (var parent in allSymbols) {
     83        for (int i = 0; i < GetMaxSubtreeCount(parent); i++)
     84          foreach (var child in allSymbols) {
     85            SetAllowedChild(parent, child, i);
    7886          }
    79         }
    8087      }
    8188    }
Note: See TracChangeset for help on using the changeset viewer.