Index: /branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.TimeSeriesPrognosis.Views/3.3/PrognosisView.cs
===================================================================
--- /branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.TimeSeriesPrognosis.Views/3.3/PrognosisView.cs	(revision 5009)
+++ /branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.TimeSeriesPrognosis.Views/3.3/PrognosisView.cs	(revision 5010)
@@ -76,23 +76,29 @@
       DoubleMatrix matrix = null;
         if (Content != null) {
-          IEnumerable<string> targetVariables = Content.ProblemData.TargetVariables.CheckedItems.Select(x => x.Value.Value);
-          List<double[]> prognosis = Content.GetPrognosis(currentTimePoint).ToList();
-          double[,] values = new double[prognosis.Count, targetVariables.Count() * 2];
-          for (int row = 0; row < prognosis.Count; row++) {
-            int col = 0;
-            int t = currentTimePoint + row;
-            foreach (string targetVariable in targetVariables) {
-              values[row, col++] = t<Content.ProblemData.Dataset.Rows ? Content.ProblemData.Dataset[targetVariable, t] : double.NaN;
-              values[row, col++] = prognosis[row][(col - 1) / 2];
-            }
-          }
-          matrix = new DoubleMatrix(values);
-          string[] partitions = new string[] { "(original)", "(estimated)" };
-          matrix.ColumnNames = from targetVariable in targetVariables
-                               from partition in partitions
-                               select targetVariable + " " + partition;
-          ;
+          matrix = CalculateMatrix();
         }
         valuesView.Content = matrix;
+    }
+
+    public DoubleMatrix CalculateMatrix() {
+      DoubleMatrix matrix = null;
+      IEnumerable<string> targetVariables = Content.ProblemData.TargetVariables.CheckedItems.Select(x => x.Value.Value);
+      List<double[]> prognosis = Content.GetPrognosis(currentTimePoint).ToList();
+      double[,] values = new double[prognosis.Count, targetVariables.Count() * 2];
+      for (int row = 0; row < prognosis.Count; row++) {
+        int col = 0;
+        int t = currentTimePoint + row;
+        foreach (string targetVariable in targetVariables) {
+          values[row, col++] = t < Content.ProblemData.Dataset.Rows ? Content.ProblemData.Dataset[targetVariable, t] : double.NaN;
+          values[row, col++] = prognosis[row][(col - 1) / 2];
+        }
+      }
+      matrix = new DoubleMatrix(values);
+      string[] partitions = new string[] { "(original)", "(estimated)" };
+      matrix.ColumnNames = from targetVariable in targetVariables
+                           from partition in partitions
+                           select targetVariable + " " + partition;
+      ;
+      return matrix;
     }
 
