From cc254b299301d54ffd6f9f66f1dc81c5814a5f9e Mon Sep 17 00:00:00 2001 From: oblonski <4sschroeder@gmail.com> Date: Tue, 18 Jun 2013 05:13:00 +0200 Subject: [PATCH] refine CordeauReader add penalty vehicles to allow invalid solutions --- .../src/main/java/readers/CordeauReader.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/jsprit-instances/src/main/java/readers/CordeauReader.java b/jsprit-instances/src/main/java/readers/CordeauReader.java index e046724a..981e7d1e 100644 --- a/jsprit-instances/src/main/java/readers/CordeauReader.java +++ b/jsprit-instances/src/main/java/readers/CordeauReader.java @@ -92,7 +92,8 @@ public class CordeauReader { int duration = Integer.parseInt(tokens[0].trim()); if(duration == 0) duration = 999999; int capacity = Integer.parseInt(tokens[1].trim()); - VehicleType vehicleType = VehicleImpl.VehicleType.Builder.newInstance(counter + "_cordeauType", capacity).setCostPerDistance(1.0).setFixedCost(100).build(); + VehicleType vehicleType = VehicleImpl.VehicleType.Builder.newInstance(counter + "_cordeauType", capacity). + setCostPerDistance(1.0).setFixedCost(0).build(); List builders = new ArrayList(); for(int vehicleCounter=0;vehicleCounter vBuilders = vehiclesAtDepot.get(depotCounter); + int cap = 0; + double latestArrTime = 0.0; + Coordinate coord = null; for(VehicleBuilder vBuilder : vBuilders){ vBuilder.setLocationCoord(depotCoord); VehicleImpl vehicle = vBuilder.build(); + cap = vehicle.getCapacity(); + latestArrTime = vehicle.getLatestArrival(); + coord = vehicle.getCoord(); vrpBuilder.addVehicle(vehicle); } + for(int i=0;i<5;i++){ + VehicleType penaltyType = VehicleImpl.VehicleType.Builder.newInstance(counter + "_penaltyType", cap). + setCostPerDistance(3.0).setFixedCost(50).build(); + VehicleImpl penaltyVehicle = VehicleImpl.VehicleBuilder.newInstance(counter + "_" + (i+1) + "_penaltyVehicle").setLatestArrival(latestArrTime) + .setType(penaltyType).setLocationCoord(coord).build(); + vrpBuilder.addVehicle(penaltyVehicle); + } depotCounter++; } else{