Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
04/27/10 11:44:36 (14 years ago)
Author:
gkronber
Message:

Fixed bugs in persistence of grammars.#937 (Data types and operators for symbolic expression tree encoding)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.3/DefaultSymbolicExpressionGrammar.cs

    r3462 r3541  
    4040  [Item("DefaultSymbolicExpressionGrammar", "Represents a grammar that defines the syntax of symbolic expression trees.")]
    4141  public class DefaultSymbolicExpressionGrammar : Item, ISymbolicExpressionGrammar {
    42     [Storable]
     42
     43    #region properties for separation between implementation and persistence
     44    [Storable]
     45    private IEnumerable<KeyValuePair<string, int>> MinSubTreeCount {
     46      get { return minSubTreeCount.AsEnumerable(); }
     47      set { minSubTreeCount = value.ToDictionary(x => x.Key, x => x.Value); }
     48    }
     49
     50    [Storable]
     51    private IEnumerable<KeyValuePair<string, int>> MaxSubTreeCount {
     52      get { return maxSubTreeCount.AsEnumerable(); }
     53      set { maxSubTreeCount = value.ToDictionary(x => x.Key, x => x.Value); }
     54    }
     55
     56    [Storable]
     57    private IEnumerable<KeyValuePair<string, IEnumerable<IEnumerable<string>>>> AllowedChildSymbols {
     58      get {
     59        return (from parentEntry in allowedChildSymbols
     60                let setEnumeration = parentEntry.Value.Select(set => set.AsEnumerable()).ToList()
     61                select new KeyValuePair<string, IEnumerable<IEnumerable<string>>>(parentEntry.Key, setEnumeration))
     62                .ToList();
     63      }
     64      set {
     65        allowedChildSymbols = new Dictionary<string, List<HashSet<string>>>();
     66        foreach (var pair in value) {
     67          allowedChildSymbols[pair.Key] = new List<HashSet<string>>();
     68          foreach (var entry in pair.Value) {
     69            var hashSet = new HashSet<string>();
     70            foreach (string child in entry) {
     71              hashSet.Add(child);
     72            }
     73            allowedChildSymbols[pair.Key].Add(hashSet);
     74          }
     75        }
     76      }
     77    }
     78    [Storable]
     79    private IEnumerable<KeyValuePair<string, Symbol>> AllSymbols {
     80      get { return allSymbols.AsEnumerable(); }
     81      set { allSymbols = value.ToDictionary(x => x.Key, x => x.Value); }
     82    }
     83    #endregion
     84
    4385    private Dictionary<string, int> minSubTreeCount;
    44     [Storable]
    4586    private Dictionary<string, int> maxSubTreeCount;
    46     [Storable]
    4787    private Dictionary<string, List<HashSet<string>>> allowedChildSymbols;
    48     [Storable]
    4988    private Dictionary<string, Symbol> allSymbols;
     89    [Storable]
     90    private Symbol startSymbol;
    5091
    5192    public DefaultSymbolicExpressionGrammar()
    5293      : base() {
    53       Reset();
    54     }
    55 
    56     private void Initialize() {
    57       startSymbol = new StartSymbol();
    58       AddSymbol(startSymbol);
    59       SetMinSubtreeCount(startSymbol, 1);
    60       SetMaxSubtreeCount(startSymbol, 1);
    61     }
    62 
    63     #region ISymbolicExpressionGrammar Members
    64 
    65     private Symbol startSymbol;
    66     public Symbol StartSymbol {
    67       get { return startSymbol; }
    68       set { startSymbol = value; }
    69     }
    70 
    71     protected void Reset() {
     94      Clear();
     95    }
     96
     97    public void Clear() {
    7298      minSubTreeCount = new Dictionary<string, int>();
    7399      maxSubTreeCount = new Dictionary<string, int>();
     
    77103      cachedMaxExpressionLength = new Dictionary<string, int>();
    78104      cachedMinExpressionDepth = new Dictionary<string, int>();
    79       Initialize();
    80     }
     105
     106      startSymbol = new StartSymbol();
     107      AddSymbol(startSymbol);
     108      SetMinSubtreeCount(startSymbol, 1);
     109      SetMaxSubtreeCount(startSymbol, 1);
     110    }
     111
     112    #region ISymbolicExpressionGrammar Members
     113
     114    public Symbol StartSymbol {
     115      get { return startSymbol; }
     116      set { startSymbol = value; }
     117    }
     118
    81119
    82120    public void AddSymbol(Symbol symbol) {
Note: See TracChangeset for help on using the changeset viewer.