Index: /trunk/sources/HeuristicLab.Problems.Instances.VehicleRouting/3.4/CordeauFormat/CordeauFormatInstanceProvider.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.VehicleRouting/3.4/CordeauFormat/CordeauFormatInstanceProvider.cs	(revision 11477)
+++ /trunk/sources/HeuristicLab.Problems.Instances.VehicleRouting/3.4/CordeauFormat/CordeauFormatInstanceProvider.cs	(revision 11478)
@@ -43,17 +43,17 @@
     protected override void LoadSolution(Stream stream, TData instance) {
       using (var reader = new StreamReader(stream)) {
-        double costs = double.Parse(reader.ReadLine(), new CultureInfo("en-US"));
+        double costs = double.Parse(reader.ReadLine(), CultureInfo.InvariantCulture);
 
         var toursPerDepotQuery =
-          from line in ReadAllLines(reader)
+          from line in reader.ReadAllLines()
           where !string.IsNullOrEmpty(line)
           let tokens = line.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)
           let depot = int.Parse(tokens[0])
           //let vehicle = int.Parse(tokens[1])
-          //let duration = double.Parse(tokens[2], new CultureInfo("en-US"))
-          //let load = double.Parse(tokens[3], new CultureInfo("en-US"))
+          //let duration = double.Parse(tokens[2], CultureInfo.InvariantCulture)
+          //let load = double.Parse(tokens[3], new CultureInfo.InvariantCulture)
           let customers = tokens.Skip(4).Where(t => !t.StartsWith("(")).Select(int.Parse)
           let numberOfCustomers = customers.Count()
-          //let serviceTimes = tokens.Skip(5).Where(t => t.StartsWith("(")).Select(t => double.Parse(t.Trim('(', ')'), new CultureInfo("en-US")))
+          //let serviceTimes = tokens.Skip(5).Where(t => t.StartsWith("(")).Select(t => double.Parse(t.Trim('(', ')'), CultureInfo.InvariantCulture))
           let stops = customers.Skip(1).Take(numberOfCustomers - 2).Select(s => s - 1)
           select new { depot, /*vehicle,*/ stops } into assignment
@@ -89,9 +89,4 @@
       return tourToVehicle.ToArray();
     }
-
-    private IEnumerable<string> ReadAllLines(StreamReader reader) {
-      while (!reader.EndOfStream)
-        yield return reader.ReadLine();
-    }
   }
 }
Index: /trunk/sources/HeuristicLab.Problems.Instances.VehicleRouting/3.4/HeuristicLab.Problems.Instances.VehicleRouting-3.4.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.VehicleRouting/3.4/HeuristicLab.Problems.Instances.VehicleRouting-3.4.csproj	(revision 11477)
+++ /trunk/sources/HeuristicLab.Problems.Instances.VehicleRouting/3.4/HeuristicLab.Problems.Instances.VehicleRouting-3.4.csproj	(revision 11478)
@@ -118,4 +118,5 @@
     <Compile Include="GoldenFormat\GoldenFormatInstanceProvider.cs" />
     <Compile Include="IVRPInstanceProvider.cs" />
+    <Compile Include="StreamReaderHelper.cs" />
     <Compile Include="TaillardFormat\TaillardInstanceProvider.cs" />
     <Compile Include="TaillardFormat\TaillardParser.cs" />
Index: /trunk/sources/HeuristicLab.Problems.Instances.VehicleRouting/3.4/SolomonFormat/SolomonFormatInstanceProvider.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.VehicleRouting/3.4/SolomonFormat/SolomonFormatInstanceProvider.cs	(revision 11477)
+++ /trunk/sources/HeuristicLab.Problems.Instances.VehicleRouting/3.4/SolomonFormat/SolomonFormatInstanceProvider.cs	(revision 11478)
@@ -67,5 +67,5 @@
 
         var routesQuery =
-          from line in ReadAllLines(reader)
+          from line in reader.ReadAllLines()
           where !string.IsNullOrEmpty(line)
           let tokens = ExtractValue(line).Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)
@@ -82,8 +82,4 @@
       return line.Split(new[] { ':' }, StringSplitOptions.RemoveEmptyEntries).Last().Trim();
     }
-    private IEnumerable<string> ReadAllLines(StreamReader reader) {
-      while (!reader.EndOfStream)
-        yield return reader.ReadLine();
-    }
   }
 }
Index: /trunk/sources/HeuristicLab.Problems.Instances.VehicleRouting/3.4/StreamReaderHelper.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.VehicleRouting/3.4/StreamReaderHelper.cs	(revision 11478)
+++ /trunk/sources/HeuristicLab.Problems.Instances.VehicleRouting/3.4/StreamReaderHelper.cs	(revision 11478)
@@ -0,0 +1,32 @@
+﻿#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.Collections.Generic;
+using System.IO;
+
+namespace HeuristicLab.Problems.Instances.VehicleRouting {
+  internal static class StreamReaderHelper {
+    public static IEnumerable<string> ReadAllLines(this StreamReader reader) {
+      while (!reader.EndOfStream)
+        yield return reader.ReadLine();
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.VehicleRouting/3.4/VRPInstanceProvider.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.VehicleRouting/3.4/VRPInstanceProvider.cs	(revision 11477)
+++ /trunk/sources/HeuristicLab.Problems.Instances.VehicleRouting/3.4/VRPInstanceProvider.cs	(revision 11478)
@@ -92,4 +92,8 @@
 
     protected virtual void LoadSolution(Stream stream, TData instance) {
+      LoadOptFile(stream, instance);
+    }
+
+    private void LoadOptFile(Stream stream, TData instance) {
       List<List<int>> routes = new List<List<int>>();
 
@@ -122,6 +126,13 @@
 
     public void LoadSolution(string path, TData instance) {
-      using (FileStream stream = new FileStream(path, FileMode.Open)) {
-        LoadSolution(stream, instance);
+      try {
+        using (var stream = new FileStream(path, FileMode.Open)) {
+          LoadSolution(stream, instance);
+        }
+      } catch (Exception) {
+        // new stream necessary because first try already read from stream
+        using (var stream = new FileStream(path, FileMode.Open)) {
+          LoadOptFile(stream, instance); // Fallback to .opt-Format
+        }
       }
     }
