Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
12/09/21 14:28:17 (2 years ago)
Author:
chaider
Message:

#3140

  • Adding INumericSymbol and INumericTreeNode
  • Using the new interfaces inside of interpreters and formatters
  • Renaming Num to Number, RealConstant to Constant
  • More classes refactored
File:
1 moved

Legend:

Unmodified
Added
Removed
  • branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Symbols/NumberTreeNode.cs

    r18111 r18112  
    2727namespace HeuristicLab.Problems.DataAnalysis.Symbolic {
    2828  [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;
    3241    }
    3342
    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) { }
    4045
    41     [StorableConstructor]
    42     private NumTreeNode(StorableConstructorFlag _) : base(_) { }
     46    public override bool HasLocalParameters => true;
    4347
    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     }
    5748    public override void ResetLocalParameters(IRandom random) {
    5849      base.ResetLocalParameters(random);
     
    6556      // 50% additive & 50% multiplicative
    6657      if (random.NextDouble() < 0.5) {
    67         double x = NormalDistributedRandom.NextDouble(random, Symbol.ManipulatorMu, Symbol.ManipulatorSigma);
     58        var x = NormalDistributedRandom.NextDouble(random, Symbol.ManipulatorMu, Symbol.ManipulatorSigma);
    6859        Value = Value + x * shakingFactor;
    6960      } else {
    70         double x = NormalDistributedRandom.NextDouble(random, 1.0, Symbol.MultiplicativeManipulatorSigma);
     61        var x = NormalDistributedRandom.NextDouble(random, 1.0, Symbol.MultiplicativeManipulatorSigma);
    7162        Value = Value * x;
    7263      }
     
    7465
    7566    public override IDeepCloneable Clone(Cloner cloner) {
    76       return new NumTreeNode(this, cloner);
     67      return new NumberTreeNode(this, cloner);
    7768    }
    7869
    7970    public override string ToString() {
    80       return $"<{constantValue:E4}>";
    81       // return constantValue.ToString("E4");
     71      return $"{Value:E4}";
    8272    }
    8373  }
Note: See TracChangeset for help on using the changeset viewer.