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 17936)
@@ -52,30 +52,73 @@
         new GPTP2021VectorBenchmarkDataDescriptor("test_A_04", new []{ "x1", "x2", "v1", "v2" }),
         new GPTP2021VectorBenchmarkDataDescriptor("test_A_05", new []{ "x1", "x2", "v1", "v2" }),
+        new GPTP2021VectorBenchmarkDataDescriptor("test_A_11", new []{ "x1", "x2", "v1", "v2" }),
+        new GPTP2021VectorBenchmarkDataDescriptor("test_A_12", new []{ "x1", "x2", "x3", "v1", "v2", "v3" }),
+        new GPTP2021VectorBenchmarkDataDescriptor("test_A_13", new []{ "x1", "x2", "x3", "v1", "v2", "v3"  }),
+        new GPTP2021VectorBenchmarkDataDescriptor("test_A_14", new []{ "x1", "x2", "x3", "x4", "x5", "v1", "v2", "v3", "v4", "v5" }),
+        new GPTP2021VectorBenchmarkDataDescriptor("test_A_15", new []{ "x1", "x2", "x3", "x4", "x5", "v1", "v2", "v3", "v4", "v5" }),
         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("test_B_11", new []{ "x1", "x2", "x3", "x4", "v1", "v2", "v3", "v4" }),