Index: /branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.TimeSeriesPrognosis.Views/3.3/ResultsView.cs
===================================================================
--- /branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.TimeSeriesPrognosis.Views/3.3/ResultsView.cs	(revision 5009)
+++ /branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.TimeSeriesPrognosis.Views/3.3/ResultsView.cs	(revision 5010)
@@ -85,59 +85,62 @@
     private void UpdateView() {
       if (Content != null) {
-        List<string> targetVariables = Content.ProblemData.TargetVariables.CheckedItems.Select(x => x.Value.Value).ToList();
-        DoubleMatrix matrix = new DoubleMatrix(rowNames.Count, targetVariables.Count() * 2);
-        matrix.RowNames = rowNames;
-        matrix.ColumnNames = targetVariables.SelectMany(x => new List<string>() { x + " (training)", x + " (test)" });
-        matrix.SortableView = false;
-
-        int trainingStart = Content.ProblemData.TrainingSamplesStart.Value;
-        int trainingEnd = Content.ProblemData.TrainingSamplesEnd.Value;
-        int testStart = Content.ProblemData.TestSamplesStart.Value;
-        int testEnd = Content.ProblemData.TestSamplesEnd.Value;
-        // create a list of time series evaluators for each target variable
-        Dictionary<string, List<IOnlineEvaluator>> trainingEvaluators =
-          new Dictionary<string, List<IOnlineEvaluator>>();
-        Dictionary<string, List<IOnlineEvaluator>> testEvaluators =
-          new Dictionary<string, List<IOnlineEvaluator>>();
-        foreach (string targetVariable in targetVariables) {
-          trainingEvaluators.Add(targetVariable, new List<IOnlineEvaluator>());
-          trainingEvaluators[targetVariable].Add(new OnlineMeanSquaredErrorEvaluator());
-          trainingEvaluators[targetVariable].Add(new OnlinePearsonsRSquaredEvaluator());
-          trainingEvaluators[targetVariable].Add(new OnlineMeanAbsolutePercentageErrorEvaluator());
-          trainingEvaluators[targetVariable].Add(new OnlineDirectionalSymmetryEvaluator());
-          trainingEvaluators[targetVariable].Add(new OnlineWeightedDirectionalSymmetryEvaluator());
-          trainingEvaluators[targetVariable].Add(new OnlineTheilsUStatisticEvaluator());
-
-          testEvaluators.Add(targetVariable, new List<IOnlineEvaluator>());
-          testEvaluators[targetVariable].Add(new OnlineMeanSquaredErrorEvaluator());
-          testEvaluators[targetVariable].Add(new OnlinePearsonsRSquaredEvaluator());
-          testEvaluators[targetVariable].Add(new OnlineMeanAbsolutePercentageErrorEvaluator());
-          testEvaluators[targetVariable].Add(new OnlineDirectionalSymmetryEvaluator());
-          testEvaluators[targetVariable].Add(new OnlineWeightedDirectionalSymmetryEvaluator());
-          testEvaluators[targetVariable].Add(new OnlineTheilsUStatisticEvaluator());
-        }
-
-        Evaluate(trainingStart, trainingEnd, trainingEvaluators);
-        Evaluate(testStart, testEnd, testEvaluators);
-
-        int columnIndex = 0;
-        foreach (string targetVariable in targetVariables) {
-          int rowIndex = 0;
-          // training
-          foreach (var evaluator in trainingEvaluators[targetVariable]) {
-            matrix[rowIndex++, columnIndex] = evaluator.Value;
-          }
-          columnIndex++;
-          // test
-          rowIndex = 0;
-          foreach (var evaluator in testEvaluators[targetVariable]) {
-            matrix[rowIndex++, columnIndex] = evaluator.Value;
-          }
-          columnIndex++;
-        }
-
-        matrixView.Content = matrix;
+        matrixView.Content = CalculateMatrix();
       } else
         matrixView.Content = null;
+    }
+
+    public DoubleMatrix CalculateMatrix() {
+      List<string> targetVariables = Content.ProblemData.TargetVariables.CheckedItems.Select(x => x.Value.Value).ToList();
+      DoubleMatrix matrix = new DoubleMatrix(rowNames.Count, targetVariables.Count() * 2);
+      matrix.RowNames = rowNames;
+      matrix.ColumnNames = targetVariables.SelectMany(x => new List<string>() { x + " (training)", x + " (test)" });
+      matrix.SortableView = false;
+
+      int trainingStart = Content.ProblemData.TrainingSamplesStart.Value;
+      int trainingEnd = Content.ProblemData.TrainingSamplesEnd.Value;
+      int testStart = Content.ProblemData.TestSamplesStart.Value;
+      int testEnd = Content.ProblemData.TestSamplesEnd.Value;
+      // create a list of time series evaluators for each target variable
+      Dictionary<string, List<IOnlineEvaluator>> trainingEvaluators =
+        new Dictionary<string, List<IOnlineEvaluator>>();
+      Dictionary<string, List<IOnlineEvaluator>> testEvaluators =
+        new Dictionary<string, List<IOnlineEvaluator>>();
+      foreach (string targetVariable in targetVariables) {
+        trainingEvaluators.Add(targetVariable, new List<IOnlineEvaluator>());
+        trainingEvaluators[targetVariable].Add(new OnlineMeanSquaredErrorEvaluator());
+        trainingEvaluators[targetVariable].Add(new OnlinePearsonsRSquaredEvaluator());
+        trainingEvaluators[targetVariable].Add(new OnlineMeanAbsolutePercentageErrorEvaluator());
+        trainingEvaluators[targetVariable].Add(new OnlineDirectionalSymmetryEvaluator());
+        trainingEvaluators[targetVariable].Add(new OnlineWeightedDirectionalSymmetryEvaluator());
+        trainingEvaluators[targetVariable].Add(new OnlineTheilsUStatisticEvaluator());
+
+        testEvaluators.Add(targetVariable, new List<IOnlineEvaluator>());
+        testEvaluators[targetVariable].Add(new OnlineMeanSquaredErrorEvaluator());
+        testEvaluators[targetVariable].Add(new OnlinePearsonsRSquaredEvaluator());
+        testEvaluators[targetVariable].Add(new OnlineMeanAbsolutePercentageErrorEvaluator());
+        testEvaluators[targetVariable].Add(new OnlineDirectionalSymmetryEvaluator());
+        testEvaluators[targetVariable].Add(new OnlineWeightedDirectionalSymmetryEvaluator());
+        testEvaluators[targetVariable].Add(new OnlineTheilsUStatisticEvaluator());
+      }
+
+      Evaluate(trainingStart, trainingEnd, trainingEvaluators);
+      Evaluate(testStart, testEnd, testEvaluators);
+
+      int columnIndex = 0;
+      foreach (string targetVariable in targetVariables) {
+        int rowIndex = 0;
+        // training
+        foreach (var evaluator in trainingEvaluators[targetVariable]) {
+          matrix[rowIndex++, columnIndex] = evaluator.Value;
+        }
+        columnIndex++;
+        // test
+        rowIndex = 0;
+        foreach (var evaluator in testEvaluators[targetVariable]) {
+          matrix[rowIndex++, columnIndex] = evaluator.Value;
+        }
+        columnIndex++;
+      }
+      return matrix;
     }
 
