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"/>
+
+