Index: /branches/VRP/HeuristicLab.Problems.Instances.VehicleRouting/3.4/HeuristicLab.Problems.Instances.VehicleRouting-3.4.csproj
===================================================================
--- /branches/VRP/HeuristicLab.Problems.Instances.VehicleRouting/3.4/HeuristicLab.Problems.Instances.VehicleRouting-3.4.csproj	(revision 7887)
+++ /branches/VRP/HeuristicLab.Problems.Instances.VehicleRouting/3.4/HeuristicLab.Problems.Instances.VehicleRouting-3.4.csproj	(revision 7888)
@@ -135,4 +135,7 @@
     <Compile Include="GoldenFormat\GoldenParser.cs" />
     <Compile Include="GoldenFormat\GoldenFormatInstanceProvider.cs" />
+    <Compile Include="TaillardFormat\TaillardInstanceProvider.cs" />
+    <Compile Include="TaillardFormat\TaillardParser.cs" />
+    <Compile Include="TaillardFormat\TaillardFormatInstanceProvider.cs" />
     <Compile Include="TSPLibFormat\AugeratInstanceProvider.cs" />
     <Compile Include="TSPLibFormat\ChristofidesEilonInstanceProvider.cs" />
@@ -161,4 +164,6 @@
     <EmbeddedResource Include="Data\Christofides.zip" />
     <EmbeddedResource Include="Data\Kytojoki.zip" />
+    <EmbeddedResource Include="Data\Taillard.opt.zip" />
+    <EmbeddedResource Include="Data\Taillard.zip" />
     <None Include="Plugin.cs.frame" />
     <Compile Include="Plugin.cs" />
