Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
04/09/10 17:28:32 (14 years ago)
Author:
gkronber
Message:

Added first version of architecture altering operators for ADFs. #290 (Implement ADFs)

File:
1 edited

Legend:

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

    r3269 r3294  
    2121
    2222using System;
     23using System.Linq;
    2324using System.Collections.Generic;
    2425using System.Text;
     
    2728using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    2829using HeuristicLab.Data;
     30using System.Diagnostics;
    2931
    3032namespace HeuristicLab.Encodings.SymbolicExpressionTreeEncoding {
     
    4648    protected SymbolicExpressionTreeNode(SymbolicExpressionTreeNode original) {
    4749      symbol = original.symbol;
    48       this.subTrees = new List<SymbolicExpressionTreeNode>();
     50      subTrees = new List<SymbolicExpressionTreeNode>();
    4951      foreach (var subtree in original.SubTrees) {
    5052        AddSubTree((SymbolicExpressionTreeNode)subtree.Clone());
    5153      }
     54      dynamicSymbols = new Dictionary<string, int>(original.dynamicSymbols);
    5255    }
    5356
     
    7679      return maxHeight + 1;
    7780    }
    78    
     81
     82    [Storable]
     83    private Dictionary<string, int> dynamicSymbols = new Dictionary<string, int>();
     84    public void AddDynamicSymbol(string symbolName) {
     85      Debug.Assert(!dynamicSymbols.ContainsKey(symbolName));
     86      dynamicSymbols[symbolName] = 0;
     87    }
     88
     89    public void AddDynamicSymbol(string symbolName, int nArguments) {
     90      AddDynamicSymbol(symbolName);
     91      SetDynamicSymbolArgumentCount(symbolName, nArguments);
     92    }
     93
     94    public void RemoveDynamicSymbol(string symbolName) {
     95      dynamicSymbols.Remove(symbolName);
     96    }
     97
     98    public IEnumerable<string> DynamicSymbols {
     99      get { return dynamicSymbols.Keys; }
     100    }
     101
     102    public int GetDynamicSymbolArgumentCount(string symbolName) {
     103      return dynamicSymbols[symbolName];
     104    }
     105    public void SetDynamicSymbolArgumentCount(string symbolName, int nArguments) {
     106      Debug.Assert(dynamicSymbols.ContainsKey(symbolName));
     107      dynamicSymbols[symbolName] = nArguments;
     108    }
     109
    79110    public virtual void ResetLocalParameters(IRandom random) { }
    80111    public virtual void ShakeLocalParameters(IRandom random, double shakingFactor) { }
Note: See TracChangeset for help on using the changeset viewer.