From 07ac961048a2be5f58b0fd766a9225a93cc3d0f6 Mon Sep 17 00:00:00 2001 From: oblonski Date: Wed, 18 Feb 2015 22:25:02 +0100 Subject: [PATCH] add LopezIbanezBlum instance reader to read tsptw --- .../reader/LopezIbanezBlumReader.java | 127 ++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 jsprit-instances/src/main/java/jsprit/instance/reader/LopezIbanezBlumReader.java diff --git a/jsprit-instances/src/main/java/jsprit/instance/reader/LopezIbanezBlumReader.java b/jsprit-instances/src/main/java/jsprit/instance/reader/LopezIbanezBlumReader.java new file mode 100644 index 00000000..4ff5f3c2 --- /dev/null +++ b/jsprit-instances/src/main/java/jsprit/instance/reader/LopezIbanezBlumReader.java @@ -0,0 +1,127 @@ +package jsprit.instance.reader; + +import jsprit.core.problem.Location; +import jsprit.core.problem.VehicleRoutingProblem; +import jsprit.core.problem.job.Service; +import jsprit.core.problem.solution.route.activity.TimeWindow; +import jsprit.core.problem.vehicle.VehicleImpl; +import jsprit.core.util.Coordinate; +import jsprit.core.util.FastVehicleRoutingTransportCostsMatrix; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import java.io.BufferedReader; +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.io.IOException; + +/** + * Created by schroeder on 18/02/15. + */ +public class LopezIbanezBlumReader { + + private static Logger logger = LogManager.getLogger(LopezIbanezBlumReader.class); + + private VehicleRoutingProblem.Builder builder; + + public LopezIbanezBlumReader(VehicleRoutingProblem.Builder builder) { + this.builder = builder; + } + + public void read(String instanceFile){ + builder.setFleetSize(VehicleRoutingProblem.FleetSize.FINITE); + BufferedReader reader = getReader(instanceFile); + String line; + int noNodes = 0; + int lineCount = 1; + FastVehicleRoutingTransportCostsMatrix.Builder matrixBuilder = null; + while((line = readLine(reader)) != null){ + if(line.startsWith("#")) continue; + if(lineCount == 1){ + noNodes = Integer.parseInt(line); + matrixBuilder = FastVehicleRoutingTransportCostsMatrix.Builder.newInstance(noNodes,false); + lineCount++; + continue; + } + else if(lineCount <= 1 + noNodes){ + String[] wimaTokens = line.split("\\s+"); + int nodeIndex = lineCount - 2; + for(int toIndex=0;toIndex1: " + vrp.getTransportCosts().getTransportCost(Location.newInstance(0), Location.newInstance(1), 0, null, null)); + System.out.println("0->20: " + vrp.getTransportCosts().getTransportCost(Location.newInstance(0), Location.newInstance(20),0,null,null)); + System.out.println("4->18: " + vrp.getTransportCosts().getTransportCost(Location.newInstance(4), Location.newInstance(18),0,null,null)); + System.out.println("20->8: " + vrp.getTransportCosts().getTransportCost(Location.newInstance(20), Location.newInstance(8),0,null,null)); + System.out.println("18: " + ((Service)vrp.getJobs().get(""+18)).getTimeWindow().getStart() + " " + ((Service)vrp.getJobs().get(""+18)).getTimeWindow().getEnd()); + System.out.println("20: " + ((Service)vrp.getJobs().get(""+20)).getTimeWindow().getStart() + " " + ((Service)vrp.getJobs().get(""+20)).getTimeWindow().getEnd()); + System.out.println("1: " + ((Service)vrp.getJobs().get(""+1)).getTimeWindow().getStart() + " " + ((Service)vrp.getJobs().get(""+1)).getTimeWindow().getEnd()); + } + + private void close(BufferedReader reader) { + try { + reader.close(); + } catch (IOException e) { + e.printStackTrace(); + logger.error(e); + System.exit(1); + } + } + + private String readLine(BufferedReader reader) { + try { + return reader.readLine(); + } catch (IOException e) { + e.printStackTrace(); + logger.error(e); + System.exit(1); + return null; + } + } + + private Coordinate makeCoord(String xString, String yString) { + double x = Double.parseDouble(xString); + double y = Double.parseDouble(yString); + return new Coordinate(x,y); + } + + private BufferedReader getReader(String solomonFile) { + BufferedReader reader = null; + try { + reader = new BufferedReader(new FileReader(solomonFile)); + } catch (FileNotFoundException e1) { + e1.printStackTrace(); + logger.error(e1); + System.exit(1); + } + return reader; + } +}