diff --git a/jsprit-instances/src/main/java/jsprit/instance/reader/TSPLIB95Reader.java b/jsprit-instances/src/main/java/jsprit/instance/reader/TSPLIB95Reader.java index 424b2286..b667fb09 100644 --- a/jsprit-instances/src/main/java/jsprit/instance/reader/TSPLIB95Reader.java +++ b/jsprit-instances/src/main/java/jsprit/instance/reader/TSPLIB95Reader.java @@ -17,6 +17,7 @@ package jsprit.instance.reader; +import jsprit.core.problem.Location; import jsprit.core.problem.VehicleRoutingProblem; import jsprit.core.problem.job.Service; import jsprit.core.problem.vehicle.VehicleImpl; @@ -40,18 +41,23 @@ public class TSPLIB95Reader { BufferedReader reader = getBufferedReader(filename); String line; Coordinate[] coords = null; - Integer[] demands = null; + int[] demands = null; Integer capacity = null; List depotIds = new ArrayList(); boolean isCoordSection = false; boolean isDemandSection = false; boolean isDepotSection = false; + int dimensions = 0; while( ( line = getLine(reader) ) != null ){ + if(line.startsWith("EOF")){ + break; + } if(line.startsWith("DIMENSION")){ String[] tokens = line.split(":"); String dim = tokens[1].trim(); - coords = new Coordinate[Integer.parseInt(dim)]; - demands = new Integer[Integer.parseInt(dim)]; + dimensions = Integer.parseInt(dim); + coords = new Coordinate[dimensions]; + demands = new int[dimensions]; continue; } if(line.startsWith("CAPACITY")){ @@ -79,13 +85,13 @@ public class TSPLIB95Reader { } if(isCoordSection){ if(coords == null) throw new IllegalStateException("DIMENSION tag missing"); - String[] tokens = line.split("\\s+"); + String[] tokens = line.trim().split("\\s+"); coords[Integer.parseInt(tokens[0]) - 1] = Coordinate.newInstance(Double.parseDouble(tokens[1]), Double.parseDouble(tokens[2])); continue; } if(isDemandSection){ if(demands == null) throw new IllegalStateException("DIMENSION tag missing"); - String[] tokens = line.split("\\s+"); + String[] tokens = line.trim().split("\\s+"); demands[Integer.parseInt(tokens[0]) - 1] = Integer.parseInt(tokens[1]); continue; } @@ -106,13 +112,27 @@ public class TSPLIB95Reader { .setStartLocationCoordinate(coords[depotId - 1]).setType(type).build(); vrpBuilder.addVehicle(vehicle); } - for(int i=0;i