From ad93dfeb471459e7fbaf716c8806d7f72152f3f4 Mon Sep 17 00:00:00 2001
From: Stefan Schroeder <4sschroeder@gmail.com>
Date: Thu, 5 Dec 2013 18:16:18 +0100
Subject: [PATCH] issue #58 - fix bug
---
.../src/main/java/jsprit/core/problem/io/VrpXMLReader.java | 7 ++++++-
.../src/main/java/jsprit/core/problem/io/VrpXMLWriter.java | 1 +
jsprit-core/src/main/resources/vrp_xml_schema.xsd | 1 +
3 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/jsprit-core/src/main/java/jsprit/core/problem/io/VrpXMLReader.java b/jsprit-core/src/main/java/jsprit/core/problem/io/VrpXMLReader.java
index 0429873a..d47b9e1f 100644
--- a/jsprit-core/src/main/java/jsprit/core/problem/io/VrpXMLReader.java
+++ b/jsprit-core/src/main/java/jsprit/core/problem/io/VrpXMLReader.java
@@ -441,10 +441,15 @@ public class VrpXMLReader{
String penalty = typeConfig.getString("[@type]");
if(penalty != null){
if(penalty.equals("penalty")){
- type = new PenaltyVehicleType(type);
+ String penaltyFactor = typeConfig.getString("[@penaltyFactor]");
+ if(penaltyFactor != null){
+ type = new PenaltyVehicleType(type,Double.parseDouble(penaltyFactor));
+ }
+ else type = new PenaltyVehicleType(type);
id = id + "_penalty";
}
}
+
types.put(id, type);
}
diff --git a/jsprit-core/src/main/java/jsprit/core/problem/io/VrpXMLWriter.java b/jsprit-core/src/main/java/jsprit/core/problem/io/VrpXMLWriter.java
index 3416f15b..d4ac23e2 100644
--- a/jsprit-core/src/main/java/jsprit/core/problem/io/VrpXMLWriter.java
+++ b/jsprit-core/src/main/java/jsprit/core/problem/io/VrpXMLWriter.java
@@ -248,6 +248,7 @@ public class VrpXMLWriter {
for(VehicleType type : vrp.getTypes()){
if(type instanceof PenaltyVehicleType){
xmlConfig.setProperty(typePathString + "("+typeCounter+")[@type]", "penalty");
+ xmlConfig.setProperty(typePathString + "("+typeCounter+")[@penaltyFactor]", ((PenaltyVehicleType)type).getPenaltyFactor());
}
xmlConfig.setProperty(typePathString + "("+typeCounter+").id", type.getTypeId());
xmlConfig.setProperty(typePathString + "("+typeCounter+").capacity", type.getCapacity());
diff --git a/jsprit-core/src/main/resources/vrp_xml_schema.xsd b/jsprit-core/src/main/resources/vrp_xml_schema.xsd
index f631f2f4..0b64fe56 100644
--- a/jsprit-core/src/main/resources/vrp_xml_schema.xsd
+++ b/jsprit-core/src/main/resources/vrp_xml_schema.xsd
@@ -82,6 +82,7 @@
+