Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
12/20/11 11:45:18 (12 years ago)
Author:
gkronber
Message:

#1081 merged r7103:7209 from trunk into time series branch

Location:
branches/HeuristicLab.TimeSeries
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/HeuristicLab.TimeSeries

  • branches/HeuristicLab.TimeSeries/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Creators/GrowTreeCreator.cs

    r7076 r7213  
    146146        throw new ArgumentException("Cannot grow tree. Seed node shouldn't have arity zero.");
    147147
     148      var allowedSymbols = seedNode.Grammar.AllowedSymbols.Where(s => s.InitialFrequency > 0.0).ToList();
    148149
    149150      for (var i = 0; i != arity; ++i) {
    150         var possibleSymbols = seedNode.Grammar.GetAllowedChildSymbols(seedNode.Symbol, i).Where(s => s.InitialFrequency > 0.0);
     151        var possibleSymbols = allowedSymbols.Where(s => seedNode.Grammar.IsAllowedChildSymbol(seedNode.Symbol, s, i)).ToList();
    151152        var selectedSymbol = possibleSymbols.SelectRandom(random);
    152153        var tree = selectedSymbol.CreateTreeNode();
     
    157158      // Only iterate over the non-terminal nodes (those which have arity > 0)
    158159      // Start from depth 2 since the first two levels are formed by the rootNode and the seedNode
    159       foreach (var subTree in seedNode.Subtrees.Where(subTree => subTree.Grammar.GetMaximumSubtreeCount(subTree.Symbol) != 0))
     160      foreach (var subTree in seedNode.Subtrees.Where(subTree => subTree.Grammar.GetMaximumSubtreeCount(subTree.Symbol) > 0))
    160161        RecursiveGrow(random, subTree, 2, maxDepth);
    161162    }
     
    166167        throw new ArgumentException("Cannot grow node of arity zero. Expected a function node.");
    167168
     169      var allowedSymbols = root.Grammar.AllowedSymbols.Where(s => s.InitialFrequency > 0.0).ToList();
     170
    168171      for (var i = 0; i != arity; ++i) {
    169         var possibleSymbols = root.Grammar.GetAllowedChildSymbols(root.Symbol, i);
    170         possibleSymbols = possibleSymbols.Where(s => s.InitialFrequency > 0.0 &&
    171                                           root.Grammar.GetMinimumExpressionDepth(s) - 1 <= maxDepth - currentDepth);
    172         if (!possibleSymbols.Any()) throw new InvalidOperationException("No symbols are available for the tree.");
     172        var possibleSymbols = allowedSymbols.Where(s => root.Grammar.IsAllowedChildSymbol(root.Symbol, s, i) && root.Grammar.GetMinimumExpressionDepth(s) - 1 <= maxDepth - currentDepth).ToList();
     173        if (!possibleSymbols.Any())
     174          throw new InvalidOperationException("No symbols are available for the tree.");
    173175        var selectedSymbol = possibleSymbols.SelectRandom(random);
    174176        var tree = selectedSymbol.CreateTreeNode();
Note: See TracChangeset for help on using the changeset viewer.