Changeset 17824 for trunk/HeuristicLab.Algorithms.DataAnalysis
- Timestamp:
- 01/21/21 09:40:33 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/HeuristicLab.Algorithms.DataAnalysis/3.4/CrossValidation.cs
r17180 r17824 35 35 using HeuristicLab.Problems.DataAnalysis.Symbolic; 36 36 using HeuristicLab.Random; 37 using HeuristicLab.Problems.DataAnalysis.Symbolic.Regression; 38 using HeuristicLab.Problems.DataAnalysis.Symbolic.Classification; 37 39 38 40 namespace HeuristicLab.Algorithms.DataAnalysis { … … 338 340 symbolicProblem.FitnessCalculationPartition.End = SamplesEnd.Value; 339 341 } 342 343 // We need to set the estimation limits because they are recalculated by the problem 344 // whenever the data partitions change. 345 // Instead of explicitly handling all types we could also check the parameters-collection 346 // for a parameter with name "EstimationLimits". 347 SetEstimationLimits(problem, new[] { typeof(SymbolicRegressionSingleObjectiveProblem), 348 typeof(SymbolicRegressionMultiObjectiveProblem), 349 typeof(SymbolicClassificationSingleObjectiveProblem), 350 typeof(SymbolicClassificationMultiObjectiveProblem) }); 351 340 352 clonedAlgorithm.Prepare(); 341 353 clonedAlgorithms.Add(clonedAlgorithm); … … 809 821 } 810 822 #endregion 823 824 #region helper 825 826 private void SetEstimationLimits(IDataAnalysisProblem problem, Type[] types) { 827 foreach (var type in types) { 828 if (type.IsAssignableFrom(problem.GetType())) { 829 var originalLimits = (DoubleLimit)Problem.Parameters["EstimationLimits"].ActualValue; // problem is a clone of Problem 830 var limits = (DoubleLimit)problem.Parameters["EstimationLimits"].ActualValue; 831 limits.Lower = originalLimits.Lower; 832 limits.Upper = originalLimits.Upper; 833 } 834 } 835 } 836 837 #endregion 811 838 } 812 839 }
Note: See TracChangeset
for help on using the changeset viewer.