mirror of
https://github.com/graphhopper/jsprit.git
synced 2020-01-24 07:45:05 +01:00
Break support for XMLReader
This commit is contained in:
parent
77d14ac0ee
commit
2b50993a7f
2 changed files with 19 additions and 0 deletions
|
|
@ -564,6 +564,7 @@ public class VrpXMLReader {
|
||||||
typeBuilder.addCapacityDimension(index, value);
|
typeBuilder.addCapacityDimension(index, value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Double fix = typeConfig.getDouble("costs.fixed");
|
Double fix = typeConfig.getDouble("costs.fixed");
|
||||||
Double timeC = typeConfig.getDouble("costs.time");
|
Double timeC = typeConfig.getDouble("costs.time");
|
||||||
Double distC = typeConfig.getDouble("costs.distance");
|
Double distC = typeConfig.getDouble("costs.distance");
|
||||||
|
|
@ -671,6 +672,16 @@ public class VrpXMLReader {
|
||||||
for (String skill : skillTokens) builder.addSkill(skill.toLowerCase());
|
for (String skill : skillTokens) builder.addSkill(skill.toLowerCase());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// read break
|
||||||
|
String breakStartString = vehicleConfig.getString("breaks.timeWindow.start");
|
||||||
|
String breakEndString = vehicleConfig.getString("breaks.timeWindow.end");
|
||||||
|
String breakDurationString = vehicleConfig.getString("breaks.duration");
|
||||||
|
if(breakStartString!=null && breakEndString!=null && breakDurationString!=null )
|
||||||
|
builder.setBreak(Break.Builder.newInstance(vehicleId)
|
||||||
|
.addTimeWindow(Double.parseDouble(breakStartString), Double.parseDouble(breakEndString))
|
||||||
|
.setServiceTime(Double.parseDouble(breakDurationString)).build());
|
||||||
|
|
||||||
|
|
||||||
//build vehicle
|
//build vehicle
|
||||||
VehicleImpl vehicle = builder.build();
|
VehicleImpl vehicle = builder.build();
|
||||||
vrpBuilder.addVehicle(vehicle);
|
vrpBuilder.addVehicle(vehicle);
|
||||||
|
|
|
||||||
|
|
@ -62,6 +62,7 @@
|
||||||
<xs:element name="timeSchedule" type="timeWindowType"/>
|
<xs:element name="timeSchedule" type="timeWindowType"/>
|
||||||
<xs:element name="returnToDepot" type="xs:boolean" minOccurs="0" maxOccurs="1"/>
|
<xs:element name="returnToDepot" type="xs:boolean" minOccurs="0" maxOccurs="1"/>
|
||||||
<xs:element name="skills" type="xs:string" minOccurs="0" maxOccurs="1"/>
|
<xs:element name="skills" type="xs:string" minOccurs="0" maxOccurs="1"/>
|
||||||
|
<xs:element name="breaks" type="breaksType" minOccurs="0" maxOccurs="1"/>
|
||||||
</xs:all>
|
</xs:all>
|
||||||
<xs:attribute name="type" type="xs:string" use="optional"/>
|
<xs:attribute name="type" type="xs:string" use="optional"/>
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
|
|
@ -368,6 +369,13 @@
|
||||||
</xs:all>
|
</xs:all>
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
|
|
||||||
|
<xs:complexType name="breaksType">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="timeWindow" type="timeWindowType" minOccurs="1" maxOccurs="1"/>
|
||||||
|
<xs:element name="duration" type="xs:double" minOccurs="1" maxOccurs="1" default="0.0"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
<xs:complexType name="coordType">
|
<xs:complexType name="coordType">
|
||||||
<xs:attribute name="x" type="xs:double" use="required"/>
|
<xs:attribute name="x" type="xs:double" use="required"/>
|
||||||
<xs:attribute name="y" type="xs:double" use="required"/>
|
<xs:attribute name="y" type="xs:double" use="required"/>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue