Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
11/02/11 16:37:07 (12 years ago)
Author:
mkommend
Message:

#1654: Corrected bug in Full- and GrowTreeCreator.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Creators/GrowTreeCreator.cs

    r6888 r6944  
    2121
    2222using System;
    23 using System.Collections.Generic;
    24 using System.ComponentModel;
    2523using System.Linq;
    2624using HeuristicLab.Common;
     
    134132      var arity = SampleArity(random, seedNode);
    135133      // throw an exception if the seedNode happens to be a terminal, since in this case we cannot grow a tree
    136       if (arity <= 0) 
    137         throw new ArgumentException("Cannot grow tree. Seed node shouldn't have arity zero."); 
     134      if (arity <= 0)
     135        throw new ArgumentException("Cannot grow tree. Seed node shouldn't have arity zero.");
    138136
    139       var possibleSymbols = seedNode.Grammar.GetAllowedChildSymbols(seedNode.Symbol).Where(s => s.InitialFrequency > 0.0).ToList();
    140137
    141138      for (var i = 0; i != arity; ++i) {
     139        var possibleSymbols = seedNode.Grammar.GetAllowedChildSymbols(seedNode.Symbol, i).Where(s => s.InitialFrequency > 0.0);
    142140        var selectedSymbol = possibleSymbols.SelectRandom(random);
    143141        var tree = selectedSymbol.CreateTreeNode();
     
    157155        throw new ArgumentException("Cannot grow node of arity zero. Expected a function node.");
    158156
    159       var possibleSymbols = currentDepth < maxDepth ?
    160         root.Grammar.GetAllowedChildSymbols(root.Symbol).Where(s => s.InitialFrequency > 0.0).ToList() :
    161         root.Grammar.GetAllowedChildSymbols(root.Symbol).Where(s => s.InitialFrequency > 0.0 && root.Grammar.GetMaximumSubtreeCount(s) == 0).ToList();
    162157
    163158      for (var i = 0; i != arity; ++i) {
     159        var possibleSymbols = currentDepth < maxDepth
     160                                ? root.Grammar.GetAllowedChildSymbols(root.Symbol,i).Where(s => s.InitialFrequency > 0.0)
     161                                : root.Grammar.GetAllowedChildSymbols(root.Symbol,i).Where(
     162                                  s => s.InitialFrequency > 0.0 && root.Grammar.GetMaximumSubtreeCount(s) == 0);
    164163        var selectedSymbol = possibleSymbols.SelectRandom(random);
    165164        var tree = selectedSymbol.CreateTreeNode();
Note: See TracChangeset for help on using the changeset viewer.