Changeset 4678
- Timestamp:
- 10/29/10 19:26:56 (14 years ago)
- Location:
- branches/CloningRefactoring
- Files:
-
- 60 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis.Classification/3.3/ClassificationProblemData.cs
r4618 r4678 196 196 } 197 197 198 [StorableConstructor] 199 protected ClassificationProblemData(bool deserializing) : base(deserializing) { } 200 protected ClassificationProblemData(ClassificationProblemData original, Cloner cloner) 201 : base(original, cloner) { 202 RegisterParameterEvents(); 203 UpdateClassValues(); 204 } 198 205 public ClassificationProblemData() 199 206 : base(new Dataset(defaultInputs, defaultData), defaultInputs, defaultInputs[defaultInputs.Length - 1], 0, 60, 60, 120) { … … 207 214 } 208 215 209 [StorableConstructor] 210 protected ClassificationProblemData(bool deserializing) : base(deserializing) { } 216 public override IDeepCloneable Clone(Cloner cloner) { 217 return new ClassificationProblemData(this, cloner); 218 } 219 211 220 [StorableHook(HookType.AfterDeserialization)] 212 private void AfterDeserialization Hook() {221 private void AfterDeserialization() { 213 222 RegisterParameterEvents(); 214 223 RegisterParameterValueEvents(); 215 }216 217 public override IDeepCloneable Clone(Cloner cloner) {218 ClassificationProblemData clone = (ClassificationProblemData)base.Clone(cloner);219 clone.RegisterParameterEvents();220 clone.UpdateClassValues();221 return clone;222 224 } 223 225 -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis.Classification/3.3/SingleObjectiveClassificationProblem.cs
r4565 r4678 49 49 [StorableConstructor] 50 50 protected SingleObjectiveClassificationProblem(bool deserializing) : base(deserializing) { } 51 protected SingleObjectiveClassificationProblem(SingleObjectiveClassificationProblem<T, U> original, Cloner cloner) 52 : base(original, cloner) { 53 Initialize(); 54 } 51 55 public SingleObjectiveClassificationProblem() 52 56 : base() { 53 57 Parameters.Add(new ValueParameter<ClassificationProblemData>(ClassificationProblemDataParameterName, "The data set, target variable and input variables of the data analysis problem.")); 54 58 ClassificationProblemData = new ClassificationProblemData(); 55 RegisterParameterEvents(); 56 RegisterParameterValueEvents(); 59 Initialize(); 57 60 } 58 61 59 62 [StorableHook(HookType.AfterDeserialization)] 60 private void AfterDeserializationHook() { 63 private void AfterDeserialization() { 64 Initialize(); 65 } 66 private void Initialize() { 61 67 RegisterParameterEvents(); 62 68 RegisterParameterValueEvents(); 63 }64 65 public override IDeepCloneable Clone(Cloner cloner) {66 SingleObjectiveClassificationProblem<T, U> clone = (SingleObjectiveClassificationProblem<T, U>)base.Clone(cloner);67 clone.RegisterParameterEvents();68 clone.RegisterParameterValueEvents();69 return clone;70 69 } 71 70 -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis.Classification/3.3/Symbolic/Analyzer/ValidationBestSymbolicClassificationSolutionAnalyzer.cs
r4469 r4678 23 23 using System.Linq; 24 24 using HeuristicLab.Analysis; 25 using HeuristicLab.Common; 25 26 using HeuristicLab.Core; 26 27 using HeuristicLab.Data; … … 180 181 #endregion 181 182 183 [StorableConstructor] 184 private ValidationBestSymbolicClassificationSolutionAnalyzer(bool deserializing) : base(deserializing) { } 185 protected ValidationBestSymbolicClassificationSolutionAnalyzer(ValidationBestSymbolicClassificationSolutionAnalyzer original, Cloner cloner) 186 : base(original, cloner) { 187 } 182 188 public ValidationBestSymbolicClassificationSolutionAnalyzer() 183 189 : base() { … … 204 210 } 205 211 206 [StorableConstructor] 207 private ValidationBestSymbolicClassificationSolutionAnalyzer(bool deserializing) : base(deserializing) { } 212 public override IDeepCloneable Clone(Cloner cloner) { 213 return new ValidationBestSymbolicClassificationSolutionAnalyzer(this, cloner); 214 } 208 215 209 216 public override IOperation Apply() { … … 304 311 } 305 312 } 306 307 313 } 308 314 } -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis.Classification/3.3/Symbolic/Evaluators/SymbolicClassificationMeanSquaredErrorEvaluator.cs
r4391 r4678 20 20 #endregion 21 21 22 using HeuristicLab.Common; 22 23 using HeuristicLab.Core; 23 24 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; … … 27 28 [Item("SymbolicClassificationMeanSquaredErrorEvaluator", "Calculates the mean squared error of a symbolic classification solution.")] 28 29 [StorableClass] 29 public class SymbolicClassifacitionMeanSquaredErrorEvaluator : SymbolicRegressionMeanSquaredErrorEvaluator, ISymbolicClassificationEvaluator {30 public sealed class SymbolicClassifacitionMeanSquaredErrorEvaluator : SymbolicRegressionMeanSquaredErrorEvaluator, ISymbolicClassificationEvaluator { 30 31 public ClassificationProblemData ClassificationProblemData { 31 32 get { return (ClassificationProblemData)RegressionProblemData; } 32 33 } 33 34 34 public SymbolicClassifacitionMeanSquaredErrorEvaluator() 35 : base() { 35 [StorableConstructor] 36 private SymbolicClassifacitionMeanSquaredErrorEvaluator(bool deserializing) : base(deserializing) { } 37 private SymbolicClassifacitionMeanSquaredErrorEvaluator(SymbolicClassifacitionMeanSquaredErrorEvaluator original, Cloner cloner) : base(original, cloner) { } 38 public SymbolicClassifacitionMeanSquaredErrorEvaluator() : base() { } 39 public override IDeepCloneable Clone(Cloner cloner) { 40 return new SymbolicClassifacitionMeanSquaredErrorEvaluator(this, cloner); 36 41 } 37 42 } -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis.Classification/3.3/Symbolic/Evaluators/SymbolicClassificationPearsonRSquaredEvaluator.cs
r4392 r4678 20 20 #endregion 21 21 22 using HeuristicLab.Common; 22 23 using HeuristicLab.Core; 23 24 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; … … 27 28 [Item("SymbolicClassificationPearsonRSquaredEvaluator", "Calculates the pearson R² correlation coefficient of a symbolic classification solution.")] 28 29 [StorableClass] 29 public class SymbolicClassificationPearsonRSquaredEvaluator : SymbolicRegressionPearsonsRSquaredEvaluator, ISymbolicClassificationEvaluator {30 public sealed class SymbolicClassificationPearsonRSquaredEvaluator : SymbolicRegressionPearsonsRSquaredEvaluator, ISymbolicClassificationEvaluator { 30 31 public ClassificationProblemData ClassificationProblemData { 31 32 get { return (ClassificationProblemData)RegressionProblemData; } 32 33 } 33 34 34 public SymbolicClassificationPearsonRSquaredEvaluator() 35 : base() { 35 [StorableConstructor] 36 private SymbolicClassificationPearsonRSquaredEvaluator(bool deserializing) : base(deserializing) { } 37 private SymbolicClassificationPearsonRSquaredEvaluator(SymbolicClassificationPearsonRSquaredEvaluator original, Cloner cloner) : base(original, cloner) { } 38 public SymbolicClassificationPearsonRSquaredEvaluator() : base() { } 39 40 public override IDeepCloneable Clone(Cloner cloner) { 41 return new SymbolicClassificationPearsonRSquaredEvaluator(this, cloner); 36 42 } 37 43 } -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis.Classification/3.3/Symbolic/SymbolicClassificationProblem.cs
r4452 r4678 42 42 [StorableClass] 43 43 [Creatable("Problems")] 44 public class SymbolicClassificationProblem : SingleObjectiveClassificationProblem<ISymbolicClassificationEvaluator, ISymbolicExpressionTreeCreator>, IStorableContent {44 public sealed class SymbolicClassificationProblem : SingleObjectiveClassificationProblem<ISymbolicClassificationEvaluator, ISymbolicExpressionTreeCreator>, IStorableContent { 45 45 private const string SymbolicExpressionTreeInterpreterParameterName = "SymbolicExpressionTreeInterpreter"; 46 46 private const string FunctionTreeGrammarParameterName = "FunctionTreeGrammar"; … … 133 133 134 134 [StorableConstructor] 135 protected SymbolicClassificationProblem(bool deserializing) : base(deserializing) { } 135 private SymbolicClassificationProblem(bool deserializing) : base(deserializing) { } 136 private SymbolicClassificationProblem(SymbolicClassificationProblem original, Cloner cloner) 137 : base(original, cloner) { 138 RegisterParameterEvents(); 139 140 UpdateEstimationLimits(); 141 ParameterizeEvaluator(); 142 ParameterizeSolutionCreator(); 143 ParameterizeGrammar(); 144 ParameterizeOperators(); 145 ParameterizeAnalyzers(); 146 } 136 147 public SymbolicClassificationProblem() 137 148 : base() { … … 167 178 } 168 179 169 170 [StorableHook(HookType.AfterDeserialization)] 171 private void AfterDeserialization() { 172 180 public override IDeepCloneable Clone(Cloner cloner) { 181 return new SymbolicClassificationProblem(this, cloner); 173 182 } 174 183 -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis.Classification/3.3/Symbolic/SymbolicClassificationSolution.cs
r4469 r4678 35 35 [StorableClass] 36 36 public class SymbolicClassificationSolution : SymbolicRegressionSolution, IClassificationSolution { 37 public new ClassificationProblemData ProblemData { 38 get { return (ClassificationProblemData)base.ProblemData; } 39 set { base.ProblemData = value; } 40 } 41 42 #region properties 43 private List<double> optimalThresholds; 44 private List<double> actualThresholds; 45 public IEnumerable<double> Thresholds { 46 get { 47 if (actualThresholds == null) RecalculateEstimatedValues(); 48 return actualThresholds; 49 } 50 set { 51 if (actualThresholds != null && actualThresholds.SequenceEqual(value)) 52 return; 53 actualThresholds = new List<double>(value); 54 OnThresholdsChanged(); 55 } 56 } 57 58 public IEnumerable<double> EstimatedClassValues { 59 get { return GetEstimatedClassValues(Enumerable.Range(0, ProblemData.Dataset.Rows)); } 60 } 61 62 public IEnumerable<double> EstimatedTrainingClassValues { 63 get { return GetEstimatedClassValues(ProblemData.TrainingIndizes); } 64 } 65 66 public IEnumerable<double> EstimatedTestClassValues { 67 get { return GetEstimatedClassValues(ProblemData.TestIndizes); } 68 } 69 70 [StorableConstructor] 71 protected SymbolicClassificationSolution(bool deserializing) : base(deserializing) { } 72 protected SymbolicClassificationSolution(SymbolicClassificationSolution original, Cloner cloner) : base(original, cloner) { } 37 73 private SymbolicClassificationSolution() : base() { } 38 74 public SymbolicClassificationSolution(ClassificationProblemData problemData, SymbolicRegressionModel model, double lowerEstimationLimit, double upperEstimationLimit) … … 40 76 } 41 77 42 public new ClassificationProblemData ProblemData { 43 get { return (ClassificationProblemData)base.ProblemData; } 44 set { base.ProblemData = value; } 78 public override IDeepCloneable Clone(Cloner cloner) { 79 return new SymbolicClassificationSolution(this, cloner); 45 80 } 46 81 … … 114 149 } 115 150 116 #region properties117 private List<double> optimalThresholds;118 private List<double> actualThresholds;119 public IEnumerable<double> Thresholds {120 get {121 if (actualThresholds == null) RecalculateEstimatedValues();122 return actualThresholds;123 }124 set {125 if (actualThresholds != null && actualThresholds.SequenceEqual(value))126 return;127 actualThresholds = new List<double>(value);128 OnThresholdsChanged();129 }130 }131 132 public IEnumerable<double> EstimatedClassValues {133 get { return GetEstimatedClassValues(Enumerable.Range(0, ProblemData.Dataset.Rows)); }134 }135 136 public IEnumerable<double> EstimatedTrainingClassValues {137 get { return GetEstimatedClassValues(ProblemData.TrainingIndizes); }138 }139 140 public IEnumerable<double> EstimatedTestClassValues {141 get { return GetEstimatedClassValues(ProblemData.TestIndizes); }142 }143 144 151 public IEnumerable<double> GetEstimatedClassValues(IEnumerable<int> rows) { 145 152 double[] classValues = ProblemData.SortedClassValues.ToArray(); -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Analyzers/RegressionSolutionAnalyzer.cs
r4468 r4678 21 21 22 22 using System.Collections.Generic; 23 using HeuristicLab.Common; 23 24 using HeuristicLab.Core; 24 25 using HeuristicLab.Data; … … 89 90 #endregion 90 91 92 93 [StorableConstructor] 94 protected RegressionSolutionAnalyzer(bool deserializing) : base(deserializing) { } 95 protected RegressionSolutionAnalyzer(RegressionSolutionAnalyzer original, Cloner cloner) : base(original, cloner) { } 91 96 public RegressionSolutionAnalyzer() 92 97 : base() { … … 101 106 102 107 [StorableHook(HookType.AfterDeserialization)] 103 private void Initialize() {108 private void AfterDeserialization() { 104 109 // backwards compatibility 105 110 if (!Parameters.ContainsKey(GenerationsParameterName)) { -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis.Regression/3.3/LinearRegression/LinearRegressionSolutionCreator.cs
r4082 r4678 23 23 using System.Collections.Generic; 24 24 using System.Linq; 25 using HeuristicLab.Common; 25 26 using HeuristicLab.Core; 26 27 using HeuristicLab.Data; … … 39 40 [Item("LinearRegressionSolutionCreator", "Uses linear regression to create a structure tree.")] 40 41 [StorableClass] 41 public class LinearRegressionSolutionCreator : SingleSuccessorOperator, ISolutionCreator {42 public sealed class LinearRegressionSolutionCreator : SingleSuccessorOperator, ISolutionCreator { 42 43 private const string SymbolicExpressionTreeParameterName = "SymbolicExpressionTree"; 43 44 private const string DataAnalysisProblemDataParameterName = "DataAnalysisProblemData"; … … 45 46 private const string SamplesEndParameterName = "SamplesEnd"; 46 47 48 [StorableConstructor] 49 private LinearRegressionSolutionCreator(bool deserializing) : base(deserializing) { } 50 private LinearRegressionSolutionCreator(LinearRegressionSolutionCreator original, Cloner cloner) : base(original, cloner) { } 47 51 public LinearRegressionSolutionCreator() { 48 52 Parameters.Add(new LookupParameter<SymbolicExpressionTree>(SymbolicExpressionTreeParameterName, "The resulting solution encoded as a symbolic expression tree.")); … … 51 55 Parameters.Add(new ValueLookupParameter<IntValue>(SamplesEndParameterName, "The end of the samples on which the linear regression should be applied.")); 52 56 } 53 [StorableConstructor] 54 public LinearRegressionSolutionCreator(bool deserializing)55 : base(deserializing) {57 58 public override IDeepCloneable Clone(Cloner cloner) { 59 return new LinearRegressionSolutionCreator(this, cloner); 56 60 } 57 61 -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis.Regression/3.3/SupportVectorRegression/BestSupportVectorRegressionSolutionAnalyzer.cs
r4543 r4678 22 22 using System.Collections.Generic; 23 23 using System.Linq; 24 using HeuristicLab.Common; 24 25 using HeuristicLab.Core; 25 26 using HeuristicLab.Data; … … 52 53 #endregion 53 54 55 [StorableConstructor] 56 private BestSupportVectorRegressionSolutionAnalyzer(bool deserializing) : base(deserializing) { } 57 private BestSupportVectorRegressionSolutionAnalyzer(BestSupportVectorRegressionSolutionAnalyzer original, Cloner cloner) : base(original, cloner) { } 54 58 public BestSupportVectorRegressionSolutionAnalyzer() 55 59 : base() { 56 60 Parameters.Add(new ScopeTreeLookupParameter<SupportVectorMachineModel>(SupportVectorRegressionModelParameterName, "The support vector regression models to analyze.")); 57 61 Parameters.Add(new LookupParameter<SupportVectorRegressionSolution>(BestSolutionParameterName, "The best support vector regression solution.")); 62 } 63 64 public override IDeepCloneable Clone(Cloner cloner) { 65 return new BestSupportVectorRegressionSolutionAnalyzer(this, cloner); 58 66 } 59 67 -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis.Regression/3.3/SupportVectorRegression/SupportVectorRegressionSolution.cs
r4543 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; … … 36 37 [StorableClass] 37 38 public sealed class SupportVectorRegressionSolution : DataAnalysisSolution { 38 public SupportVectorRegressionSolution() : base() { }39 public SupportVectorRegressionSolution(DataAnalysisProblemData problemData, SupportVectorMachineModel model, IEnumerable<string> inputVariables, double lowerEstimationLimit, double upperEstimationLimit)40 : base(problemData, lowerEstimationLimit, upperEstimationLimit) {41 this.Model = model;42 }43 44 39 public override Image ItemImage { 45 40 get { return HeuristicLab.Common.Resources.VS2008ImageLibrary.Function; } … … 53 48 public Dataset SupportVectors { 54 49 get { return CalculateSupportVectors(); } 50 } 51 52 private List<double> estimatedValues; 53 public override IEnumerable<double> EstimatedValues { 54 get { 55 if (estimatedValues == null) RecalculateEstimatedValues(); 56 return estimatedValues; 57 } 58 } 59 60 public override IEnumerable<double> EstimatedTrainingValues { 61 get { 62 return GetEstimatedValues(ProblemData.TrainingIndizes); 63 } 64 } 65 66 public override IEnumerable<double> EstimatedTestValues { 67 get { 68 return GetEstimatedValues(ProblemData.TestIndizes); 69 } 70 } 71 72 [StorableConstructor] 73 private SupportVectorRegressionSolution(bool deserializing) : base(deserializing) { } 74 private SupportVectorRegressionSolution(SupportVectorRegressionSolution original, Cloner cloner) : base(original, cloner) { } 75 public SupportVectorRegressionSolution() : base() { } 76 public SupportVectorRegressionSolution(DataAnalysisProblemData problemData, SupportVectorMachineModel model, IEnumerable<string> inputVariables, double lowerEstimationLimit, double upperEstimationLimit) 77 : base(problemData, lowerEstimationLimit, upperEstimationLimit) { 78 this.Model = model; 79 } 80 81 public override IDeepCloneable Clone(Cloner cloner) { 82 return new SupportVectorRegressionSolution(this, cloner); 55 83 } 56 84 … … 83 111 } 84 112 85 private List<double> estimatedValues;86 public override IEnumerable<double> EstimatedValues {87 get {88 if (estimatedValues == null) RecalculateEstimatedValues();89 return estimatedValues;90 }91 }92 93 public override IEnumerable<double> EstimatedTrainingValues {94 get {95 return GetEstimatedValues(ProblemData.TrainingIndizes);96 }97 }98 99 public override IEnumerable<double> EstimatedTestValues {100 get {101 return GetEstimatedValues(ProblemData.TestIndizes);102 }103 }104 113 105 114 private IEnumerable<double> GetEstimatedValues(IEnumerable<int> rows) { -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/Analyzers/BestSymbolicRegressionSolutionAnalyzer.cs
r4468 r4678 22 22 using System.Linq; 23 23 using HeuristicLab.Analysis; 24 using HeuristicLab.Common; 24 25 using HeuristicLab.Core; 25 26 using HeuristicLab.Data; … … 67 68 #endregion 68 69 70 [StorableConstructor] 71 private BestSymbolicRegressionSolutionAnalyzer(bool deserializing) : base(deserializing) { } 72 private BestSymbolicRegressionSolutionAnalyzer(BestSymbolicRegressionSolutionAnalyzer original, Cloner cloner) : base(original, cloner) { } 69 73 public BestSymbolicRegressionSolutionAnalyzer() 70 74 : base() { … … 75 79 } 76 80 81 public override IDeepCloneable Clone(Cloner cloner) { 82 return new BestSymbolicRegressionSolutionAnalyzer(this, cloner); 83 } 84 77 85 [StorableHook(HookType.AfterDeserialization)] 78 private void Initialize() {86 private void AfterDeserialization() { 79 87 if (!Parameters.ContainsKey(VariableFrequenciesParameterName)) { 80 88 Parameters.Add(new LookupParameter<DataTable>(VariableFrequenciesParameterName, "The variable frequencies table to use for the calculation of variable impacts")); -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/Analyzers/FixedValidationBestScaledSymbolicRegressionSolutionAnalyzer.cs
r4468 r4678 23 23 using System.Linq; 24 24 using HeuristicLab.Analysis; 25 using HeuristicLab.Common; 25 26 using HeuristicLab.Core; 26 27 using HeuristicLab.Data; … … 165 166 #endregion 166 167 168 [StorableConstructor] 169 private FixedValidationBestScaledSymbolicRegressionSolutionAnalyzer(bool deserializing) : base(deserializing) { } 170 protected FixedValidationBestScaledSymbolicRegressionSolutionAnalyzer(FixedValidationBestScaledSymbolicRegressionSolutionAnalyzer original, Cloner cloner) : base(original, cloner) { } 167 171 public FixedValidationBestScaledSymbolicRegressionSolutionAnalyzer() 168 172 : base() { … … 186 190 } 187 191 188 [StorableConstructor] 189 private FixedValidationBestScaledSymbolicRegressionSolutionAnalyzer(bool deserializing) : base() { } 192 public override IDeepCloneable Clone(Cloner cloner) { 193 return new FixedValidationBestScaledSymbolicRegressionSolutionAnalyzer(this, cloner); 194 } 190 195 191 196 [StorableHook(HookType.AfterDeserialization)] -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/Analyzers/SymbolicRegressionModelQualityAnalyzer.cs
r4468 r4678 24 24 using System.Linq; 25 25 using HeuristicLab.Analysis; 26 using HeuristicLab.Common; 26 27 using HeuristicLab.Core; 27 28 using HeuristicLab.Data; … … 118 119 #endregion 119 120 121 [StorableConstructor] 122 private SymbolicRegressionModelQualityAnalyzer(bool deserializing) : base(deserializing) { } 123 private SymbolicRegressionModelQualityAnalyzer(SymbolicRegressionModelQualityAnalyzer original, Cloner cloner) : base(original, cloner) { } 120 124 public SymbolicRegressionModelQualityAnalyzer() 121 125 : base() { … … 131 135 } 132 136 133 [StorableConstructor] 134 private SymbolicRegressionModelQualityAnalyzer(bool deserializing) : base() { } 137 public override IDeepCloneable Clone(Cloner cloner) { 138 return new SymbolicRegressionModelQualityAnalyzer(this, cloner); 139 } 135 140 136 141 public override IOperation Apply() { -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/Analyzers/SymbolicRegressionModelQualityCalculator.cs
r4468 r4678 21 21 22 22 using System; 23 using HeuristicLab.Common; 23 24 using HeuristicLab.Core; 24 25 using HeuristicLab.Data; … … 83 84 #endregion 84 85 86 [StorableConstructor] 87 private SymbolicRegressionModelQualityCalculator(bool deserializing) : base(deserializing) { } 88 private SymbolicRegressionModelQualityCalculator(SymbolicRegressionModelQualityCalculator original, Cloner cloner) : base(original, cloner) { } 85 89 public SymbolicRegressionModelQualityCalculator() 86 90 : base() { … … 138 142 139 143 } 144 public override IDeepCloneable Clone(Cloner cloner) { 145 return new SymbolicRegressionModelQualityCalculator(this, cloner); 146 } 140 147 } 141 148 } -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/Analyzers/SymbolicRegressionSolutionLinearScaler.cs
r4068 r4678 20 20 #endregion 21 21 22 using HeuristicLab.Common; 22 23 using HeuristicLab.Core; 23 24 using HeuristicLab.Data; … … 53 54 } 54 55 56 [StorableConstructor] 57 private SymbolicRegressionSolutionLinearScaler(bool deserializing) : base(deserializing) { } 58 private SymbolicRegressionSolutionLinearScaler(SymbolicRegressionSolutionLinearScaler original, Cloner cloner) : base(original, cloner) { } 55 59 public SymbolicRegressionSolutionLinearScaler() 56 60 : base() { … … 59 63 Parameters.Add(new LookupParameter<DoubleValue>(AlphaParameterName, "Alpha parameter for linear transformation.")); 60 64 Parameters.Add(new LookupParameter<DoubleValue>(BetaParameterName, "Beta parameter for linear transformation.")); 65 } 66 67 public override IDeepCloneable Clone(Cloner cloner) { 68 return new SymbolicRegressionSolutionLinearScaler(this, cloner); 61 69 } 62 70 -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/Analyzers/SymbolicRegressionTournamentPruning.cs
r4468 r4678 22 22 using System.Collections.Generic; 23 23 using System.Linq; 24 using HeuristicLab.Common; 24 25 using HeuristicLab.Core; 25 26 using HeuristicLab.Data; … … 33 34 34 35 namespace HeuristicLab.Problems.DataAnalysis.Regression.Symbolic.Analyzers { 35 public class SymbolicRegressionTournamentPruning : SingleSuccessorOperator, ISymbolicRegressionAnalyzer {36 public sealed class SymbolicRegressionTournamentPruning : SingleSuccessorOperator, ISymbolicRegressionAnalyzer { 36 37 private const string RandomParameterName = "Random"; 37 38 private const string SymbolicExpressionTreeParameterName = "SymbolicExpressionTree"; … … 176 177 } 177 178 #endregion 178 protected SymbolicRegressionTournamentPruning(bool deserializing) : base(deserializing) { } 179 180 [StorableConstructor] 181 private SymbolicRegressionTournamentPruning(bool deserializing) : base(deserializing) { } 182 protected SymbolicRegressionTournamentPruning(SymbolicRegressionTournamentPruning original, Cloner cloner) : base(original, cloner) { } 179 183 public SymbolicRegressionTournamentPruning() 180 184 : base() { … … 201 205 } 202 206 207 public override IDeepCloneable Clone(Cloner cloner) { 208 return new SymbolicRegressionTournamentPruning(this, cloner); 209 } 210 203 211 [StorableHook(HookType.AfterDeserialization)] 204 212 private void AfterDeserialization() { … … 241 249 double lowerEstimationLimit, double upperEstimationLimit, 242 250 double maxPruningRatio, double qualityGainWeight) { 243 244 251 IEnumerable<int> rows = Enumerable.Range(samplesStart, samplesEnd - samplesStart) 252 .Where(i => i < problemData.TestSamplesStart.Value || problemData.TestSamplesEnd.Value <= i); 245 253 int originalSize = tree.Size; 246 254 double originalQuality = evaluator.Evaluate(interpreter, tree, -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/Analyzers/SymbolicRegressionVariableFrequencyAnalyzer.cs
r4068 r4678 22 22 using System.Linq; 23 23 using HeuristicLab.Analysis; 24 using HeuristicLab.Common; 24 25 using HeuristicLab.Core; 25 26 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding; … … 60 61 #endregion 61 62 63 [StorableConstructor] 64 private SymbolicRegressionVariableFrequencyAnalyzer(bool deserializing) : base(deserializing) { } 65 private SymbolicRegressionVariableFrequencyAnalyzer(SymbolicRegressionVariableFrequencyAnalyzer original, Cloner cloner) : base(original, cloner) { } 62 66 public SymbolicRegressionVariableFrequencyAnalyzer() 63 67 : base() { … … 66 70 Parameters.Add(new ValueLookupParameter<DataTable>(VariableFrequenciesParameterName, "The data table to store the variable frequencies.")); 67 71 Parameters.Add(new LookupParameter<ResultCollection>(ResultsParameterName, "The result collection where the best symbolic regression solution should be stored.")); 72 } 73 74 public override IDeepCloneable Clone(Cloner cloner) { 75 return new SymbolicRegressionVariableFrequencyAnalyzer(this, cloner); 68 76 } 69 77 -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/Analyzers/ValidationBestScaledSymbolicRegressionSolutionAnalyzer.cs
r4468 r4678 135 135 private ResultsCollector resultsCollector; 136 136 137 [StorableConstructor] 138 private ValidationBestScaledSymbolicRegressionSolutionAnalyzer(bool deserializing) : base(deserializing) { } 139 private ValidationBestScaledSymbolicRegressionSolutionAnalyzer(ValidationBestScaledSymbolicRegressionSolutionAnalyzer original, Cloner cloner) 140 : base(original, cloner) { 141 Initialize(); 142 } 137 143 public ValidationBestScaledSymbolicRegressionSolutionAnalyzer() 138 144 : base() { … … 249 255 } 250 256 251 [StorableConstructor] 252 private ValidationBestScaledSymbolicRegressionSolutionAnalyzer(bool deserializing) : base() { } 257 public override IDeepCloneable Clone(Cloner cloner) { 258 return new ValidationBestScaledSymbolicRegressionSolutionAnalyzer(this, cloner); 259 } 253 260 254 261 [StorableHook(HookType.AfterDeserialization)] 262 private void AfterDeserialization() { 263 Initialize(); 264 } 255 265 private void Initialize() { 256 266 SymbolicExpressionTreeParameter.DepthChanged += new EventHandler(SymbolicExpressionTreeParameter_DepthChanged); 257 267 } 258 268 259 public override IDeepCloneable Clone(Cloner cloner) {260 ValidationBestScaledSymbolicRegressionSolutionAnalyzer clone = (ValidationBestScaledSymbolicRegressionSolutionAnalyzer)base.Clone(cloner);261 clone.Initialize();262 return clone;263 }264 269 265 270 private void SymbolicExpressionTreeParameter_DepthChanged(object sender, EventArgs e) { -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/Evaluators/MultiObjectiveSymbolicRegressionEvaluator.cs
r4468 r4678 22 22 using System.Collections.Generic; 23 23 using System.Linq; 24 using HeuristicLab.Common; 24 25 using HeuristicLab.Core; 25 26 using HeuristicLab.Data; … … 102 103 #endregion 103 104 105 [StorableConstructor] 106 protected MultiObjectiveSymbolicRegressionEvaluator(bool deserializing) : base(deserializing) { } 107 protected MultiObjectiveSymbolicRegressionEvaluator(MultiObjectiveSymbolicRegressionEvaluator original, Cloner cloner) : base(original, cloner) { } 104 108 public MultiObjectiveSymbolicRegressionEvaluator() 105 109 : base() { … … 112 116 Parameters.Add(new ValueLookupParameter<IntValue>(SamplesEndParameterName, "The end index of the dataset partition on which the symbolic regression solution should be evaluated.")); 113 117 Parameters.Add(new ValueParameter<PercentValue>(RelativeNumberOfEvaluatedSamplesParameterName, "The relative number of samples of the dataset partition, which should be randomly chosen for evaluation between the start and end index.", new PercentValue(1))); 114 }115 116 [StorableConstructor]117 protected MultiObjectiveSymbolicRegressionEvaluator(bool deserializing) : base(deserializing) { }118 [StorableHook(Persistence.Default.CompositeSerializers.Storable.HookType.AfterDeserialization)]119 private void AfterDeserialization() {120 118 } 121 119 -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/Evaluators/MultiObjectiveSymbolicRegressionMeanSquaredErrorEvaluator.cs
r4166 r4678 20 20 #endregion 21 21 22 using System;23 22 using System.Collections.Generic; 23 using HeuristicLab.Common; 24 24 using HeuristicLab.Core; 25 25 using HeuristicLab.Data; … … 27 27 using HeuristicLab.Parameters; 28 28 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 29 using HeuristicLab.Problems.DataAnalysis.Evaluators;30 29 using HeuristicLab.Problems.DataAnalysis.Symbolic; 31 30 using HeuristicLab.Problems.DataAnalysis.Symbolic.Symbols; … … 34 33 [Item("MultiObjectiveSymbolicRegressionMeanSquaredErrorEvaluator", "Calculates the mean squared error and the number of variables of a symbolic regression solution.")] 35 34 [StorableClass] 36 public class MultiObjectiveSymbolicRegressionMeanSquaredErrorEvaluator : MultiObjectiveSymbolicRegressionEvaluator {35 public sealed class MultiObjectiveSymbolicRegressionMeanSquaredErrorEvaluator : MultiObjectiveSymbolicRegressionEvaluator { 37 36 private const string UpperEstimationLimitParameterName = "UpperEstimationLimit"; 38 37 private const string LowerEstimationLimitParameterName = "LowerEstimationLimit"; … … 54 53 } 55 54 #endregion 55 [StorableConstructor] 56 private MultiObjectiveSymbolicRegressionMeanSquaredErrorEvaluator(bool deserializing) : base(deserializing) { } 57 private MultiObjectiveSymbolicRegressionMeanSquaredErrorEvaluator(MultiObjectiveSymbolicRegressionMeanSquaredErrorEvaluator original, Cloner cloner) 58 : base(original, cloner) { 59 } 56 60 public MultiObjectiveSymbolicRegressionMeanSquaredErrorEvaluator() 57 61 : base() { 58 62 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.")); 59 63 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.")); 64 } 65 66 public override IDeepCloneable Clone(Cloner cloner) { 67 return new MultiObjectiveSymbolicRegressionMeanSquaredErrorEvaluator(this, cloner); 60 68 } 61 69 -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/Evaluators/MultiObjectiveSymbolicRegressionPearsonsRSquaredEvaluator.cs
r4128 r4678 20 20 #endregion 21 21 22 using System;23 22 using System.Collections.Generic; 23 using HeuristicLab.Common; 24 24 using HeuristicLab.Core; 25 25 using HeuristicLab.Data; … … 27 27 using HeuristicLab.Parameters; 28 28 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 29 using HeuristicLab.Problems.DataAnalysis.Evaluators;30 29 using HeuristicLab.Problems.DataAnalysis.Symbolic; 31 30 using HeuristicLab.Problems.DataAnalysis.Symbolic.Symbols; … … 34 33 [Item("MultiObjectiveSymbolicRegressionPearsonsRSquaredEvaluator", "Calculates the correlation coefficient r² and the number of variables of a symbolic regression solution.")] 35 34 [StorableClass] 36 public class MultiObjectiveSymbolicRegressionPearsonsRSquaredEvaluator : MultiObjectiveSymbolicRegressionEvaluator {35 public sealed class MultiObjectiveSymbolicRegressionPearsonsRSquaredEvaluator : MultiObjectiveSymbolicRegressionEvaluator { 37 36 private const string UpperEstimationLimitParameterName = "UpperEstimationLimit"; 38 37 private const string LowerEstimationLimitParameterName = "LowerEstimationLimit"; … … 54 53 } 55 54 #endregion 55 [StorableConstructor] 56 protected MultiObjectiveSymbolicRegressionPearsonsRSquaredEvaluator(bool deserializing) : base(deserializing) { } 57 protected MultiObjectiveSymbolicRegressionPearsonsRSquaredEvaluator(MultiObjectiveSymbolicRegressionPearsonsRSquaredEvaluator original, Cloner cloner) 58 : base(original, cloner) { 59 } 56 60 public MultiObjectiveSymbolicRegressionPearsonsRSquaredEvaluator() 57 61 : base() { 58 62 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.")); 59 63 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.")); 64 } 65 66 public override IDeepCloneable Clone(Cloner cloner) { 67 return new MultiObjectiveSymbolicRegressionPearsonsRSquaredEvaluator(this, cloner); 60 68 } 61 69 -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/Evaluators/SingleObjectiveSymbolicRegressionEvaluator.cs
r4468 r4678 23 23 using System.Collections.Generic; 24 24 using System.Linq; 25 using HeuristicLab.Common; 25 26 using HeuristicLab.Core; 26 27 using HeuristicLab.Data; … … 115 116 #endregion 116 117 118 [StorableConstructor] 119 protected SingleObjectiveSymbolicRegressionEvaluator(bool deserializing) : base(deserializing) { } 120 protected SingleObjectiveSymbolicRegressionEvaluator(SingleObjectiveSymbolicRegressionEvaluator original, Cloner cloner) 121 : base(original, cloner) { 122 } 117 123 public SingleObjectiveSymbolicRegressionEvaluator() 118 124 : base() { … … 129 135 } 130 136 131 [StorableConstructor] 132 protected SingleObjectiveSymbolicRegressionEvaluator(bool deserializing) : base(deserializing) { } 137 133 138 [StorableHook(Persistence.Default.CompositeSerializers.Storable.HookType.AfterDeserialization)] 134 139 private void AfterDeserialization() { -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/Evaluators/SymbolicRegressionMeanSquaredErrorEvaluator.cs
r4190 r4678 22 22 using System; 23 23 using System.Collections.Generic; 24 using HeuristicLab.Common; 24 25 using HeuristicLab.Core; 25 using HeuristicLab.Data;26 26 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding; 27 using HeuristicLab.Parameters;28 27 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 29 28 using HeuristicLab.Problems.DataAnalysis.Evaluators; … … 35 34 public class SymbolicRegressionMeanSquaredErrorEvaluator : SingleObjectiveSymbolicRegressionEvaluator { 36 35 37 public SymbolicRegressionMeanSquaredErrorEvaluator() 38 : base() { 36 [StorableConstructor] 37 protected SymbolicRegressionMeanSquaredErrorEvaluator(bool deserializing) : base(deserializing) { } 38 protected SymbolicRegressionMeanSquaredErrorEvaluator(SymbolicRegressionMeanSquaredErrorEvaluator original, Cloner cloner) 39 : base(original, cloner) { 40 } 41 public SymbolicRegressionMeanSquaredErrorEvaluator() : base() { } 42 43 public override IDeepCloneable Clone(Cloner cloner) { 44 return new SymbolicRegressionMeanSquaredErrorEvaluator(this, cloner); 39 45 } 40 46 -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/Evaluators/SymbolicRegressionPearsonsRSquaredEvaluator.cs
r4190 r4678 22 22 using System; 23 23 using System.Collections.Generic; 24 using HeuristicLab.Common; 24 25 using HeuristicLab.Core; 25 using HeuristicLab.Data;26 26 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding; 27 using HeuristicLab.Parameters;28 27 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 29 28 using HeuristicLab.Problems.DataAnalysis.Evaluators; … … 34 33 [StorableClass] 35 34 public class SymbolicRegressionPearsonsRSquaredEvaluator : SingleObjectiveSymbolicRegressionEvaluator { 36 public SymbolicRegressionPearsonsRSquaredEvaluator() 37 : base() { 35 [StorableConstructor] 36 protected SymbolicRegressionPearsonsRSquaredEvaluator(bool deserializing) : base(deserializing) { } 37 protected SymbolicRegressionPearsonsRSquaredEvaluator(SymbolicRegressionPearsonsRSquaredEvaluator original, Cloner cloner) 38 : base(original, cloner) { 38 39 } 40 public SymbolicRegressionPearsonsRSquaredEvaluator() : base() { } 39 41 42 public override IDeepCloneable Clone(Cloner cloner) { 43 return new SymbolicRegressionPearsonsRSquaredEvaluator(this, cloner); 44 } 40 45 public override double Evaluate(ISymbolicExpressionTreeInterpreter interpreter, SymbolicExpressionTree solution, double lowerEstimationLimit, double upperEstimationLimit, Dataset dataset, string targetVariable, IEnumerable<int> rows) { 41 46 double mse = Calculate(interpreter, solution, lowerEstimationLimit, upperEstimationLimit, dataset, targetVariable, rows); -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/Evaluators/SymbolicRegressionScaledMeanAndVarianceSquaredErrorEvaluator.cs
r4190 r4678 34 34 [Item("SymbolicRegressionScaledMeanAndVarianceSquaredErrorEvaluator", "Calculates the mean and the variance of the squared errors of a linearly scaled symbolic regression solution.")] 35 35 [StorableClass] 36 public class SymbolicRegressionScaledMeanAndVarianceSquaredErrorEvaluator : SymbolicRegressionMeanSquaredErrorEvaluator {36 public sealed class SymbolicRegressionScaledMeanAndVarianceSquaredErrorEvaluator : SymbolicRegressionMeanSquaredErrorEvaluator { 37 37 private const string QualityVarianceParameterName = "QualityVariance"; 38 38 private const string QualitySamplesParameterName = "QualitySamples"; … … 90 90 } 91 91 #endregion 92 [StorableConstructor] 93 private SymbolicRegressionScaledMeanAndVarianceSquaredErrorEvaluator(bool deserializing) : base(deserializing) { } 94 private SymbolicRegressionScaledMeanAndVarianceSquaredErrorEvaluator(SymbolicRegressionScaledMeanAndVarianceSquaredErrorEvaluator original, Cloner cloner) : base(original, cloner) { } 92 95 public SymbolicRegressionScaledMeanAndVarianceSquaredErrorEvaluator() 93 96 : base() { … … 100 103 Parameters.Add(new LookupParameter<DoubleValue>(DecompositionVarianceParameterName, "A parameter which stores the relativ bias of the MSE.")); 101 104 Parameters.Add(new LookupParameter<DoubleValue>(DecompositionCovarianceParameterName, "A parameter which stores the relativ bias of the MSE.")); 105 } 106 107 public override IDeepCloneable Clone(Cloner cloner) { 108 return new SymbolicRegressionScaledMeanAndVarianceSquaredErrorEvaluator(this, cloner); 102 109 } 103 110 -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/Evaluators/SymbolicRegressionScaledMeanSquaredErrorEvaluator.cs
r4477 r4678 34 34 [Item("SymbolicRegressionScaledMeanSquaredErrorEvaluator", "Calculates the mean squared error of a linearly scaled symbolic regression solution.")] 35 35 [StorableClass] 36 public class SymbolicRegressionScaledMeanSquaredErrorEvaluator : SymbolicRegressionMeanSquaredErrorEvaluator {36 public sealed class SymbolicRegressionScaledMeanSquaredErrorEvaluator : SymbolicRegressionMeanSquaredErrorEvaluator { 37 37 38 38 #region parameter properties … … 54 54 } 55 55 #endregion 56 [StorableConstructor] 57 private SymbolicRegressionScaledMeanSquaredErrorEvaluator(bool deserializing) : base(deserializing) { } 58 private SymbolicRegressionScaledMeanSquaredErrorEvaluator(SymbolicRegressionScaledMeanSquaredErrorEvaluator original, Cloner cloner) : base(original, cloner) { } 56 59 public SymbolicRegressionScaledMeanSquaredErrorEvaluator() 57 60 : base() { 58 61 Parameters.Add(new LookupParameter<DoubleValue>("Alpha", "Alpha parameter for linear scaling of the estimated values.")); 59 62 Parameters.Add(new LookupParameter<DoubleValue>("Beta", "Beta parameter for linear scaling of the estimated values.")); 63 } 64 65 public override IDeepCloneable Clone(Cloner cloner) { 66 return new SymbolicRegressionScaledMeanSquaredErrorEvaluator(this, cloner); 60 67 } 61 68 -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/Interfaces/ISymbolicRegressionEvaluator.cs
r4190 r4678 20 20 #endregion 21 21 22 using System.Collections.Generic; 22 23 using HeuristicLab.Core; 23 24 using HeuristicLab.Data; … … 25 26 using HeuristicLab.Optimization; 26 27 using HeuristicLab.Problems.DataAnalysis.Symbolic; 27 using System.Collections.Generic;28 28 29 29 namespace HeuristicLab.Problems.DataAnalysis.Regression.Symbolic { -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/MultiObjectiveSymbolicRegressionProblem.cs
r4545 r4678 21 21 22 22 using System; 23 using System.Collections.Generic;24 using System.Linq;25 23 using HeuristicLab.Common; 26 24 using HeuristicLab.Core; 27 25 using HeuristicLab.Data; 28 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;29 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Analyzers;30 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Creators;31 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Interfaces;32 26 using HeuristicLab.Optimization; 33 27 using HeuristicLab.Parameters; 34 28 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 35 using HeuristicLab.PluginInfrastructure;36 using HeuristicLab.Problems.DataAnalysis.Regression.Symbolic.Analyzers;37 using HeuristicLab.Problems.DataAnalysis.Symbolic;38 29 39 30 namespace HeuristicLab.Problems.DataAnalysis.Regression.Symbolic { … … 71 62 #endregion 72 63 73 74 64 [StorableConstructor] 75 65 protected MultiObjectiveSymbolicRegressionProblem(bool deserializing) : base(deserializing) { } 66 protected MultiObjectiveSymbolicRegressionProblem(MultiObjectiveSymbolicRegressionProblem original, Cloner cloner) 67 : base(original, cloner) { 68 RegisterParameterEvents(); 69 RegisterParameterValueEvents(); 70 } 76 71 public MultiObjectiveSymbolicRegressionProblem() 77 72 : base() { … … 89 84 90 85 public override IDeepCloneable Clone(Cloner cloner) { 91 MultiObjectiveSymbolicRegressionProblem clone = (MultiObjectiveSymbolicRegressionProblem)base.Clone(cloner); 92 clone.RegisterParameterEvents(); 93 clone.RegisterParameterValueEvents(); 94 return clone; 86 return new MultiObjectiveSymbolicRegressionProblem(this, cloner); 95 87 } 96 88 -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/SimpleSymbolicRegressionEvaluator.cs
r4068 r4678 22 22 using System; 23 23 using System.Linq; 24 using HeuristicLab.Common; 24 25 using HeuristicLab.Core; 25 26 using HeuristicLab.Data; … … 33 34 [Item("SimpleSymbolicRegressionEvaluator", "Evaluates a symbolic regression solution and outputs a matrix of target and estimated values.")] 34 35 [StorableClass] 35 public class SimpleSymbolicRegressionEvaluator : SingleSuccessorOperator {36 public sealed class SimpleSymbolicRegressionEvaluator : SingleSuccessorOperator { 36 37 private const string SymbolicExpressionTreeInterpreterParameterName = "SymbolicExpressionTreeInterpreter"; 37 38 private const string FunctionTreeParameterName = "FunctionTree"; … … 100 101 #endregion 101 102 103 [StorableConstructor] 104 private SimpleSymbolicRegressionEvaluator(bool deserializing) : base(deserializing) { } 105 private SimpleSymbolicRegressionEvaluator(SimpleSymbolicRegressionEvaluator original, Cloner cloner) : base(original, cloner) { } 102 106 public SimpleSymbolicRegressionEvaluator() 103 107 : base() { … … 110 114 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.")); 111 115 Parameters.Add(new LookupParameter<DoubleMatrix>(ValuesParameterName, "The matrix of target and estimated values as generated by the symbolic regression solution.")); 116 } 117 118 public override IDeepCloneable Clone(Cloner cloner) { 119 return new SimpleSymbolicRegressionEvaluator(this, cloner); 112 120 } 113 121 -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/SymbolicRegressionModel.cs
r4468 r4678 32 32 [StorableClass] 33 33 [Item("SymbolicRegressionModel", "A symbolic regression model represents an entity that provides estimated values based on input values.")] 34 public class SymbolicRegressionModel : NamedItem, IDataAnalysisModel { 35 private SymbolicRegressionModel() : base() { } // for cloning 34 public sealed class SymbolicRegressionModel : NamedItem, IDataAnalysisModel { 36 35 [StorableConstructor] 37 protected SymbolicRegressionModel(bool deserializing) 38 : base(deserializing) { 36 protected SymbolicRegressionModel(bool deserializing) : base(deserializing) { } 37 protected SymbolicRegressionModel(SymbolicRegressionModel original, Cloner cloner) 38 : base(original, cloner) { 39 tree = (SymbolicExpressionTree)cloner.Clone(original.tree); 40 interpreter = (ISymbolicExpressionTreeInterpreter)cloner.Clone(original.interpreter); 41 inputVariables = new List<string>(inputVariables); 39 42 } 43 40 44 public SymbolicRegressionModel(ISymbolicExpressionTreeInterpreter interpreter, SymbolicExpressionTree tree) 41 45 : base() { … … 45 49 } 46 50 51 public override IDeepCloneable Clone(Cloner cloner) { 52 return new SymbolicRegressionModel(this, cloner); 53 } 54 47 55 [StorableHook(HookType.AfterDeserialization)] 48 private void AfterDeserialization Hook() {56 private void AfterDeserialization() { 49 57 if (inputVariables == null) 50 58 this.inputVariables = tree.IterateNodesPrefix().OfType<VariableTreeNode>().Select(var => var.VariableName).Distinct().ToList(); … … 73 81 return interpreter.GetSymbolicExpressionTreeValues(tree, problemData.Dataset, rows); 74 82 } 75 76 public override IDeepCloneable Clone(Cloner cloner) {77 var clone = (SymbolicRegressionModel)base.Clone(cloner);78 clone.tree = (SymbolicExpressionTree)cloner.Clone(tree);79 clone.interpreter = (ISymbolicExpressionTreeInterpreter)cloner.Clone(interpreter);80 clone.inputVariables = new List<string>(inputVariables);81 return clone;82 }83 83 } 84 84 } -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/SymbolicRegressionProblem.cs
r4562 r4678 34 34 [Creatable("Problems")] 35 35 [StorableClass] 36 public class SymbolicRegressionProblem : SymbolicRegressionProblemBase, ISingleObjectiveDataAnalysisProblem {36 public sealed class SymbolicRegressionProblem : SymbolicRegressionProblemBase, ISingleObjectiveDataAnalysisProblem { 37 37 38 38 #region Parameter Properties … … 74 74 75 75 [StorableConstructor] 76 protected SymbolicRegressionProblem(bool deserializing) : base(deserializing) { } 76 private SymbolicRegressionProblem(bool deserializing) : base(deserializing) { } 77 private SymbolicRegressionProblem(SymbolicRegressionProblem original, Cloner cloner) 78 : base(original, cloner) { 79 RegisterParameterEvents(); 80 RegisterParameterValueEvents(); 81 } 82 77 83 public SymbolicRegressionProblem() 78 84 : base() { … … 92 98 93 99 public override IDeepCloneable Clone(Cloner cloner) { 94 SymbolicRegressionProblem clone = (SymbolicRegressionProblem)base.Clone(cloner); 95 clone.RegisterParameterEvents(); 96 clone.RegisterParameterValueEvents(); 97 return clone; 100 return new SymbolicRegressionProblem(this, cloner); 98 101 } 99 102 -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/SymbolicRegressionProblemBase.cs
r4486 r4678 130 130 get { 131 131 int endIndex = (int)(DataAnalysisProblemData.TrainingIndizes.Count() * (1.0 - DataAnalysisProblemData.ValidationPercentage.Value) - 1); 132 if (endIndex < 0) endIndex = 0; 132 if (endIndex < 0) endIndex = 0; 133 133 return new IntValue(DataAnalysisProblemData.TrainingIndizes.ElementAt(endIndex)); 134 134 } … … 153 153 [StorableConstructor] 154 154 protected SymbolicRegressionProblemBase(bool deserializing) : base(deserializing) { } 155 protected SymbolicRegressionProblemBase(SymbolicRegressionProblemBase original, Cloner cloner) 156 : base(original, cloner) { 157 operators = original.operators.Select(x => (IOperator)cloner.Clone(x)).ToList(); 158 RegisterParameterEvents(); 159 RegisterParameterValueEvents(); 160 } 155 161 public SymbolicRegressionProblemBase() 156 162 : base() { … … 178 184 RegisterParameterEvents(); 179 185 RegisterParameterValueEvents(); 180 }181 182 public override IDeepCloneable Clone(Cloner cloner) {183 SymbolicRegressionProblemBase clone = (SymbolicRegressionProblemBase)base.Clone(cloner);184 clone.operators = operators.Select(x => (IOperator)cloner.Clone(x)).ToList();185 clone.RegisterParameterEvents();186 clone.RegisterParameterValueEvents();187 return clone;188 186 } 189 187 -
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(); -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis/3.3/DataAnalysisProblem.cs
r4419 r4678 55 55 [StorableConstructor] 56 56 protected DataAnalysisProblem(bool deserializing) : base(deserializing) { } 57 protected DataAnalysisProblem(DataAnalysisProblem original, Cloner cloner) 58 : base(original, cloner) { 59 RegisterParameterEvents(); 60 RegisterParameterValueEvents(); 61 } 62 57 63 public DataAnalysisProblem() 58 64 : base() { … … 63 69 64 70 [StorableHook(HookType.AfterDeserialization)] 65 private void AfterDeserialization Hook() {71 private void AfterDeserialization() { 66 72 RegisterParameterEvents(); 67 73 RegisterParameterValueEvents(); … … 91 97 92 98 public override IDeepCloneable Clone(Cloner cloner) { 93 DataAnalysisProblem clone = (DataAnalysisProblem)base.Clone(cloner); 94 clone.RegisterParameterEvents(); 95 clone.RegisterParameterValueEvents(); 96 return clone; 99 return new DataAnalysisProblem(this, cloner); 97 100 } 98 101 -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis/3.3/DataAnalysisProblemData.cs
r4543 r4678 191 191 #endregion 192 192 193 193 [StorableConstructor] 194 protected DataAnalysisProblemData(bool deserializing) : base(deserializing) { } 195 protected DataAnalysisProblemData(DataAnalysisProblemData original, Cloner cloner) 196 : base(original, cloner) { 197 RegisterParameterEventHandlers(); 198 RegisterParameterValueEventHandlers(); 199 } 194 200 public DataAnalysisProblemData() 195 201 : base() { … … 233 239 } 234 240 235 [StorableConstructor] 236 protected DataAnalysisProblemData(bool deserializing) : base(deserializing) { } 241 public override IDeepCloneable Clone(Cloner cloner) { 242 return new DataAnalysisProblemData(this, cloner); 243 } 237 244 238 245 [StorableHook(HookType.AfterDeserialization)] 239 private void AfterDeserialization Hook() {246 private void AfterDeserialization() { 240 247 if (!Parameters.ContainsKey("ValidationPercentage")) 241 248 Parameters.Add(new ValueParameter<PercentValue>("ValidationPercentage", "The relative amount of the training samples that should be used as validation set.", new PercentValue(0.5))); … … 405 412 OnProblemDataChanged(EventArgs.Empty); 406 413 } 407 408 public override IDeepCloneable Clone(Cloner cloner) {409 DataAnalysisProblemData clone = (DataAnalysisProblemData)base.Clone(cloner);410 clone.RegisterParameterEventHandlers();411 clone.RegisterParameterValueEventHandlers();412 return clone;413 }414 414 } 415 415 } -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis/3.3/DataAnalysisSolution.cs
r4451 r4678 37 37 public string Filename { get; set; } 38 38 #endregion 39 39 40 [StorableConstructor] 41 protected DataAnalysisSolution(bool deserializing) : base(deserializing) { } 42 protected DataAnalysisSolution(DataAnalysisSolution original, Cloner cloner) 43 : base(original, cloner) { 44 problemData = (DataAnalysisProblemData)cloner.Clone(original.problemData); 45 model = (IDataAnalysisModel)cloner.Clone(original.model); 46 lowerEstimationLimit = original.lowerEstimationLimit; 47 upperEstimationLimit = original.upperEstimationLimit; 48 AfterDeserialization(); 49 } 40 50 protected DataAnalysisSolution() 41 51 : base() { } … … 46 56 this.lowerEstimationLimit = lowerEstimationLimit; 47 57 this.upperEstimationLimit = upperEstimationLimit; 48 Initialize();58 AfterDeserialization(); 49 59 } 50 60 51 [StorableConstructor]52 private DataAnalysisSolution(bool deserializing) : base(deserializing) { }53 61 [StorableHook(HookType.AfterDeserialization)] 54 private void Initialize() {62 private void AfterDeserialization() { 55 63 if (problemData != null) 56 64 RegisterProblemDataEvents(); … … 140 148 public event EventHandler ModelChanged; 141 149 protected virtual void OnModelChanged() { 142 EventHandler handler= ModelChanged;143 if ( handler!= null)144 handler(this, EventArgs.Empty);150 EventHandler listeners = ModelChanged; 151 if (listeners != null) 152 listeners(this, EventArgs.Empty); 145 153 } 146 154 … … 153 161 #endregion 154 162 155 public override IDeepCloneable Clone(Cloner cloner) {156 DataAnalysisSolution clone = (DataAnalysisSolution)base.Clone(cloner);157 clone.problemData = (DataAnalysisProblemData)cloner.Clone(problemData);158 clone.model = (IDataAnalysisModel)cloner.Clone(model);159 clone.lowerEstimationLimit = lowerEstimationLimit;160 clone.upperEstimationLimit = upperEstimationLimit;161 clone.Initialize();162 163 return clone;164 }165 163 } 166 164 } -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis/3.3/DataFormatException.cs
r4239 r4678 21 21 22 22 using System; 23 using System.Runtime.Serialization; 23 24 24 25 namespace HeuristicLab.Problems.DataAnalysis { 26 [Serializable] 25 27 public class DataFormatException : Exception { 26 28 private int line; … … 37 39 this.line = line; 38 40 } 41 42 public DataFormatException(SerializationInfo info, StreamingContext context) : base(info, context) { } 39 43 } 40 44 } -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis/3.3/Dataset.cs
r4239 r4678 32 32 [StorableClass] 33 33 public sealed class Dataset : NamedItem, IStringConvertibleMatrix { 34 // empty constructor for cloning35 private Dataset()36 : base() {37 }38 39 34 [StorableConstructor] 40 private Dataset(bool deserializing) 41 : base(deserializing) { 42 } 43 35 private Dataset(bool deserializing) : base(deserializing) { } 36 private Dataset(Dataset original, Cloner cloner) 37 : base(original, cloner) { 38 variableNames = original.variableNames; 39 data = original.data; 40 } 44 41 public Dataset(IEnumerable<string> variableNames, double[,] data) 45 42 : base() { … … 122 119 } 123 120 124 125 126 121 public string GetVariableName(int variableIndex) { 127 122 return variableNames[variableIndex]; … … 140 135 141 136 public override IDeepCloneable Clone(Cloner cloner) { 142 Dataset clone = (Dataset)base.Clone(cloner); 143 clone.variableNames = variableNames; 144 clone.data = data; 145 return clone; 137 return new Dataset(this, cloner); 146 138 } 147 139 … … 197 189 public event EventHandler ColumnNamesChanged; 198 190 private void OnColumnNamesChanged() { 199 EventHandler handler= ColumnNamesChanged;200 if ( handler!= null)201 handler(this, EventArgs.Empty);191 EventHandler listeners = ColumnNamesChanged; 192 if (listeners != null) 193 listeners(this, EventArgs.Empty); 202 194 } 203 195 public event EventHandler RowNamesChanged; 204 196 private void OnRowNamesChanged() { 205 EventHandler handler= RowNamesChanged;206 if ( handler!= null)207 handler(this, EventArgs.Empty);197 EventHandler listeners = RowNamesChanged; 198 if (listeners != null) 199 listeners(this, EventArgs.Empty); 208 200 } 209 201 public event EventHandler SortableViewChanged; 210 202 private void OnSortableViewChanged() { 211 EventHandler handler= SortableViewChanged;212 if ( handler!= null)213 handler(this, EventArgs.Empty);203 EventHandler listeners = SortableViewChanged; 204 if (listeners != null) 205 listeners(this, EventArgs.Empty); 214 206 } 215 207 public event EventHandler<EventArgs<int, int>> ItemChanged; 216 208 private void OnItemChanged(int rowIndex, int columnIndex) { 217 if (ItemChanged != null) 218 ItemChanged(this, new EventArgs<int, int>(rowIndex, columnIndex)); 209 var listeners = ItemChanged; 210 if (listeners != null) 211 listeners(this, new EventArgs<int, int>(rowIndex, columnIndex)); 219 212 OnToStringChanged(); 220 213 } -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis/3.3/Evaluators/SimpleEvaluator.cs
r4068 r4678 24 24 using HeuristicLab.Operators; 25 25 using HeuristicLab.Parameters; 26 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 27 using HeuristicLab.Common; 26 28 27 29 namespace HeuristicLab.Problems.DataAnalysis.Evaluators { … … 32 34 public ILookupParameter<DoubleMatrix> ValuesParameter { 33 35 get { return (ILookupParameter<DoubleMatrix>)Parameters["Values"]; } 36 } 37 [StorableConstructor] 38 protected SimpleEvaluator(bool deserializing) : base(deserializing) { } 39 protected SimpleEvaluator(SimpleEvaluator original, Cloner cloner) 40 : base(original, cloner) { 34 41 } 35 42 public SimpleEvaluator() -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis/3.3/Evaluators/SimpleMSEEvaluator.cs
r4239 r4678 26 26 using HeuristicLab.Data; 27 27 using HeuristicLab.Parameters; 28 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 29 using HeuristicLab.Common; 28 30 29 31 namespace HeuristicLab.Problems.DataAnalysis.Evaluators { … … 34 36 } 35 37 38 [StorableConstructor] 39 protected SimpleMSEEvaluator(bool deserializing) : base(deserializing) { } 40 protected SimpleMSEEvaluator(SimpleMSEEvaluator original, Cloner cloner) 41 : base(original, cloner) { 42 } 36 43 public SimpleMSEEvaluator() { 37 44 Parameters.Add(new LookupParameter<DoubleValue>("MeanSquaredError", "The mean squared error of estimated values.")); -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis/3.3/Evaluators/SimpleMeanAbsolutePercentageErrorEvaluator.cs
r4068 r4678 26 26 using HeuristicLab.Data; 27 27 using HeuristicLab.Parameters; 28 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 29 using HeuristicLab.Common; 28 30 29 31 namespace HeuristicLab.Problems.DataAnalysis.Evaluators { … … 33 35 } 34 36 37 [StorableConstructor] 38 protected SimpleMeanAbsolutePercentageErrorEvaluator(bool deserializing) : base(deserializing) { } 39 protected SimpleMeanAbsolutePercentageErrorEvaluator(SimpleMeanAbsolutePercentageErrorEvaluator original, Cloner cloner) 40 : base(original, cloner) { 41 } 35 42 public SimpleMeanAbsolutePercentageErrorEvaluator() { 36 43 Parameters.Add(new LookupParameter<PercentValue>("AverageRelativeError", "The average relative error of estimated values.")); … … 43 50 select values[i, ESTIMATION_INDEX]; 44 51 AverageRelativeErrorParameter.ActualValue = new PercentValue(Calculate(original, estimated)); 52 } 53 54 public override IDeepCloneable Clone(Cloner clone) { 55 return new SimpleMeanAbsolutePercentageErrorEvaluator(this, cloner); 45 56 } 46 57 -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis/3.3/Evaluators/SimpleMeanAbsolutePercentageOfRangeErrorEvaluator.cs
r4068 r4678 27 27 using HeuristicLab.Data; 28 28 using HeuristicLab.Parameters; 29 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 29 30 30 31 namespace HeuristicLab.Problems.DataAnalysis.Evaluators { … … 35 36 } 36 37 38 [StorableConstructor] 39 protected SimpleMeanAbsolutePercentageOfRangeErrorEvaluator(bool deserializing) : base(deserializing) { } 40 protected SimpleMeanAbsolutePercentageOfRangeErrorEvaluator(SimpleMeanAbsolutePercentageOfRangeErrorEvaluator original, Cloner cloner) 41 : base(original, cloner) { 42 } 37 43 public SimpleMeanAbsolutePercentageOfRangeErrorEvaluator() { 38 44 Parameters.Add(new LookupParameter<PercentValue>("AveragePercentageOfRangeError", "The average relative (percentage of range) error of estimated values.")); … … 45 51 select values[i, ESTIMATION_INDEX]; 46 52 AveragePercentageOfRangeErrorParameter.ActualValue = new PercentValue(Calculate(original, estimated)); 53 } 54 55 public override IDeepCloneable Clone(Cloner clone) { 56 return new SimpleMeanAbsolutePercentageOfRangeErrorEvaluator(this, cloner); 47 57 } 48 58 -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis/3.3/Evaluators/SimpleNMSEEvaluator.cs
r4068 r4678 26 26 using HeuristicLab.Data; 27 27 using HeuristicLab.Parameters; 28 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 29 using HeuristicLab.Common; 28 30 29 31 namespace HeuristicLab.Problems.DataAnalysis.Evaluators { … … 34 36 } 35 37 38 [StorableConstructor] 39 protected SimpleNMSEEvaluator(bool deserializing) : base(deserializing) { } 40 protected SimpleNMSEEvaluator(SimpleNMSEEvaluator original, Cloner cloner) 41 : base(original, cloner) { 42 } 36 43 public SimpleNMSEEvaluator() { 37 44 Parameters.Add(new LookupParameter<DoubleValue>("NormalizedMeanSquaredError", "The normalized mean squared error (divided by variance) of estimated values.")); -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis/3.3/Evaluators/SimpleRSquaredEvaluator.cs
r4068 r4678 26 26 using HeuristicLab.Data; 27 27 using HeuristicLab.Parameters; 28 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 29 using HeuristicLab.Common; 28 30 29 31 namespace HeuristicLab.Problems.DataAnalysis.Evaluators { … … 32 34 get { return (ILookupParameter<DoubleValue>)Parameters["RSquared"]; } 33 35 } 34 36 [StorableConstructor] 37 protected SimpleRSquaredEvaluator(bool deserializing) : base(deserializing) { } 38 protected SimpleRSquaredEvaluator(SimpleRSquaredEvaluator original, Cloner cloner) 39 : base(original, cloner) { 40 } 35 41 public SimpleRSquaredEvaluator() { 36 42 Parameters.Add(new LookupParameter<DoubleValue>("RSquared", "The squared Pearson's Product Moment Correlation (R²) of estimated values and original values.")); -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis/3.3/Evaluators/SimpleVarianceAccountedForEvaluator.cs
r4068 r4678 27 27 using HeuristicLab.Data; 28 28 using HeuristicLab.Parameters; 29 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 29 30 30 31 namespace HeuristicLab.Problems.DataAnalysis.Evaluators { … … 40 41 } 41 42 43 [StorableConstructor] 44 protected SimpleVarianceAccountedForEvaluator(bool deserializing) : base(deserializing) { } 45 protected SimpleVarianceAccountedForEvaluator(SimpleVarianceAccountedForEvaluator original, Cloner cloner) 46 : base(original, cloner) { 47 } 42 48 public SimpleVarianceAccountedForEvaluator() { 43 49 Parameters.Add(new LookupParameter<DoubleValue>("VarianceAccountedFor", "The variance of the original values accounted for by the estimated values (VAF(y,y') = 1 - var(y-y') / var(y) ).")); -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis/3.3/SupportVectorMachine/SupportVectorMachineCrossValidationEvaluator.cs
r4543 r4678 30 30 using SVM; 31 31 using System.Collections.Generic; 32 using HeuristicLab.Common; 32 33 33 34 namespace HeuristicLab.Problems.DataAnalysis.SupportVectorMachine { … … 126 127 #endregion 127 128 129 [StorableConstructor] 130 protected SupportVectorMachineCrossValidationEvaluator(bool deserializing) : base(deserializing) { } 131 132 protected SupportVectorMachineCrossValidationEvaluator(SupportVectorMachineCrossValidationEvaluator original, 133 Cloner cloner) 134 : base(original, cloner) { } 128 135 public SupportVectorMachineCrossValidationEvaluator() 129 136 : base() { … … 143 150 } 144 151 152 public override IDeepCloneable Clone(Cloner clone) { 153 return new SupportVectorMachineCrossValidationEvaluator(this, cloner); 154 } 155 145 156 public override IOperation Apply() { 146 157 double reductionRatio = 1.0; // TODO: make parameter 147 158 if (ActualSamplesParameter.ActualValue != null) 148 159 reductionRatio = ActualSamplesParameter.ActualValue.Value; 149 IEnumerable<int> rows = 160 IEnumerable<int> rows = 150 161 Enumerable.Range(SamplesStart.Value, SamplesEnd.Value - SamplesStart.Value) 151 162 .Where(i => i < DataAnalysisProblemData.TestSamplesStart.Value || DataAnalysisProblemData.TestSamplesEnd.Value <= i); … … 153 164 // create a new DataAnalysisProblemData instance 154 165 DataAnalysisProblemData reducedProblemData = (DataAnalysisProblemData)DataAnalysisProblemData.Clone(); 155 reducedProblemData.Dataset = 166 reducedProblemData.Dataset = 156 167 CreateReducedDataset(RandomParameter.ActualValue, reducedProblemData.Dataset, rows, reductionRatio); 157 168 reducedProblemData.TrainingSamplesStart.Value = 0; … … 170 181 171 182 private Dataset CreateReducedDataset(IRandom random, Dataset dataset, IEnumerable<int> rowIndices, double reductionRatio) { 172 183 173 184 // must not make a fink: 174 185 // => select n rows randomly from start..end … … 191 202 // take the first n indexes (selected n rowIndexes from start..end) 192 203 // now order by index 193 int[] orderedRandomIndexes = 204 int[] orderedRandomIndexes = 194 205 rowIndexArr.Take(n) 195 206 .OrderBy(x => x) -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis/3.3/SupportVectorMachine/SupportVectorMachineModel.cs
r4543 r4678 36 36 [StorableClass] 37 37 [Item("SupportVectorMachineModel", "Represents a support vector machine model.")] 38 public class SupportVectorMachineModel : NamedItem, IDataAnalysisModel { 39 public SupportVectorMachineModel() 40 : base() { 38 public sealed class SupportVectorMachineModel : NamedItem, IDataAnalysisModel { 39 [StorableConstructor] 40 private SupportVectorMachineModel(bool deserializing) : base(deserializing) { } 41 private SupportVectorMachineModel(SupportVectorMachineModel original, Cloner cloner) 42 : base(original, cloner) { 43 // only using a shallow copy here! (gkronber) 44 this.model = original.model; 45 this.rangeTransform = original.rangeTransform; 41 46 } 47 public SupportVectorMachineModel() : base() { } 42 48 43 49 private SVM.Model model; … … 130 136 #endregion 131 137 132 public override IDeepCloneable Clone(Cloner cloner) { 133 SupportVectorMachineModel clone = (SupportVectorMachineModel)base.Clone(cloner); 134 // beware we are only using a shallow copy here! (gkronber) 135 clone.model = model; 136 clone.rangeTransform = rangeTransform; 137 return clone; 138 public override IDeepCloneable Clone(Cloner clone) { 139 return new SupportVectorMachineModel(this, cloner); 138 140 } 139 141 -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis/3.3/SupportVectorMachine/SupportVectorMachineModelCreator.cs
r4543 r4678 29 29 using System.Collections.Generic; 30 30 using System.Linq; 31 using HeuristicLab.Common; 31 32 32 33 namespace HeuristicLab.Problems.DataAnalysis.SupportVectorMachine { … … 36 37 [StorableClass] 37 38 [Item("SupportVectorMachineModelCreator", "Represents an operator that creates a support vector machine model.")] 38 public class SupportVectorMachineModelCreator : SingleSuccessorOperator {39 public sealed class SupportVectorMachineModelCreator : SingleSuccessorOperator { 39 40 private const string DataAnalysisProblemDataParameterName = "DataAnalysisProblemData"; 40 41 private const string SvmTypeParameterName = "SvmType"; … … 110 111 #endregion 111 112 113 [StorableConstructor] 114 private SupportVectorMachineModelCreator(bool deserializing) : base(deserializing) { } 115 private SupportVectorMachineModelCreator(SupportVectorMachineModelCreator original, Cloner cloner) : base(original, cloner) { } 112 116 public SupportVectorMachineModelCreator() 113 117 : base() { … … 129 133 int start = SamplesStart.Value; 130 134 int end = SamplesEnd.Value; 131 IEnumerable<int> rows = 132 Enumerable.Range(start, end -start)135 IEnumerable<int> rows = 136 Enumerable.Range(start, end - start) 133 137 .Where(i => i < DataAnalysisProblemData.TestSamplesStart.Value || DataAnalysisProblemData.TestSamplesEnd.Value <= i); 134 138 -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis/3.3/SupportVectorMachine/SupportVectorMachineModelEvaluator.cs
r4543 r4678 28 28 using System.Collections.Generic; 29 29 using System.Linq; 30 using HeuristicLab.Common; 30 31 31 32 namespace HeuristicLab.Problems.DataAnalysis.SupportVectorMachine { … … 70 71 } 71 72 #endregion 73 74 [StorableConstructor] 75 protected SupportVectorMachineModelEvaluator(bool deserializing) : base(deserializing) { } 76 protected SupportVectorMachineModelEvaluator(SupportVectorMachineModelEvaluator original, Cloner cloner) : base(original, cloner) { } 72 77 public SupportVectorMachineModelEvaluator() 73 78 : base() { -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis/3.3/Symbolic/ArithmeticExpressionGrammar.cs
r4249 r4678 21 21 22 22 using System.Collections.Generic; 23 using HeuristicLab.Common; 23 24 using HeuristicLab.Core; 24 25 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding; … … 30 31 [Item("ArithmeticExpressionGrammar", "Represents a grammar for functional expressions using only arithmetic operations.")] 31 32 public class ArithmeticExpressionGrammar : DefaultSymbolicExpressionGrammar { 33 34 [StorableConstructor] 35 protected ArithmeticExpressionGrammar(bool deserializing) : base(deserializing) { } 36 protected ArithmeticExpressionGrammar(ArithmeticExpressionGrammar original, Cloner cloner) : base(original, cloner) { } 32 37 public ArithmeticExpressionGrammar() 33 38 : base() { 34 39 Initialize(); 35 40 } 36 37 [StorableConstructor]38 protected ArithmeticExpressionGrammar(bool deserializing) : base(deserializing) {}41 public override IDeepCloneable Clone(Cloner cloner) { 42 return new ArithmeticExpressionGrammar(this, cloner); 43 } 39 44 40 45 private void Initialize() { -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis/3.3/Symbolic/FullFunctionalExpressionGrammar.cs
r4249 r4678 21 21 22 22 using System.Collections.Generic; 23 using HeuristicLab.Common; 23 24 using HeuristicLab.Core; 24 25 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding; … … 30 31 [Item("FullFunctionalExpressionGrammar", "Represents a grammar for functional expressions using all available functions.")] 31 32 public class FullFunctionalExpressionGrammar : DefaultSymbolicExpressionGrammar { 33 [StorableConstructor] 34 protected FullFunctionalExpressionGrammar(bool deserializing) : base(deserializing) { } 35 protected FullFunctionalExpressionGrammar(FullFunctionalExpressionGrammar original, Cloner cloner) : base(original, cloner) { } 32 36 public FullFunctionalExpressionGrammar() 33 37 : base() { 34 38 Initialize(); 35 39 } 36 [StorableConstructor] 37 protected FullFunctionalExpressionGrammar(bool deserializing) : base(deserializing) { } 40 41 public override IDeepCloneable Clone(Cloner cloner) { 42 return new FullFunctionalExpressionGrammar(this, cloner); 43 } 38 44 39 45 private void Initialize() { -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis/3.3/Symbolic/SimpleArithmeticExpressionInterpreter.cs
r4068 r4678 22 22 using System; 23 23 using System.Collections.Generic; 24 using HeuristicLab.Common; 24 25 using HeuristicLab.Core; 25 26 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding; … … 33 34 [Item("SimpleArithmeticExpressionInterpreter", "Interpreter for arithmetic symbolic expression trees including function calls.")] 34 35 // not thread safe! 35 public class SimpleArithmeticExpressionInterpreter : NamedItem, ISymbolicExpressionTreeInterpreter {36 public sealed class SimpleArithmeticExpressionInterpreter : NamedItem, ISymbolicExpressionTreeInterpreter { 36 37 private class OpCodes { 37 38 public const byte Add = 1; … … 106 107 } 107 108 109 [StorableConstructor] 110 private SimpleArithmeticExpressionInterpreter(bool deserializing) : base(deserializing) { } 111 private SimpleArithmeticExpressionInterpreter(SimpleArithmeticExpressionInterpreter original, Cloner cloner) : base(original, cloner) { } 112 113 public override IDeepCloneable Clone(Cloner cloner) { 114 return new SimpleArithmeticExpressionInterpreter(this, cloner); 115 } 116 108 117 public SimpleArithmeticExpressionInterpreter() 109 118 : base() { -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis/3.3/Symbolic/Symbols/Constant.cs
r4068 r4678 77 77 } 78 78 #endregion 79 [StorableConstructor] 80 protected Constant(bool deserializing) : base(deserializing) { } 81 protected Constant(Constant original, Cloner cloner) 82 : base(original, cloner) { 83 minValue = original.minValue; 84 maxValue = original.maxValue; 85 manipulatorNu = original.manipulatorNu; 86 manipulatorSigma = original.manipulatorSigma; 87 } 79 88 public Constant() 80 89 : base("Constant", "Represents a constant value.") { … … 89 98 } 90 99 91 public override IDeepCloneable Clone(Cloner cloner) { 92 Constant clone = (Constant)base.Clone(cloner); 93 clone.minValue = minValue; 94 clone.maxValue = maxValue; 95 clone.manipulatorNu = manipulatorNu; 96 clone.manipulatorSigma = manipulatorSigma; 97 return clone; 100 public override IDeepCloneable Clone(Cloner clone) { 101 return new Constant(this, cloner); 98 102 } 99 103 } -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis/3.3/Symbolic/Symbols/ConstantTreeNode.cs
r4068 r4678 20 20 #endregion 21 21 22 using HeuristicLab.Common; 22 23 using HeuristicLab.Core; 23 24 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding; … … 38 39 } 39 40 40 private ConstantTreeNode() : base() { } 41 [StorableConstructor] 42 private ConstantTreeNode(bool deserializing) : base(deserializing) { } 41 43 42 // copy constructor 43 private ConstantTreeNode(ConstantTreeNode original) 44 : base(original) { 44 protected ConstantTreeNode(ConstantTreeNode original, Cloner cloner) 45 : base(original, cloner) { 45 46 constantValue = original.constantValue; 46 47 } 47 48 49 private ConstantTreeNode() : base() { } 48 50 public ConstantTreeNode(Constant constantSymbol) : base(constantSymbol) { } 49 51 … … 65 67 } 66 68 67 public override object Clone() {68 return new ConstantTreeNode(this );69 public override IDeepCloneable Clone(Cloner cloner) { 70 return new ConstantTreeNode(this, cloner); 69 71 } 70 72 -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis/3.3/Symbolic/Symbols/LaggedVariable.cs
r4068 r4678 40 40 set { maxLag = value; } 41 41 } 42 [StorableConstructor] 43 private LaggedVariable(bool deserializing) : base(deserializing) { } 44 private LaggedVariable(LaggedVariable original, Cloner cloner) 45 : base(original, cloner) { 46 minLag = original.minLag; 47 maxLag = original.maxLag; 48 } 42 49 public LaggedVariable() 43 50 : base("LaggedVariable", "Represents a variable value with a time offset.") { … … 49 56 } 50 57 51 public override IDeepCloneable Clone(Cloner cloner) { 52 LaggedVariable clone = (LaggedVariable)base.Clone(cloner); 53 clone.minLag = minLag; 54 clone.maxLag = maxLag; 55 return clone; 58 public override IDeepCloneable Clone(Cloner clone) { 59 return new LaggedVariable(this, cloner); 56 60 } 57 61 } -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis/3.3/Symbolic/Symbols/LaggedVariableTreeNode.cs
r4068 r4678 23 23 using HeuristicLab.Core; 24 24 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 25 using HeuristicLab.Common; 25 26 namespace HeuristicLab.Problems.DataAnalysis.Symbolic.Symbols { 26 27 [StorableClass] … … 36 37 } 37 38 38 private LaggedVariableTreeNode() { } 39 40 // copy constructor 41 private LaggedVariableTreeNode(LaggedVariableTreeNode original) 42 : base(original) { 39 [StorableConstructor] 40 private LaggedVariableTreeNode(bool deserializing) : base(deserializing) { } 41 protected LaggedVariableTreeNode(LaggedVariableTreeNode original, Cloner cloner) 42 : base(original, cloner) { 43 43 lag = original.lag; 44 44 } 45 private LaggedVariableTreeNode() { } 45 46 46 47 public LaggedVariableTreeNode(LaggedVariable variableSymbol) : base(variableSymbol) { } … … 62 63 } 63 64 64 65 public override object Clone() { 66 return new LaggedVariableTreeNode(this); 65 public override IDeepCloneable Clone(Cloner cloner) { 66 return new LaggedVariableTreeNode(this, cloner); 67 67 } 68 68 -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis/3.3/Symbolic/Symbols/Variable.cs
r4068 r4678 90 90 } 91 91 #endregion 92 [StorableConstructor] 93 protected Variable(bool deserializing) : base(deserializing) { } 94 protected Variable(Variable original, Cloner cloner) 95 : base(original, cloner) { 96 weightNu = original.weightNu; 97 weightSigma = original.weightSigma; 98 variableNames = new List<string>(original.variableNames); 99 weightManipulatorNu = original.weightManipulatorNu; 100 weightManipulatorSigma = original.weightManipulatorSigma; 101 } 92 102 public Variable() : this("Variable", "Represents a variable value.") { } 93 103 public Variable(string name, string description) … … 104 114 } 105 115 106 public override IDeepCloneable Clone(Cloner cloner) { 107 Variable clone = (Variable)base.Clone(cloner); 108 clone.weightNu = weightNu; 109 clone.weightSigma = weightSigma; 110 clone.variableNames = new List<string>(variableNames); 111 clone.weightManipulatorNu = weightManipulatorNu; 112 clone.weightManipulatorSigma = weightManipulatorSigma; 113 return clone; 116 public override IDeepClonable Clone(Cloner clone) { 117 return new Variable(this, cloner); 114 118 } 115 119 } -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis/3.3/Symbolic/Symbols/VariableTreeNode.cs
r4239 r4678 20 20 #endregion 21 21 22 using HeuristicLab.Common; 22 23 using HeuristicLab.Core; 23 using HeuristicLab.Common;24 24 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding; 25 25 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; … … 44 44 } 45 45 46 47 protected VariableTreeNode() { } 48 49 // copy constructor 50 protected VariableTreeNode(VariableTreeNode original) 51 : base(original) { 46 [StorableConstructor] 47 protected VariableTreeNode(bool deserializing) : base(deserializing) { } 48 protected VariableTreeNode(VariableTreeNode original, Cloner cloner) 49 : base(original, cloner) { 52 50 weight = original.weight; 53 51 variableName = original.variableName; 54 52 } 55 53 protected VariableTreeNode() { } 56 54 public VariableTreeNode(Variable variableSymbol) : base(variableSymbol) { } 57 55 … … 75 73 } 76 74 77 78 public override object Clone() { 79 return new VariableTreeNode(this); 75 public override IDeepCloneable Clone(Cloner cloner) { 76 return new VariableTreeNode(this, cloner); 80 77 } 81 78 -
branches/CloningRefactoring/HeuristicLab.Problems.DataAnalysis/3.3/Symbolic/VariableFrequencyAnalyser.cs
r4125 r4678 22 22 using System.Collections.Generic; 23 23 using System.Linq; 24 using HeuristicLab.Common; 24 25 using HeuristicLab.Core; 25 26 using HeuristicLab.Data; … … 61 62 } 62 63 #endregion 64 [StorableConstructor] 65 protected VariableFrequencyAnalyser(bool deserializing) : base(deserializing) { } 66 protected VariableFrequencyAnalyser(VariableFrequencyAnalyser original, Cloner cloner) 67 : base(original, cloner) { 68 } 63 69 public VariableFrequencyAnalyser() 64 70 : base() { … … 80 86 VariableFrequencies[lastRowIndex, columnIndex] = pair.Value; 81 87 } 82 return null;88 return base.Apply(); 83 89 } 84 90
Note: See TracChangeset
for help on using the changeset viewer.