Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
04/10/20 13:10:26 (5 years ago)
Author:
chaider
Message:

#2968 merged trunk into branch

Location:
branches/2968_infix_string_formatter/HeuristicLab.Problems.DataAnalysis.Symbolic
Files:
4 edited
1 copied

Legend:

Unmodified
Added
Removed
  • branches/2968_infix_string_formatter/HeuristicLab.Problems.DataAnalysis.Symbolic

  • branches/2968_infix_string_formatter/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Grammars/ArithmeticExpressionGrammar.cs

    r15583 r17503  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
     
    2121
    2222using System.Collections.Generic;
     23using HEAL.Attic;
    2324using HeuristicLab.Common;
    2425using HeuristicLab.Core;
    2526using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
    26 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    2727using HeuristicLab.PluginInfrastructure;
    2828
    2929namespace HeuristicLab.Problems.DataAnalysis.Symbolic {
    3030  [NonDiscoverableType]
    31   [StorableClass]
     31  [StorableType("FCBA02B7-5D29-42F5-A64C-A60AD8EA475D")]
    3232  [Item("ArithmeticExpressionGrammar", "Represents a grammar for functional expressions using only arithmetic operations.")]
    33   public class ArithmeticExpressionGrammar : SymbolicExpressionGrammar, ISymbolicDataAnalysisGrammar {
     33  public class ArithmeticExpressionGrammar : DataAnalysisGrammar, ISymbolicDataAnalysisGrammar {
    3434
    3535    [StorableConstructor]
    36     protected ArithmeticExpressionGrammar(bool deserializing) : base(deserializing) { }
     36    protected ArithmeticExpressionGrammar(StorableConstructorFlag _) : base(_) { }
    3737    protected ArithmeticExpressionGrammar(ArithmeticExpressionGrammar original, Cloner cloner) : base(original, cloner) { }
    3838    public ArithmeticExpressionGrammar()
     
    5656      var factorVariableSymbol = new FactorVariable();
    5757
    58       var allSymbols = new List<Symbol>() { add, sub, mul, div, constant, variableSymbol, binFactorVariableSymbol, factorVariableSymbol};
     58      var allSymbols = new List<Symbol>() { add, sub, mul, div, constant, variableSymbol, binFactorVariableSymbol, factorVariableSymbol };
    5959      var functionSymbols = new List<Symbol>() { add, sub, mul, div };
    6060
  • branches/2968_infix_string_formatter/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Grammars/FullFunctionalExpressionGrammar.cs

    r15583 r17503  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
     
    2222using System.Collections.Generic;
    2323using System.Linq;
     24using HEAL.Attic;
    2425using HeuristicLab.Common;
    2526using HeuristicLab.Core;
    2627using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
    27 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    2828
    2929namespace HeuristicLab.Problems.DataAnalysis.Symbolic {
    30   [StorableClass]
     30  [StorableType("44B0829C-1CB5-4BE9-9514-BBA54FAB2912")]
    3131  [Item("FullFunctionalExpressionGrammar", "Represents a grammar for functional expressions using all available functions.")]
    32   public class FullFunctionalExpressionGrammar : SymbolicExpressionGrammar, ISymbolicDataAnalysisGrammar {
     32  public class FullFunctionalExpressionGrammar : DataAnalysisGrammar, ISymbolicDataAnalysisGrammar {
    3333    [StorableConstructor]
    34     protected FullFunctionalExpressionGrammar(bool deserializing) : base(deserializing) { }
     34    protected FullFunctionalExpressionGrammar(StorableConstructorFlag _) : base(_) { }
    3535    protected FullFunctionalExpressionGrammar(FullFunctionalExpressionGrammar original, Cloner cloner) : base(original, cloner) { }
    3636    public FullFunctionalExpressionGrammar()
     
    4848      var mul = new Multiplication();
    4949      var div = new Division();
     50      var aq = new AnalyticQuotient();
    5051      var mean = new Average();
    5152      var sin = new Sine();
     
    5354      var tan = new Tangent();
    5455      var log = new Logarithm();
     56      var abs = new Absolute();
     57      var tanh = new HyperbolicTangent();
    5558      var pow = new Power();
    5659      pow.InitialFrequency = 0.0;
    5760      var square = new Square();
    5861      square.InitialFrequency = 0.0;
     62      var cube = new Cube();
     63      cube.InitialFrequency = 0.0;
    5964      var root = new Root();
    6065      root.InitialFrequency = 0.0;
    6166      var sqrt = new SquareRoot();
    6267      sqrt.InitialFrequency = 0.0;
     68      var cubeRoot = new CubeRoot();
     69      cubeRoot.InitialFrequency = 0.0;
    6370      var airyA = new AiryA();
    6471      airyA.InitialFrequency = 0.0;
     
    123130      autoregressiveVariable.Enabled = false;
    124131
    125       var allSymbols = new List<Symbol>() { add, sub, mul, div, mean, sin, cos, tan, log, square, pow, sqrt, root, exp,
     132      var allSymbols = new List<Symbol>() { add, sub, mul, div, aq, mean, abs, sin, cos, tan, log, square, cube, pow, sqrt, cubeRoot, root, exp, tanh,
    126133        airyA, airyB, bessel, cosineIntegral, dawson, erf, expIntegralEi, fresnelCosineIntegral, fresnelSineIntegral, gamma, hypCosineIntegral, hypSineIntegral, norm, psi, sineIntegral,
    127134        @if, gt, lt, and, or, not,xor, timeLag, integral, derivative, constant, variableSymbol, binFactorVariable, factorVariable, laggedVariable,autoregressiveVariable, variableCondition };
    128       var unaryFunctionSymbols = new List<Symbol>() { square, sqrt, sin, cos, tan, log, exp, not, timeLag, integral, derivative,
     135      var unaryFunctionSymbols = new List<Symbol>() { abs, square, sqrt, cube, cubeRoot, sin, cos, tan, log, exp, tanh, not, timeLag, integral, derivative,
    129136        airyA, airyB, bessel, cosineIntegral, dawson, erf, expIntegralEi, fresnelCosineIntegral, fresnelSineIntegral, gamma, hypCosineIntegral, hypSineIntegral, norm, psi, sineIntegral
    130137      };
    131138
    132       var binaryFunctionSymbols = new List<Symbol>() { pow, root, gt, lt, variableCondition };
     139      var binaryFunctionSymbols = new List<Symbol>() { pow, root, gt, lt, aq, variableCondition };
    133140      var ternarySymbols = new List<Symbol>() { add, sub, mul, div, mean, and, or, xor };
    134141      var terminalSymbols = new List<Symbol>() { variableSymbol, binFactorVariable, factorVariable, constant, laggedVariable, autoregressiveVariable };
  • branches/2968_infix_string_formatter/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Grammars/TypeCoherentExpressionGrammar.cs

    r15583 r17503  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
     
    2222using System.Collections.Generic;
    2323using System.Linq;
     24using HEAL.Attic;
    2425using HeuristicLab.Common;
    2526using HeuristicLab.Core;
    2627using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
    27 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    2828namespace HeuristicLab.Problems.DataAnalysis.Symbolic {
    29   [StorableClass]
     29  [StorableType("36A22322-0627-4E25-A468-F2A788AF6D46")]
    3030  [Item("TypeCoherentExpressionGrammar", "Represents a grammar for functional expressions in which special syntactic constraints are enforced so that boolean and real-valued expressions are not mixed.")]
    31   public class TypeCoherentExpressionGrammar : SymbolicExpressionGrammar, ISymbolicDataAnalysisGrammar {
     31  public class TypeCoherentExpressionGrammar : DataAnalysisGrammar, ISymbolicDataAnalysisGrammar {
    3232    private const string ArithmeticFunctionsName = "Arithmetic Functions";
    3333    private const string TrigonometricFunctionsName = "Trigonometric Functions";
     
    4444
    4545    [StorableConstructor]
    46     protected TypeCoherentExpressionGrammar(bool deserializing) : base(deserializing) { }
     46    protected TypeCoherentExpressionGrammar(StorableConstructorFlag _) : base(_) { }
    4747    protected TypeCoherentExpressionGrammar(TypeCoherentExpressionGrammar original, Cloner cloner) : base(original, cloner) { }
    4848    public TypeCoherentExpressionGrammar()
     
    6969      var root = new Root();
    7070      var sqrt = new SquareRoot();
     71      var cube = new Cube();
     72      var cubeRoot = new CubeRoot();
    7173      var exp = new Exponential();
     74      var abs = new Absolute();
    7275
    7376      var airyA = new AiryA();
     
    8285      var gamma = new Gamma();
    8386      var hypCosineIntegral = new HyperbolicCosineIntegral();
     87      var tanh = new HyperbolicTangent();
    8488      var hypSineIntegral = new HyperbolicSineIntegral();
    8589      var norm = new Norm();
    8690      var psi = new Psi();
    8791      var sineIntegral = new SineIntegral();
     92      var analyticalQuotient = new AnalyticQuotient();
    8893
    8994      var @if = new IfThenElse();
     
    112117      #region group symbol declaration
    113118      var arithmeticSymbols = new GroupSymbol(ArithmeticFunctionsName, new List<ISymbol>() { add, sub, mul, div, mean });
    114       var trigonometricSymbols = new GroupSymbol(TrigonometricFunctionsName, new List<ISymbol>() { sin, cos, tan });
     119      var trigonometricSymbols = new GroupSymbol(TrigonometricFunctionsName, new List<ISymbol>() { sin, cos, tan, tanh });
    115120      var exponentialAndLogarithmicSymbols = new GroupSymbol(ExponentialFunctionsName, new List<ISymbol> { exp, log });
    116       var specialFunctions = new GroupSymbol(SpecialFunctionsName, new List<ISymbol> { airyA, airyB, bessel, cosineIntegral, dawson, erf, expIntegralEi,
    117         fresnelCosineIntegral,fresnelSineIntegral,gamma,hypCosineIntegral,hypSineIntegral,norm, psi, sineIntegral});
     121      var specialFunctions = new GroupSymbol(SpecialFunctionsName, new List<ISymbol> { abs, airyA, airyB, bessel, cosineIntegral, dawson, erf, expIntegralEi,
     122        fresnelCosineIntegral,fresnelSineIntegral,gamma,hypCosineIntegral,hypSineIntegral,norm, psi, sineIntegral, analyticalQuotient});
    118123      var terminalSymbols = new GroupSymbol(TerminalsName, new List<ISymbol> { constant, variableSymbol, binFactorVariable, factorVariable });
    119124      var realValuedSymbols = new GroupSymbol(RealValuedSymbolsName, new List<ISymbol>() { arithmeticSymbols, trigonometricSymbols, exponentialAndLogarithmicSymbols, specialFunctions, terminalSymbols });
    120125
    121       var powerSymbols = new GroupSymbol(PowerFunctionsName, new List<ISymbol> { square, pow, sqrt, root });
     126      var powerSymbols = new GroupSymbol(PowerFunctionsName, new List<ISymbol> { square, pow, sqrt, root, cube, cubeRoot });
    122127
    123128      var conditionSymbols = new GroupSymbol(ConditionsName, new List<ISymbol> { @if, variableCondition });
     
    140145      SetSubtreeCount(root, 2, 2);
    141146      SetSubtreeCount(square, 1, 1);
     147      SetSubtreeCount(cube, 1, 1);
    142148      SetSubtreeCount(sqrt, 1, 1);
     149      SetSubtreeCount(cubeRoot, 1, 1);
    143150      SetSubtreeCount(exponentialAndLogarithmicSymbols, 1, 1);
    144       SetSubtreeCount(specialFunctions, 1, 1);
     151      foreach (var sy in specialFunctions.Symbols.Except(new[] { analyticalQuotient })) {
     152        SetSubtreeCount(sy, 1, 1);
     153      }
     154      SetSubtreeCount(analyticalQuotient, 2, 2);
     155
    145156      SetSubtreeCount(terminalSymbols, 0, 0);
    146157
     
    231242    public void ConfigureAsDefaultRegressionGrammar() {
    232243      Symbols.First(s => s is Average).Enabled = false;
     244      Symbols.First(s => s is Absolute).Enabled = false;
     245      Symbols.First(s => s is HyperbolicTangent).Enabled = false;
    233246      Symbols.First(s => s.Name == TrigonometricFunctionsName).Enabled = false;
    234247      Symbols.First(s => s.Name == PowerFunctionsName).Enabled = false;
     
    242255      Symbols.First(s => s is VariableCondition).Enabled = false;
    243256      Symbols.First(s => s is Xor).Enabled = false;
     257      Symbols.First(s => s is Absolute).Enabled = false;
     258      Symbols.First(s => s is HyperbolicTangent).Enabled = false;
    244259      Symbols.First(s => s.Name == TrigonometricFunctionsName).Enabled = false;
    245260      Symbols.First(s => s.Name == ExponentialFunctionsName).Enabled = false;
     
    251266    public void ConfigureAsDefaultTimeSeriesPrognosisGrammar() {
    252267      Symbols.First(s => s is Average).Enabled = false;
     268      Symbols.First(s => s is Absolute).Enabled = false;
     269      Symbols.First(s => s is HyperbolicTangent).Enabled = false;
    253270      Symbols.First(s => s.Name == TrigonometricFunctionsName).Enabled = false;
    254271      Symbols.First(s => s.Name == PowerFunctionsName).Enabled = false;
Note: See TracChangeset for help on using the changeset viewer.