Changeset 17434 for branches/1772_HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Grammars/TypeCoherentExpressionGrammar.cs
- Timestamp:
- 02/11/20 13:36:02 (4 years ago)
- Location:
- branches/1772_HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/1772_HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic
- Property svn:mergeinfo changed
-
branches/1772_HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Grammars/TypeCoherentExpressionGrammar.cs
r16130 r17434 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-2018Heuristic and Evolutionary Algorithms Laboratory (HEAL)3 * Copyright (C) Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 4 * 5 5 * This file is part of HeuristicLab. … … 22 22 using System.Collections.Generic; 23 23 using System.Linq; 24 using HEAL.Attic; 24 25 using HeuristicLab.Common; 25 26 using HeuristicLab.Core; 26 27 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding; 27 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;28 28 29 29 namespace HeuristicLab.Problems.DataAnalysis.Symbolic { 30 [Storable Class]30 [StorableType("36A22322-0627-4E25-A468-F2A788AF6D46")] 31 31 [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.")] 32 public class TypeCoherentExpressionGrammar : SymbolicExpressionGrammar, ISymbolicDataAnalysisGrammar {32 public class TypeCoherentExpressionGrammar : DataAnalysisGrammar, ISymbolicDataAnalysisGrammar { 33 33 private const string ArithmeticFunctionsName = "Arithmetic Functions"; 34 34 private const string TrigonometricFunctionsName = "Trigonometric Functions"; … … 45 45 46 46 [StorableConstructor] 47 protected TypeCoherentExpressionGrammar( bool deserializing) : base(deserializing) { }47 protected TypeCoherentExpressionGrammar(StorableConstructorFlag _) : base(_) { } 48 48 protected TypeCoherentExpressionGrammar(TypeCoherentExpressionGrammar original, Cloner cloner) : base(original, cloner) { } 49 49 public TypeCoherentExpressionGrammar() … … 70 70 var root = new Root(); 71 71 var sqrt = new SquareRoot(); 72 var cube = new Cube(); 73 var cubeRoot = new CubeRoot(); 72 74 var exp = new Exponential(); 75 var abs = new Absolute(); 73 76 74 77 var airyA = new AiryA(); … … 83 86 var gamma = new Gamma(); 84 87 var hypCosineIntegral = new HyperbolicCosineIntegral(); 88 var tanh = new HyperbolicTangent(); 85 89 var hypSineIntegral = new HyperbolicSineIntegral(); 86 90 var norm = new Norm(); 87 91 var psi = new Psi(); 88 92 var sineIntegral = new SineIntegral(); 93 var analyticalQuotient = new AnalyticQuotient(); 89 94 90 95 var @if = new IfThenElse(); … … 113 118 #region group symbol declaration 114 119 var arithmeticSymbols = new GroupSymbol(ArithmeticFunctionsName, new List<ISymbol>() { add, sub, mul, div, mean }); 115 var trigonometricSymbols = new GroupSymbol(TrigonometricFunctionsName, new List<ISymbol>() { sin, cos, tan });120 var trigonometricSymbols = new GroupSymbol(TrigonometricFunctionsName, new List<ISymbol>() { sin, cos, tan, tanh }); 116 121 var exponentialAndLogarithmicSymbols = new GroupSymbol(ExponentialFunctionsName, new List<ISymbol> { exp, log }); 117 var specialFunctions = new GroupSymbol(SpecialFunctionsName, new List<ISymbol> { a iryA, airyB, bessel, cosineIntegral, dawson, erf, expIntegralEi,118 fresnelCosineIntegral,fresnelSineIntegral,gamma,hypCosineIntegral,hypSineIntegral,norm, psi, sineIntegral });122 var specialFunctions = new GroupSymbol(SpecialFunctionsName, new List<ISymbol> { abs, airyA, airyB, bessel, cosineIntegral, dawson, erf, expIntegralEi, 123 fresnelCosineIntegral,fresnelSineIntegral,gamma,hypCosineIntegral,hypSineIntegral,norm, psi, sineIntegral, analyticalQuotient}); 119 124 var terminalSymbols = new GroupSymbol(TerminalsName, new List<ISymbol> { constant, variableSymbol, binFactorVariable, factorVariable }); 120 125 var realValuedSymbols = new GroupSymbol(RealValuedSymbolsName, new List<ISymbol>() { arithmeticSymbols, trigonometricSymbols, exponentialAndLogarithmicSymbols, specialFunctions, terminalSymbols }); 121 126 122 var powerSymbols = new GroupSymbol(PowerFunctionsName, new List<ISymbol> { square, pow, sqrt, root });127 var powerSymbols = new GroupSymbol(PowerFunctionsName, new List<ISymbol> { square, pow, sqrt, root, cube, cubeRoot }); 123 128 124 129 var conditionSymbols = new GroupSymbol(ConditionsName, new List<ISymbol> { @if, variableCondition }); … … 141 146 SetSubtreeCount(root, 2, 2); 142 147 SetSubtreeCount(square, 1, 1); 148 SetSubtreeCount(cube, 1, 1); 143 149 SetSubtreeCount(sqrt, 1, 1); 150 SetSubtreeCount(cubeRoot, 1, 1); 144 151 SetSubtreeCount(exponentialAndLogarithmicSymbols, 1, 1); 145 SetSubtreeCount(specialFunctions, 1, 1); 152 foreach (var sy in specialFunctions.Symbols.Except(new[] { analyticalQuotient })) { 153 SetSubtreeCount(sy, 1, 1); 154 } 155 SetSubtreeCount(analyticalQuotient, 2, 2); 156 146 157 SetSubtreeCount(terminalSymbols, 0, 0); 147 158 … … 232 243 public void ConfigureAsDefaultRegressionGrammar() { 233 244 Symbols.First(s => s is Average).Enabled = false; 245 Symbols.First(s => s is Absolute).Enabled = false; 246 Symbols.First(s => s is HyperbolicTangent).Enabled = false; 234 247 Symbols.First(s => s.Name == TrigonometricFunctionsName).Enabled = false; 235 248 Symbols.First(s => s.Name == PowerFunctionsName).Enabled = false; … … 243 256 Symbols.First(s => s is VariableCondition).Enabled = false; 244 257 Symbols.First(s => s is Xor).Enabled = false; 258 Symbols.First(s => s is Absolute).Enabled = false; 259 Symbols.First(s => s is HyperbolicTangent).Enabled = false; 245 260 Symbols.First(s => s.Name == TrigonometricFunctionsName).Enabled = false; 246 261 Symbols.First(s => s.Name == ExponentialFunctionsName).Enabled = false; … … 252 267 public void ConfigureAsDefaultTimeSeriesPrognosisGrammar() { 253 268 Symbols.First(s => s is Average).Enabled = false; 269 Symbols.First(s => s is Absolute).Enabled = false; 270 Symbols.First(s => s is HyperbolicTangent).Enabled = false; 254 271 Symbols.First(s => s.Name == TrigonometricFunctionsName).Enabled = false; 255 272 Symbols.First(s => s.Name == PowerFunctionsName).Enabled = false;
Note: See TracChangeset
for help on using the changeset viewer.