Changeset 18112 for branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Symbols/NumberTreeNode.cs
- Timestamp:
- 12/09/21 14:28:17 (2 years ago)
- File:
-
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Symbols/NumberTreeNode.cs
r18111 r18112 27 27 namespace HeuristicLab.Problems.DataAnalysis.Symbolic { 28 28 [StorableType("247DBD04-18F2-4184-B6F5-6E283BF06FD0")] 29 public sealed class NumTreeNode : SymbolicExpressionTreeTerminalNode { 30 public new Num Symbol { 31 get { return (Num)base.Symbol; } 29 public sealed class NumberTreeNode : SymbolicExpressionTreeTerminalNode, INumericTreeNode { 30 public new Number Symbol => (Number)base.Symbol; 31 32 [Storable] 33 public double Value { get; set; } 34 35 [StorableConstructor] 36 private NumberTreeNode(StorableConstructorFlag _) : base(_) { } 37 38 private NumberTreeNode(NumberTreeNode original, Cloner cloner) 39 : base(original, cloner) { 40 Value = original.Value; 32 41 } 33 42 34 private double constantValue; 35 [Storable] 36 public double Value { 37 get { return constantValue; } 38 set { constantValue = value; } 39 } 43 private NumberTreeNode() : base() { } 44 public NumberTreeNode(Number numberSymbol) : base(numberSymbol) { } 40 45 41 [StorableConstructor] 42 private NumTreeNode(StorableConstructorFlag _) : base(_) { } 46 public override bool HasLocalParameters => true; 43 47 44 private NumTreeNode(NumTreeNode original, Cloner cloner)45 : base(original, cloner) {46 constantValue = original.constantValue;47 }48 49 private NumTreeNode() : base() { }50 public NumTreeNode(Num numSymbol) : base(numSymbol) { }51 52 public override bool HasLocalParameters {53 get {54 return true;55 }56 }57 48 public override void ResetLocalParameters(IRandom random) { 58 49 base.ResetLocalParameters(random); … … 65 56 // 50% additive & 50% multiplicative 66 57 if (random.NextDouble() < 0.5) { 67 doublex = NormalDistributedRandom.NextDouble(random, Symbol.ManipulatorMu, Symbol.ManipulatorSigma);58 var x = NormalDistributedRandom.NextDouble(random, Symbol.ManipulatorMu, Symbol.ManipulatorSigma); 68 59 Value = Value + x * shakingFactor; 69 60 } else { 70 doublex = NormalDistributedRandom.NextDouble(random, 1.0, Symbol.MultiplicativeManipulatorSigma);61 var x = NormalDistributedRandom.NextDouble(random, 1.0, Symbol.MultiplicativeManipulatorSigma); 71 62 Value = Value * x; 72 63 } … … 74 65 75 66 public override IDeepCloneable Clone(Cloner cloner) { 76 return new Num TreeNode(this, cloner);67 return new NumberTreeNode(this, cloner); 77 68 } 78 69 79 70 public override string ToString() { 80 return $"<{constantValue:E4}>"; 81 // return constantValue.ToString("E4"); 71 return $"{Value:E4}"; 82 72 } 83 73 }
Note: See TracChangeset
for help on using the changeset viewer.