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..1394c5bf 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,9 +583,18 @@ public class VrpXMLReader { Double fix = typeConfig.getDouble("costs.fixed"); Double timeC = typeConfig.getDouble("costs.time"); Double distC = typeConfig.getDouble("costs.distance"); + if(typeConfig.containsKey("costs.service")){ + Double serviceC = typeConfig.getDouble("costs.service"); + if (serviceC != null) typeBuilder.setCostPerServiceTime(serviceC); + } + + if(typeConfig.containsKey("costs.wait")){ + Double waitC = typeConfig.getDouble("costs.wait"); + if (waitC != null) typeBuilder.setCostPerWaitingTime(waitC); + } if (fix != null) typeBuilder.setFixedCost(fix); - if (timeC != null) typeBuilder.setCostPerTime(timeC); + if (timeC != null) typeBuilder.setCostPerTransportTime(timeC); if (distC != null) typeBuilder.setCostPerDistance(distC); VehicleType type = typeBuilder.build(); String id = type.getTypeId(); 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"/> + +