Index: /branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.TimeSeriesPrognosis/3.3/Symbolic/SymbolicTimeSeriesPrognosisSolution.cs
===================================================================
--- /branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.TimeSeriesPrognosis/3.3/Symbolic/SymbolicTimeSeriesPrognosisSolution.cs	(revision 5009)
+++ /branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.TimeSeriesPrognosis/3.3/Symbolic/SymbolicTimeSeriesPrognosisSolution.cs	(revision 5010)
@@ -220,5 +220,9 @@
       foreach (var xs in values) {
         for (int i = 0; i < xs.Length; i++) {
-          xs[i] = Math.Max(lowerEstimationLimit[i], Math.Min(upperEstimationLimit[i], xs[i]));
+          if (double.IsNaN(xs[i])) {
+            xs[i] = (upperEstimationLimit[i] - lowerEstimationLimit[i]) / 2.0 + lowerEstimationLimit[i];
+          } else {
+            xs[i] = Math.Max(lowerEstimationLimit[i], Math.Min(upperEstimationLimit[i], xs[i]));
+          }
         }
         yield return xs;
Index: /branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/Analyzers/OverfittingAnalyzer.cs
===================================================================
--- /branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/Analyzers/OverfittingAnalyzer.cs	(revision 5009)
+++ /branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/Analyzers/OverfittingAnalyzer.cs	(revision 5010)
@@ -119,6 +119,6 @@
       get { return (ILookupParameter<DoubleValue>)Parameters["InitialTrainingQuality"]; }
     }
