From bc7fa35461ef90b70e62338f6e931fadb5db502f Mon Sep 17 00:00:00 2001 From: braktar Date: Tue, 24 May 2016 17:31:56 +0200 Subject: [PATCH] Add service&wait costs + Replace TimeUnitCost --- .../graphhopper/jsprit/core/problem/io/VrpXMLReader.java | 6 +++++- .../graphhopper/jsprit/core/problem/io/VrpXMLWriter.java | 4 +++- .../core/util/FastVehicleRoutingTransportCostsMatrix.java | 2 +- .../core/util/VehicleRoutingTransportCostsMatrix.java | 2 +- jsprit-core/src/main/resources/vrp_xml_schema.xsd | 4 ++++ 5 files changed, 14 insertions(+), 4 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/io/VrpXMLReader.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/io/VrpXMLReader.java index 1affa255..6d5e7f3d 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/io/VrpXMLReader.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/io/VrpXMLReader.java @@ -583,10 +583,14 @@ public class VrpXMLReader { Double fix = typeConfig.getDouble("costs.fixed"); Double timeC = typeConfig.getDouble("costs.time"); Double distC = typeConfig.getDouble("costs.distance"); + Double serviceC = typeConfig.getDouble("costs.service"); + Double waitC = typeConfig.getDouble("costs.wait"); if (fix != null) typeBuilder.setFixedCost(fix); - if (timeC != null) typeBuilder.setCostPerTime(timeC); + if (timeC != null) typeBuilder.setCostPerTransportTime(timeC); if (distC != null) typeBuilder.setCostPerDistance(distC); + if (serviceC != null) typeBuilder.setCostPerServiceTime(serviceC); + if (waitC != null) typeBuilder.setCostPerWaitingTime(waitC); VehicleType type = typeBuilder.build(); String id = type.getTypeId(); types.put(id, type); diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/io/VrpXMLWriter.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/io/VrpXMLWriter.java index c2cf4cb4..10a8043a 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/io/VrpXMLWriter.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/io/VrpXMLWriter.java @@ -383,7 +383,9 @@ public class VrpXMLWriter { xmlConfig.setProperty(typePathString + "(" + typeCounter + ").costs.fixed", type.getVehicleCostParams().fix); xmlConfig.setProperty(typePathString + "(" + typeCounter + ").costs.distance", type.getVehicleCostParams().perDistanceUnit); - xmlConfig.setProperty(typePathString + "(" + typeCounter + ").costs.time", type.getVehicleCostParams().perTimeUnit); + xmlConfig.setProperty(typePathString + "(" + typeCounter + ").costs.time", type.getVehicleCostParams().perTransportTimeUnit); + xmlConfig.setProperty(typePathString + "(" + typeCounter + ").costs.service", type.getVehicleCostParams().perServiceTimeUnit); + xmlConfig.setProperty(typePathString + "(" + typeCounter + ").costs.wait", type.getVehicleCostParams().perWaitingTimeUnit); typeCounter++; } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/FastVehicleRoutingTransportCostsMatrix.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/FastVehicleRoutingTransportCostsMatrix.java index ae586439..d5044437 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/FastVehicleRoutingTransportCostsMatrix.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/FastVehicleRoutingTransportCostsMatrix.java @@ -165,7 +165,7 @@ public class FastVehicleRoutingTransportCostsMatrix extends AbstractForwardVehic throw new IllegalArgumentException("index of from " + from + " to " + to + " < 0 "); if (vehicle == null) return getDistance(from.getIndex(), to.getIndex()); VehicleTypeImpl.VehicleCostParams costParams = vehicle.getType().getVehicleCostParams(); - return costParams.perDistanceUnit * getDistance(from.getIndex(), to.getIndex()) + costParams.perTimeUnit * getTransportTime(from, to, departureTime, driver, vehicle); + return costParams.perDistanceUnit * getDistance(from.getIndex(), to.getIndex()) + costParams.perTransportTimeUnit * getTransportTime(from, to, departureTime, driver, vehicle); } } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/VehicleRoutingTransportCostsMatrix.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/VehicleRoutingTransportCostsMatrix.java index cdc78064..905f45ba 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/VehicleRoutingTransportCostsMatrix.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/VehicleRoutingTransportCostsMatrix.java @@ -257,7 +257,7 @@ public class VehicleRoutingTransportCostsMatrix extends AbstractForwardVehicleRo public double getTransportCost(Location from, Location to, double departureTime, Driver driver, Vehicle vehicle) { if (vehicle == null) return getDistance(from.getId(), to.getId()); VehicleCostParams costParams = vehicle.getType().getVehicleCostParams(); - return costParams.perDistanceUnit * getDistance(from.getId(), to.getId()) + costParams.perTimeUnit * getTime(from.getId(), to.getId()); + return costParams.perDistanceUnit * getDistance(from.getId(), to.getId()) + costParams.perTransportTimeUnit * getTime(from.getId(), to.getId()); } } diff --git a/jsprit-core/src/main/resources/vrp_xml_schema.xsd b/jsprit-core/src/main/resources/vrp_xml_schema.xsd index b4c8a856..0e29e098 100644 --- a/jsprit-core/src/main/resources/vrp_xml_schema.xsd +++ b/jsprit-core/src/main/resources/vrp_xml_schema.xsd @@ -106,6 +106,10 @@ maxOccurs="1" default="0.0"/> + +