Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
06/08/11 10:42:57 (14 years ago)
Author:
mkommend
Message:

#1540: Added min and max arity to symbols and renamed SymbolicExpressionTreeNode.SubtreesCount to SymbolicExpressionTreeNode.SubtreeCount.

Location:
branches/GP.Grammar.Editor/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4
Files:
28 edited

Legend:

Unmodified
Added
Removed
  • branches/GP.Grammar.Editor/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Analyzers/SymbolicDataAnalysisAlleleFrequencyAnalyzer.cs

    r6135 r6387  
    8888      StringBuilder builder = new StringBuilder();
    8989      builder.Append("(" + tree.ToString());
    90       for (int i = 0; i < tree.SubtreesCount; i++) {
     90      for (int i = 0; i < tree.SubtreeCount; i++) {
    9191        builder.Append(" " + GetTextualRepresentationFromSubtreeOfDepth(tree.GetSubtree(i), d - 1));
    9292      }
  • branches/GP.Grammar.Editor/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Formatters/SymbolicDataAnalysisExpressionLatexFormatter.cs

    r5817 r6387  
    7373      FormatBegin(node, strBuilder);
    7474
    75       if (node.SubtreesCount > 0) {
     75      if (node.SubtreeCount > 0) {
    7676        strBuilder.Append(FormatRecursively(node.GetSubtree(0)));
    7777      }
     
    9191        strBuilder.Append(@" \left( ");
    9292      } else if (node.Symbol is Subtraction) {
    93         if (node.SubtreesCount == 1) {
     93        if (node.SubtreeCount == 1) {
    9494          strBuilder.Append(@"- \left(");
    9595        } else {
     
    9898      } else if (node.Symbol is Multiplication) {
    9999      } else if (node.Symbol is Division) {
    100         if (node.SubtreesCount == 1) {
     100        if (node.SubtreeCount == 1) {
    101101          strBuilder.Append(@" \cfrac{1}{");
    102102        } else {
     
    105105      } else if (node.Symbol is Average) {
    106106        // skip output of (1/1) if only one subtree
    107         if (node.SubtreesCount > 1) {
    108           strBuilder.Append(@" \cfrac{1}{" + node.SubtreesCount + @"}");
     107        if (node.SubtreeCount > 1) {
     108          strBuilder.Append(@" \cfrac{1}{" + node.SubtreeCount + @"}");
    109109        }
    110110        strBuilder.Append(@" \left(");
     
    246246      } else if (node.Symbol is Division) {
    247247        strBuilder.Append("} ");
    248         if (node.SubtreesCount > 1)
     248        if (node.SubtreeCount > 1)
    249249          strBuilder.Append("{1} ");
    250         for (int i = 1; i < node.SubtreesCount; i++) {
     250        for (int i = 1; i < node.SubtreeCount; i++) {
    251251          strBuilder.Append(" } ");
    252252        }
  • branches/GP.Grammar.Editor/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Formatters/SymbolicDataAnalysisExpressionMATLABFormatter.cs

    r5809 r6387  
    106106
    107107      if (symbol is Addition) {
    108         for (int i = 0; i < node.SubtreesCount; i++) {
     108        for (int i = 0; i < node.SubtreeCount; i++) {
    109109          if (i > 0) stringBuilder.Append("+");
    110110          stringBuilder.Append(FormatRecursively(node.GetSubtree(i)));
     
    112112      } else if (symbol is And) {
    113113        stringBuilder.Append("((");
    114         for (int i = 0; i < node.SubtreesCount; i++) {
     114        for (int i = 0; i < node.SubtreeCount; i++) {
    115115          if (i > 0) stringBuilder.Append("&");
    116116          stringBuilder.Append("((");
     
    121121      } else if (symbol is Average) {
    122122        stringBuilder.Append("(1/");
    123         stringBuilder.Append(node.SubtreesCount);
     123        stringBuilder.Append(node.SubtreeCount);
    124124        stringBuilder.Append(")*(");
    125         for (int i = 0; i < node.SubtreesCount; i++) {
     125        for (int i = 0; i < node.SubtreeCount; i++) {
    126126          if (i > 0) stringBuilder.Append("+");
    127127          stringBuilder.Append("(");
     
    138138        stringBuilder.Append(")");
    139139      } else if (symbol is Division) {
    140         if (node.SubtreesCount == 1) {
     140        if (node.SubtreeCount == 1) {
    141141          stringBuilder.Append("1/");
    142142          stringBuilder.Append(FormatRecursively(node.GetSubtree(0)));
     
    144144          stringBuilder.Append(FormatRecursively(node.GetSubtree(0)));
    145145          stringBuilder.Append("/(");
    146           for (int i = 1; i < node.SubtreesCount; i++) {
     146          for (int i = 1; i < node.SubtreeCount; i++) {
    147147            if (i > 1) stringBuilder.Append("*");
    148148            stringBuilder.Append(FormatRecursively(node.GetSubtree(i)));
     
    187187        stringBuilder.Append(")");
    188188      } else if (symbol is Multiplication) {
    189         for (int i = 0; i < node.SubtreesCount; i++) {
     189        for (int i = 0; i < node.SubtreeCount; i++) {
    190190          if (i > 0) stringBuilder.Append("*");
    191191          stringBuilder.Append(FormatRecursively(node.GetSubtree(i)));
     
    197197      } else if (symbol is Or) {
    198198        stringBuilder.Append("((");
    199         for (int i = 0; i < node.SubtreesCount; i++) {
     199        for (int i = 0; i < node.SubtreeCount; i++) {
    200200          if (i > 0) stringBuilder.Append("|");
    201201          stringBuilder.Append("((");
     
    209209        stringBuilder.Append(")");
    210210      } else if (symbol is Subtraction) {
    211         if (node.SubtreesCount == 1) {
     211        if (node.SubtreeCount == 1) {
    212212          stringBuilder.Append("-1*");
    213213          stringBuilder.Append(FormatRecursively(node.GetSubtree(0)));
    214214        } else {
    215215          stringBuilder.Append(FormatRecursively(node.GetSubtree(0)));
    216           for (int i = 1; i < node.SubtreesCount; i++) {
     216          for (int i = 1; i < node.SubtreeCount; i++) {
    217217            stringBuilder.Append("-");
    218218            stringBuilder.Append(FormatRecursively(node.GetSubtree(i)));
  • branches/GP.Grammar.Editor/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/SymbolicDataAnalysisExpressionTreeSimplifier.cs

    r5936 r6387  
    6464    private ISymbolicExpressionTreeNode MacroExpand(ISymbolicExpressionTreeNode root, ISymbolicExpressionTreeNode node, IList<ISymbolicExpressionTreeNode> argumentTrees) {
    6565      List<ISymbolicExpressionTreeNode> subtrees = new List<ISymbolicExpressionTreeNode>(node.Subtrees);
    66       while (node.SubtreesCount > 0) node.RemoveSubtree(0);
     66      while (node.SubtreeCount > 0) node.RemoveSubtree(0);
    6767      if (node.Symbol is InvokeFunction) {
    6868        var invokeSym = node.Symbol as InvokeFunction;
     
    901901        // x0 * x1 * .. * xn * -1 => x0 * x1 * .. * -xn
    902902        var lastSubTree = x.Subtrees.Last();
    903         x.RemoveSubtree(x.SubtreesCount - 1);
     903        x.RemoveSubtree(x.SubtreeCount - 1);
    904904        x.AddSubtree(Negate(lastSubTree)); // last is maybe a constant, prefer to negate the constant
    905905      } else {
  • branches/GP.Grammar.Editor/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Symbols/Addition.cs

    r5809 r6387  
    2222using HeuristicLab.Common;
    2323using HeuristicLab.Core;
     24using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
    2425using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    25 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
    2626namespace HeuristicLab.Problems.DataAnalysis.Symbolic {
    2727  [StorableClass]
    2828  [Item("Addition", "Symbol that represents the + operator.")]
    2929  public sealed class Addition : Symbol {
     30    private const int minimumArity = 1;
     31    private const int maximumArity = byte.MaxValue;
     32
     33    public override int MinimumArity {
     34      get { return minimumArity; }
     35    }
     36    public override int MaximumArity {
     37      get { return maximumArity; }
     38    }
     39
    3040    [StorableConstructor]
    3141    private Addition(bool deserializing) : base(deserializing) { }
  • branches/GP.Grammar.Editor/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Symbols/And.cs

    r5809 r6387  
    2828  [Item("And", "Symbol that represents the boolean AND operator.")]
    2929  public sealed class And : Symbol {
     30    private const int minimumArity = 1;
     31    private const int maximumArity = byte.MaxValue;
     32
     33    public override int MinimumArity {
     34      get { return minimumArity; }
     35    }
     36    public override int MaximumArity {
     37      get { return maximumArity; }
     38    }
     39
    3040    [StorableConstructor]
    3141    private And(bool deserializing) : base(deserializing) { }
  • branches/GP.Grammar.Editor/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Symbols/Average.cs

    r5809 r6387  
    2828  [Item("Average", "Symbol that represents the average (arithmetic mean) function.")]
    2929  public sealed class Average : Symbol {
     30    private const int minimumArity = 1;
     31    private const int maximumArity = byte.MaxValue;
     32
     33    public override int MinimumArity {
     34      get { return minimumArity; }
     35    }
     36    public override int MaximumArity {
     37      get { return maximumArity; }
     38    }
     39
    3040    [StorableConstructor]
    3141    private Average(bool deserializing) : base(deserializing) { }
  • branches/GP.Grammar.Editor/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Symbols/Constant.cs

    r5809 r6387  
    8888    }
    8989
     90    private const int minimumArity = 0;
     91    private const int maximumArity = 0;
     92
     93    public override int MinimumArity {
     94      get { return minimumArity; }
     95    }
     96    public override int MaximumArity {
     97      get { return maximumArity; }
     98    }
    9099    #endregion
     100
    91101    [StorableConstructor]
    92102    private Constant(bool deserializing) : base(deserializing) { }
  • branches/GP.Grammar.Editor/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Symbols/Cosine.cs

    r5809 r6387  
    2828  [Item("Cosine", "Symbol that represents the cosine function.")]
    2929  public sealed class Cosine : Symbol {
     30    private const int minimumArity = 1;
     31    private const int maximumArity = 1;
     32
     33    public override int MinimumArity {
     34      get { return minimumArity; }
     35    }
     36    public override int MaximumArity {
     37      get { return maximumArity; }
     38    }
     39
    3040    [StorableConstructor]
    3141    private Cosine(bool deserializing) : base(deserializing) { }
  • branches/GP.Grammar.Editor/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Symbols/Derivative.cs

    r5809 r6387  
    2828  [Item("Derivative", "Represents the derivative over the specified subtree.")]
    2929  public sealed class Derivative : Symbol {
     30    private const int minimumArity = 1;
     31    private const int maximumArity = 1;
     32
     33    public override int MinimumArity {
     34      get { return minimumArity; }
     35    }
     36    public override int MaximumArity {
     37      get { return maximumArity; }
     38    }
     39
    3040    [StorableConstructor]
    3141    private Derivative(bool deserializing) : base(deserializing) { }
  • branches/GP.Grammar.Editor/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Symbols/Division.cs

    r5809 r6387  
    2828  [Item("Division", "Symbol that represents the / operator.")]
    2929  public sealed class Division : Symbol {
     30    private const int minimumArity = 1;
     31    private const int maximumArity = byte.MaxValue;
     32
     33    public override int MinimumArity {
     34      get { return minimumArity; }
     35    }
     36    public override int MaximumArity {
     37      get { return maximumArity; }
     38    }
     39
    3040    [StorableConstructor]
    3141    private Division(bool deserializing) : base(deserializing) { }
  • branches/GP.Grammar.Editor/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Symbols/Exponential.cs

    r5809 r6387  
    2828  [Item("Exponential", "Symbol that represents the exponential function.")]
    2929  public sealed class Exponential : Symbol {
     30    private const int minimumArity = 1;
     31    private const int maximumArity = 1;
     32
     33    public override int MinimumArity {
     34      get { return minimumArity; }
     35    }
     36    public override int MaximumArity {
     37      get { return maximumArity; }
     38    }
     39
    3040    [StorableConstructor]
    3141    private Exponential(bool deserializing) : base(deserializing) { }
  • branches/GP.Grammar.Editor/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Symbols/GreaterThan.cs

    r5809 r6387  
    2828  [Item("GreaterThan", "Symbol that represents a greater than relation.")]
    2929  public sealed class GreaterThan : Symbol {
     30    private const int minimumArity = 2;
     31    private const int maximumArity = 2;
     32
     33    public override int MinimumArity {
     34      get { return minimumArity; }
     35    }
     36    public override int MaximumArity {
     37      get { return maximumArity; }
     38    }
     39
    3040    [StorableConstructor]
    3141    private GreaterThan(bool deserializing) : base(deserializing) { }
  • branches/GP.Grammar.Editor/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Symbols/IfThenElse.cs

    r5809 r6387  
    2828  [Item("IfThenElse", "Symbol that represents a conditional operator.")]
    2929  public sealed class IfThenElse : Symbol {
     30    private const int minimumArity = 3;
     31    private const int maximumArity = 3;
     32
     33    public override int MinimumArity {
     34      get { return minimumArity; }
     35    }
     36    public override int MaximumArity {
     37      get { return maximumArity; }
     38    }
     39
    3040    [StorableConstructor]
    3141    private IfThenElse(bool deserializing) : base(deserializing) { }
  • branches/GP.Grammar.Editor/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Symbols/Integral.cs

    r5809 r6387  
    2727  [Item("Integral", "Represents the integral over the specified subtree.")]
    2828  public sealed class Integral : LaggedSymbol {
     29    private const int minimumArity = 1;
     30    private const int maximumArity = 1;
     31
     32    public override int MinimumArity {
     33      get { return minimumArity; }
     34    }
     35    public override int MaximumArity {
     36      get { return maximumArity; }
     37    }
     38
    2939    [StorableConstructor]
    3040    private Integral(bool deserializing) : base(deserializing) { }
  • branches/GP.Grammar.Editor/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Symbols/LessThan.cs

    r5809 r6387  
    2828  [Item("LessThan", "Symbol that represents a less than relation.")]
    2929  public sealed class LessThan : Symbol {
     30    private const int minimumArity = 2;
     31    private const int maximumArity = 2;
     32
     33    public override int MinimumArity {
     34      get { return minimumArity; }
     35    }
     36    public override int MaximumArity {
     37      get { return maximumArity; }
     38    }
     39
    3040    [StorableConstructor]
    3141    private LessThan(bool deserializing) : base(deserializing) { }
  • branches/GP.Grammar.Editor/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Symbols/Logarithm.cs

    r5809 r6387  
    2828  [Item("Logarithm", "Symbol that represents the logarithm function.")]
    2929  public sealed class Logarithm : Symbol {
     30    private const int minimumArity = 1;
     31    private const int maximumArity = 1;
     32
     33    public override int MinimumArity {
     34      get { return minimumArity; }
     35    }
     36    public override int MaximumArity {
     37      get { return maximumArity; }
     38    }
     39
    3040    [StorableConstructor]
    3141    private Logarithm(bool deserializing) : base(deserializing) { }
  • branches/GP.Grammar.Editor/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Symbols/Multiplication.cs

    r5809 r6387  
    2828  [Item("Multiplication", "Symbol that represents the * operator.")]
    2929  public sealed class Multiplication : Symbol {
     30    private const int minimumArity = 1;
     31    private const int maximumArity = byte.MaxValue;
     32
     33    public override int MinimumArity {
     34      get { return minimumArity; }
     35    }
     36    public override int MaximumArity {
     37      get { return maximumArity; }
     38    }
     39
    3040    [StorableConstructor]
    3141    private Multiplication(bool deserializing) : base(deserializing) { }
  • branches/GP.Grammar.Editor/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Symbols/Not.cs

    r5809 r6387  
    2828  [Item("Not", "Symbol that represents the boolean NOT operator.")]
    2929  public sealed class Not : Symbol {
     30    private const int minimumArity = 1;
     31    private const int maximumArity = 1;
     32
     33    public override int MinimumArity {
     34      get { return minimumArity; }
     35    }
     36    public override int MaximumArity {
     37      get { return maximumArity; }
     38    }
     39
    3040    [StorableConstructor]
    3141    private Not(bool deserializing) : base(deserializing) { }
  • branches/GP.Grammar.Editor/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Symbols/Or.cs

    r5809 r6387  
    2828  [Item("Or", "Symbol that represents the boolean OR operator.")]
    2929  public sealed class Or : Symbol {
     30    private const int minimumArity = 1;
     31    private const int maximumArity = byte.MaxValue;
     32
     33    public override int MinimumArity {
     34      get { return minimumArity; }
     35    }
     36    public override int MaximumArity {
     37      get { return maximumArity; }
     38    }
     39
    3040    [StorableConstructor]
    3141    private Or(bool deserializing) : base(deserializing) { }
  • branches/GP.Grammar.Editor/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Symbols/Power.cs

    r5809 r6387  
    2828  [Item("Power", "Symbol that represents the power function.")]
    2929  public sealed class Power : Symbol {
     30    private const int minimumArity = 2;
     31    private const int maximumArity = 2;
     32
     33    public override int MinimumArity {
     34      get { return minimumArity; }
     35    }
     36    public override int MaximumArity {
     37      get { return maximumArity; }
     38    }
     39
    3040    [StorableConstructor]
    3141    private Power(bool deserializing) : base(deserializing) { }
  • branches/GP.Grammar.Editor/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Symbols/Root.cs

    r5809 r6387  
    2828  [Item("Root", "Symbol that represents the n-th root function.")]
    2929  public sealed class Root : Symbol {
     30    private const int minimumArity = 2;
     31    private const int maximumArity = 2;
     32
     33    public override int MinimumArity {
     34      get { return minimumArity; }
     35    }
     36    public override int MaximumArity {
     37      get { return maximumArity; }
     38    }
     39
    3040    [StorableConstructor]
    3141    private Root(bool deserializing) : base(deserializing) { }
  • branches/GP.Grammar.Editor/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Symbols/Sine.cs

    r5809 r6387  
    2828  [Item("Sine", "Symbol that represents the sine function.")]
    2929  public sealed class Sine : Symbol {
     30    private const int minimumArity = 1;
     31    private const int maximumArity = 1;
     32
     33    public override int MinimumArity {
     34      get { return minimumArity; }
     35    }
     36    public override int MaximumArity {
     37      get { return maximumArity; }
     38    }
     39
    3040    [StorableConstructor]
    3141    private Sine(bool deserializing) : base(deserializing) { }
  • branches/GP.Grammar.Editor/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Symbols/Subtraction.cs

    r5809 r6387  
    2828  [Item("Subtraction", "Symbol that represents the - operator.")]
    2929  public sealed class Subtraction : Symbol {
     30    private const int minimumArity = 1;
     31    private const int maximumArity = byte.MaxValue;
     32
     33    public override int MinimumArity {
     34      get { return minimumArity; }
     35    }
     36    public override int MaximumArity {
     37      get { return maximumArity; }
     38    }
     39
    3040    [StorableConstructor]
    3141    private Subtraction(bool deserializing) : base(deserializing) { }
  • branches/GP.Grammar.Editor/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Symbols/Tangent.cs

    r5809 r6387  
    2828  [Item("Tangent", "Symbol that represents the tangent trigonometric function.")]
    2929  public sealed class Tangent : Symbol {
     30    private const int minimumArity = 1;
     31    private const int maximumArity = 1;
     32
     33    public override int MinimumArity {
     34      get { return minimumArity; }
     35    }
     36    public override int MaximumArity {
     37      get { return maximumArity; }
     38    }
     39
    3040    [StorableConstructor]
    3141    private Tangent(bool deserializing) : base(deserializing) { }
  • branches/GP.Grammar.Editor/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Symbols/TimeLag.cs

    r5809 r6387  
    2828  [Item("TimeLag", "Represents a symblol whose evaluation is shifted.")]
    2929  public sealed class TimeLag : LaggedSymbol {
     30    private const int minimumArity = 1;
     31    private const int maximumArity = 1;
     32
     33    public override int MinimumArity {
     34      get { return minimumArity; }
     35    }
     36    public override int MaximumArity {
     37      get { return maximumArity; }
     38    }
     39
    3040    [StorableConstructor]
    3141    private TimeLag(bool deserializing) : base(deserializing) { }
  • branches/GP.Grammar.Editor/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Symbols/Variable.cs

    r6284 r6387  
    100100      }
    101101    }
     102
     103    private const int minimumArity = 0;
     104    private const int maximumArity = 0;
     105
     106    public override int MinimumArity {
     107      get { return minimumArity; }
     108    }
     109    public override int MaximumArity {
     110      get { return maximumArity; }
     111    }
    102112    #endregion
     113
    103114    [StorableConstructor]
    104115    protected Variable(bool deserializing)
  • branches/GP.Grammar.Editor/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Symbols/VariableCondition.cs

    r5809 r6387  
    138138      }
    139139    }
     140
     141    private const int minimumArity = 2;
     142    private const int maximumArity = 2;
     143
     144    public override int MinimumArity {
     145      get { return minimumArity; }
     146    }
     147    public override int MaximumArity {
     148      get { return maximumArity; }
     149    }
    140150    #endregion
    141151
Note: See TracChangeset for help on using the changeset viewer.