Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
05/06/10 19:02:45 (14 years ago)
Author:
gkronber
Message:

Adapted analyzers to use ScopeTreeLookupParameter and wire the depth setting correctly for

  • SymbolicExpressionTreeEncoding
  • ArtificialAntProblem
  • SymbolicRegression

#999

File:
1 moved

Legend:

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

    r3666 r3681  
    3737using HeuristicLab.Problems.DataAnalysis.Evaluators;
    3838using HeuristicLab.Optimization.Operators;
     39using System;
    3940
    4041namespace HeuristicLab.Problems.DataAnalysis.Regression.Symbolic.Analyzers {
     
    4243  /// "An operator for analyzing the quality of symbolic regression solutions symbolic expression tree encoding."
    4344  /// </summary>
    44   [Item("PopulationSymbolicRegressionModelQualityAnalyzer", "An operator for analyzing the quality of symbolic regression solutions symbolic expression tree encoding.")]
     45  [Item("SymbolicRegressionModelQualityAnalyzer", "An operator for analyzing the quality of symbolic regression solutions symbolic expression tree encoding.")]
    4546  [StorableClass]
    46   public sealed class PopulationSymbolicRegressionModelQualityAnalyzer : AlgorithmOperator, ISymbolicRegressionSolutionPopulationAnalyzer {
     47  public sealed class SymbolicRegressionModelQualityAnalyzer : AlgorithmOperator, ISymbolicRegressionAnalyzer {
    4748    private const string SymbolicExpressionTreeInterpreterParameterName = "SymbolicExpressionTreeInterpreter";
    4849    private const string SymbolicExpressionTreeParameterName = "SymbolicExpressionTree";
     
    5455    private const string MaxTrainingMeanSquaredErrorQualityParameterName = "MaxTrainingMeanSquaredError";
    5556    private const string AverageTrainingMeanSquaredErrorQualityParameterName = "AverageTrainingMeanSquaredError";
     57    private const string BestTrainingMeanSquaredErrorQualityParameterName = "BestTrainingMeanSquaredError";
    5658
    5759    private const string TrainingAverageRelativeErrorQualityParameterName = "TrainingAverageRelativeError";
     
    5961    private const string MaxTrainingAverageRelativeErrorQualityParameterName = "MaxTrainingAverageRelativeError";
    6062    private const string AverageTrainingAverageRelativeErrorQualityParameterName = "AverageTrainingAverageRelativeError";
     63    private const string BestTrainingAverageRelativeErrorQualityParameterName = "BestTrainingAverageRelativeError";
    6164
    6265    private const string TrainingRSquaredQualityParameterName = "TrainingRSquared";
     
    6467    private const string MaxTrainingRSquaredQualityParameterName = "MaxTrainingRSquared";
    6568    private const string AverageTrainingRSquaredQualityParameterName = "AverageTrainingRSquared";
     69    private const string BestTrainingRSquaredQualityParameterName = "BestTrainingRSquared";
    6670
    6771    private const string TestMeanSquaredErrorQualityParameterName = "TestMeanSquaredError";
     
    6973    private const string MaxTestMeanSquaredErrorQualityParameterName = "MaxTestMeanSquaredError";
    7074    private const string AverageTestMeanSquaredErrorQualityParameterName = "AverageTestMeanSquaredError";
     75    private const string BestTestMeanSquaredErrorQualityParameterName = "BestTestMeanSquaredError";
    7176
    7277    private const string TestAverageRelativeErrorQualityParameterName = "TestAverageRelativeError";
     
    7479    private const string MaxTestAverageRelativeErrorQualityParameterName = "MaxTestAverageRelativeError";
    7580    private const string AverageTestAverageRelativeErrorQualityParameterName = "AverageTestAverageRelativeError";
     81    private const string BestTestAverageRelativeErrorQualityParameterName = "BestTestAverageRelativeError";
    7682
    7783    private const string TestRSquaredQualityParameterName = "TestRSquared";
     
    7985    private const string MaxTestRSquaredQualityParameterName = "MaxTestRSquared";
    8086    private const string AverageTestRSquaredQualityParameterName = "AverageTestRSquared";
     87    private const string BestTestRSquaredQualityParameterName = "BestTestRSquared";
    8188
    8289    private const string RSquaredValuesParameterName = "R-squared Values";
     
    9299
    93100    #region parameter properties
    94     public ILookupParameter<ISymbolicExpressionTreeInterpreter> SymbolicExpressionTreeInterpreterParameter {
    95       get { return (ILookupParameter<ISymbolicExpressionTreeInterpreter>)Parameters[SymbolicExpressionTreeInterpreterParameterName]; }
    96     }
    97     public ILookupParameter<ItemArray<SymbolicExpressionTree>> SymbolicExpressionTreeParameter {
    98       get { return (ILookupParameter<ItemArray<SymbolicExpressionTree>>)Parameters[SymbolicExpressionTreeParameterName]; }
    99     }
    100     public ILookupParameter<DataAnalysisProblemData> ProblemDataParameter {
    101       get { return (ILookupParameter<DataAnalysisProblemData>)Parameters[ProblemDataParameterName]; }
     101    public ScopeTreeLookupParameter<SymbolicExpressionTree> SymbolicExpressionTreeParameter {
     102      get { return (ScopeTreeLookupParameter<SymbolicExpressionTree>)Parameters[SymbolicExpressionTreeParameterName]; }
     103    }
     104    public IValueLookupParameter<ISymbolicExpressionTreeInterpreter> SymbolicExpressionTreeInterpreterParameter {
     105      get { return (IValueLookupParameter<ISymbolicExpressionTreeInterpreter>)Parameters[SymbolicExpressionTreeInterpreterParameterName]; }
     106    }
     107    public IValueLookupParameter<DataAnalysisProblemData> ProblemDataParameter {
     108      get { return (IValueLookupParameter<DataAnalysisProblemData>)Parameters[ProblemDataParameterName]; }
     109    }
     110    public IValueLookupParameter<IntValue> TrainingSamplesStartParameter {
     111      get { return (IValueLookupParameter<IntValue>)Parameters[TrainingSamplesStartParameterName]; }
     112    }
     113    public IValueLookupParameter<IntValue> TrainingSamplesEndParameter {
     114      get { return (IValueLookupParameter<IntValue>)Parameters[TrainingSamplesEndParameterName]; }
     115    }
     116    public IValueLookupParameter<IntValue> TestSamplesStartParameter {
     117      get { return (IValueLookupParameter<IntValue>)Parameters[TestSamplesStartParameterName]; }
     118    }
     119    public IValueLookupParameter<IntValue> TestSamplesEndParameter {
     120      get { return (IValueLookupParameter<IntValue>)Parameters[TestSamplesEndParameterName]; }
     121    }
     122    public IValueLookupParameter<DoubleValue> UpperEstimationLimitParameter {
     123      get { return (IValueLookupParameter<DoubleValue>)Parameters[UpperEstimationLimitParameterName]; }
     124    }
     125    public IValueLookupParameter<DoubleValue> LowerEstimationLimitParameter {
     126      get { return (IValueLookupParameter<DoubleValue>)Parameters[LowerEstimationLimitParameterName]; }
    102127    }
    103128    public ILookupParameter<ResultCollection> ResultsParameter {
    104129      get { return (ILookupParameter<ResultCollection>)Parameters[ResultsParameterName]; }
    105130    }
    106     public IValueLookupParameter<IntValue> TrainingSamplesStartParameter {
    107       get { return (IValueLookupParameter<IntValue>)Parameters[TrainingSamplesStartParameterName]; }
    108     }
    109     public IValueLookupParameter<IntValue> TrainingSamplesEndParameter {
    110       get { return (IValueLookupParameter<IntValue>)Parameters[TrainingSamplesEndParameterName]; }
    111     }
    112     public IValueLookupParameter<IntValue> TestSamplesStartParameter {
    113       get { return (IValueLookupParameter<IntValue>)Parameters[TestSamplesStartParameterName]; }
    114     }
    115     public IValueLookupParameter<IntValue> TestSamplesEndParameter {
    116       get { return (IValueLookupParameter<IntValue>)Parameters[TestSamplesEndParameterName]; }
    117     }
    118     public IValueLookupParameter<DoubleValue> UpperEstimationLimitParameter {
    119       get { return (IValueLookupParameter<DoubleValue>)Parameters[UpperEstimationLimitParameterName]; }
    120     }
    121     public IValueLookupParameter<DoubleValue> LowerEstimationLimitParameter {
    122       get { return (IValueLookupParameter<DoubleValue>)Parameters[LowerEstimationLimitParameterName]; }
    123     }
    124131    #endregion
    125132
    126     public PopulationSymbolicRegressionModelQualityAnalyzer()
     133    [Storable]
     134    private MinAverageMaxValueAnalyzer minAvgMaxTrainingMseAnalyzer;
     135    [Storable]
     136    private MinAverageMaxValueAnalyzer minAvgMaxTestMseAnalyzer;
     137    [Storable]
     138    private MinAverageMaxValueAnalyzer minAvgMaxTrainingRSquaredAnalyzer;
     139    [Storable]
     140    private MinAverageMaxValueAnalyzer minAvgMaxTestRSquaredAnalyzer;
     141    [Storable]
     142    private MinAverageMaxValueAnalyzer minAvgMaxTrainingRelErrorAnalyzer;
     143    [Storable]
     144    private MinAverageMaxValueAnalyzer minAvgMaxTestRelErrorAnalyzer;
     145
     146    public SymbolicRegressionModelQualityAnalyzer()
    127147      : base() {
    128       Parameters.Add(new LookupParameter<ISymbolicExpressionTreeInterpreter>(SymbolicExpressionTreeInterpreterParameterName, "The interpreter that should be used to calculate the output values of the symbolic expression tree."));
    129148      Parameters.Add(new ScopeTreeLookupParameter<SymbolicExpressionTree>(SymbolicExpressionTreeParameterName, "The symbolic expression trees to analyze."));
    130       Parameters.Add(new LookupParameter<DataAnalysisProblemData>(ProblemDataParameterName, "The problem data containing the input varaibles for the symbolic regression problem."));
    131       Parameters.Add(new LookupParameter<ResultCollection>(ResultsParameterName, "The result collection where the best symbolic regression solution should be stored."));
     149      Parameters.Add(new ValueLookupParameter<ISymbolicExpressionTreeInterpreter>(SymbolicExpressionTreeInterpreterParameterName, "The interpreter that should be used to calculate the output values of the symbolic expression tree."));
     150      Parameters.Add(new ValueLookupParameter<DataAnalysisProblemData>(ProblemDataParameterName, "The problem data containing the input varaibles for the symbolic regression problem."));
    132151      Parameters.Add(new ValueLookupParameter<IntValue>(TrainingSamplesStartParameterName, "The first index of the training data set partition on which the model quality values should be calculated."));
    133152      Parameters.Add(new ValueLookupParameter<IntValue>(TrainingSamplesEndParameterName, "The last index of the training data set partition on which the model quality values should be calculated."));
     
    136155      Parameters.Add(new ValueLookupParameter<DoubleValue>(UpperEstimationLimitParameterName, "The upper limit that should be used as cut off value for the output values of symbolic expression trees."));
    137156      Parameters.Add(new ValueLookupParameter<DoubleValue>(LowerEstimationLimitParameterName, "The lower limit that should be used as cut off value for the output values of symbolic expression trees."));
    138       Parameters.Add(new LookupParameter<DataTable>(MeanSquaredErrorValuesParameterName, "The data table to collect mean squared error values."));
    139       Parameters.Add(new LookupParameter<DataTable>(RSquaredValuesParameterName, "The data table to collect R² correlation coefficient values."));
    140       Parameters.Add(new LookupParameter<DataTable>(RelativeErrorValuesParameterName, "The data table to collect relative error values."));
     157      Parameters.Add(new ValueLookupParameter<DataTable>(MeanSquaredErrorValuesParameterName, "The data table to collect mean squared error values."));
     158      Parameters.Add(new ValueLookupParameter<DataTable>(RSquaredValuesParameterName, "The data table to collect R² correlation coefficient values."));
     159      Parameters.Add(new ValueLookupParameter<DataTable>(RelativeErrorValuesParameterName, "The data table to collect relative error values."));
     160      Parameters.Add(new LookupParameter<ResultCollection>(ResultsParameterName, "The result collection where the best symbolic regression solution should be stored."));
    141161
    142162      #region operator initialization
     
    145165      SymbolicRegressionModelQualityCalculator trainingQualityCalculator = new SymbolicRegressionModelQualityCalculator();
    146166      SymbolicRegressionModelQualityCalculator testQualityCalculator = new SymbolicRegressionModelQualityCalculator();
    147       MinAverageMaxValueCalculator minAvgMaxTrainingMseCalculator = new MinAverageMaxValueCalculator();
    148       MinAverageMaxValueCalculator minAvgMaxTestMseCalculator = new MinAverageMaxValueCalculator();
    149       MinAverageMaxValueCalculator minAvgMaxTrainingR2Calculator = new MinAverageMaxValueCalculator();
    150       MinAverageMaxValueCalculator minAvgMaxTestR2Calculator = new MinAverageMaxValueCalculator();
    151       MinAverageMaxValueCalculator minAvgMaxTrainingRelErrorCalculator = new MinAverageMaxValueCalculator();
    152       MinAverageMaxValueCalculator minAvgMaxTestRelErrorCalculator = new MinAverageMaxValueCalculator();
    153       DataTableValuesCollector mseDataTableValuesCollector = new DataTableValuesCollector();
    154       DataTableValuesCollector r2DataTableValuesCollector = new DataTableValuesCollector();
    155       DataTableValuesCollector relErrorDataTableValuesCollector = new DataTableValuesCollector();
    156       ResultsCollector resultsCollector = new ResultsCollector();
     167      minAvgMaxTrainingMseAnalyzer = new MinAverageMaxValueAnalyzer();
     168      minAvgMaxTestMseAnalyzer = new MinAverageMaxValueAnalyzer();
     169
     170      minAvgMaxTrainingRSquaredAnalyzer = new MinAverageMaxValueAnalyzer();
     171      minAvgMaxTestRSquaredAnalyzer = new MinAverageMaxValueAnalyzer();
     172
     173      minAvgMaxTrainingRelErrorAnalyzer = new MinAverageMaxValueAnalyzer();
     174      minAvgMaxTestRelErrorAnalyzer = new MinAverageMaxValueAnalyzer();
    157175      #endregion
    158176
    159177      #region parameter wiring
    160       trainingQualityCalculator.LowerEstimationLimitParameter.ActualName = LowerEstimationLimitParameter.ActualName;
    161       trainingQualityCalculator.ProblemDataParameter.ActualName = ProblemDataParameter.ActualName;
    162       trainingQualityCalculator.SamplesStartParameter.ActualName = TrainingSamplesStartParameter.ActualName;
    163       trainingQualityCalculator.SamplesEndParameter.ActualName = TrainingSamplesEndParameter.ActualName;
    164       trainingQualityCalculator.SymbolicExpressionTreeInterpreterParameter.ActualName = SymbolicExpressionTreeInterpreterParameter.ActualName;
    165       trainingQualityCalculator.SymbolicExpressionTreeParameter.ActualName = SymbolicExpressionTreeParameter.ActualName;
    166       trainingQualityCalculator.UpperEstimationLimitParameter.ActualName = UpperEstimationLimitParameter.ActualName;
     178      trainingQualityCalculator.LowerEstimationLimitParameter.ActualName = LowerEstimationLimitParameter.Name;
     179      trainingQualityCalculator.ProblemDataParameter.ActualName = ProblemDataParameter.Name;
     180      trainingQualityCalculator.SamplesStartParameter.ActualName = TrainingSamplesStartParameter.Name;
     181      trainingQualityCalculator.SamplesEndParameter.ActualName = TrainingSamplesEndParameter.Name;
     182      trainingQualityCalculator.SymbolicExpressionTreeInterpreterParameter.ActualName = SymbolicExpressionTreeInterpreterParameter.Name;
     183      trainingQualityCalculator.SymbolicExpressionTreeParameter.ActualName = SymbolicExpressionTreeParameter.Name;
     184      trainingQualityCalculator.UpperEstimationLimitParameter.ActualName = UpperEstimationLimitParameter.Name;
    167185      trainingQualityCalculator.AverageRelativeErrorQualityParameter.ActualName = TrainingAverageRelativeErrorQualityParameterName;
    168186      trainingQualityCalculator.MeanSquaredErrorQualityParameter.ActualName = TrainingMeanSquaredErrorQualityParameterName;
    169187      trainingQualityCalculator.RSquaredQualityParameter.ActualName = TrainingRSquaredQualityParameterName;
    170188
    171       testQualityCalculator.LowerEstimationLimitParameter.ActualName = LowerEstimationLimitParameter.ActualName;
    172       testQualityCalculator.ProblemDataParameter.ActualName = ProblemDataParameter.ActualName;
    173       testQualityCalculator.SamplesStartParameter.ActualName = TestSamplesStartParameter.ActualName;
    174       testQualityCalculator.SamplesEndParameter.ActualName = TestSamplesEndParameter.ActualName;
    175       testQualityCalculator.SymbolicExpressionTreeInterpreterParameter.ActualName = SymbolicExpressionTreeInterpreterParameter.ActualName;
    176       testQualityCalculator.SymbolicExpressionTreeParameter.ActualName = SymbolicExpressionTreeParameter.ActualName;
    177       testQualityCalculator.UpperEstimationLimitParameter.ActualName = UpperEstimationLimitParameter.ActualName;
     189      testQualityCalculator.LowerEstimationLimitParameter.ActualName = LowerEstimationLimitParameter.Name;
     190      testQualityCalculator.ProblemDataParameter.ActualName = ProblemDataParameter.Name;
     191      testQualityCalculator.SamplesStartParameter.ActualName = TestSamplesStartParameter.Name;
     192      testQualityCalculator.SamplesEndParameter.ActualName = TestSamplesEndParameter.Name;
     193      testQualityCalculator.SymbolicExpressionTreeInterpreterParameter.ActualName = SymbolicExpressionTreeInterpreterParameter.Name;
     194      testQualityCalculator.SymbolicExpressionTreeParameter.ActualName = SymbolicExpressionTreeParameter.Name;
     195      testQualityCalculator.UpperEstimationLimitParameter.ActualName = UpperEstimationLimitParameter.Name;
    178196      testQualityCalculator.AverageRelativeErrorQualityParameter.ActualName = TestAverageRelativeErrorQualityParameterName;
    179197      testQualityCalculator.MeanSquaredErrorQualityParameter.ActualName = TestMeanSquaredErrorQualityParameterName;
    180198      testQualityCalculator.RSquaredQualityParameter.ActualName = TestRSquaredQualityParameterName;
    181 
    182       #region training min/avg/max
    183       minAvgMaxTrainingMseCalculator.AverageValueParameter.ActualName = AverageTrainingMeanSquaredErrorQualityParameterName;
    184       minAvgMaxTrainingMseCalculator.MaxValueParameter.ActualName = MaxTrainingMeanSquaredErrorQualityParameterName;
    185       minAvgMaxTrainingMseCalculator.MinValueParameter.ActualName = MinTrainingMeanSquaredErrorQualityParameterName;
    186       minAvgMaxTrainingMseCalculator.ValueParameter.ActualName = TrainingMeanSquaredErrorQualityParameterName;
    187 
    188       minAvgMaxTrainingR2Calculator.AverageValueParameter.ActualName = AverageTrainingRSquaredQualityParameterName;
    189       minAvgMaxTrainingR2Calculator.MaxValueParameter.ActualName = MaxTrainingRSquaredQualityParameterName;
    190       minAvgMaxTrainingR2Calculator.MinValueParameter.ActualName = MinTrainingRSquaredQualityParameterName;
    191       minAvgMaxTrainingR2Calculator.ValueParameter.ActualName = TrainingRSquaredQualityParameterName;
    192 
    193       minAvgMaxTrainingRelErrorCalculator.AverageValueParameter.ActualName = AverageTrainingAverageRelativeErrorQualityParameterName;
    194       minAvgMaxTrainingRelErrorCalculator.MaxValueParameter.ActualName = MaxTrainingAverageRelativeErrorQualityParameterName;
    195       minAvgMaxTrainingRelErrorCalculator.MinValueParameter.ActualName = MinTrainingAverageRelativeErrorQualityParameterName;
    196       minAvgMaxTrainingRelErrorCalculator.ValueParameter.ActualName = TrainingAverageRelativeErrorQualityParameterName;
    197       #endregion
    198 
    199       #region test min/avg/max
    200       minAvgMaxTestMseCalculator.AverageValueParameter.ActualName = AverageTestMeanSquaredErrorQualityParameterName;
    201       minAvgMaxTestMseCalculator.MaxValueParameter.ActualName = MaxTestMeanSquaredErrorQualityParameterName;
    202       minAvgMaxTestMseCalculator.MinValueParameter.ActualName = MinTestMeanSquaredErrorQualityParameterName;
    203       minAvgMaxTestMseCalculator.ValueParameter.ActualName = TestMeanSquaredErrorQualityParameterName;
    204 
    205       minAvgMaxTestR2Calculator.AverageValueParameter.ActualName = AverageTestRSquaredQualityParameterName;
    206       minAvgMaxTestR2Calculator.MaxValueParameter.ActualName = MaxTestRSquaredQualityParameterName;
    207       minAvgMaxTestR2Calculator.MinValueParameter.ActualName = MinTestRSquaredQualityParameterName;
    208       minAvgMaxTestR2Calculator.ValueParameter.ActualName = TestRSquaredQualityParameterName;
    209 
    210       minAvgMaxTestRelErrorCalculator.AverageValueParameter.ActualName = AverageTestAverageRelativeErrorQualityParameterName;
    211       minAvgMaxTestRelErrorCalculator.MaxValueParameter.ActualName = MaxTestAverageRelativeErrorQualityParameterName;
    212       minAvgMaxTestRelErrorCalculator.MinValueParameter.ActualName = MinTestAverageRelativeErrorQualityParameterName;
    213       minAvgMaxTestRelErrorCalculator.ValueParameter.ActualName = TestAverageRelativeErrorQualityParameterName;
    214       #endregion
    215 
    216       mseDataTableValuesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>(AverageTrainingMeanSquaredErrorQualityParameterName, null, AverageTrainingMeanSquaredErrorQualityParameterName));
    217       mseDataTableValuesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>(MaxTrainingMeanSquaredErrorQualityParameterName, null, MaxTrainingMeanSquaredErrorQualityParameterName));
    218       mseDataTableValuesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>(MinTrainingMeanSquaredErrorQualityParameterName, null, MinTrainingMeanSquaredErrorQualityParameterName));
    219       mseDataTableValuesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>(AverageTestMeanSquaredErrorQualityParameterName, null, AverageTestMeanSquaredErrorQualityParameterName));
    220       mseDataTableValuesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>(MaxTestMeanSquaredErrorQualityParameterName, null, MaxTestMeanSquaredErrorQualityParameterName));
    221       mseDataTableValuesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>(MinTestMeanSquaredErrorQualityParameterName, null, MinTestMeanSquaredErrorQualityParameterName));
    222       mseDataTableValuesCollector.DataTableParameter.ActualName = MeanSquaredErrorValuesParameterName;
    223 
    224       r2DataTableValuesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>(AverageTrainingRSquaredQualityParameterName, null, AverageTrainingRSquaredQualityParameterName));
    225       r2DataTableValuesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>(MaxTrainingRSquaredQualityParameterName, null, MaxTrainingRSquaredQualityParameterName));
    226       r2DataTableValuesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>(MinTrainingRSquaredQualityParameterName, null, MinTrainingRSquaredQualityParameterName));
    227       r2DataTableValuesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>(AverageTestRSquaredQualityParameterName, null, AverageTestRSquaredQualityParameterName));
    228       r2DataTableValuesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>(MaxTestRSquaredQualityParameterName, null, MaxTestRSquaredQualityParameterName));
    229       r2DataTableValuesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>(MinTestRSquaredQualityParameterName, null, MinTestRSquaredQualityParameterName));
    230       r2DataTableValuesCollector.DataTableParameter.ActualName = RSquaredValuesParameterName;
    231 
    232       relErrorDataTableValuesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>(AverageTrainingAverageRelativeErrorQualityParameterName, null, AverageTrainingAverageRelativeErrorQualityParameterName));
    233       relErrorDataTableValuesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>(MaxTrainingAverageRelativeErrorQualityParameterName, null, MaxTrainingAverageRelativeErrorQualityParameterName));
    234       relErrorDataTableValuesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>(MinTrainingAverageRelativeErrorQualityParameterName, null, MinTrainingAverageRelativeErrorQualityParameterName));
    235       relErrorDataTableValuesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>(AverageTestAverageRelativeErrorQualityParameterName, null, AverageTestAverageRelativeErrorQualityParameterName));
    236       relErrorDataTableValuesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>(MaxTestAverageRelativeErrorQualityParameterName, null, MaxTestAverageRelativeErrorQualityParameterName));
    237       relErrorDataTableValuesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>(MinTestAverageRelativeErrorQualityParameterName, null, MinTestAverageRelativeErrorQualityParameterName));
    238       relErrorDataTableValuesCollector.DataTableParameter.ActualName = RelativeErrorValuesParameterName;
    239 
    240       resultsCollector.CollectedValues.Add(new LookupParameter<DataTable>(MeanSquaredErrorValuesParameterName));
    241       resultsCollector.CollectedValues.Add(new LookupParameter<DataTable>(RSquaredValuesParameterName));
    242       resultsCollector.CollectedValues.Add(new LookupParameter<DataTable>(RelativeErrorValuesParameterName));
    243       resultsCollector.ResultsParameter.ActualName = ResultsParameter.Name;
    244 
     199      #region training/test MSE
     200      minAvgMaxTrainingMseAnalyzer.ValueParameter.ActualName = TrainingMeanSquaredErrorQualityParameterName;
     201      minAvgMaxTrainingMseAnalyzer.ValueParameter.Depth = SymbolicExpressionTreeParameter.Depth;
     202      minAvgMaxTrainingMseAnalyzer.AverageValueParameter.ActualName = AverageTrainingMeanSquaredErrorQualityParameterName;
     203      minAvgMaxTrainingMseAnalyzer.MaxValueParameter.ActualName = MaxTrainingMeanSquaredErrorQualityParameterName;
     204      minAvgMaxTrainingMseAnalyzer.MinValueParameter.ActualName = MinTrainingMeanSquaredErrorQualityParameterName;
     205      minAvgMaxTrainingMseAnalyzer.ValuesParameter.ActualName = MeanSquaredErrorValuesParameterName;
     206      minAvgMaxTrainingMseAnalyzer.ResultsParameter.ActualName = ResultsParameter.Name;
     207
     208      minAvgMaxTestMseAnalyzer.ValueParameter.ActualName = TestMeanSquaredErrorQualityParameterName;
     209      minAvgMaxTestMseAnalyzer.ValueParameter.Depth = SymbolicExpressionTreeParameter.Depth;
     210      minAvgMaxTestMseAnalyzer.AverageValueParameter.ActualName = AverageTestMeanSquaredErrorQualityParameterName;
     211      minAvgMaxTestMseAnalyzer.MaxValueParameter.ActualName = MaxTestMeanSquaredErrorQualityParameterName;
     212      minAvgMaxTestMseAnalyzer.MinValueParameter.ActualName = MinTestMeanSquaredErrorQualityParameterName;
     213      minAvgMaxTestMseAnalyzer.ValuesParameter.ActualName = MeanSquaredErrorValuesParameterName;
     214      minAvgMaxTestMseAnalyzer.ResultsParameter.ActualName = ResultsParameter.Name;
     215      #endregion
     216      #region training/test R²
     217      minAvgMaxTrainingRSquaredAnalyzer.ValueParameter.ActualName = TrainingRSquaredQualityParameterName;
     218      minAvgMaxTrainingRSquaredAnalyzer.ValueParameter.Depth = SymbolicExpressionTreeParameter.Depth;
     219      minAvgMaxTrainingRSquaredAnalyzer.AverageValueParameter.ActualName = AverageTrainingRSquaredQualityParameterName;
     220      minAvgMaxTrainingRSquaredAnalyzer.MaxValueParameter.ActualName = MaxTrainingRSquaredQualityParameterName;
     221      minAvgMaxTrainingRSquaredAnalyzer.MinValueParameter.ActualName = MinTrainingRSquaredQualityParameterName;
     222      minAvgMaxTrainingRSquaredAnalyzer.ValuesParameter.ActualName = RSquaredValuesParameterName;
     223      minAvgMaxTrainingRSquaredAnalyzer.ResultsParameter.ActualName = ResultsParameter.Name;
     224
     225      minAvgMaxTestRSquaredAnalyzer.ValueParameter.ActualName = TestRSquaredQualityParameterName;
     226      minAvgMaxTestRSquaredAnalyzer.ValueParameter.Depth = SymbolicExpressionTreeParameter.Depth;
     227      minAvgMaxTestRSquaredAnalyzer.AverageValueParameter.ActualName = AverageTestRSquaredQualityParameterName;
     228      minAvgMaxTestRSquaredAnalyzer.MaxValueParameter.ActualName = MaxTestRSquaredQualityParameterName;
     229      minAvgMaxTestRSquaredAnalyzer.MinValueParameter.ActualName = MinTestRSquaredQualityParameterName;
     230      minAvgMaxTestRSquaredAnalyzer.ValuesParameter.ActualName = RSquaredValuesParameterName;
     231      minAvgMaxTestRSquaredAnalyzer.ResultsParameter.ActualName = ResultsParameter.Name;
     232      #endregion
     233      #region training/test avg. rel. error
     234      minAvgMaxTrainingRelErrorAnalyzer.ValueParameter.ActualName = TrainingAverageRelativeErrorQualityParameterName;
     235      minAvgMaxTrainingRelErrorAnalyzer.ValueParameter.Depth = SymbolicExpressionTreeParameter.Depth;
     236      minAvgMaxTrainingRelErrorAnalyzer.AverageValueParameter.ActualName = AverageTrainingAverageRelativeErrorQualityParameterName;
     237      minAvgMaxTrainingRelErrorAnalyzer.MaxValueParameter.ActualName = MaxTrainingAverageRelativeErrorQualityParameterName;
     238      minAvgMaxTrainingRelErrorAnalyzer.MinValueParameter.ActualName = MinTrainingAverageRelativeErrorQualityParameterName;
     239      minAvgMaxTrainingRelErrorAnalyzer.ValuesParameter.ActualName = RelativeErrorValuesParameterName;
     240      minAvgMaxTrainingRelErrorAnalyzer.ResultsParameter.ActualName = ResultsParameter.Name;
     241
     242      minAvgMaxTestRelErrorAnalyzer.ValueParameter.ActualName = TestAverageRelativeErrorQualityParameterName;
     243      minAvgMaxTestRelErrorAnalyzer.ValueParameter.Depth = SymbolicExpressionTreeParameter.Depth;
     244      minAvgMaxTestRelErrorAnalyzer.AverageValueParameter.ActualName = AverageTestAverageRelativeErrorQualityParameterName;
     245      minAvgMaxTestRelErrorAnalyzer.MaxValueParameter.ActualName = MaxTestAverageRelativeErrorQualityParameterName;
     246      minAvgMaxTestRelErrorAnalyzer.MinValueParameter.ActualName = MinTestAverageRelativeErrorQualityParameterName;
     247      minAvgMaxTestRelErrorAnalyzer.ValuesParameter.ActualName = RelativeErrorValuesParameterName;
     248      minAvgMaxTestRelErrorAnalyzer.ResultsParameter.ActualName = ResultsParameter.Name;
     249      #endregion
    245250      #endregion
    246251
     
    250255      trainingQualityCalculator.Successor = testQualityCalculator;
    251256      testQualityCalculator.Successor = null;
    252       subScopesProcessor.Successor = minAvgMaxTrainingMseCalculator;
    253       minAvgMaxTrainingMseCalculator.Successor = minAvgMaxTestMseCalculator;
    254       minAvgMaxTestMseCalculator.Successor = minAvgMaxTrainingR2Calculator;
    255       minAvgMaxTrainingR2Calculator.Successor = minAvgMaxTestR2Calculator;
    256       minAvgMaxTestR2Calculator.Successor = minAvgMaxTrainingRelErrorCalculator;
    257       minAvgMaxTrainingRelErrorCalculator.Successor = minAvgMaxTestRelErrorCalculator;
    258       minAvgMaxTestRelErrorCalculator.Successor = mseDataTableValuesCollector;
    259       mseDataTableValuesCollector.Successor = r2DataTableValuesCollector;
    260       r2DataTableValuesCollector.Successor = relErrorDataTableValuesCollector;
    261       relErrorDataTableValuesCollector.Successor = resultsCollector;
    262       #endregion
    263 
     257      subScopesProcessor.Successor = minAvgMaxTrainingMseAnalyzer;
     258      minAvgMaxTrainingMseAnalyzer.Successor = minAvgMaxTestMseAnalyzer;
     259      minAvgMaxTestMseAnalyzer.Successor = minAvgMaxTrainingRSquaredAnalyzer;
     260      minAvgMaxTrainingRSquaredAnalyzer.Successor = minAvgMaxTestRSquaredAnalyzer;
     261      minAvgMaxTestRSquaredAnalyzer.Successor = minAvgMaxTrainingRelErrorAnalyzer;
     262      minAvgMaxTrainingRelErrorAnalyzer.Successor = minAvgMaxTestRelErrorAnalyzer;
     263      minAvgMaxTestRelErrorAnalyzer.Successor = null;
     264      #endregion
     265
     266      Initialize();
     267    }
     268
     269    [StorableConstructor]
     270    private SymbolicRegressionModelQualityAnalyzer(bool deserializing) : base() { }
     271
     272    [StorableHook(HookType.AfterDeserialization)]
     273    private void Initialize() {
     274      SymbolicExpressionTreeParameter.DepthChanged += new EventHandler(SymbolicExpressionTreeParameter_DepthChanged);
     275    }
     276
     277    public override IDeepCloneable Clone(Cloner cloner) {
     278      SymbolicRegressionModelQualityAnalyzer clone = (SymbolicRegressionModelQualityAnalyzer)base.Clone(cloner);
     279      clone.Initialize();
     280      return clone;
     281    }
     282
     283    private void SymbolicExpressionTreeParameter_DepthChanged(object sender, EventArgs e) {
     284      minAvgMaxTrainingMseAnalyzer.ValueParameter.Depth = SymbolicExpressionTreeParameter.Depth;
     285      minAvgMaxTrainingRelErrorAnalyzer.ValueParameter.Depth = SymbolicExpressionTreeParameter.Depth;
     286      minAvgMaxTrainingRSquaredAnalyzer.ValueParameter.Depth = SymbolicExpressionTreeParameter.Depth;
     287      minAvgMaxTestMseAnalyzer.ValueParameter.Depth = SymbolicExpressionTreeParameter.Depth;
     288      minAvgMaxTestRelErrorAnalyzer.ValueParameter.Depth = SymbolicExpressionTreeParameter.Depth;
     289      minAvgMaxTestRSquaredAnalyzer.ValueParameter.Depth = SymbolicExpressionTreeParameter.Depth;
    264290    }
    265291  }
Note: See TracChangeset for help on using the changeset viewer.