-    public ILookupParameter<DoubleMatrix> TrainingAndValidationQualitiesParameter {
-      get { return (ILookupParameter<DoubleMatrix>)Parameters["TrainingAndValidationQualities"]; }
+    public ILookupParameter<ItemList<DoubleMatrix>> TrainingAndValidationQualitiesParameter {
+      get { return (ILookupParameter<ItemList<DoubleMatrix>>)Parameters["TrainingAndValidationQualities"]; }
     }
     public IValueLookupParameter<DoubleValue> PercentileParameter {
@@ -187,5 +187,5 @@
       Parameters.Add(new LookupParameter<ResultCollection>("Results"));
       Parameters.Add(new LookupParameter<DoubleValue>("InitialTrainingQuality"));
-      Parameters.Add(new LookupParameter<DoubleMatrix>("TrainingAndValidationQualities"));
+      Parameters.Add(new LookupParameter<ItemList<DoubleMatrix>>("TrainingAndValidationQualities"));
       Parameters.Add(new ValueLookupParameter<DoubleValue>("Percentile", new DoubleValue(1)));
 
@@ -207,5 +207,5 @@
       //}
       if (!Parameters.ContainsKey("TrainingAndValidationQualities")) {
-        Parameters.Add(new LookupParameter<DoubleMatrix>("TrainingAndValidationQualities"));
+        Parameters.Add(new LookupParameter<ItemList<DoubleMatrix>>("TrainingAndValidationQualities"));
       }
       if (!Parameters.ContainsKey("Percentile")) {
@@ -290,11 +290,11 @@
       double[] validationArr = new double[n];
       double[] trainingArr = new double[n];
-      //double[,] qualitiesArr = new double[n, 2];
+      double[,] qualitiesArr = new double[n, 2];
       for (int i = 0; i < n; i++) {
         validationArr[i] = orderedDistinctPairs[i].Validation;
         trainingArr[i] = orderedDistinctPairs[i].Training;
 
-        //qualitiesArr[i, 0] = trainingArr[i];
-        //qualitiesArr[i, 1] = validationArr[i];
+        qualitiesArr[i, 0] = trainingArr[i];
+        qualitiesArr[i, 1] = validationArr[i];
       }
       double r = alglib.correlation.spearmanrankcorrelation(trainingArr, validationArr, n);
@@ -309,5 +309,9 @@
 
       OverfittingParameter.ActualValue = new BoolValue(overfitting);
-      //TrainingAndValidationQualitiesParameter.ActualValue = new DoubleMatrix(qualitiesArr);
+      ItemList<DoubleMatrix> list = TrainingAndValidationQualitiesParameter.ActualValue;
+      if (list == null) {
+        TrainingAndValidationQualitiesParameter.ActualValue = new ItemList<DoubleMatrix>();
+      }
+      TrainingAndValidationQualitiesParameter.ActualValue.Add(new DoubleMatrix(qualitiesArr));
       return base.Apply();
     }
Index: /branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/SymbolicRegressionSolution.cs
===================================================================
--- /branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/SymbolicRegressionSolution.cs	(revision 5009)
+++ /branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/SymbolicRegressionSolution.cs	(revision 5010)
@@ -61,5 +61,5 @@
           let boundedX = Math.Min(UpperEstimationLimit, Math.Max(LowerEstimationLimit, x))
           select double.IsNaN(boundedX) ? UpperEstimationLimit : boundedX;
-      estimatedValues = Enumerable.Repeat(double.NaN, Math.Abs(minLag)).Concat(calculatedValues).ToList();
+      estimatedValues = Enumerable.Repeat(UpperEstimationLimit, Math.Abs(minLag)).Concat(calculatedValues).ToList();
       OnEstimatedValuesChanged();
     }
Index: /branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.Views/3.3/RunCollectionMonteCarloVariableImpactView.cs
===================================================================
--- /branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.Views/3.3/RunCollectionMonteCarloVariableImpactView.cs	(revision 5009)
+++ /branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.Views/3.3/RunCollectionMonteCarloVariableImpactView.cs	(revision 5010)
@@ -79,5 +79,5 @@
     }
 
-    private DoubleMatrix CalculateVariableImpactMatrix() {
+    public DoubleMatrix CalculateVariableImpactMatrix() {
       DoubleMatrix matrix = null;
       if (Content != null) {
Index: /branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.Views/3.3/RunCollectionVariableImpactView.cs
===================================================================
--- /branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.Views/3.3/RunCollectionVariableImpactView.cs	(revision 5009)
+++ /branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.Views/3.3/RunCollectionVariableImpactView.cs	(revision 5010)
@@ -76,5 +76,5 @@
     }
 
-    private DoubleMatrix CalculateVariableImpactMatrix() {
+    public DoubleMatrix CalculateVariableImpactMatrix() {
       DoubleMatrix matrix = null;
       if (Content != null) {
Index: /branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.Views/3.3/RunCollectionWinklerVariableImpactView.cs
===================================================================
--- /branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.Views/3.3/RunCollectionWinklerVariableImpactView.cs	(revision 5009)
+++ /branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.Views/3.3/RunCollectionWinklerVariableImpactView.cs	(revision 5010)
@@ -79,5 +79,5 @@
     }
 
-    private DoubleMatrix CalculateVariableImpactMatrix() {
+    public DoubleMatrix CalculateVariableImpactMatrix() {
       DoubleMatrix matrix = null;
       if (Content != null) {