Index: /branches/VRP/HeuristicLab.Problems.Instances.VehicleRouting/3.4/TaillardFormat/TaillardFormatInstanceProvider.cs
===================================================================
--- /branches/VRP/HeuristicLab.Problems.Instances.VehicleRouting/3.4/TaillardFormat/TaillardFormatInstanceProvider.cs	(revision 7888)
+++ /branches/VRP/HeuristicLab.Problems.Instances.VehicleRouting/3.4/TaillardFormat/TaillardFormatInstanceProvider.cs	(revision 7888)
@@ -0,0 +1,56 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 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;
+using System.Linq;
+using System.Reflection;
+using System.Text.RegularExpressions;
+using ICSharpCode.SharpZipLib.Zip;
+using HeuristicLab.Problems.Instances.TSPLIB;
+
+namespace HeuristicLab.Problems.Instances.VehicleRouting {
+  public abstract class TaillardFormatInstanceProvider : VRPInstanceProvider<CVRPData> {
+    protected override CVRPData LoadData(Stream stream) {
+      return LoadInstance(new TaillardParser(stream));
+    }
+
+    public override CVRPData LoadData(string path) {
+      return LoadInstance(new TaillardParser(path));
+    }
+
+    private CVRPData LoadInstance(TaillardParser parser) {
+      parser.Parse();
+
+      var instance = new CVRPData();
+      instance.Dimension = parser.Cities + 1;
+      instance.Coordinates = parser.Coordinates;
+      instance.Capacity = parser.Capacity;
+      instance.Demands = parser.Demands;
+      instance.DistanceMeasure = DistanceMeasure.Euclidean;
+
+      instance.Name = parser.ProblemName;
+
+      return instance;
+    }
+  }
+}
Index: /branches/VRP/HeuristicLab.Problems.Instances.VehicleRouting/3.4/TaillardFormat/TaillardInstanceProvider.cs
===================================================================
--- /branches/VRP/HeuristicLab.Problems.Instances.VehicleRouting/3.4/TaillardFormat/TaillardInstanceProvider.cs	(revision 7888)
+++ /branches/VRP/HeuristicLab.Problems.Instances.VehicleRouting/3.4/TaillardFormat/TaillardInstanceProvider.cs	(revision 7888)
@@ -0,0 +1,52 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 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;
+using System.Linq;
+using System.Reflection;
+using System.Text.RegularExpressions;
+using ICSharpCode.SharpZipLib.Zip;
+
+namespace HeuristicLab.Problems.Instances.VehicleRouting {
+  public class TaillardInstanceProvider : TaillardFormatInstanceProvider {
+    public override string Name {
+      get { return "Taillard (CVRP)"; }
+    }
+
+    public override string Description {
+      get { return "Taillard test set"; }
+    }
+    
+    public override Uri WebLink {
+      get { return new Uri(@"http://mistic.heig-vd.ch/taillard/problemes.dir/vrp.dir/vrp.html"); }
+    }
+
+    public override string ReferencePublication {
+      get { return null; }
+    }
+
+    protected override string FileName {
+      get { return "Taillard"; }
+    }
+  }
+}
Index: /branches/VRP/HeuristicLab.Problems.Instances.VehicleRouting/3.4/TaillardFormat/TaillardParser.cs
===================================================================
--- /branches/VRP/HeuristicLab.Problems.Instances.VehicleRouting/3.4/TaillardFormat/TaillardParser.cs	(revision 7888)
+++ /branches/VRP/HeuristicLab.Problems.Instances.VehicleRouting/3.4/TaillardFormat/TaillardParser.cs	(revision 7888)
@@ -0,0 +1,131 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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;
+using System.Text.RegularExpressions;
+
+namespace HeuristicLab.Problems.Instances.VehicleRouting {
+  class TaillardParser {
+    private string file;
+    private Stream stream;
+    private string problemName;
+    private int cities;
+    private double capacity;
+    private List<double> xCoord;
+    private List<double> yCoord;
+    private List<double> demand;
+
+    public int Cities {
+      get {
+        return cities;
+      }
+    }
+
+    public double Capacity {
+      get {
+        return capacity;
+      }
+    }
+
+    public double[,] Coordinates {
+      get {
+        double[] x = xCoord.ToArray();
+        double[] y = yCoord.ToArray();
+        double[,] coord = new double[x.Length, 2];
+        for (int i = 0; i < x.Length; i++) {
+          coord[i, 0] = x[i];
+          coord[i, 1] = y[i];
+        }
+        return coord;
+      }
+    }
+
+    public double[] Demands {
+      get {
+        return demand.ToArray();
+      }
+    }
+
+    public String ProblemName {
+      get {
+        return problemName;
+      }
+    }
+
+    public TaillardParser() {
+      xCoord = new List<double>();
+      yCoord = new List<double>();
+      demand = new List<double>();
+    }
+
+    public TaillardParser(string file): this() {
+      this.file = file;
+    }
+
+    public TaillardParser(Stream stream)
+      : this() {
+      this.stream = stream;
+    }
+
+    public void Parse() {
+      string line;
+      Regex reg = new Regex(@"-?\d+(\.\d+)?");
+      MatchCollection m;
+
+      StreamReader reader;
+      if (stream != null) {
+        reader = new StreamReader(stream);
+      } else {
+        reader = new StreamReader(file);
+        problemName = Path.GetFileNameWithoutExtension(file);
+      }
+
+      using (reader) {
+        line = reader.ReadLine();
+        m = reg.Matches(line);
+        if (m.Count != 2)
+          throw new InvalidDataException("File has wrong format!");
+
+        cities = int.Parse(m[0].Value);
+
+        line = reader.ReadLine();
+        m = reg.Matches(line);
+        capacity = int.Parse(m[0].Value);
+
+        line = reader.ReadLine();
+        m = reg.Matches(line);
+        xCoord.Add(double.Parse(m[0].Value, System.Globalization.CultureInfo.InvariantCulture));
+        yCoord.Add(double.Parse(m[1].Value, System.Globalization.CultureInfo.InvariantCulture));
+        demand.Add(0);
+
+        for (int i = 0; i < cities; i++) {
+          line = reader.ReadLine();
+          m = reg.Matches(line);
+          xCoord.Add(double.Parse(m[1].Value, System.Globalization.CultureInfo.InvariantCulture));
+          yCoord.Add(double.Parse(m[2].Value, System.Globalization.CultureInfo.InvariantCulture));
+          demand.Add(int.Parse(m[3].Value));
+        }
+      }
+    }
+  }
+}
