Index: /trunk/sources/HeuristicLab.Problems.Instances/3.3/HeuristicLab.Problems.Instances-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances/3.3/HeuristicLab.Problems.Instances-3.3.csproj	(revision 7879)
+++ /trunk/sources/HeuristicLab.Problems.Instances/3.3/HeuristicLab.Problems.Instances-3.3.csproj	(revision 7880)
@@ -118,4 +118,9 @@
     <Compile Include="IDataDescriptor.cs" />
     <Compile Include="Types\DistanceHelper.cs" />
+    <Compile Include="Types\VRP\MDCVRPTWData.cs" />
+    <Compile Include="Types\VRP\MDCVRPData.cs" />
+    <Compile Include="Types\VRP\PDPTWData.cs" />
+    <Compile Include="Types\VRP\CVRPTWData.cs" />
+    <Compile Include="Types\VRP\VRPData.cs" />
     <Compile Include="Types\VRP\CVRPData.cs" />
     <Compile Include="Types\GQAPData.cs" />
Index: /trunk/sources/HeuristicLab.Problems.Instances/3.3/Types/VRP/CVRPData.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances/3.3/Types/VRP/CVRPData.cs	(revision 7879)
+++ /trunk/sources/HeuristicLab.Problems.Instances/3.3/Types/VRP/CVRPData.cs	(revision 7880)
@@ -25,75 +25,9 @@
   /// Describes instances of the Capacitated Vehicle Routing Problem (CVRP).
   /// </summary>
-  public class CVRPData: IVRPData {
-    /// <summary>
-    /// The name of the instance
-    /// </summary>
-    public string Name { get; set; }
-    /// <summary>
-    /// Optional! The description of the instance
-    /// </summary>
-    public string Description { get; set; }
-
-    /// <summary>
-    /// The number of customers and the depot
-    /// </summary>
-    public int Dimension { get; set; }
-    /// <summary>
-    /// The distance measure that is used to calculate the distance between
-    ///the coordinates if no <see cref="Distances"/> is given.
-    /// </summary>
-    public DistanceMeasure DistanceMeasure { get; set; }
-    /// <summary>
-    /// Optional! The maximum number of vehicles that can be used.
-    /// </summary>
-    /// <remarks>
-    /// If no number is given, but a maximum is required, it can be assumed that
-    /// the maximum number of vehicles is equal to the number of customers as
-    /// there cannot be more than one vehicle per customer.
-    /// </remarks>
-    public double? MaximumVehicles { get; set; }
+  public class CVRPData: VRPData {
     /// <summary>
     /// The capacity of the vehicles, which is the same for all (homogeneous fleet).
     /// </summary>
     public double Capacity { get; set; }
-    /// <summary>
-    /// Optional! The distances are given in form of a distance matrix.
-    /// </summary>
-    /// <remarks>
-    /// Either Distances or the <see cref="Coordinates"/> need to be specified along
-    /// with a distance measure.
-    /// </remarks>
-    public double[,] Distances { get; set; }
-    /// <summary>
-    /// Optional! A a matrix of dimension [N, 2] where each row is either the customer
-    /// or the depot and the columns represent x and y coordinates respectively.
-    /// </summary>
-    /// <remarks>
-    /// Either <see cref="Distances"/> or the Coordinates need to be specified along
-    /// with a distance measure.
-    /// </remarks>
-    public double[,] Coordinates { get; set; }
-    /// <summary>
-    /// The demand vector that specifies how many goods need to be delivered.
-    /// The vector has to include the depot, but with a demand of 0.
-    /// </summary>
-    public double[] Demands { get; set; }
-
-    /// <summary>
-    /// Optional! The best-known solution as a list of tours in path-encoding.
-    /// </summary>
-    public int[][] BestKnownTour { get; set; }
-    /// <summary>
-    /// Optional! The quality of the best-known solution.
-    /// </summary>
-    public double? BestKnownQuality { get; set; }
-
-    /// <summary>
-    /// If only the coordinates are given, can calculate the distance matrix.
-    /// </summary>
-    /// <returns>A full distance matrix between all cities.</returns>
-    public double[,] GetDistanceMatrix() {
-      return DistanceHelper.GetDistanceMatrix(DistanceMeasure, Coordinates, Distances, Dimension);
-    }
   }
 }
