Changeset 16360 for trunk/HeuristicLab.Problems.DataAnalysis.Symbolic
- Timestamp:
- 12/11/18 10:16:56 (6 years ago)
- Location:
- trunk/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4
- Files:
-
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Converters/TreeSimplifier.cs
r16356 r16360 43 43 private static readonly Square sqrSymbol = new Square(); 44 44 private static readonly SquareRoot sqrtSymbol = new SquareRoot(); 45 private static readonly Analytic alQuotient aqSymbol = new AnalyticalQuotient();45 private static readonly AnalyticQuotient aqSymbol = new AnalyticQuotient(); 46 46 private static readonly Cube cubeSymbol = new Cube(); 47 47 private static readonly CubeRoot cubeRootSymbol = new CubeRoot(); … … 186 186 187 187 private static bool IsAnalyticalQuotient(ISymbolicExpressionTreeNode node) { 188 return node.Symbol is Analytic alQuotient;188 return node.Symbol is AnalyticQuotient; 189 189 } 190 190 -
trunk/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Converters/TreeToAutoDiffTermConverter.cs
r16356 r16360 222 222 return abs(x1); 223 223 } 224 if (node.Symbol is Analytic alQuotient) {224 if (node.Symbol is AnalyticQuotient) { 225 225 var x1 = ConvertToAutoDiff(node.GetSubtree(0)); 226 226 var x2 = ConvertToAutoDiff(node.GetSubtree(1)); … … 325 325 !(n.Symbol is StartSymbol) && 326 326 !(n.Symbol is Absolute) && 327 !(n.Symbol is Analytic alQuotient) &&327 !(n.Symbol is AnalyticQuotient) && 328 328 !(n.Symbol is Cube) && 329 329 !(n.Symbol is CubeRoot) -
trunk/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Grammars/FullFunctionalExpressionGrammar.cs
r16356 r16360 48 48 var mul = new Multiplication(); 49 49 var div = new Division(); 50 var aq = new Analytic alQuotient();50 var aq = new AnalyticQuotient(); 51 51 var mean = new Average(); 52 52 var sin = new Sine(); -
trunk/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Grammars/TypeCoherentExpressionGrammar.cs
r16356 r16360 89 89 var psi = new Psi(); 90 90 var sineIntegral = new SineIntegral(); 91 var analyticalQuotient = new Analytic alQuotient();91 var analyticalQuotient = new AnalyticQuotient(); 92 92 93 93 var @if = new IfThenElse(); -
trunk/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Importer/InfixExpressionParser.cs
r16359 r16360 126 126 { "DAWSON", new Dawson()}, 127 127 { "EXPINT", new ExponentialIntegralEi()}, 128 { "AQ", new Analytic alQuotient() },128 { "AQ", new AnalyticQuotient() }, 129 129 { "MEAN", new Average()}, 130 130 { "IF", new IfThenElse()}, -
trunk/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Importer/SymbolicExpressionImporter.cs
r16356 r16360 68 68 {"DAWSON", new Dawson()}, 69 69 {"EXPINT", new ExponentialIntegralEi()}, 70 {"AQ", new Analytic alQuotient() },70 {"AQ", new AnalyticQuotient() }, 71 71 {"MEAN", new Average()}, 72 72 {"IF", new IfThenElse()}, -
trunk/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interpreter/OpCodes.cs
r16356 r16360 86 86 public const byte BinaryFactorVariable = 47; 87 87 public const byte Absolute = 48; 88 public const byte Analytic alQuotient = 49;88 public const byte AnalyticQuotient = 49; 89 89 public const byte Cube = 50; 90 90 public const byte CubeRoot = 51; … … 141 141 { typeof(BinaryFactorVariable), OpCodes.BinaryFactorVariable }, 142 142 { typeof(Absolute), OpCodes.Absolute }, 143 { typeof(Analytic alQuotient), OpCodes.AnalyticalQuotient },143 { typeof(AnalyticQuotient), OpCodes.AnalyticQuotient }, 144 144 { typeof(Cube), OpCodes.Cube }, 145 145 { typeof(CubeRoot), OpCodes.CubeRoot } -
trunk/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interpreter/SymbolicDataAnalysisExpressionCompiledTreeInterpreter.cs
r16356 r16360 507 507 result); 508 508 } 509 case OpCodes.Analytic alQuotient: {509 case OpCodes.AnalyticQuotient: { 510 510 var x1 = MakeExpr(node.GetSubtree(0), variableIndices, row, columns); 511 511 var x2 = MakeExpr(node.GetSubtree(1), variableIndices, row, columns); -
trunk/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interpreter/SymbolicDataAnalysisExpressionTreeBatchInterpreter.cs
r16356 r16360 166 166 } 167 167 168 case OpCodes.Analytic alQuotient: {168 case OpCodes.AnalyticQuotient: { 169 169 Load(instr.buf, code[c].buf); 170 170 AnalyticQuotient(instr.buf, code[c + 1].buf); -
trunk/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interpreter/SymbolicDataAnalysisExpressionTreeILEmittingInterpreter.cs
r16356 r16360 409 409 return; 410 410 } 411 case OpCodes.Analytic alQuotient: {411 case OpCodes.AnalyticQuotient: { 412 412 CompileInstructions(il, state, ds); // x1 413 413 CompileInstructions(il, state, ds); // x2 -
trunk/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interpreter/SymbolicDataAnalysisExpressionTreeInterpreter.cs
r16356 r16360 351 351 } 352 352 353 case OpCodes.Analytic alQuotient: {353 case OpCodes.AnalyticQuotient: { 354 354 var x1 = Evaluate(dataset, ref row, state); 355 355 var x2 = Evaluate(dataset, ref row, state); -
trunk/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interpreter/SymbolicDataAnalysisExpressionTreeLinearInterpreter.cs
r16356 r16360 215 215 if (instr.nArguments == 1) p = 1.0 / p; 216 216 instr.value = p; 217 } else if (instr.opCode == OpCodes.Analytic alQuotient) {217 } else if (instr.opCode == OpCodes.AnalyticQuotient) { 218 218 var x1 = code[instr.childIndex].value; 219 219 var x2 = code[instr.childIndex + 1].value; -
trunk/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Symbols/AnalyticalQuotient.cs
r16356 r16360 26 26 namespace HeuristicLab.Problems.DataAnalysis.Symbolic { 27 27 [StorableClass] 28 [Item("Analytical Quotient", "TODO")] 29 public sealed class AnalyticalQuotient : Symbol { 28 [Item("Analytic Quotient", "The analytic quotient function aq(a,b) = a / sqrt(b²+1) can be used as an " + 29 "alternative to protected division. See H. Drieberg and P. Rocket, The Use of an Analytic Quotient Operator" + 30 " in Genetic Programming. IEEE Transactions on Evolutionary Computation, Vol. 17, No. 1, February 2013, pp 146 -- 152")] 31 public sealed class AnalyticQuotient : Symbol { 30 32 private const int minimumArity = 2; 31 33 private const int maximumArity = 2; … … 39 41 40 42 [StorableConstructor] 41 private Analytic alQuotient(bool deserializing) : base(deserializing) { }42 private Analytic alQuotient(AnalyticalQuotient original, Cloner cloner) : base(original, cloner) { }43 private AnalyticQuotient(bool deserializing) : base(deserializing) { } 44 private AnalyticQuotient(AnalyticQuotient original, Cloner cloner) : base(original, cloner) { } 43 45 public override IDeepCloneable Clone(Cloner cloner) { 44 return new Analytic alQuotient(this, cloner);46 return new AnalyticQuotient(this, cloner); 45 47 } 46 public AnalyticalQuotient() : base("AnalyticalQuotient", "TODO") { } 48 public AnalyticQuotient() : base("AnalyticalQuotient", "The analytic quotient function aq(a,b) = a / sqrt(b²+1) can be used as an " + 49 "alternative to protected division. See H. Drieberg and P. Rocket, The Use of an Analytic Quotient Operator" + 50 " in Genetic Programming. IEEE Transactions on Evolutionary Computation, Vol. 17, No. 1, February 2013, pp 146 -- 152") { } 47 51 } 48 52 }
Note: See TracChangeset
for help on using the changeset viewer.