Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
10/29/10 19:26:56 (14 years ago)
Author:
gkronber
Message:

Refactored cloning in DataAnalysis plugins. #922

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/SymbolicRegressionSolution.cs

    r4468 r4678  
    2424using System.Drawing;
    2525using System.Linq;
     26using HeuristicLab.Common;
    2627using HeuristicLab.Core;
    2728using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
     
    3536  [StorableClass]
    3637  public class SymbolicRegressionSolution : DataAnalysisSolution {
    37     public SymbolicRegressionSolution() : base() { }
    38     public SymbolicRegressionSolution(DataAnalysisProblemData problemData, SymbolicRegressionModel model, double lowerEstimationLimit, double upperEstimationLimit)
    39       : base(problemData, lowerEstimationLimit, upperEstimationLimit) {
    40       this.Model = model;
    41     }
    42 
    4338    public override Image ItemImage {
    4439      get { return HeuristicLab.Common.Resources.VS2008ImageLibrary.Function; }
     
    4843      get { return (SymbolicRegressionModel)base.Model; }
    4944      set { base.Model = value; }
    50     }
    51 
    52     protected override void RecalculateEstimatedValues() {
    53       int minLag = 0;
    54       var laggedTreeNodes = Model.SymbolicExpressionTree.IterateNodesPrefix().OfType<LaggedVariableTreeNode>();
    55       if (laggedTreeNodes.Any())
    56         minLag = laggedTreeNodes.Min(node => node.Lag);
    57       IEnumerable<double> calculatedValues =
    58           from x in Model.GetEstimatedValues(ProblemData, 0 - minLag, ProblemData.Dataset.Rows)
    59           let boundedX = Math.Min(UpperEstimationLimit, Math.Max(LowerEstimationLimit, x))
    60           select double.IsNaN(boundedX) ? UpperEstimationLimit : boundedX;
    61       estimatedValues = Enumerable.Repeat(double.NaN, Math.Abs(minLag)).Concat(calculatedValues).ToList();
    62       OnEstimatedValuesChanged();
    6345    }
    6446
     
    7961    }
    8062
     63    [StorableConstructor]
     64    protected SymbolicRegressionSolution(bool deserializing) : base(deserializing) { }
     65    protected SymbolicRegressionSolution(SymbolicRegressionSolution original, Cloner cloner)
     66      : base(original, cloner) {
     67    }
     68    public SymbolicRegressionSolution() : base() { }
     69    public SymbolicRegressionSolution(DataAnalysisProblemData problemData, SymbolicRegressionModel model, double lowerEstimationLimit, double upperEstimationLimit)
     70      : base(problemData, lowerEstimationLimit, upperEstimationLimit) {
     71      this.Model = model;
     72    }
     73
     74    public override IDeepCloneable Clone(Cloner cloner) {
     75      return new SymbolicRegressionSolution(this, cloner);
     76    }
     77
     78    protected override void RecalculateEstimatedValues() {
     79      int minLag = 0;
     80      var laggedTreeNodes = Model.SymbolicExpressionTree.IterateNodesPrefix().OfType<LaggedVariableTreeNode>();
     81      if (laggedTreeNodes.Any())
     82        minLag = laggedTreeNodes.Min(node => node.Lag);
     83      IEnumerable<double> calculatedValues =
     84          from x in Model.GetEstimatedValues(ProblemData, 0 - minLag, ProblemData.Dataset.Rows)
     85          let boundedX = Math.Min(UpperEstimationLimit, Math.Max(LowerEstimationLimit, x))
     86          select double.IsNaN(boundedX) ? UpperEstimationLimit : boundedX;
     87      estimatedValues = Enumerable.Repeat(double.NaN, Math.Abs(minLag)).Concat(calculatedValues).ToList();
     88      OnEstimatedValuesChanged();
     89    }
     90
    8191    public virtual IEnumerable<double> GetEstimatedValues(IEnumerable<int> rows) {
    8292      if (estimatedValues == null) RecalculateEstimatedValues();
Note: See TracChangeset for help on using the changeset viewer.