Changeset 4678 for branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/SymbolicRegressionSolution.cs
- Timestamp:
- 10/29/10 19:26:56 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/SymbolicRegressionSolution.cs
r4468 r4678 24 24 using System.Drawing; 25 25 using System.Linq; 26 using HeuristicLab.Common; 26 27 using HeuristicLab.Core; 27 28 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; … … 35 36 [StorableClass] 36 37 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 43 38 public override Image ItemImage { 44 39 get { return HeuristicLab.Common.Resources.VS2008ImageLibrary.Function; } … … 48 43 get { return (SymbolicRegressionModel)base.Model; } 49 44 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();63 45 } 64 46 … … 79 61 } 80 62 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 81 91 public virtual IEnumerable<double> GetEstimatedValues(IEnumerable<int> rows) { 82 92 if (estimatedValues == null) RecalculateEstimatedValues();
Note: See TracChangeset
for help on using the changeset viewer.