Index: /trunk/sources/HeuristicLab.Problems.Instances/3.3/Types/VRP/CVRPTWData.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances/3.3/Types/VRP/CVRPTWData.cs	(revision 7880)
+++ /trunk/sources/HeuristicLab.Problems.Instances/3.3/Types/VRP/CVRPTWData.cs	(revision 7880)
@@ -0,0 +1,41 @@
+﻿#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
+
+
+namespace HeuristicLab.Problems.Instances {
+  /// <summary>
+  /// Describes instances of the Capacitated Vehicle Routing Problem with Time Windows (CVRPTW).
+  /// </summary>
+  public class CVRPTWData: CVRPData {
+    /// <summary>
+    /// The ready times of the customers and the depot
+    /// </summary>
+    public double[] ReadyTimes { get; set; }
+    /// <summary>
+    /// The service times of the customers and the depot
+    /// </summary>
+    public double[] ServiceTimes { get; set; }
+    /// <summary>
+    /// The due times of the customers and the depot
+    /// </summary>
+    public double[] DueTimes { get; set; }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances/3.3/Types/VRP/IVRPData.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances/3.3/Types/VRP/IVRPData.cs	(revision 7879)
+++ /trunk/sources/HeuristicLab.Problems.Instances/3.3/Types/VRP/IVRPData.cs	(revision 7880)
@@ -27,7 +27,12 @@
 namespace HeuristicLab.Problems.Instances {
   /// <summary>
-  /// Marker interface for VRP data
+  /// Interface for VRP data
   /// </summary>
   public interface IVRPData {
+    string Name { get; set; }
+    string Description { get; set; }
+    int Dimension { get; set; }
+    double? BestKnownQuality { get; set; }
+    int[][] BestKnownTour { get; set; }
   }
 }
Index: /trunk/sources/HeuristicLab.Problems.Instances/3.3/Types/VRP/MDCVRPData.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances/3.3/Types/VRP/MDCVRPData.cs	(revision 7880)
+++ /trunk/sources/HeuristicLab.Problems.Instances/3.3/Types/VRP/MDCVRPData.cs	(revision 7880)
@@ -0,0 +1,41 @@
+﻿#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
+
+
+namespace HeuristicLab.Problems.Instances {
+  /// <summary>
+  /// Describes instances of the Multi-Depot Capacitated Vehicle Routing Problem (MDCVRP).
+  /// </summary>
+  public class MDCVRPData: VRPData {
+    /// <summary>
+    /// The number of depots
+    /// </summary>
+    public int Depots { get; set; }
+    /// <summary>
+    /// The assignment of the vehicles to the depot.
+    /// </summary>
+    public int[] VehicleDepotAssignment { get; set; }
+    /// <summary>
+    /// The capacity of the vehicles, which is not the same for all (heterogeneous fleet).
+    /// </summary>
+    public double[] Capacity { get; set; }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances/3.3/Types/VRP/MDCVRPTWData.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances/3.3/Types/VRP/MDCVRPTWData.cs	(revision 7880)
+++ /trunk/sources/HeuristicLab.Problems.Instances/3.3/Types/VRP/MDCVRPTWData.cs	(revision 7880)
@@ -0,0 +1,41 @@
+﻿#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
+
+
+namespace HeuristicLab.Problems.Instances {
+  /// <summary>
+  /// Describes instances of the Multi-Depot Capacitated Vehicle Routing Problem (MDCVRP).
+  /// </summary>
+  public class MDCVRPTWData: MDCVRPData {
+    /// <summary>
+    /// The ready times of the customers and the depot
+    /// </summary>
+    public double[] ReadyTimes { get; set; }
+    /// <summary>
+    /// The service times of the customers and the depot
+    /// </summary>
+    public double[] ServiceTimes { get; set; }
+    /// <summary>
+    /// The due times of the customers and the depot
+    /// </summary>
+    public double[] DueTimes { get; set; }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances/3.3/Types/VRP/PDPTWData.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances/3.3/Types/VRP/PDPTWData.cs	(revision 7880)
+++ /trunk/sources/HeuristicLab.Problems.Instances/3.3/Types/VRP/PDPTWData.cs	(revision 7880)
@@ -0,0 +1,33 @@
+﻿#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
+
+
+namespace HeuristicLab.Problems.Instances {
+  /// <summary>
+  /// Describes instances of the Pickup and Delivery Problem with Time Windows (PDPTW).
+  /// </summary>
+  public class PDPTWData: CVRPTWData {
+    /// <summary>
+    /// The pickup and delivery locations of the requests
+    /// </summary>
+    public int[] PickupDeliveryLocations { get; set; }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances/3.3/Types/VRP/VRPData.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances/3.3/Types/VRP/VRPData.cs	(revision 7880)
+++ /trunk/sources/HeuristicLab.Problems.Instances/3.3/Types/VRP/VRPData.cs	(revision 7880)
@@ -0,0 +1,92 @@
+﻿#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
+
+
+namespace HeuristicLab.Problems.Instances {
+  /// <summary>
+  /// Describes instances of the Vehicle Routing Problem (VRP).
+  /// </summary>
+  public abstract class VRPData: IVRPData {
+    /// <summary>
+    /// The name of the instance
+    /// </summary>
+    public string Name { get; set; }
+    /// <summary>
+    /// Optional! The description of the instance
+    /// </summary>
+    public string Description { get; set; }
+
+    /// <summary>
+    /// The number of customers and the depot
+    /// </summary>
+    public int Dimension { get; set; }
+    /// <summary>
+    /// The distance measure that is used to calculate the distance between
+    ///the coordinates if no <see cref="Distances"/> is given.
+    /// </summary>
+    public DistanceMeasure DistanceMeasure { get; set; }
+    /// <summary>
+    /// Optional! The maximum number of vehicles that can be used.
+    /// </summary>
+    /// <remarks>
+    /// If no number is given, but a maximum is required, it can be assumed that
+    /// the maximum number of vehicles is equal to the number of customers as
+    /// there cannot be more than one vehicle per customer.
+    /// </remarks>
+    public double? MaximumVehicles { get; set; }
+    /// <remarks>
+    /// Either Distances or the <see cref="Coordinates"/> need to be specified along
+    /// with a distance measure.
+    /// </remarks>
+    public double[,] Distances { get; set; }
+    /// <summary>
+    /// Optional! A a matrix of dimension [N, 2] where each row is either the customer
+    /// or the depot and the columns represent x and y coordinates respectively.
+    /// </summary>
+    /// <remarks>
+    /// Either <see cref="Distances"/> or the Coordinates need to be specified along
+    /// with a distance measure.
+    /// </remarks>
+    public double[,] Coordinates { get; set; }
+    /// <summary>
+    /// The demand vector that specifies how many goods need to be delivered.
+    /// The vector has to include the depot, but with a demand of 0.
+    /// </summary>
+    public double[] Demands { get; set; }
+
+    /// <summary>
+    /// Optional! The best-known solution as a list of tours in path-encoding.
+    /// </summary>
+    public int[][] BestKnownTour { get; set; }
+    /// <summary>
+    /// Optional! The quality of the best-known solution.
+    /// </summary>
+    public double? BestKnownQuality { get; set; }
+
+    /// <summary>
+    /// If only the coordinates are given, can calculate the distance matrix.
+    /// </summary>
+    /// <returns>A full distance matrix between all cities.</returns>
+    public double[,] GetDistanceMatrix() {
+      return DistanceHelper.GetDistanceMatrix(DistanceMeasure, Coordinates, Distances, Dimension);
+    }
+  }
+}
