Changeset 5747 for branches/DataAnalysis Refactoring
- Timestamp:
- 03/18/11 10:01:00 (14 years ago)
- Location:
- branches/DataAnalysis Refactoring
- Files:
-
- 20 edited
- 3 copied
- 2 moved
Legend:
- Unmodified
- Added
- Removed
-
branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis.Symbolic.Classification/3.4/HeuristicLab.Problems.DataAnalysis.Symbolic.Classification-3.4.csproj
r5717 r5747 110 110 <Compile Include="Interfaces\ISymbolicDiscriminantFunctionClassificationModel.cs" /> 111 111 <Compile Include="MultiObjective\SymbolicClassificationMultiObjectiveValidationBestSolutionAnalyzer.cs" /> 112 <Compile Include="SingleObjective\SymbolicClassificationSingleObjectiveBoundedMeanSquaredErrorEvaluator.cs" /> 113 <Compile Include="SingleObjective\SymbolicClassificationSingleObjectiveOverfittingAnalyzer.cs" /> 112 114 <Compile Include="SingleObjective\SymbolicClassificationSingleObjectiveValidationBestSolutionAnalyzer.cs" /> 113 115 <Compile Include="SymbolicDiscriminantFunctionClassificationModel.cs" /> … … 119 121 <Compile Include="MultiObjective\SymbolicClassificationMultiObjectiveProblem.cs" /> 120 122 <Compile Include="SingleObjective\SymbolicClassificationSingleObjectiveEvaluator.cs" /> 121 <Compile Include="SingleObjective\SymbolicClassificationSingleObjectiveBoundeMeanSquaredErrorEvaluator.cs" />122 123 <Compile Include="SingleObjective\SymbolicClassificationSingleObjectiveMeanSquaredErrorEvaluator.cs" /> 123 124 <Compile Include="SingleObjective\SymbolicClassificationSingleObjectivePearsonRSquaredEvaluator.cs" /> -
branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis.Symbolic.Classification/3.4/MultiObjective/SymbolicClassificationMultiObjectiveMeanSquaredErrorTreeSizeEvaluator.cs
r5722 r5747 26 26 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding; 27 27 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 28 using System; 28 29 29 30 namespace HeuristicLab.Problems.DataAnalysis.Symbolic.Classification { -
branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis.Symbolic.Classification/3.4/MultiObjective/SymbolicClassificationMultiObjectivePearsonRSquaredTreeSizeEvaluator.cs
r5722 r5747 5 5 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding; 6 6 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 7 using System; 7 8 8 9 namespace HeuristicLab.Problems.DataAnalysis.Symbolic.Classification { … … 33 34 IEnumerable<double> estimatedValues = interpreter.GetSymbolicExpressionTreeValues(solution, problemData.Dataset, rows); 34 35 IEnumerable<double> originalValues = problemData.Dataset.GetEnumeratedVariableValues(problemData.TargetVariable, rows); 35 double r2 = OnlinePearsonsRSquaredEvaluator.Calculate(originalValues, estimatedValues); 36 return new double[2] { r2, solution.Length }; 36 try { 37 double r2 = OnlinePearsonsRSquaredEvaluator.Calculate(originalValues, estimatedValues); 38 return new double[2] { r2, solution.Length }; 39 } 40 catch (ArgumentException) { 41 // if R² cannot be calcualted because of infinity or NaN values => return worst possible fitness value 42 return new double[2] { 0.0, solution.Length }; 43 } 37 44 } 38 45 -
branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis.Symbolic.Classification/3.4/MultiObjective/SymbolicClassificationMultiObjectiveTrainingBestSolutionAnalyzer.cs
r5736 r5747 38 38 [StorableClass] 39 39 public sealed class SymbolicClassificationMultiObjectiveTrainingBestSolutionAnalyzer : SymbolicDataAnalysisMultiObjectiveTrainingBestSolutionAnalyzer<ISymbolicClassificationSolution>, 40 ISymbolicDataAnalysisInterpreterOperator {40 ISymbolicDataAnalysisInterpreterOperator, ISymbolicDataAnalysisBoundedOperator { 41 41 private const string ProblemDataParameterName = "ProblemData"; 42 42 private const string SymbolicDataAnalysisTreeInterpreterParameterName = "SymbolicDataAnalysisTreeInterpreter"; -
branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis.Symbolic.Classification/3.4/SingleObjective/SymbolicClassificationSingleObjectiveBoundedMeanSquaredErrorEvaluator.cs
r5735 r5747 32 32 [Item("Bounded Mean squared error Evaluator", "Calculates the bounded mean squared error of a symbolic classification solution (estimations above or below the class values are only penaltilized linearly.")] 33 33 [StorableClass] 34 public class SymbolicClassificationSingleObjectiveBounde MeanSquaredErrorEvaluator : SymbolicClassificationSingleObjectiveEvaluator {34 public class SymbolicClassificationSingleObjectiveBoundedMeanSquaredErrorEvaluator : SymbolicClassificationSingleObjectiveEvaluator { 35 35 36 36 [StorableConstructor] 37 protected SymbolicClassificationSingleObjectiveBounde MeanSquaredErrorEvaluator(bool deserializing) : base(deserializing) { }38 protected SymbolicClassificationSingleObjectiveBounde MeanSquaredErrorEvaluator(SymbolicClassificationSingleObjectiveBoundeMeanSquaredErrorEvaluator original, Cloner cloner) : base(original, cloner) { }37 protected SymbolicClassificationSingleObjectiveBoundedMeanSquaredErrorEvaluator(bool deserializing) : base(deserializing) { } 38 protected SymbolicClassificationSingleObjectiveBoundedMeanSquaredErrorEvaluator(SymbolicClassificationSingleObjectiveBoundedMeanSquaredErrorEvaluator original, Cloner cloner) : base(original, cloner) { } 39 39 public override IDeepCloneable Clone(Cloner cloner) { 40 return new SymbolicClassificationSingleObjectiveBounde MeanSquaredErrorEvaluator(this, cloner);40 return new SymbolicClassificationSingleObjectiveBoundedMeanSquaredErrorEvaluator(this, cloner); 41 41 } 42 42 43 public SymbolicClassificationSingleObjectiveBounde MeanSquaredErrorEvaluator() : base() { }43 public SymbolicClassificationSingleObjectiveBoundedMeanSquaredErrorEvaluator() : base() { } 44 44 45 45 public override bool Maximization { get { return false; } } -
branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis.Symbolic.Classification/3.4/SingleObjective/SymbolicClassificationSingleObjectiveMeanSquaredErrorEvaluator.cs
r5722 r5747 26 26 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding; 27 27 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 28 using System; 28 29 29 30 namespace HeuristicLab.Problems.DataAnalysis.Symbolic.Classification { … … 62 63 LowerEstimationLimitParameter.ExecutionContext = context; 63 64 UpperEstimationLimitParameter.ExecutionContext = context; 64 65 65 66 double mse = Calculate(SymbolicDataAnalysisTreeInterpreter, tree, LowerEstimationLimit.Value, UpperEstimationLimit.Value, problemData, rows); 66 67 -
branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis.Symbolic.Classification/3.4/SingleObjective/SymbolicClassificationSingleObjectiveOverfittingAnalyzer.cs
r5735 r5747 31 31 using HeuristicLab.Parameters; 32 32 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 33 using HeuristicLab.Problems.DataAnalysis.Evaluators;34 33 using HeuristicLab.Problems.DataAnalysis.Symbolic; 35 34 using System; 36 35 37 namespace HeuristicLab.Problems.DataAnalysis. Regression.Symbolic.Analyzers{38 [Item("Symbolic RegressionOverfittingAnalyzer", "Calculates and tracks correlation of training and validation fitness of symbolic regression models.")]36 namespace HeuristicLab.Problems.DataAnalysis.Symbolic.Classification { 37 [Item("SymbolicClassificationSingleObjectiveOverfittingAnalyzer", "Calculates and tracks correlation of training and validation fitness of symbolic classification models.")] 39 38 [StorableClass] 40 public sealed class SymbolicRegressionOverfittingAnalyzer : SymbolicRegressionValidationAnalyzer, ISymbolicRegressionAnalyzer { 41 private const string MaximizationParameterName = "Maximization"; 42 private const string QualityParameterName = "Quality"; 43 private const string TrainingValidationCorrelationParameterName = "TrainingValidationCorrelation"; 44 private const string TrainingValidationCorrelationTableParameterName = "TrainingValidationCorrelationTable"; 39 public sealed class SymbolicClassificationSingleObjectiveOverfittingAnalyzer : SymbolicDataAnalysisSingleObjectiveValidationAnalyzer<ISymbolicClassificationSingleObjectiveEvaluator, IClassificationProblemData> { 40 private const string TrainingValidationCorrelationParameterName = "Training and validation fitness correlation"; 41 private const string TrainingValidationCorrelationTableParameterName = "Training and validation fitness correlation table"; 45 42 private const string LowerCorrelationThresholdParameterName = "LowerCorrelationThreshold"; 46 43 private const string UpperCorrelationThresholdParameterName = "UpperCorrelationThreshold"; 47 44 private const string OverfittingParameterName = "IsOverfitting"; 48 private const string ResultsParameterName = "Results";49 45 50 46 #region parameter properties 51 public ScopeTreeLookupParameter<DoubleValue> QualityParameter {52 get { return (ScopeTreeLookupParameter<DoubleValue>)Parameters[QualityParameterName]; }53 }54 public ILookupParameter<BoolValue> MaximizationParameter {55 get { return (ILookupParameter<BoolValue>)Parameters[MaximizationParameterName]; }56 }57 47 public ILookupParameter<DoubleValue> TrainingValidationQualityCorrelationParameter { 58 48 get { return (ILookupParameter<DoubleValue>)Parameters[TrainingValidationCorrelationParameterName]; } … … 70 60 get { return (ILookupParameter<BoolValue>)Parameters[OverfittingParameterName]; } 71 61 } 72 public ILookupParameter<ResultCollection> ResultsParameter {73 get { return (ILookupParameter<ResultCollection>)Parameters[ResultsParameterName]; }74 }75 #endregion76 #region properties77 public BoolValue Maximization {78 get { return MaximizationParameter.ActualValue; }79 }80 62 #endregion 81 63 82 64 [StorableConstructor] 83 private Symbolic RegressionOverfittingAnalyzer(bool deserializing) : base(deserializing) { }84 private Symbolic RegressionOverfittingAnalyzer(SymbolicRegressionOverfittingAnalyzer original, Cloner cloner) : base(original, cloner) { }85 public Symbolic RegressionOverfittingAnalyzer()65 private SymbolicClassificationSingleObjectiveOverfittingAnalyzer(bool deserializing) : base(deserializing) { } 66 private SymbolicClassificationSingleObjectiveOverfittingAnalyzer(SymbolicClassificationSingleObjectiveOverfittingAnalyzer original, Cloner cloner) : base(original, cloner) { } 67 public SymbolicClassificationSingleObjectiveOverfittingAnalyzer() 86 68 : base() { 87 Parameters.Add(new ScopeTreeLookupParameter<DoubleValue>(QualityParameterName, "Training fitness"));88 Parameters.Add(new LookupParameter<BoolValue>(MaximizationParameterName, "The direction of optimization."));89 69 Parameters.Add(new LookupParameter<DoubleValue>(TrainingValidationCorrelationParameterName, "Correlation of training and validation fitnesses")); 90 70 Parameters.Add(new LookupParameter<DataTable>(TrainingValidationCorrelationTableParameterName, "Data table of training and validation fitness correlation values over the whole run.")); … … 92 72 Parameters.Add(new ValueLookupParameter<DoubleValue>(UpperCorrelationThresholdParameterName, "Upper threshold for correlation value that marks the boundary from overfitting to non-overfitting.", new DoubleValue(0.75))); 93 73 Parameters.Add(new LookupParameter<BoolValue>(OverfittingParameterName, "Boolean indicator for overfitting.")); 94 Parameters.Add(new LookupParameter<ResultCollection>(ResultsParameterName, "The results collection."));95 }96 97 [StorableHook(HookType.AfterDeserialization)]98 private void AfterDeserialization() {99 74 } 100 75 101 76 public override IDeepCloneable Clone(Cloner cloner) { 102 return new Symbolic RegressionOverfittingAnalyzer(this, cloner);77 return new SymbolicClassificationSingleObjectiveOverfittingAnalyzer(this, cloner); 103 78 } 104 79 105 p rotected override void Analyze(SymbolicExpressionTree[] trees, double[] validationQuality) {80 public override IOperation Apply() { 106 81 double[] trainingQuality = QualityParameter.ActualValue.Select(x => x.Value).ToArray(); 107 82 // evaluate on validation partition 83 int start = ValidationSamplesStart.Value; 84 int end = ValidationSamplesEnd.Value; 85 var rows = Enumerable.Range(start, end - start); 86 IExecutionContext childContext = (IExecutionContext)ExecutionContext.CreateChildOperation(Evaluator); 87 double[] validationQuality = (from tree in SymbolicExpressionTrees 88 select Evaluator.Evaluate(childContext, tree, ProblemData, rows)) 89 .ToArray(); 108 90 double r = alglib.spearmancorr2(trainingQuality, validationQuality); 109 91 … … 111 93 112 94 if (TrainingValidationQualityCorrelationTableParameter.ActualValue == null) { 113 var dataTable = new DataTable( "Training and validation fitness correlation table", "Data table of training and validation fitness correlation values over the whole run.");114 dataTable.Rows.Add(new DataRow( "Training and validation fitness correlation", "Training and validation fitness correlation values"));95 var dataTable = new DataTable(TrainingValidationQualityCorrelationTableParameter.Name, TrainingValidationQualityCorrelationTableParameter.Description); 96 dataTable.Rows.Add(new DataRow(TrainingValidationQualityCorrelationParameter.Name, TrainingValidationQualityCorrelationParameter.Description)); 115 97 TrainingValidationQualityCorrelationTableParameter.ActualValue = dataTable; 116 Result sParameter.ActualValue.Add(new Result(TrainingValidationCorrelationTableParameterName, dataTable));98 ResultCollectionParameter.ActualValue.Add(new Result(TrainingValidationQualityCorrelationTableParameter.Name, dataTable)); 117 99 } 118 100 119 TrainingValidationQualityCorrelationTableParameter.ActualValue.Rows[ "Training and validation fitness correlation"].Values.Add(r);101 TrainingValidationQualityCorrelationTableParameter.ActualValue.Rows[TrainingValidationQualityCorrelationParameter.Name].Values.Add(r); 120 102 121 103 if (OverfittingParameter.ActualValue != null && OverfittingParameter.ActualValue.Value) { … … 128 110 OverfittingParameter.ActualValue = new BoolValue(r < LowerCorrelationThresholdParameter.ActualValue.Value); 129 111 } 112 113 return base.Apply(); 130 114 } 131 115 } -
branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis.Symbolic.Classification/3.4/SingleObjective/SymbolicClassificationSingleObjectivePearsonRSquaredEvaluator.cs
r5722 r5747 26 26 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding; 27 27 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 28 using System; 28 29 29 30 namespace HeuristicLab.Problems.DataAnalysis.Symbolic.Classification { … … 54 55 IEnumerable<double> estimatedValues = interpreter.GetSymbolicExpressionTreeValues(solution, problemData.Dataset, rows); 55 56 IEnumerable<double> originalValues = problemData.Dataset.GetEnumeratedVariableValues(problemData.TargetVariable, rows); 56 return OnlinePearsonsRSquaredEvaluator.Calculate(originalValues, estimatedValues); 57 try { 58 return OnlinePearsonsRSquaredEvaluator.Calculate(originalValues, estimatedValues); 59 } 60 catch (ArgumentException) { 61 // if R² cannot be calculated because of NaN or ininity elements => return worst possible fitness valuse 62 return 0.0; 63 } 57 64 } 58 65 -
branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis.Symbolic.Classification/3.4/SingleObjective/SymbolicClassificationSingleObjectiveProblem.cs
r5733 r5747 76 76 Operators.Add(new SymbolicClassificationSingleObjectiveTrainingBestSolutionAnalyzer()); 77 77 Operators.Add(new SymbolicClassificationSingleObjectiveValidationBestSolutionAnalyzer()); 78 Operators.Add(new SymbolicClassificationSingleObjectiveOverfittingAnalyzer()); 78 79 ParameterizeOperators(); 79 80 } -
branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression-3.4.csproj
r5733 r5747 109 109 <ItemGroup> 110 110 <Compile Include="MultiObjective\SymbolicRegressionMultiObjectiveValidationBestSolutionAnalyzer.cs" /> 111 <Compile Include="SingleObjective\SymbolicRegressionSingleObjectiveOverfittingAnalyzer.cs" /> 111 112 <Compile Include="SymbolicRegressionModel.cs" /> 112 113 <Compile Include="Interfaces\ISymbolicRegressionModel.cs" /> … … 134 135 </ItemGroup> 135 136 <ItemGroup> 137 <ProjectReference Include="..\..\HeuristicLab.Analysis\3.3\HeuristicLab.Analysis-3.3.csproj"> 138 <Project>{887425B4-4348-49ED-A457-B7D2C26DDBF9}</Project> 139 <Name>HeuristicLab.Analysis-3.3</Name> 140 </ProjectReference> 136 141 <ProjectReference Include="..\..\HeuristicLab.Collections\3.3\HeuristicLab.Collections-3.3.csproj"> 137 142 <Project>{958B43BC-CC5C-4FA2-8628-2B3B01D890B6}</Project> … … 157 162 <Project>{06D4A186-9319-48A0-BADE-A2058D462EEA}</Project> 158 163 <Name>HeuristicLab.Encodings.SymbolicExpressionTreeEncoding-3.4</Name> 164 </ProjectReference> 165 <ProjectReference Include="..\..\HeuristicLab.ExtLibs\HeuristicLab.ALGLIB\3.1.0\ALGLIB-3.1.0\ALGLIB-3.1.0.csproj"> 166 <Project>{FC841674-62A7-4055-BE91-E41944B6C606}</Project> 167 <Name>ALGLIB-3.1.0</Name> 168 </ProjectReference> 169 <ProjectReference Include="..\..\HeuristicLab.ExtLibs\HeuristicLab.ALGLIB\3.1.0\HeuristicLab.ALGLIB-3.1.0\HeuristicLab.ALGLIB-3.1.0.csproj"> 170 <Project>{DE69A359-A5B8-4D3D-BA8D-D5780D7F96D6}</Project> 171 <Name>HeuristicLab.ALGLIB-3.1.0 %28HeuristicLab.ExtLibs\HeuristicLab.ALGLIB\HeuristicLab.ALGLIB-3.1.0\HeuristicLab.ALGLIB-3.1.0%29</Name> 159 172 </ProjectReference> 160 173 <ProjectReference Include="..\..\HeuristicLab.ExtLibs\HeuristicLab.LibSVM\1.6.3\HeuristicLab.LibSVM-1.6.3\HeuristicLab.LibSVM-1.6.3.csproj"> -
branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/MultiObjective/SymbolicRegressionMultiObjectiveMeanSquaredErrorTreeSizeEvaluator.cs
r5722 r5747 26 26 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding; 27 27 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 28 using System; 28 29 29 30 namespace HeuristicLab.Problems.DataAnalysis.Symbolic.Regression { -
branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/MultiObjective/SymbolicRegressionMultiObjectivePearsonRSquaredTreeSizeEvaluator.cs
r5722 r5747 26 26 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding; 27 27 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 28 using System; 28 29 29 30 namespace HeuristicLab.Problems.DataAnalysis.Symbolic.Regression { … … 54 55 IEnumerable<double> estimatedValues = interpreter.GetSymbolicExpressionTreeValues(solution, problemData.Dataset, rows); 55 56 IEnumerable<double> originalValues = problemData.Dataset.GetEnumeratedVariableValues(problemData.TargetVariable, rows); 56 double r2 = OnlinePearsonsRSquaredEvaluator.Calculate(originalValues, estimatedValues); 57 return new double[2] { r2, solution.Length }; 57 try { 58 double r2 = OnlinePearsonsRSquaredEvaluator.Calculate(originalValues, estimatedValues); 59 return new double[2] { r2, solution.Length }; 60 } 61 catch (ArgumentException) { 62 // if R² cannot be calcualted return worst possible fitness value 63 return new double[2] { 0.0, solution.Length }; 64 } 58 65 } 59 66 -
branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/MultiObjective/SymbolicRegressionMultiObjectiveTrainingBestSolutionAnalyzer.cs
r5729 r5747 38 38 [StorableClass] 39 39 public sealed class SymbolicRegressionMultiObjectiveTrainingBestSolutionAnalyzer : SymbolicDataAnalysisMultiObjectiveTrainingBestSolutionAnalyzer<ISymbolicRegressionSolution>, 40 ISymbolicDataAnalysisInterpreterOperator {40 ISymbolicDataAnalysisInterpreterOperator, ISymbolicDataAnalysisBoundedOperator { 41 41 private const string ProblemDataParameterName = "ProblemData"; 42 42 private const string SymbolicDataAnalysisTreeInterpreterParameterName = "SymbolicDataAnalysisTreeInterpreter"; -
branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/SingleObjective/SymbolicRegressionSingleObjectiveMeanSquaredErrorEvaluator.cs
r5722 r5747 26 26 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding; 27 27 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 28 using System; 28 29 29 30 namespace HeuristicLab.Problems.DataAnalysis.Symbolic.Regression { -
branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/SingleObjective/SymbolicRegressionSingleObjectiveOverfittingAnalyzer.cs
r5735 r5747 31 31 using HeuristicLab.Parameters; 32 32 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 33 using HeuristicLab.Problems.DataAnalysis.Evaluators;34 33 using HeuristicLab.Problems.DataAnalysis.Symbolic; 35 34 using System; 36 35 37 namespace HeuristicLab.Problems.DataAnalysis. Regression.Symbolic.Analyzers{38 [Item("SymbolicRegression OverfittingAnalyzer", "Calculates and tracks correlation of training and validation fitness of symbolic regression models.")]36 namespace HeuristicLab.Problems.DataAnalysis.Symbolic.Regression { 37 [Item("SymbolicRegressionSingleObjectiveOverfittingAnalyzer", "Calculates and tracks correlation of training and validation fitness of symbolic regression models.")] 39 38 [StorableClass] 40 public sealed class SymbolicRegressionOverfittingAnalyzer : SymbolicRegressionValidationAnalyzer, ISymbolicRegressionAnalyzer { 41 private const string MaximizationParameterName = "Maximization"; 42 private const string QualityParameterName = "Quality"; 43 private const string TrainingValidationCorrelationParameterName = "TrainingValidationCorrelation"; 44 private const string TrainingValidationCorrelationTableParameterName = "TrainingValidationCorrelationTable"; 39 public sealed class SymbolicRegressionSingleObjectiveOverfittingAnalyzer : SymbolicDataAnalysisSingleObjectiveValidationAnalyzer<ISymbolicRegressionSingleObjectiveEvaluator, IRegressionProblemData> { 40 private const string TrainingValidationCorrelationParameterName = "Training and validation fitness correlation"; 41 private const string TrainingValidationCorrelationTableParameterName = "Training and validation fitness correlation table"; 45 42 private const string LowerCorrelationThresholdParameterName = "LowerCorrelationThreshold"; 46 43 private const string UpperCorrelationThresholdParameterName = "UpperCorrelationThreshold"; 47 44 private const string OverfittingParameterName = "IsOverfitting"; 48 private const string ResultsParameterName = "Results";49 45 50 46 #region parameter properties 51 public ScopeTreeLookupParameter<DoubleValue> QualityParameter {52 get { return (ScopeTreeLookupParameter<DoubleValue>)Parameters[QualityParameterName]; }53 }54 public ILookupParameter<BoolValue> MaximizationParameter {55 get { return (ILookupParameter<BoolValue>)Parameters[MaximizationParameterName]; }56 }57 47 public ILookupParameter<DoubleValue> TrainingValidationQualityCorrelationParameter { 58 48 get { return (ILookupParameter<DoubleValue>)Parameters[TrainingValidationCorrelationParameterName]; } … … 70 60 get { return (ILookupParameter<BoolValue>)Parameters[OverfittingParameterName]; } 71 61 } 72 public ILookupParameter<ResultCollection> ResultsParameter {73 get { return (ILookupParameter<ResultCollection>)Parameters[ResultsParameterName]; }74 }75 #endregion76 #region properties77 public BoolValue Maximization {78 get { return MaximizationParameter.ActualValue; }79 }80 62 #endregion 81 63 82 64 [StorableConstructor] 83 private SymbolicRegression OverfittingAnalyzer(bool deserializing) : base(deserializing) { }84 private SymbolicRegression OverfittingAnalyzer(SymbolicRegressionOverfittingAnalyzer original, Cloner cloner) : base(original, cloner) { }85 public SymbolicRegression OverfittingAnalyzer()65 private SymbolicRegressionSingleObjectiveOverfittingAnalyzer(bool deserializing) : base(deserializing) { } 66 private SymbolicRegressionSingleObjectiveOverfittingAnalyzer(SymbolicRegressionSingleObjectiveOverfittingAnalyzer original, Cloner cloner) : base(original, cloner) { } 67 public SymbolicRegressionSingleObjectiveOverfittingAnalyzer() 86 68 : base() { 87 Parameters.Add(new ScopeTreeLookupParameter<DoubleValue>(QualityParameterName, "Training fitness"));88 Parameters.Add(new LookupParameter<BoolValue>(MaximizationParameterName, "The direction of optimization."));89 69 Parameters.Add(new LookupParameter<DoubleValue>(TrainingValidationCorrelationParameterName, "Correlation of training and validation fitnesses")); 90 70 Parameters.Add(new LookupParameter<DataTable>(TrainingValidationCorrelationTableParameterName, "Data table of training and validation fitness correlation values over the whole run.")); … … 92 72 Parameters.Add(new ValueLookupParameter<DoubleValue>(UpperCorrelationThresholdParameterName, "Upper threshold for correlation value that marks the boundary from overfitting to non-overfitting.", new DoubleValue(0.75))); 93 73 Parameters.Add(new LookupParameter<BoolValue>(OverfittingParameterName, "Boolean indicator for overfitting.")); 94 Parameters.Add(new LookupParameter<ResultCollection>(ResultsParameterName, "The results collection."));95 }96 97 [StorableHook(HookType.AfterDeserialization)]98 private void AfterDeserialization() {99 74 } 100 75 101 76 public override IDeepCloneable Clone(Cloner cloner) { 102 return new SymbolicRegression OverfittingAnalyzer(this, cloner);77 return new SymbolicRegressionSingleObjectiveOverfittingAnalyzer(this, cloner); 103 78 } 104 79 105 p rotected override void Analyze(SymbolicExpressionTree[] trees, double[] validationQuality) {80 public override IOperation Apply() { 106 81 double[] trainingQuality = QualityParameter.ActualValue.Select(x => x.Value).ToArray(); 107 82 // evaluate on validation partition 83 int start = ValidationSamplesStart.Value; 84 int end = ValidationSamplesEnd.Value; 85 var rows = Enumerable.Range(start, end - start); 86 IExecutionContext childContext = (IExecutionContext)ExecutionContext.CreateChildOperation(Evaluator); 87 double[] validationQuality = (from tree in SymbolicExpressionTrees 88 select Evaluator.Evaluate(childContext, tree, ProblemData, rows)) 89 .ToArray(); 108 90 double r = alglib.spearmancorr2(trainingQuality, validationQuality); 109 91 … … 111 93 112 94 if (TrainingValidationQualityCorrelationTableParameter.ActualValue == null) { 113 var dataTable = new DataTable( "Training and validation fitness correlation table", "Data table of training and validation fitness correlation values over the whole run.");114 dataTable.Rows.Add(new DataRow( "Training and validation fitness correlation", "Training and validation fitness correlation values"));95 var dataTable = new DataTable(TrainingValidationQualityCorrelationTableParameter.Name, TrainingValidationQualityCorrelationTableParameter.Description); 96 dataTable.Rows.Add(new DataRow(TrainingValidationQualityCorrelationParameter.Name, TrainingValidationQualityCorrelationParameter.Description)); 115 97 TrainingValidationQualityCorrelationTableParameter.ActualValue = dataTable; 116 Result sParameter.ActualValue.Add(new Result(TrainingValidationCorrelationTableParameterName, dataTable));98 ResultCollectionParameter.ActualValue.Add(new Result(TrainingValidationQualityCorrelationTableParameter.Name, dataTable)); 117 99 } 118 100 119 TrainingValidationQualityCorrelationTableParameter.ActualValue.Rows[ "Training and validation fitness correlation"].Values.Add(r);101 TrainingValidationQualityCorrelationTableParameter.ActualValue.Rows[TrainingValidationQualityCorrelationParameter.Name].Values.Add(r); 120 102 121 103 if (OverfittingParameter.ActualValue != null && OverfittingParameter.ActualValue.Value) { … … 128 110 OverfittingParameter.ActualValue = new BoolValue(r < LowerCorrelationThresholdParameter.ActualValue.Value); 129 111 } 112 113 return base.Apply(); 130 114 } 131 115 } -
branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/SingleObjective/SymbolicRegressionSingleObjectivePearsonRSquaredEvaluator.cs
r5742 r5747 27 27 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 28 28 using System.Linq; 29 using System; 29 30 30 31 namespace HeuristicLab.Problems.DataAnalysis.Symbolic.Regression { … … 55 56 IEnumerable<double> estimatedValues = interpreter.GetSymbolicExpressionTreeValues(solution, problemData.Dataset, rows); 56 57 IEnumerable<double> originalValues = problemData.Dataset.GetEnumeratedVariableValues(problemData.TargetVariable, rows); 57 return OnlinePearsonsRSquaredEvaluator.Calculate(estimatedValues, originalValues); 58 try { 59 return OnlinePearsonsRSquaredEvaluator.Calculate(estimatedValues, originalValues); 60 } 61 catch (ArgumentException) { 62 // if R² cannot be calculated because of NaN or ininity elements => return worst possible fitness valuse 63 return 0.0; 64 } 58 65 } 59 66 -
branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/SingleObjective/SymbolicRegressionSingleObjectiveProblem.cs
r5733 r5747 78 78 Operators.Add(new SymbolicRegressionSingleObjectiveTrainingBestSolutionAnalyzer()); 79 79 Operators.Add(new SymbolicRegressionSingleObjectiveValidationBestSolutionAnalyzer()); 80 Operators.Add(new SymbolicRegressionSingleObjectiveOverfittingAnalyzer()); 80 81 ParameterizeOperators(); 81 82 } -
branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/SingleObjective/SymbolicRegressionSingleObjectiveTrainingBestSolutionAnalyzer.cs
r5729 r5747 38 38 [StorableClass] 39 39 public sealed class SymbolicRegressionSingleObjectiveTrainingBestSolutionAnalyzer : SymbolicDataAnalysisSingleObjectiveTrainingBestSolutionAnalyzer<ISymbolicRegressionSolution>, 40 ISymbolicDataAnalysisInterpreterOperator {40 ISymbolicDataAnalysisInterpreterOperator, ISymbolicDataAnalysisBoundedOperator { 41 41 private const string ProblemDataParameterName = "ProblemData"; 42 42 private const string SymbolicDataAnalysisTreeInterpreterParameterName = "SymbolicDataAnalysisTreeInterpreter"; -
branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Analyzers/SymbolicDataAnalysisMultiObjectiveTrainingBestSolutionAnalyzer.cs
r5742 r5747 42 42 private const string TrainingBestSolutionsParameterName = "Best training solutions"; 43 43 private const string TrainingBestSolutionQualitiesParameterName = "Best training solution qualities"; 44 private const string TrainingBestSolutionsResultName = TrainingBestSolutionsParameterName;45 private const string TrainingBestSolutionQualitiesResultName = TrainingBestSolutionQualitiesParameterName;46 44 47 45 #region parameter properties … … 79 77 TrainingBestSolutions = new ItemList<T>(); 80 78 TrainingBestSolutionQualities = new ItemList<DoubleArray>(); 81 results.Add(new Result(TrainingBestSolutionQualities ResultName, TrainingBestSolutionQualities));82 results.Add(new Result(TrainingBestSolutions ResultName, TrainingBestSolutions));79 results.Add(new Result(TrainingBestSolutionQualitiesParameter.Name, TrainingBestSolutionQualitiesParameter.Description, TrainingBestSolutionQualities)); 80 results.Add(new Result(TrainingBestSolutionsParameter.Name, TrainingBestSolutionsParameter.Description, TrainingBestSolutions)); 83 81 } 84 82 … … 123 121 } 124 122 125 results[TrainingBestSolutions ResultName].Value = nonDominatedSolutions;126 results[TrainingBestSolutionQualities ResultName].Value = nonDominatedQualities;123 results[TrainingBestSolutionsParameter.Name].Value = nonDominatedSolutions; 124 results[TrainingBestSolutionQualitiesParameter.Name].Value = nonDominatedQualities; 127 125 } 128 126 #endregion -
branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Analyzers/SymbolicDataAnalysisMultiObjectiveValidationAnalyzer.cs
r5735 r5747 36 36 /// </summary> 37 37 [StorableClass] 38 public abstract class SymbolicDataAnalysis ValidationAnalyzer<T, U> : SymbolicDataAnalysisAnalyzer,38 public abstract class SymbolicDataAnalysisMultiObjectiveValidationAnalyzer<T, U> : SymbolicDataAnalysisMultiObjectiveAnalyzer, 39 39 ISymbolicDataAnalysisValidationAnalyzer<T, U> 40 where T : class, ISymbolicDataAnalysis Evaluator<U>40 where T : class, ISymbolicDataAnalysisMultiObjectiveEvaluator<U> 41 41 where U : class, IDataAnalysisProblemData { 42 42 private const string ProblemDataParameterName = "ProblemData"; … … 73 73 74 74 [StorableConstructor] 75 protected SymbolicDataAnalysis ValidationAnalyzer(bool deserializing) : base(deserializing) { }76 protected SymbolicDataAnalysis ValidationAnalyzer(SymbolicDataAnalysisValidationAnalyzer<T, U> original, Cloner cloner)75 protected SymbolicDataAnalysisMultiObjectiveValidationAnalyzer(bool deserializing) : base(deserializing) { } 76 protected SymbolicDataAnalysisMultiObjectiveValidationAnalyzer(SymbolicDataAnalysisMultiObjectiveValidationAnalyzer<T, U> original, Cloner cloner) 77 77 : base(original, cloner) { 78 78 } 79 public SymbolicDataAnalysis ValidationAnalyzer()79 public SymbolicDataAnalysisMultiObjectiveValidationAnalyzer() 80 80 : base() { 81 81 Parameters.Add(new LookupParameter<U>(ProblemDataParameterName, "The problem data of the symbolic data analysis problem.")); -
branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Analyzers/SymbolicDataAnalysisMultiObjectiveValidationBestSolutionAnalyzer.cs
r5742 r5747 38 38 [Item("SymbolicDataAnalysisMultiObjectiveValidationBestSolutionAnalyzer", "An operator that analyzes the validation best symbolic data analysis solution for multi objective symbolic data analysis problems.")] 39 39 [StorableClass] 40 public abstract class SymbolicDataAnalysisMultiObjectiveValidationBestSolutionAnalyzer<S, T, U> : SymbolicDataAnalysis ValidationAnalyzer<T, U>,40 public abstract class SymbolicDataAnalysisMultiObjectiveValidationBestSolutionAnalyzer<S, T, U> : SymbolicDataAnalysisMultiObjectiveValidationAnalyzer<T, U>, 41 41 ISymbolicDataAnalysisMultiObjectiveAnalyzer 42 42 where S : class, ISymbolicDataAnalysisSolution 43 43 where T : class, ISymbolicDataAnalysisMultiObjectiveEvaluator<U> 44 44 where U : class, IDataAnalysisProblemData { 45 private const string QualitiesParameterName = "Qualities";46 private const string MaximizationParameterName = "Maximization";47 45 private const string ValidationBestSolutionsParameterName = "Best validation solutions"; 48 46 private const string ValidationBestSolutionQualitiesParameterName = "Best validation solution qualities"; 49 private const string ValidationBestSolutionsResultName = ValidationBestSolutionsParameterName;50 private const string ValidationBestSolutionQualitiesResultName = ValidationBestSolutionQualitiesParameterName;51 47 52 48 #region parameter properties 53 public IScopeTreeLookupParameter<DoubleArray> QualitiesParameter {54 get { return (IScopeTreeLookupParameter<DoubleArray>)Parameters[QualitiesParameterName]; }55 }56 public ILookupParameter<BoolArray> MaximizationParameter {57 get { return (ILookupParameter<BoolArray>)Parameters[MaximizationParameterName]; }58 }59 49 public ILookupParameter<ItemList<S>> ValidationBestSolutionsParameter { 60 50 get { return (ILookupParameter<ItemList<S>>)Parameters[ValidationBestSolutionsParameterName]; } … … 65 55 #endregion 66 56 #region properties 67 public ItemArray<DoubleArray> Qualities {68 get { return QualitiesParameter.ActualValue; }69 }70 public BoolArray Maximization {71 get { return MaximizationParameter.ActualValue; }72 }73 57 public ItemList<S> ValidationBestSolutions { 74 58 get { return ValidationBestSolutionsParameter.ActualValue; } … … 86 70 public SymbolicDataAnalysisMultiObjectiveValidationBestSolutionAnalyzer() 87 71 : base() { 88 Parameters.Add(new ScopeTreeLookupParameter<DoubleArray>(QualitiesParameterName, "The qualities of the trees that should be analyzed."));89 Parameters.Add(new LookupParameter<BoolArray>(MaximizationParameterName, "The directions of optimization for each dimension."));90 72 Parameters.Add(new LookupParameter<ItemList<S>>(ValidationBestSolutionsParameterName, "The validation best (Pareto-optimal) symbolic data analysis solutions.")); 91 73 Parameters.Add(new LookupParameter<ItemList<DoubleArray>>(ValidationBestSolutionQualitiesParameterName, "The qualities of the validation best (Pareto-optimal) solutions.")); … … 98 80 ValidationBestSolutions = new ItemList<S>(); 99 81 ValidationBestSolutionQualities = new ItemList<DoubleArray>(); 100 results.Add(new Result(ValidationBestSolutionQualities ResultName, ValidationBestSolutionQualities));101 results.Add(new Result(ValidationBestSolutions ResultName, ValidationBestSolutions));82 results.Add(new Result(ValidationBestSolutionQualitiesParameter.Name, ValidationBestSolutionQualitiesParameter.Description, ValidationBestSolutionQualities)); 83 results.Add(new Result(ValidationBestSolutionsParameter.Name, ValidationBestSolutionsParameter.Description, ValidationBestSolutions)); 102 84 } 103 85 … … 148 130 } 149 131 150 results[ValidationBestSolutions ResultName].Value = nonDominatedSolutions;151 results[ValidationBestSolutionQualities ResultName].Value = nonDominatedQualities;132 results[ValidationBestSolutionsParameter.Name].Value = nonDominatedSolutions; 133 results[ValidationBestSolutionQualitiesParameter.Name].Value = nonDominatedQualities; 152 134 } 153 135 #endregion -
branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Analyzers/SymbolicDataAnalysisSingleObjectiveTrainingBestSolutionAnalyzer.cs
r5607 r5747 41 41 private const string TrainingBestSolutionParameterName = "Best training solution"; 42 42 private const string TrainingBestSolutionQualityParameterName = "Best training solution quality"; 43 private const string TrainingBestSolutionResultName = TrainingBestSolutionParameterName;44 private const string TrainingBestSolutionQualityResultName = TrainingBestSolutionQualityParameterName;45 43 46 44 #region parameter properties … … 92 90 TrainingBestSolutionQuality = new DoubleValue(bestQuality); 93 91 94 if (!results.ContainsKey(TrainingBestSolutionParameter Name)) {95 results.Add(new Result(TrainingBestSolution ResultName, TrainingBestSolution));96 results.Add(new Result(TrainingBestSolutionQuality ResultName, TrainingBestSolutionQuality));92 if (!results.ContainsKey(TrainingBestSolutionParameter.Name)) { 93 results.Add(new Result(TrainingBestSolutionParameter.Name, TrainingBestSolutionParameter.Description, TrainingBestSolution)); 94 results.Add(new Result(TrainingBestSolutionQualityParameter.Name, TrainingBestSolutionQualityParameter.Description, TrainingBestSolutionQuality)); 97 95 } else { 98 results[TrainingBestSolution ResultName].Value = TrainingBestSolution;99 results[TrainingBestSolutionQuality ResultName].Value = TrainingBestSolutionQuality;96 results[TrainingBestSolutionParameter.Name].Value = TrainingBestSolution; 97 results[TrainingBestSolutionQualityParameter.Name].Value = TrainingBestSolutionQuality; 100 98 } 101 99 } -
branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Analyzers/SymbolicDataAnalysisSingleObjectiveValidationAnalyzer.cs
r5735 r5747 36 36 /// </summary> 37 37 [StorableClass] 38 public abstract class SymbolicDataAnalysis ValidationAnalyzer<T, U> : SymbolicDataAnalysisAnalyzer,38 public abstract class SymbolicDataAnalysisSingleObjectiveValidationAnalyzer<T, U> : SymbolicDataAnalysisSingleObjectiveAnalyzer, 39 39 ISymbolicDataAnalysisValidationAnalyzer<T, U> 40 where T : class, ISymbolicDataAnalysis Evaluator<U>40 where T : class, ISymbolicDataAnalysisSingleObjectiveEvaluator<U> 41 41 where U : class, IDataAnalysisProblemData { 42 42 private const string ProblemDataParameterName = "ProblemData"; … … 73 73 74 74 [StorableConstructor] 75 protected SymbolicDataAnalysis ValidationAnalyzer(bool deserializing) : base(deserializing) { }76 protected SymbolicDataAnalysis ValidationAnalyzer(SymbolicDataAnalysisValidationAnalyzer<T, U> original, Cloner cloner)75 protected SymbolicDataAnalysisSingleObjectiveValidationAnalyzer(bool deserializing) : base(deserializing) { } 76 protected SymbolicDataAnalysisSingleObjectiveValidationAnalyzer(SymbolicDataAnalysisSingleObjectiveValidationAnalyzer<T, U> original, Cloner cloner) 77 77 : base(original, cloner) { 78 78 } 79 public SymbolicDataAnalysis ValidationAnalyzer()79 public SymbolicDataAnalysisSingleObjectiveValidationAnalyzer() 80 80 : base() { 81 81 Parameters.Add(new LookupParameter<U>(ProblemDataParameterName, "The problem data of the symbolic data analysis problem.")); -
branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Analyzers/SymbolicDataAnalysisSingleObjectiveValidationBestSolutionAnalyzer.cs
r5722 r5747 37 37 [Item("SymbolicDataAnalysisSingleObjectiveValidationBestSolutionAnalyzer", "An operator that analyzes the validation best symbolic data analysis solution for single objective symbolic data analysis problems.")] 38 38 [StorableClass] 39 public abstract class SymbolicDataAnalysisSingleObjectiveValidationBestSolutionAnalyzer<S, T, U> : SymbolicDataAnalysisValidationAnalyzer<T, U>, 40 ISymbolicDataAnalysisSingleObjectiveAnalyzer 39 public abstract class SymbolicDataAnalysisSingleObjectiveValidationBestSolutionAnalyzer<S, T, U> : SymbolicDataAnalysisSingleObjectiveValidationAnalyzer<T, U> 41 40 where S : class, ISymbolicDataAnalysisSolution 42 41 where T : class, ISymbolicDataAnalysisSingleObjectiveEvaluator<U> 43 42 where U : class, IDataAnalysisProblemData { 44 private const string QualityParameterName = "Quality";45 private const string MaximizationParameterName = "Maximization";46 43 private const string ValidationBestSolutionParameterName = "Best validation solution"; 47 44 private const string ValidationBestSolutionQualityParameterName = "Best validation solution quality"; 48 private const string ValidationBestSolutionResultName = ValidationBestSolutionParameterName;49 private const string ValidationBestSolutionQualityResultName = ValidationBestSolutionQualityParameterName;50 45 51 46 #region parameter properties 52 public IScopeTreeLookupParameter<DoubleValue> QualityParameter {53 get { return (IScopeTreeLookupParameter<DoubleValue>)Parameters[QualityParameterName]; }54 }55 public ILookupParameter<BoolValue> MaximizationParameter {56 get { return (ILookupParameter<BoolValue>)Parameters[MaximizationParameterName]; }57 }58 47 public ILookupParameter<S> ValidationBestSolutionParameter { 59 48 get { return (ILookupParameter<S>)Parameters[ValidationBestSolutionParameterName]; } … … 64 53 #endregion 65 54 #region properties 66 public ItemArray<DoubleValue> Quality {67 get { return QualityParameter.ActualValue; }68 }69 public BoolValue Maximization {70 get { return MaximizationParameter.ActualValue; }71 }72 55 public S ValidationBestSolution { 73 56 get { return ValidationBestSolutionParameter.ActualValue; } … … 85 68 public SymbolicDataAnalysisSingleObjectiveValidationBestSolutionAnalyzer() 86 69 : base() { 87 Parameters.Add(new ScopeTreeLookupParameter<DoubleValue>(QualityParameterName, "The qualities of the trees that should be analyzed."));88 Parameters.Add(new LookupParameter<BoolValue>(MaximizationParameterName, "The direction of optimization."));89 70 Parameters.Add(new LookupParameter<S>(ValidationBestSolutionParameterName, "The validation best symbolic data analyis solution.")); 90 71 Parameters.Add(new LookupParameter<DoubleValue>(ValidationBestSolutionQualityParameterName, "The quality of the validation best symbolic data analysis solution.")); … … 117 98 ValidationBestSolutionQuality = new DoubleValue(bestQuality); 118 99 119 if (!results.ContainsKey(ValidationBestSolutionParameter Name)) {120 results.Add(new Result(ValidationBestSolution ResultName, ValidationBestSolution));121 results.Add(new Result(ValidationBestSolutionQuality ResultName, ValidationBestSolutionQuality));100 if (!results.ContainsKey(ValidationBestSolutionParameter.Name)) { 101 results.Add(new Result(ValidationBestSolutionParameter.Name, ValidationBestSolutionParameter.Description, ValidationBestSolution)); 102 results.Add(new Result(ValidationBestSolutionQualityParameter.Name, ValidationBestSolutionQualityParameter.Description, ValidationBestSolutionQuality)); 122 103 } else { 123 results[ValidationBestSolution ResultName].Value = ValidationBestSolution;124 results[ValidationBestSolutionQuality ResultName].Value = ValidationBestSolutionQuality;104 results[ValidationBestSolutionParameter.Name].Value = ValidationBestSolution; 105 results[ValidationBestSolutionQualityParameter.Name].Value = ValidationBestSolutionQuality; 125 106 } 126 107 } -
branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/HeuristicLab.Problems.DataAnalysis.Symbolic-3.4.csproj
r5745 r5747 108 108 </ItemGroup> 109 109 <ItemGroup> 110 <Compile Include="Analyzers\SymbolicDataAnalysisMultiObjectiveValidationAnalyzer.cs" /> 110 111 <Compile Include="Analyzers\SymbolicDataAnalysisMultiObjectiveValidationBestSolutionAnalyzer.cs" /> 112 <Compile Include="Analyzers\SymbolicDataAnalysisSingleObjectiveValidationAnalyzer.cs" /> 111 113 <Compile Include="Analyzers\SymbolicDataAnalysisSingleObjectiveValidationBestSolutionAnalyzer.cs" /> 112 <Compile Include="Analyzers\SymbolicDataAnalysisValidationAnalyzer.cs" />113 114 <Compile Include="Analyzers\SymbolicDataAnalysisMultiObjectiveAnalyzer.cs" /> 114 115 <Compile Include="Analyzers\SymbolicDataAnalysisSingleObjectiveAnalyzer.cs" />
Note: See TracChangeset
for help on using the changeset viewer.