Index: branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis.Views/3.4/HeuristicLab.Problems.DataAnalysis.Views-3.4.csproj
===================================================================
--- branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis.Views/3.4/HeuristicLab.Problems.DataAnalysis.Views-3.4.csproj	(revision 14762)
+++ branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis.Views/3.4/HeuristicLab.Problems.DataAnalysis.Views-3.4.csproj	(revision 14825)
@@ -215,4 +215,5 @@
     <Compile Include="Interfaces\IGradientChart.cs" />
     <Compile Include="Interfaces\IDataPreprocessorStarter.cs" />
+    <Compile Include="MenuItems\ChangeDataOfOptimizersMenuItem.cs" />
     <Compile Include="MenuItems\ShrinkDataAnalysisRunsMenuItem.cs" />
     <Compile Include="ModifiableDatasetView.cs">
Index: branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis.Views/3.4/MenuItems/ChangeDataOfOptimizersMenuItem.cs
===================================================================
--- branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis.Views/3.4/MenuItems/ChangeDataOfOptimizersMenuItem.cs	(revision 14825)
+++ branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis.Views/3.4/MenuItems/ChangeDataOfOptimizersMenuItem.cs	(revision 14825)
@@ -0,0 +1,115 @@
+﻿#region License Information
+
+/* HeuristicLab
+ * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Windows.Forms;
+using HeuristicLab.Common;
+using HeuristicLab.MainForm;
+using HeuristicLab.Optimization;
+using HeuristicLab.Optimizer;
+using MenuItem = HeuristicLab.MainForm.WindowsForms.MenuItem;
+
+namespace HeuristicLab.Problems.DataAnalysis.Views {
+  internal sealed class ChangeDataOfOptimizersMenuItem : MenuItem, IOptimizerUserInterfaceItemProvider {
+    public override string Name {
+      get { return "Change problem data"; }
+    }
+    public override IEnumerable<string> Structure {
+      get { return new string[] { "&Edit", "&Data Analysis" }; }
+    }
+    public override int Position {
+      get { return 5400; }
+    }
+    public override string ToolTipText {
+      get { return "This command changes the problem data of all optimizers in the active view."; }
+    }
+
+    protected override void OnToolStripItemSet(EventArgs e) {
+      ToolStripItem.Enabled = false;
+    }
+
+    protected override void OnActiveViewChanged(object sender, EventArgs e) {
+      IContentView activeView = MainFormManager.MainForm.ActiveView as IContentView;
+      if (activeView == null) {
+        ToolStripItem.Enabled = false;
+        return;
+      }
+
+      var optimizer = activeView.Content as IOptimizer;
+      if (optimizer == null) {
+        ToolStripItem.Enabled = false;
+        return;
+      }
+
+      ToolStripItem.Enabled = true;
+    }
+
+    public override void Execute() {
+      using (OpenFileDialog openFileDialog = new OpenFileDialog()) {
+        openFileDialog.Title = "Open Problem file";
+        openFileDialog.FileName = "Item";
+        openFileDialog.Multiselect = false;
+        openFileDialog.DefaultExt = "hl";
+        openFileDialog.Filter = "HeuristicLab Files|*.hl|All Files|*.*";
+
+        if (openFileDialog.ShowDialog() != DialogResult.OK) return;
+
+        var content = ContentManager.Load(openFileDialog.FileName);
+        var problem = content as IDataAnalysisProblem;
+        IDataAnalysisProblemData problemData = null;
+        if (problem != null) {
+          problemData = problem.ProblemData;
+        } else {
+          problemData = content as IDataAnalysisProblemData;
+        }
+        if (problemData == null) throw new ArgumentException("The specified file does not contain a HeuristicLab problem.");
+
+        var activeView = (IContentView)MainFormManager.MainForm.ActiveView;
+        var optimizer = (IOptimizer)activeView.Content;
+        var newOptimizer = (IOptimizer)optimizer.Clone();
+
+        var algorithm = newOptimizer as IAlgorithm;
+        if (algorithm != null) {
+          ChangeProblemData(algorithm, problemData);
+        }
+        foreach (var alg in newOptimizer.NestedOptimizers.OfType<IAlgorithm>()) {
+          ChangeProblemData(alg, (IDataAnalysisProblemData)problemData.Clone());
+          if (problem != null) alg.Name += " " + problem.Name;
+        }
+
+        MainFormManager.MainForm.ShowContent(newOptimizer);
+      }
+
+    }
+
+    private void ChangeProblemData(IAlgorithm algorithm, IDataAnalysisProblemData problemData) {
+      if (algorithm == null) throw new ArgumentNullException("algorithm");
+      if (problemData == null) throw new ArgumentNullException("problemData");
+
+      var problem = algorithm.Problem as IDataAnalysisProblem;
+      if (problem != null) problem.ProblemDataParameter.ActualValue = problemData;
+    }
+  }
+}
Index: branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/ConfidenceRegressionSolutionEstimatedValuesView.cs
===================================================================
--- branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/ConfidenceRegressionSolutionEstimatedValuesView.cs	(revision 14762)
+++ branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/ConfidenceRegressionSolutionEstimatedValuesView.cs	(revision 14825)
@@ -61,15 +61,15 @@
       foreach (var row in Enumerable.Range(0, Content.ProblemData.Dataset.Rows)) {
         estimated_var.MoveNext();
-        matrix[row, 7] = estimated_var.Current.ToString();
+        matrix[row, 8] = estimated_var.Current.ToString();
       }
 
       foreach (var row in Content.ProblemData.TrainingIndices) {
         estimated_var_training.MoveNext();
-        matrix[row, 8] = estimated_var_training.Current.ToString();
+        matrix[row, 9] = estimated_var_training.Current.ToString();
       }
 
       foreach (var row in Content.ProblemData.TestIndices) {
         estimated_var_test.MoveNext();
-        matrix[row, 9] = estimated_var_test.Current.ToString();
+        matrix[row, 10] = estimated_var_test.Current.ToString();
       }
 
Index: branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/RegressionSolutionEstimatedValuesView.cs
===================================================================
--- branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/RegressionSolutionEstimatedValuesView.cs	(revision 14762)
+++ branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/RegressionSolutionEstimatedValuesView.cs	(revision 14825)
@@ -81,5 +81,5 @@
 
     protected virtual StringMatrix CreateValueMatrix() {
-      string[,] values = new string[Content.ProblemData.Dataset.Rows, 7];
+      string[,] values = new string[Content.ProblemData.Dataset.Rows, 8];
 
       double[] target = Content.ProblemData.Dataset.GetDoubleValues(Content.ProblemData.TargetVariable).ToArray();
@@ -101,14 +101,15 @@
         estimated.MoveNext();
         double est = estimated.Current;
-        double res = Math.Abs(est - target[row]);
+        double res = target[row] - est;
         values[row, 0] = row.ToString();
         values[row, 1] = target[row].ToString();
         values[row, 2] = est.ToString();
-        values[row, 5] = Math.Abs(res).ToString();
-        values[row, 6] = Math.Abs(res / target[row]).ToString();
+        values[row, 5] = res.ToString();
+        values[row, 6] = Math.Abs(res).ToString();
+        values[row, 7] = Math.Abs(res / target[row]).ToString();
       }
 
       var matrix = new StringMatrix(values);
-      matrix.ColumnNames = new string[] { "Id", TARGETVARIABLE_SERIES_NAME, ESTIMATEDVALUES_SERIES_NAME, ESTIMATEDVALUES_TRAINING_SERIES_NAME, ESTIMATEDVALUES_TEST_SERIES_NAME, "Absolute Error (all)", "Relative Error (all)" };
+      matrix.ColumnNames = new string[] { "Id", TARGETVARIABLE_SERIES_NAME, ESTIMATEDVALUES_SERIES_NAME, ESTIMATEDVALUES_TRAINING_SERIES_NAME, ESTIMATEDVALUES_TEST_SERIES_NAME, "Residuals (all)", "Absolute Error (all)", "Relative Error (all)" };
       matrix.SortableView = true;
       return matrix;
Index: branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis.Views/3.4/Solution Views/DataAnalysisSolutionView.cs
===================================================================
--- branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis.Views/3.4/Solution Views/DataAnalysisSolutionView.cs	(revision 14762)
+++ branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis.Views/3.4/Solution Views/DataAnalysisSolutionView.cs	(revision 14825)
@@ -29,5 +29,4 @@
 using HeuristicLab.MainForm;
 using HeuristicLab.Optimization;
-using HeuristicLab.Optimization.Views;
 using HeuristicLab.Persistence.Default.Xml;
 using HeuristicLab.PluginInfrastructure;
@@ -97,5 +96,5 @@
     }
 
-    protected override void itemsListView_DoubleClick(object sender, EventArgs e) {
+    protected sealed override void itemsListView_DoubleClick(object sender, EventArgs e) {
       if (itemsListView.SelectedItems.Count != 1) return;
 
@@ -103,6 +102,7 @@
       Type viewType = itemsListView.SelectedItems[0].Tag as Type;
       if (result != null) {
-        IContentView view = MainFormManager.MainForm.ShowContent(result, typeof(ResultView));
+        IContentView view = MainFormManager.MainForm.ShowContent(result.Value);
         if (view != null) {
+          view.Caption = result.Name;
           view.ReadOnly = ReadOnly;
           view.Locked = Locked;
