Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
04/21/10 15:21:34 (14 years ago)
Author:
gkronber
Message:

Refactored symbolic expression tree encoding and problem classes for symbolic regression. #937 , #938

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/SymbolicRegressionSolution.cs

    r3442 r3462  
    3636  [StorableClass]
    3737  public sealed class SymbolicRegressionSolution : DataAnalysisSolution {
    38     public new SymbolicRegressionModel Model {
    39       get { return (SymbolicRegressionModel)base.Model; }
    40       set { base.Model = value; }
     38    private SymbolicRegressionModel model;
     39    public SymbolicRegressionModel Model {
     40      get { return model; }
     41      set {
     42        if (model != value) {
     43          if (value == null) throw new ArgumentNullException();
     44          model = value;
     45          OnModelChanged(EventArgs.Empty);
     46        }
     47      }
    4148    }
    4249
    4350    public SymbolicRegressionSolution() : base() { }
    4451    public SymbolicRegressionSolution(DataAnalysisProblemData problemData, SymbolicRegressionModel model)
    45       : base(problemData, model) {
     52      : base(problemData) {
     53      this.model = model;
     54      RecalculateEstimatedValues();
     55    }
     56
     57    public event EventHandler ModelChanged;
     58    private void OnModelChanged(EventArgs e) {
     59      RecalculateEstimatedValues();
     60      var listeners = ModelChanged;
     61      if (listeners != null)
     62        listeners(this, e);
     63    }
     64
     65    protected override void OnProblemDataChanged(EventArgs e) {
     66      RecalculateEstimatedValues();
     67    }
     68
     69    private void RecalculateEstimatedValues() {
     70      estimatedValues = model.GetEstimatedValues(ProblemData.Dataset, 0, ProblemData.Dataset.Rows).ToList();
     71      OnEstimatedValuesChanged(EventArgs.Empty);
     72    }
     73
     74    private List<double> estimatedValues;
     75    public override IEnumerable<double> EstimatedValues {
     76      get {
     77        return estimatedValues.AsEnumerable();
     78      }
     79    }
     80
     81    public override IEnumerable<double> EstimatedTrainingValues {
     82      get {
     83        int start = ProblemData.TrainingSamplesStart.Value;
     84        int n = ProblemData.TrainingSamplesEnd.Value - start;
     85        return estimatedValues.Skip(start).Take(n).ToList();
     86      }
     87    }
     88
     89    public override IEnumerable<double> EstimatedTestValues {
     90      get {
     91        int start = ProblemData.TestSamplesStart.Value;
     92        int n = ProblemData.TestSamplesEnd.Value - start;
     93        return estimatedValues.Skip(start).Take(n).ToList();
     94      }
    4695    }
    4796  }
Note: See TracChangeset for help on using the changeset viewer.