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 } -
trunk/HeuristicLab.Tests/HeuristicLab.Algorithms.DataAnalysis-3.4/CrossValidationTest.cs
r17823 r17824 21 21 22 22 using System.Linq; 23 using HeuristicLab.Data;24 23 using HeuristicLab.Optimization; 25 24 using HeuristicLab.Problems.DataAnalysis; … … 58 57 IResult cvFoldsResult; 59 58 Assert.IsTrue(cv.Results.TryGetValue("CrossValidation Folds", out cvFoldsResult)); 60 var runs = ( (RunCollection)cvFoldsResult.Value);59 var runs = (RunCollection)cvFoldsResult.Value; 61 60 var foldEstimationLimits = (DoubleLimit)runs.First().Parameters["EstimationLimits"]; 62 61
Note: See TracChangeset
for help on using the changeset viewer.