Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
03/18/11 12:50:28 (13 years ago)
Author:
gkronber
Message:

#1418 Implemented variable view that allows to add and remove variable strings (ported from external evaluation views). Implemented formatter and grammar for external evaluation plugin. Fixed bug in symbolic expression view. Fixed bug in run collection variable impact view. Removed unused plugin HeuristicLab.Problems.ExternalEvaluation.GP.Views. Renamed files.

File:
1 copied

Legend:

Unmodified
Added
Removed
  • branches/DataAnalysis Refactoring/HeuristicLab.Problems.ExternalEvaluation.GP/3.4/ExternalEvaluationExpressionGrammar.cs

    r5745 r5750  
    2323using HeuristicLab.Common;
    2424using HeuristicLab.Core;
     25using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
     26using HeuristicLab.Problems.DataAnalysis.Symbolic;
    2527using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
    26 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Symbols;
    27 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    2828
    2929namespace HeuristicLab.Problems.ExternalEvaluation.GP {
    3030  [StorableClass]
    31   [Item("FullFunctionalExpressionGrammar", "Represents a grammar for functional expressions using all available functions.")]
    32   public class FullFunctionalExpressionGrammar : DefaultSymbolicExpressionGrammar {
     31  [Item("ExternalEvaluationExpressionGrammar", "Represents a grammar for functional expressions using all available functions.")]
     32  public class ExternalEvaluationExpressionGrammar : SymbolicExpressionGrammar, ISymbolicDataAnalysisGrammar {
    3333    [Storable]
    34     private HeuristicLab.Problems.ExternalEvaluation.GP.Variable variableSymbol;
     34    private HeuristicLab.Problems.DataAnalysis.Symbolic.Variable variableSymbol;
    3535    [StorableConstructor]
    36     protected FullFunctionalExpressionGrammar(bool deserializing) : base(deserializing) { }
    37     protected FullFunctionalExpressionGrammar(FullFunctionalExpressionGrammar original, Cloner cloner) : base(original, cloner) { }
     36    protected ExternalEvaluationExpressionGrammar(bool deserializing) : base(deserializing) { }
     37    protected ExternalEvaluationExpressionGrammar(ExternalEvaluationExpressionGrammar original, Cloner cloner) : base(original, cloner) { }
    3838    public override IDeepCloneable Clone(Cloner cloner) {
    39       return new FullFunctionalExpressionGrammar(this, cloner);
     39      return new ExternalEvaluationExpressionGrammar(this, cloner);
    4040    }
    4141
    42     public FullFunctionalExpressionGrammar()
    43       : base() {
     42    public ExternalEvaluationExpressionGrammar()
     43      : base("ExternalEvaluationExpressionGrammar", "Represents a grammar for functional expressions using all available functions.") {
    4444      Initialize();
    4545    }
    4646
    47     private void Initialize() {
    48       var originalStart = StartSymbol;
    49       if (!(originalStart is ProgramRootSymbol)) {
    50         var root = new ProgramRootSymbol();
    51         AddSymbol(root);
    52         SetMinSubtreeCount(root, 1);
    53         SetMaxSubtreeCount(root, 1);
    54         SetAllowedChild(root, originalStart, 0);
    55 
    56         StartSymbol = root;
    57       }
    58 
     47    private void Initialize() {     
    5948      var add = new Addition();
    6049      var sub = new Subtraction();
     
    7665      constant.MinValue = -20;
    7766      constant.MaxValue = 20;
    78       variableSymbol = new Variable();
     67      variableSymbol = new HeuristicLab.Problems.DataAnalysis.Symbolic.Variable();
    7968
    8069      var allSymbols = new List<Symbol>() { add, sub, mul, div, mean, sin, cos, tan, log, exp, @if, gt, lt, and, or, not, constant, variableSymbol };
     
    8776
    8877      foreach (var funSymb in functionSymbols) {
    89         SetMinSubtreeCount(funSymb, 1);
    90         SetMaxSubtreeCount(funSymb, 3);
     78        SetSubtreeCount(funSymb, 1, 3);
    9179      }
    9280      foreach (var funSymb in unaryFunctionSymbols) {
    93         SetMinSubtreeCount(funSymb, 1);
    94         SetMaxSubtreeCount(funSymb, 1);
     81        SetSubtreeCount(funSymb, 1, 1);
    9582      }
    9683      foreach (var funSymb in binaryFunctionSymbols) {
    97         SetMinSubtreeCount(funSymb, 2);
    98         SetMaxSubtreeCount(funSymb, 2);
     84        SetSubtreeCount(funSymb, 2, 2);
    9985      }
    10086
    101       SetMinSubtreeCount(@if, 3);
    102       SetMaxSubtreeCount(@if, 3);
    103       SetMinSubtreeCount(constant, 0);
    104       SetMaxSubtreeCount(constant, 0);
    105       SetMinSubtreeCount(variableSymbol, 0);
    106       SetMaxSubtreeCount(variableSymbol, 0);
     87      SetSubtreeCount(@if, 3, 3);
     88      SetSubtreeCount(constant, 0, 0);
     89      SetSubtreeCount(variableSymbol, 0, 0);
    10790
    10891      // allow each symbol as child of the start symbol
    10992      foreach (var symb in allSymbols) {
    110         SetAllowedChild(originalStart, symb, 0);
     93        AddAllowedChildSymbol(StartSymbol, symb, 0);
    11194      }
    11295
    11396      // allow each symbol as child of every other symbol (except for terminals that have maxSubtreeCount == 0)
    11497      foreach (var parent in allSymbols) {
    115         for (int i = 0; i < GetMaxSubtreeCount(parent); i++)
     98        for (int i = 0; i < GetMaximumSubtreeCount(parent); i++)
    11699          foreach (var child in allSymbols) {
    117             SetAllowedChild(parent, child, i);
     100            AddAllowedChildSymbol(parent, child, i);
    118101          }
    119102      }
Note: See TracChangeset for help on using the changeset viewer.