+        new GPTP2021VectorBenchmarkDataDescriptor("test_B_12", new []{ "x1", "x2", "x3", "x4", "v1", "v2", "v3", "v4" }),
+        new GPTP2021VectorBenchmarkDataDescriptor("test_B_13", new []{ "x1", "x2", "x3", "x4", "x5", "v1", "v2", "v3", "v4", "v5", "v6", "v7" }),
+        new GPTP2021VectorBenchmarkDataDescriptor("test_B_14", new []{ "x1", "x2", "x3", "x4", "x5", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v8" }),
 
-        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")))
+        new GPTP2021VectorBenchmarkDataDescriptor("unrolled_test_A_01", Flatten(U("v1"))),
+        new GPTP2021VectorBenchmarkDataDescriptor("unrolled_test_A_02", Flatten(U("v1"))),
+        new GPTP2021VectorBenchmarkDataDescriptor("unrolled_test_A_03", Flatten(S("x1"), U("v1"))),
+        new GPTP2021VectorBenchmarkDataDescriptor("unrolled_test_A_04", Flatten(S("x1"), S("x2"), U("v1"), U("v2"))),
+        new GPTP2021VectorBenchmarkDataDescriptor("unrolled_test_A_05", Flatten(S("x1"), S("x2"), U("v1"), U("v2"))),
+        new GPTP2021VectorBenchmarkDataDescriptor("unrolled_test_A_11", Flatten(S("x1"), S("x2"), U("v1"), U("v2"))),
+        new GPTP2021VectorBenchmarkDataDescriptor("unrolled_test_A_12", Flatten(S("x1"), S("x2"), S("x3"), U("v1"), U("v2"), U("v3"))),
+        new GPTP2021VectorBenchmarkDataDescriptor("unrolled_test_A_13", Flatten(S("x1"), S("x2"), S("x3"), U("v1"), U("v2"), U("v3"))),
+        new GPTP2021VectorBenchmarkDataDescriptor("unrolled_test_A_14", Flatten(S("x1"), S("x2"), S("x3"), S("x4"), S("x5"), U("v1"), U("v2"), U("v3"), U("v4"), U("v5"))),
+        new GPTP2021VectorBenchmarkDataDescriptor("unrolled_test_A_15", Flatten(S("x1"), S("x2"), S("x3"), S("x4"), S("x5"), U("v1"), U("v2"), U("v3"), U("v4"), U("v5"))),
+        new GPTP2021VectorBenchmarkDataDescriptor("unrolled_test_B_01", Flatten(S("x1"), S("x2"), U("v1"), U("v2"))),
+        new GPTP2021VectorBenchmarkDataDescriptor("unrolled_test_B_02", Flatten(S("x1"), S("x2"), U("v1"), U("v2"))),
+        new GPTP2021VectorBenchmarkDataDescriptor("unrolled_test_B_03", Flatten(S("x1"), S("x2"), U("v1"), U("v2"), U("v3"))),
+        new GPTP2021VectorBenchmarkDataDescriptor("unrolled_test_B_04", Flatten(S("x1"), S("x2"), U("v1"), U("v2"), U("v3"), U("v4"))),
+        new GPTP2021VectorBenchmarkDataDescriptor("unrolled_test_B_11", Flatten(S("x1"), S("x2"), S("x3"), S("x4"), U("v1"), U("v2"), U("v3"), U("v4"))),
+        new GPTP2021VectorBenchmarkDataDescriptor("unrolled_test_B_12", Flatten(S("x1"), S("x2"), S("x3"), S("x4"), U("v1"), U("v2"), U("v3"), U("v4"))),
+        new GPTP2021VectorBenchmarkDataDescriptor("unrolled_test_B_13", Flatten(S("x1"), S("x2"), S("x3"), S("x4"), S("x5"), U("v1"), U("v2"), U("v3"), U("v4"), U("v5"), U("v6"), U("v7"))),
+        new GPTP2021VectorBenchmarkDataDescriptor("unrolled_test_B_14", Flatten(S("x1"), S("x2"), S("x3"), S("x4"), S("x5"), U("v1"), U("v2"), U("v3"), U("v4"), U("v5"), U("v6"), U("v7"), U("v8"))),
+
+        new GPTP2021VectorBenchmarkDataDescriptor("pre_aggregated_test_A_01", Flatten(A("v1"))),
+        new GPTP2021VectorBenchmarkDataDescriptor("pre_aggregated_test_A_02", Flatten(A("v1"))),
+        new GPTP2021VectorBenchmarkDataDescriptor("pre_aggregated_test_A_03", Flatten(S("x1"), A("v1"))),
+        new GPTP2021VectorBenchmarkDataDescriptor("pre_aggregated_test_A_04", Flatten(S("x1"), S("x2"), A("v1"), A("v2"))),
+        new GPTP2021VectorBenchmarkDataDescriptor("pre_aggregated_test_A_05", Flatten(S("x1"), S("x2"), A("v1"), A("v2"))),
+        new GPTP2021VectorBenchmarkDataDescriptor("pre_aggregated_test_A_11", Flatten(S("x1"), S("x2"), A("v1"), A("v2"))),
+        new GPTP2021VectorBenchmarkDataDescriptor("pre_aggregated_test_A_12", Flatten(S("x1"), S("x2"), S("x3"), A("v1"), A("v2"), A("v3"))),
+        new GPTP2021VectorBenchmarkDataDescriptor("pre_aggregated_test_A_13", Flatten(S("x1"), S("x2"), S("x3"), A("v1"), A("v2"), A("v3"))),
+        new GPTP2021VectorBenchmarkDataDescriptor("pre_aggregated_test_A_14", Flatten(S("x1"), S("x2"), S("x3"), S("x4"), S("x5"), A("v1"), A("v2"), A("v3"), A("v4"), A("v5"))),
+        new GPTP2021VectorBenchmarkDataDescriptor("pre_aggregated_test_A_15", Flatten(S("x1"), S("x2"), S("x3"), S("x4"), S("x5"), A("v1"), A("v2"), A("v3"), A("v4"), A("v5"))),
+        new GPTP2021VectorBenchmarkDataDescriptor("pre_aggregated_test_B_01", Flatten(S("x1"), S("x2"), A("v1"), A("v2"))),
+        new GPTP2021VectorBenchmarkDataDescriptor("pre_aggregated_test_B_02", Flatten(S("x1"), S("x2"), A("v1"), A("v2"))),
+        new GPTP2021VectorBenchmarkDataDescriptor("pre_aggregated_test_B_03", Flatten(S("x1"), S("x2"), A("v1"), A("v2"), A("v3"))),
+        new GPTP2021VectorBenchmarkDataDescriptor("pre_aggregated_test_B_04", Flatten(S("x1"), S("x2"), A("v1"), A("v2"), A("v3"), A("v4"))),
+        new GPTP2021VectorBenchmarkDataDescriptor("pre_aggregated_test_B_11", Flatten(S("x1"), S("x2"), S("x3"), S("x4"), A("v1"), A("v2"), A("v3"), A("v4"))),
+        new GPTP2021VectorBenchmarkDataDescriptor("pre_aggregated_test_B_12", Flatten(S("x1"), S("x2"), S("x3"), S("x4"), A("v1"), A("v2"), A("v3"), A("v4"))),
+        new GPTP2021VectorBenchmarkDataDescriptor("pre_aggregated_test_B_13", Flatten(S("x1"), S("x2"), S("x3"), S("x4"), S("x5"), A("v1"), A("v2"), A("v3"), A("v4"), A("v5"), A("v6"), A("v7"))),
+        new GPTP2021VectorBenchmarkDataDescriptor("pre_aggregated_test_B_14", Flatten(S("x1"), S("x2"), S("x3"), S("x4"), S("x5"), A("v1"), A("v2"), A("v3"), A("v4"), A("v5"), A("v6"), A("v7"), A("v8"))),
       };
     }
 
+    private static T[] Flatten<T>(params IEnumerable<T>[] values) {
+      return values.SelectMany(x => x).ToArray();
+    }
     private static IEnumerable<string> S(string name) {
       yield return name;
     }
     // Unroll vector variable name
-    private static IEnumerable<string> V(string name, int length = 20) {
+    private static IEnumerable<string> U(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();
+    // Pre-aggregated variable name
+    private static readonly string[] DefaultAggregationNames = { "sum", "mean", "std", "var", "median", "amin", "amax" };
+    private static IEnumerable<string> A(string name, string[] aggregationNames = null) {
+      aggregationNames = aggregationNames ?? DefaultAggregationNames;
+      return aggregationNames.Select(aggrName => $"{name}_{aggrName}");
     }
 
