Changeset 3541 for trunk/sources/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.3/DefaultSymbolicExpressionGrammar.cs
- Timestamp:
- 04/27/10 11:44:36 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.3/DefaultSymbolicExpressionGrammar.cs
r3462 r3541 40 40 [Item("DefaultSymbolicExpressionGrammar", "Represents a grammar that defines the syntax of symbolic expression trees.")] 41 41 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 43 85 private Dictionary<string, int> minSubTreeCount; 44 [Storable]45 86 private Dictionary<string, int> maxSubTreeCount; 46 [Storable]47 87 private Dictionary<string, List<HashSet<string>>> allowedChildSymbols; 48 [Storable]49 88 private Dictionary<string, Symbol> allSymbols; 89 [Storable] 90 private Symbol startSymbol; 50 91 51 92 public DefaultSymbolicExpressionGrammar() 52 93 : 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() { 72 98 minSubTreeCount = new Dictionary<string, int>(); 73 99 maxSubTreeCount = new Dictionary<string, int>(); … … 77 103 cachedMaxExpressionLength = new Dictionary<string, int>(); 78 104 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 81 119 82 120 public void AddSymbol(Symbol symbol) {
Note: See TracChangeset
for help on using the changeset viewer.