Index: branches/3040_VectorBasedGP/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/GPTP2021VectorBenchmarks/GPTP2021VectorBenchmarkDataDescriptor.cs
===================================================================
--- branches/3040_VectorBasedGP/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/GPTP2021VectorBenchmarks/GPTP2021VectorBenchmarkDataDescriptor.cs	(revision 17915)
+++ branches/3040_VectorBasedGP/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/GPTP2021VectorBenchmarks/GPTP2021VectorBenchmarkDataDescriptor.cs	(revision 17915)
@@ -0,0 +1,49 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 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.Linq;
+
+namespace HeuristicLab.Problems.Instances.DataAnalysis {
+  public class GPTP2021VectorBenchmarkDataDescriptor : ResourceRegressionDataDescriptor {
+    public GPTP2021VectorBenchmarkDataDescriptor(string name, string[] allowedInputVariables, string targetVariable = "y",
+          int trainingPartitionStart = 0, int trainingPartitionEnd = 750, int testPartitionStart = 750, int testPartitionEnd = 1000)
+      : base(name + ".csv") {
+      Name = name;
+      AllowedInputVariables = allowedInputVariables;
+      TargetVariable = targetVariable;
+      TrainingPartitionStart = trainingPartitionStart;
+      TrainingPartitionEnd = trainingPartitionEnd;
+      TestPartitionStart = testPartitionStart;
+      TestPartitionEnd = testPartitionEnd;
+    }
+    public override string Name { get; }
+    public override string Description { get { return ""; } }
+    protected override string TargetVariable { get; }
+    protected override string[] VariableNames {
+      get { return AllowedInputVariables.Concat(new[] { TargetVariable }).ToArray(); }
+    }
+    protected override string[] AllowedInputVariables { get; }
+    protected override int TrainingPartitionStart { get; }
+    protected override int TrainingPartitionEnd { get; }
+    protected override int TestPartitionStart { get; }
+    protected override int TestPartitionEnd { get; }
+  }
+}
Index: branches/3040_VectorBasedGP/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/GPTP2021VectorBenchmarks/GPTP2021VectorBenchmarksInstanceProvider.cs
===================================================================
--- branches/3040_VectorBasedGP/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/GPTP2021VectorBenchmarks/GPTP2021VectorBenchmarksInstanceProvider.cs	(revision 17915)
+++ branches/3040_VectorBasedGP/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/GPTP2021VectorBenchmarks/GPTP2021VectorBenchmarksInstanceProvider.cs	(revision 17915)
@@ -0,0 +1,89 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 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.IO.Compression;
+using System.Linq;
+using System.Runtime.Remoting.Messaging;
+
+namespace HeuristicLab.Problems.Instances.DataAnalysis {
+  public class GPTP2021VectorBenchmarksInstanceProvider : ResourceRegressionInstanceProvider {
+    public override string Name {
+      get { return "GPTP 2021 Vector Benchmark Problems"; }
+    }
+    public override string Description {
+      get {
+        return "";
+      }
+    }
+    public override Uri WebLink {
+      get { return null; }
+    }
+    public override string ReferencePublication {
+      get { return ""; }
+    }
+
+    protected override string FileName { get { return "GPTP2021VectorBenchmarks"; } }
+
+    public override IEnumerable<IDataDescriptor> GetDataDescriptors() {
+      return new List<ResourceRegressionDataDescriptor> {
+        new GPTP2021VectorBenchmarkDataDescriptor("test_A_01", new []{ "v1" }),
+        new GPTP2021VectorBenchmarkDataDescriptor("test_A_02", new []{ "v1" }),
+        new GPTP2021VectorBenchmarkDataDescriptor("test_A_03", new []{ "x1", "v1" }),
+        new GPTP2021VectorBenchmarkDataDescriptor("test_A_04", new []{ "x1", "x2", "v1", "v2" }),
+        new GPTP2021VectorBenchmarkDataDescriptor("test_A_05", new []{ "x1", "x2", "v1", "v2" }),
+        new GPTP2021VectorBenchmarkDataDescriptor("test_B_01", new []{ "x1", "x2", "v1", "v2" }),
+        new GPTP2021VectorBenchmarkDataDescriptor("test_B_02", new []{ "x1", "x2", "v1", "v2" }),
+        new GPTP2021VectorBenchmarkDataDescriptor("test_B_03", new []{ "x1", "x2", "v1", "v2", "v3" }),
+        new GPTP2021VectorBenchmarkDataDescriptor("test_B_04", new []{ "x1", "x2", "v1", "v2", "v3", "v4" }),
+
+        new GPTP2021VectorBenchmarkDataDescriptor("unrolled_test_A_01", Flatten(V("v1"))),
+        new GPTP2021VectorBenchmarkDataDescriptor("unrolled_test_A_02", Flatten(V("v1"))),
+        new GPTP2021VectorBenchmarkDataDescriptor("unrolled_test_A_03", Flatten(S("x1"), V("v1"))),
+        new GPTP2021VectorBenchmarkDataDescriptor("unrolled_test_A_04", Flatten(S("x1"), S("x2"), V("v1"), V("v2"))),
+        new GPTP2021VectorBenchmarkDataDescriptor("unrolled_test_A_05", Flatten(S("x1"), S("x2"), V("v1"), V("v2"))),
+        new GPTP2021VectorBenchmarkDataDescriptor("unrolled_test_B_01", Flatten(S("x1"), S("x2"), V("v1"), V("v2"))),
+        new GPTP2021VectorBenchmarkDataDescriptor("unrolled_test_B_02", Flatten(S("x1"), S("x2"), V("v1"), V("v2"))),
+        new GPTP2021VectorBenchmarkDataDescriptor("unrolled_test_B_03", Flatten(S("x1"), S("x2"), V("v1"), V("v2"), V("v3"))),
+        new GPTP2021VectorBenchmarkDataDescriptor("unrolled_test_B_04", Flatten(S("x1"), S("x2"), V("v1"), V("v2"), V("v3"), V("v4")))
+      };
+    }
+
+    private static IEnumerable<string> S(string name) {
+      yield return name;
+    }
+    // Unroll vector variable name
+    private static IEnumerable<string> V(string name, int length = 20) {
+      return Enumerable.Range(0, length).Select(i => name + "_" + i);
+    }
+    private static T[] Flatten<T>(params IEnumerable<T>[] values) {
+      return values.SelectMany(x => x).ToArray();
+    }
+
+    protected override TableFileFormatOptions GetFormatOptions(ZipArchiveEntry entry) {
+      return new TableFileFormatOptions() {
+        ColumnSeparator = ';',
+        VectorSeparator = ','
+      };
+    }
+  }
+}
Index: branches/3040_VectorBasedGP/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/VectorData/VectorDataTestThree.cs
===================================================================
--- branches/3040_VectorBasedGP/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/VectorData/VectorDataTestThree.cs	(revision 17825)
+++ branches/3040_VectorBasedGP/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/VectorData/VectorDataTestThree.cs	(revision 17915)
@@ -80,5 +80,5 @@
 
         //Y = (X1 + sum[2:](V1)) * mean[:-2](V2 + X2)
-        y = (x1 + v1.SubVector(2, v1.Count - 2).Sum() ) * (v2 + x2).SubVector(0, v2.Count - 2).Mean();
+        y = (x1 + v1.SubVector(2, v1.Count - 2).Sum()) * (v2 + x2).SubVector(0, v2.Count - 2).Mean();
 
         x1Column.Add(x1);
Index: branches/3040_VectorBasedGP/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/VectorData/VectorDataTestTwo.cs
===================================================================
--- branches/3040_VectorBasedGP/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/VectorData/VectorDataTestTwo.cs	(revision 17825)
+++ branches/3040_VectorBasedGP/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/VectorData/VectorDataTestTwo.cs	(revision 17915)
@@ -78,5 +78,5 @@
         v2 = rand.NextDoubleVector(2, 4, v2Length);
 
-        y = x1 * v1.PointwiseExp().PointwiseMultiply(x2  - v2 - 2).Sum();
+        y = x1 * v1.PointwiseExp().PointwiseMultiply(x2 - v2 - 2).Sum();
 
         x1Column.Add(x1);
