mirror of
https://github.com/graphhopper/jsprit.git
synced 2020-01-24 07:45:05 +01:00
added skill reader/writer
This commit is contained in:
parent
f56d735b83
commit
3786f8e977
18 changed files with 505 additions and 142 deletions
|
|
@ -629,7 +629,7 @@ public class VehicleRoutingProblem {
|
||||||
logger.info("initialise " + this);
|
logger.info("initialise " + this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "[fleetSize="+fleetSize+"][#jobs="+jobs.size()+"][#vehicles="+vehicles.size()+"][#vehicleTypes="+vehicleTypes.size()+"]["+
|
return "[fleetSize="+fleetSize+"][#jobs="+jobs.size()+"][#vehicles="+vehicles.size()+"][#vehicleTypes="+vehicleTypes.size()+"]["+
|
||||||
"transportCost="+transportCosts+"][activityCosts="+activityCosts+"]";
|
"transportCost="+transportCosts+"][activityCosts="+activityCosts+"]";
|
||||||
|
|
|
||||||
|
|
@ -71,45 +71,12 @@ public class VrpXMLReader{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
interface JobConfigReader {
|
interface JobConfigReader {
|
||||||
|
|
||||||
void readConfig(XMLConfiguration vrpProblem);
|
void readConfig(XMLConfiguration vrpProblem);
|
||||||
}
|
}
|
||||||
|
|
||||||
static class ServiceConfigReader implements JobConfigReader{
|
|
||||||
|
|
||||||
VehicleRoutingProblem.Builder vrpBuilder;
|
|
||||||
|
|
||||||
public ServiceConfigReader(jsprit.core.problem.VehicleRoutingProblem.Builder vrpBuilder) {
|
|
||||||
super();
|
|
||||||
this.vrpBuilder = vrpBuilder;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void readConfig(XMLConfiguration config) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static class ShipmentConfigReader implements JobConfigReader{
|
|
||||||
|
|
||||||
VehicleRoutingProblem.Builder vrpBuilder;
|
|
||||||
|
|
||||||
public ShipmentConfigReader(jsprit.core.problem.VehicleRoutingProblem.Builder vrpBuilder) {
|
|
||||||
super();
|
|
||||||
this.vrpBuilder = vrpBuilder;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void readConfig(XMLConfiguration config) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private static Logger logger = LogManager.getLogger(VrpXMLReader.class);
|
private static Logger logger = LogManager.getLogger(VrpXMLReader.class);
|
||||||
|
|
||||||
private VehicleRoutingProblem.Builder vrpBuilder;
|
private VehicleRoutingProblem.Builder vrpBuilder;
|
||||||
|
|
@ -130,13 +97,16 @@ public class VrpXMLReader{
|
||||||
|
|
||||||
private Collection<JobConfigReader> jobConfigReaders = new ArrayList<VrpXMLReader.JobConfigReader>();
|
private Collection<JobConfigReader> jobConfigReaders = new ArrayList<VrpXMLReader.JobConfigReader>();
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
public void addJobConfigReader(JobConfigReader reader){
|
public void addJobConfigReader(JobConfigReader reader){
|
||||||
jobConfigReaders.add(reader);
|
jobConfigReaders.add(reader);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
public void setTourActivityFactory(TourActivityFactory tourActivityFactory){
|
public void setTourActivityFactory(TourActivityFactory tourActivityFactory){
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
public void setServiceBuilderFactory(ServiceBuilderFactory serviceBuilderFactory){
|
public void setServiceBuilderFactory(ServiceBuilderFactory serviceBuilderFactory){
|
||||||
this.serviceBuilderFactory=serviceBuilderFactory;
|
this.serviceBuilderFactory=serviceBuilderFactory;
|
||||||
}
|
}
|
||||||
|
|
@ -144,7 +114,8 @@ public class VrpXMLReader{
|
||||||
/**
|
/**
|
||||||
* @param schemaValidation the schemaValidation to set
|
* @param schemaValidation the schemaValidation to set
|
||||||
*/
|
*/
|
||||||
public void setSchemaValidation(boolean schemaValidation) {
|
@SuppressWarnings("UnusedDeclaration")
|
||||||
|
public void setSchemaValidation(boolean schemaValidation) {
|
||||||
this.schemaValidation = schemaValidation;
|
this.schemaValidation = schemaValidation;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -403,6 +374,7 @@ public class VrpXMLReader{
|
||||||
builder.setPickupLocation(pickupCoord.toString());
|
builder.setPickupLocation(pickupCoord.toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//pickup-serviceTime
|
//pickup-serviceTime
|
||||||
String pickupServiceTime = shipmentConfig.getString("pickup.duration");
|
String pickupServiceTime = shipmentConfig.getString("pickup.duration");
|
||||||
if(pickupServiceTime != null) builder.setPickupServiceTime(Double.parseDouble(pickupServiceTime));
|
if(pickupServiceTime != null) builder.setPickupServiceTime(Double.parseDouble(pickupServiceTime));
|
||||||
|
|
@ -415,7 +387,6 @@ public class VrpXMLReader{
|
||||||
builder.setPickupTimeWindow(pickupTW);
|
builder.setPickupTimeWindow(pickupTW);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//delivery-locationId
|
//delivery-locationId
|
||||||
String deliveryLocationId = shipmentConfig.getString("delivery.locationId");
|
String deliveryLocationId = shipmentConfig.getString("delivery.locationId");
|
||||||
if(deliveryLocationId != null){
|
if(deliveryLocationId != null){
|
||||||
|
|
@ -434,6 +405,7 @@ public class VrpXMLReader{
|
||||||
builder.setDeliveryLocation(deliveryCoord.toString());
|
builder.setDeliveryLocation(deliveryCoord.toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//delivery-serviceTime
|
//delivery-serviceTime
|
||||||
String deliveryServiceTime = shipmentConfig.getString("delivery.duration");
|
String deliveryServiceTime = shipmentConfig.getString("delivery.duration");
|
||||||
if(deliveryServiceTime != null) builder.setDeliveryServiceTime(Double.parseDouble(deliveryServiceTime));
|
if(deliveryServiceTime != null) builder.setDeliveryServiceTime(Double.parseDouble(deliveryServiceTime));
|
||||||
|
|
@ -446,7 +418,15 @@ public class VrpXMLReader{
|
||||||
builder.setDeliveryTimeWindow(delTW);
|
builder.setDeliveryTimeWindow(delTW);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//read skills
|
||||||
|
String skillString = shipmentConfig.getString("requiredSkills");
|
||||||
|
if(skillString != null){
|
||||||
|
String cleaned = skillString.replaceAll("\\s","");
|
||||||
|
String[] skillTokens = cleaned.split("[,;]");
|
||||||
|
for(String skill : skillTokens) builder.addRequiredSkill(skill.toLowerCase());
|
||||||
|
}
|
||||||
|
|
||||||
|
//build shipment
|
||||||
Shipment shipment = builder.build();
|
Shipment shipment = builder.build();
|
||||||
// vrpBuilder.addJob(shipment);
|
// vrpBuilder.addJob(shipment);
|
||||||
shipmentMap.put(shipment.getId(),shipment);
|
shipmentMap.put(shipment.getId(),shipment);
|
||||||
|
|
@ -515,6 +495,16 @@ public class VrpXMLReader{
|
||||||
builder.setTimeWindow(TimeWindow.newInstance(twConfig.getDouble("start"), twConfig.getDouble("end")));
|
builder.setTimeWindow(TimeWindow.newInstance(twConfig.getDouble("start"), twConfig.getDouble("end")));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//read skills
|
||||||
|
String skillString = serviceConfig.getString("requiredSkills");
|
||||||
|
if(skillString != null){
|
||||||
|
String cleaned = skillString.replaceAll("\\s","");
|
||||||
|
String[] skillTokens = cleaned.split("[,;]");
|
||||||
|
for(String skill : skillTokens) builder.addRequiredSkill(skill.toLowerCase());
|
||||||
|
}
|
||||||
|
|
||||||
|
//build service
|
||||||
Service service = builder.build();
|
Service service = builder.build();
|
||||||
serviceMap.put(service.getId(),service);
|
serviceMap.put(service.getId(),service);
|
||||||
// vrpBuilder.addJob(service);
|
// vrpBuilder.addJob(service);
|
||||||
|
|
@ -595,7 +585,9 @@ public class VrpXMLReader{
|
||||||
VehicleType type = types.get(typeId);
|
VehicleType type = types.get(typeId);
|
||||||
if(type == null) throw new IllegalStateException("vehicleType with typeId " + typeId + " is missing.");
|
if(type == null) throw new IllegalStateException("vehicleType with typeId " + typeId + " is missing.");
|
||||||
builder.setType(type);
|
builder.setType(type);
|
||||||
String locationId = vehicleConfig.getString("location.id");
|
|
||||||
|
//read startlocation
|
||||||
|
String locationId = vehicleConfig.getString("location.id");
|
||||||
if(locationId == null) {
|
if(locationId == null) {
|
||||||
locationId = vehicleConfig.getString("startLocation.id");
|
locationId = vehicleConfig.getString("startLocation.id");
|
||||||
}
|
}
|
||||||
|
|
@ -619,6 +611,7 @@ public class VrpXMLReader{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//read endlocation
|
||||||
String endLocationId = vehicleConfig.getString("endLocation.id");
|
String endLocationId = vehicleConfig.getString("endLocation.id");
|
||||||
if(endLocationId != null) builder.setEndLocationId(endLocationId);
|
if(endLocationId != null) builder.setEndLocationId(endLocationId);
|
||||||
String endCoordX = vehicleConfig.getString("endLocation.coord[@x]");
|
String endCoordX = vehicleConfig.getString("endLocation.coord[@x]");
|
||||||
|
|
@ -634,15 +627,27 @@ public class VrpXMLReader{
|
||||||
builder.setEndLocationCoordinate(coordinate);
|
builder.setEndLocationCoordinate(coordinate);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//read timeSchedule
|
||||||
String start = vehicleConfig.getString("timeSchedule.start");
|
String start = vehicleConfig.getString("timeSchedule.start");
|
||||||
String end = vehicleConfig.getString("timeSchedule.end");
|
String end = vehicleConfig.getString("timeSchedule.end");
|
||||||
if(start != null) builder.setEarliestStart(Double.parseDouble(start));
|
if(start != null) builder.setEarliestStart(Double.parseDouble(start));
|
||||||
if(end != null) builder.setLatestArrival(Double.parseDouble(end));
|
if(end != null) builder.setLatestArrival(Double.parseDouble(end));
|
||||||
String returnToDepot = vehicleConfig.getString("returnToDepot");
|
|
||||||
|
//read return2depot
|
||||||
|
String returnToDepot = vehicleConfig.getString("returnToDepot");
|
||||||
if(returnToDepot != null){
|
if(returnToDepot != null){
|
||||||
builder.setReturnToDepot(vehicleConfig.getBoolean("returnToDepot"));
|
builder.setReturnToDepot(vehicleConfig.getBoolean("returnToDepot"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//read skills
|
||||||
|
String skillString = vehicleConfig.getString("skills");
|
||||||
|
if(skillString != null){
|
||||||
|
String cleaned = skillString.replaceAll("\\s", "");
|
||||||
|
String[] skillTokens = cleaned.split("[,;]");
|
||||||
|
for(String skill : skillTokens) builder.addSkill(skill.toLowerCase());
|
||||||
|
}
|
||||||
|
|
||||||
|
//build vehicle
|
||||||
VehicleImpl vehicle = builder.build();
|
VehicleImpl vehicle = builder.build();
|
||||||
vrpBuilder.addVehicle(vehicle);
|
vrpBuilder.addVehicle(vehicle);
|
||||||
vehicleMap.put(vehicleId, vehicle);
|
vehicleMap.put(vehicleId, vehicle);
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
package jsprit.core.problem.io;
|
package jsprit.core.problem.io;
|
||||||
|
|
||||||
|
import jsprit.core.problem.Skills;
|
||||||
import jsprit.core.problem.VehicleRoutingProblem;
|
import jsprit.core.problem.VehicleRoutingProblem;
|
||||||
import jsprit.core.problem.job.Job;
|
import jsprit.core.problem.job.Job;
|
||||||
import jsprit.core.problem.job.Service;
|
import jsprit.core.problem.job.Service;
|
||||||
|
|
@ -55,8 +56,7 @@ public class VrpXMLWriter {
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
public Document createDoc() throws ConfigurationException{
|
public Document createDoc() throws ConfigurationException{
|
||||||
Document doc = createDocument();
|
return createDocument();
|
||||||
return doc;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -228,6 +228,10 @@ public class VrpXMLWriter {
|
||||||
xmlConfig.setProperty(shipmentPathString + "("+counter+").timeWindows.timeWindow(0).start", service.getTimeWindow().getStart());
|
xmlConfig.setProperty(shipmentPathString + "("+counter+").timeWindows.timeWindow(0).start", service.getTimeWindow().getStart());
|
||||||
xmlConfig.setProperty(shipmentPathString + "("+counter+").timeWindows.timeWindow(0).end", service.getTimeWindow().getEnd());
|
xmlConfig.setProperty(shipmentPathString + "("+counter+").timeWindows.timeWindow(0).end", service.getTimeWindow().getEnd());
|
||||||
|
|
||||||
|
//skills
|
||||||
|
String skillString = getSkillString(service);
|
||||||
|
xmlConfig.setProperty(shipmentPathString + "("+counter+").requiredSkills", skillString);
|
||||||
|
|
||||||
counter++;
|
counter++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -265,6 +269,11 @@ public class VrpXMLWriter {
|
||||||
xmlConfig.setProperty(shipmentPathString + "("+counter+").capacity-dimensions.dimension("+i+")[@index]", i);
|
xmlConfig.setProperty(shipmentPathString + "("+counter+").capacity-dimensions.dimension("+i+")[@index]", i);
|
||||||
xmlConfig.setProperty(shipmentPathString + "("+counter+").capacity-dimensions.dimension("+i+")", shipment.getSize().get(i));
|
xmlConfig.setProperty(shipmentPathString + "("+counter+").capacity-dimensions.dimension("+i+")", shipment.getSize().get(i));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//skills
|
||||||
|
String skillString = getSkillString(shipment);
|
||||||
|
xmlConfig.setProperty(shipmentPathString + "("+counter+").requiredSkills", skillString);
|
||||||
|
|
||||||
counter++;
|
counter++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -276,8 +285,7 @@ public class VrpXMLWriter {
|
||||||
private void writeVehiclesAndTheirTypes(XMLConfiguration xmlConfig) {
|
private void writeVehiclesAndTheirTypes(XMLConfiguration xmlConfig) {
|
||||||
|
|
||||||
//vehicles
|
//vehicles
|
||||||
String vehiclePathString = new StringBuilder().append(Schema.VEHICLES).append(".").
|
String vehiclePathString = Schema.VEHICLES + "." + Schema.VEHICLE;
|
||||||
append(Schema.VEHICLE).toString();
|
|
||||||
int counter = 0;
|
int counter = 0;
|
||||||
for(Vehicle vehicle : vrp.getVehicles()){
|
for(Vehicle vehicle : vrp.getVehicles()){
|
||||||
if(vehicle.getType() instanceof PenaltyVehicleType){
|
if(vehicle.getType() instanceof PenaltyVehicleType){
|
||||||
|
|
@ -299,6 +307,11 @@ public class VrpXMLWriter {
|
||||||
xmlConfig.setProperty(vehiclePathString + "("+counter+").timeSchedule.end", vehicle.getLatestArrival());
|
xmlConfig.setProperty(vehiclePathString + "("+counter+").timeSchedule.end", vehicle.getLatestArrival());
|
||||||
|
|
||||||
xmlConfig.setProperty(vehiclePathString + "("+counter+").returnToDepot", vehicle.isReturnToDepot());
|
xmlConfig.setProperty(vehiclePathString + "("+counter+").returnToDepot", vehicle.isReturnToDepot());
|
||||||
|
|
||||||
|
//write skills
|
||||||
|
String skillString = getSkillString(vehicle);
|
||||||
|
xmlConfig.setProperty(vehiclePathString + "("+counter+").skills", skillString);
|
||||||
|
|
||||||
counter++;
|
counter++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -328,4 +341,23 @@ public class VrpXMLWriter {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String getSkillString(Vehicle vehicle) {
|
||||||
|
return createSkillString(vehicle.getSkills());
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getSkillString(Job job){
|
||||||
|
return createSkillString(job.getRequiredSkills());
|
||||||
|
}
|
||||||
|
|
||||||
|
private String createSkillString(Skills skills) {
|
||||||
|
if(skills.values().size() == 0) return null;
|
||||||
|
String skillString = null;
|
||||||
|
for(String skill : skills.values()){
|
||||||
|
if(skillString == null) skillString = skill;
|
||||||
|
else skillString += ", " + skill;
|
||||||
|
}
|
||||||
|
return skillString;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -174,7 +174,7 @@ public class Service extends AbstractJob {
|
||||||
return new Service(this);
|
return new Service(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Builder addSkill(String skill) {
|
public Builder addRequiredSkill(String skill) {
|
||||||
skillBuilder.addSkill(skill);
|
skillBuilder.addSkill(skill);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -243,7 +243,7 @@ public class Shipment extends AbstractJob{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public Builder addSkill(String skill) {
|
public Builder addRequiredSkill(String skill) {
|
||||||
skillBuilder.addSkill(skill);
|
skillBuilder.addSkill(skill);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -65,6 +65,7 @@
|
||||||
<xs:element name="typeId" type="xs:string" minOccurs="1" maxOccurs="1"/>
|
<xs:element name="typeId" type="xs:string" minOccurs="1" maxOccurs="1"/>
|
||||||
<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: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>
|
||||||
|
|
@ -146,8 +147,8 @@
|
||||||
<xs:element name="timeWindow" type="timeWindowType" minOccurs="1" maxOccurs="unbounded"/>
|
<xs:element name="timeWindow" type="timeWindowType" minOccurs="1" maxOccurs="unbounded"/>
|
||||||
</xs:sequence>
|
</xs:sequence>
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
|
|
||||||
</xs:element>
|
</xs:element>
|
||||||
|
<xs:element name="requiredSkills" type="xs:string" minOccurs="0" maxOccurs="1"/>
|
||||||
</xs:all>
|
</xs:all>
|
||||||
<xs:attribute name="id" type="xs:string" use="required" />
|
<xs:attribute name="id" type="xs:string" use="required" />
|
||||||
<xs:attribute name="type" type="xs:string"/>
|
<xs:attribute name="type" type="xs:string"/>
|
||||||
|
|
@ -211,6 +212,7 @@
|
||||||
</xs:sequence>
|
</xs:sequence>
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
</xs:element>
|
</xs:element>
|
||||||
|
<xs:element name="requiredSkills" type="xs:string" minOccurs="0" maxOccurs="1"/>
|
||||||
</xs:sequence>
|
</xs:sequence>
|
||||||
<xs:attribute name="id" type="xs:string" use="required" />
|
<xs:attribute name="id" type="xs:string" use="required" />
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
|
|
|
||||||
|
|
@ -53,8 +53,8 @@ public class SolomonSkills_IT {
|
||||||
Service.Builder skillServiceBuilder = Service.Builder.newInstance(service.getId()).setServiceTime(service.getServiceDuration())
|
Service.Builder skillServiceBuilder = Service.Builder.newInstance(service.getId()).setServiceTime(service.getServiceDuration())
|
||||||
.setCoord(service.getCoord()).setLocationId(service.getLocationId()).setTimeWindow(service.getTimeWindow())
|
.setCoord(service.getCoord()).setLocationId(service.getLocationId()).setTimeWindow(service.getTimeWindow())
|
||||||
.addSizeDimension(0,service.getSize().get(0));
|
.addSizeDimension(0,service.getSize().get(0));
|
||||||
if(service.getCoord().getY()<50) skillServiceBuilder.addSkill("skill2");
|
if(service.getCoord().getY()<50) skillServiceBuilder.addRequiredSkill("skill2");
|
||||||
else skillServiceBuilder.addSkill("skill1");
|
else skillServiceBuilder.addRequiredSkill("skill1");
|
||||||
skillProblemBuilder.addJob(skillServiceBuilder.build());
|
skillProblemBuilder.addJob(skillServiceBuilder.build());
|
||||||
}
|
}
|
||||||
skillProblemBuilder.addPenaltyVehicles(3.);
|
skillProblemBuilder.addPenaltyVehicles(3.);
|
||||||
|
|
|
||||||
|
|
@ -29,9 +29,9 @@ public class UpdateRequiredSkillsTest {
|
||||||
public void doBefore(){
|
public void doBefore(){
|
||||||
VehicleType type = VehicleTypeImpl.Builder.newInstance("t").build();
|
VehicleType type = VehicleTypeImpl.Builder.newInstance("t").build();
|
||||||
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocationId("start").setType(type).build();
|
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocationId("start").setType(type).build();
|
||||||
Service service = Service.Builder.newInstance("s").setLocationId("loc").addSkill("skill1").build();
|
Service service = Service.Builder.newInstance("s").setLocationId("loc").addRequiredSkill("skill1").build();
|
||||||
Service service2 = Service.Builder.newInstance("s2").setLocationId("loc").addSkill("skill1").addSkill("skill2").addSkill("skill3").build();
|
Service service2 = Service.Builder.newInstance("s2").setLocationId("loc").addRequiredSkill("skill1").addRequiredSkill("skill2").addRequiredSkill("skill3").build();
|
||||||
Service service3 = Service.Builder.newInstance("s3").setLocationId("loc").addSkill("skill4").addSkill("skill5").build();
|
Service service3 = Service.Builder.newInstance("s3").setLocationId("loc").addRequiredSkill("skill4").addRequiredSkill("skill5").build();
|
||||||
VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addVehicle(vehicle).addJob(service)
|
VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addVehicle(vehicle).addJob(service)
|
||||||
.addJob(service2).addJob(service3).build();
|
.addJob(service2).addJob(service3).build();
|
||||||
route = VehicleRoute.Builder.newInstance(vehicle).setJobActivityFactory(vrp.getJobActivityFactory()).addService(service).addService(service2).addService(service3).build();
|
route = VehicleRoute.Builder.newInstance(vehicle).setJobActivityFactory(vrp.getJobActivityFactory()).addService(service).addService(service2).addService(service3).build();
|
||||||
|
|
|
||||||
|
|
@ -35,11 +35,11 @@ public class SkillConstraintTest {
|
||||||
vehicle = VehicleImpl.Builder.newInstance("v").addSkill("skill1").addSkill("skill2").addSkill("skill3").addSkill("skill4").setStartLocationId("start").setType(type).build();
|
vehicle = VehicleImpl.Builder.newInstance("v").addSkill("skill1").addSkill("skill2").addSkill("skill3").addSkill("skill4").setStartLocationId("start").setType(type).build();
|
||||||
vehicle2 = VehicleImpl.Builder.newInstance("v").addSkill("skill4").addSkill("skill5").setStartLocationId("start").setType(type).build();
|
vehicle2 = VehicleImpl.Builder.newInstance("v").addSkill("skill4").addSkill("skill5").setStartLocationId("start").setType(type).build();
|
||||||
|
|
||||||
Service service = Service.Builder.newInstance("s").setLocationId("loc").addSkill("skill1").build();
|
Service service = Service.Builder.newInstance("s").setLocationId("loc").addRequiredSkill("skill1").build();
|
||||||
Service service2 = Service.Builder.newInstance("s2").setLocationId("loc").addSkill("skill1").addSkill("skill2").addSkill("skill3").build();
|
Service service2 = Service.Builder.newInstance("s2").setLocationId("loc").addRequiredSkill("skill1").addRequiredSkill("skill2").addRequiredSkill("skill3").build();
|
||||||
|
|
||||||
Service service3 = Service.Builder.newInstance("s3").setLocationId("loc").addSkill("skill4").addSkill("skill5").build();
|
Service service3 = Service.Builder.newInstance("s3").setLocationId("loc").addRequiredSkill("skill4").addRequiredSkill("skill5").build();
|
||||||
Service service4 = Service.Builder.newInstance("s4").setLocationId("loc").addSkill("skill1").build();
|
Service service4 = Service.Builder.newInstance("s4").setLocationId("loc").addRequiredSkill("skill1").build();
|
||||||
|
|
||||||
vrp = VehicleRoutingProblem.Builder.newInstance().addVehicle(vehicle).addVehicle(vehicle2).addJob(service)
|
vrp = VehicleRoutingProblem.Builder.newInstance().addVehicle(vehicle).addVehicle(vehicle2).addJob(service)
|
||||||
.addJob(service2).addJob(service3).addJob(service4).build();
|
.addJob(service2).addJob(service3).addJob(service4).build();
|
||||||
|
|
|
||||||
|
|
@ -16,26 +16,22 @@
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
package jsprit.core.problem.io;
|
package jsprit.core.problem.io;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
|
||||||
import static org.junit.Assert.assertFalse;
|
|
||||||
import static org.junit.Assert.assertNotNull;
|
|
||||||
import static org.junit.Assert.assertTrue;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import jsprit.core.problem.VehicleRoutingProblem;
|
import jsprit.core.problem.VehicleRoutingProblem;
|
||||||
import jsprit.core.problem.VehicleRoutingProblem.FleetSize;
|
import jsprit.core.problem.VehicleRoutingProblem.FleetSize;
|
||||||
import jsprit.core.problem.job.Job;
|
import jsprit.core.problem.job.Job;
|
||||||
import jsprit.core.problem.job.Service;
|
import jsprit.core.problem.job.Service;
|
||||||
import jsprit.core.problem.job.Shipment;
|
import jsprit.core.problem.job.Shipment;
|
||||||
import jsprit.core.problem.vehicle.Vehicle;
|
import jsprit.core.problem.vehicle.Vehicle;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
|
|
||||||
public class VrpXMLReaderTest {
|
public class VrpXMLReaderTest {
|
||||||
|
|
||||||
|
|
@ -78,6 +74,42 @@ public class VrpXMLReaderTest {
|
||||||
assertEquals(1000.0,v1.getLatestArrival(),0.01);
|
assertEquals(1000.0,v1.getLatestArrival(),0.01);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenReadingVehicles_skill1ShouldBeAssigned(){
|
||||||
|
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
new VrpXMLReader(builder, null).read(inFileName);
|
||||||
|
VehicleRoutingProblem vrp = builder.build();
|
||||||
|
Vehicle v1 = getVehicle("v1",vrp.getVehicles());
|
||||||
|
assertTrue(v1.getSkills().containsSkill("skill1"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenReadingVehicles_skill2ShouldBeAssigned(){
|
||||||
|
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
new VrpXMLReader(builder, null).read(inFileName);
|
||||||
|
VehicleRoutingProblem vrp = builder.build();
|
||||||
|
Vehicle v1 = getVehicle("v1",vrp.getVehicles());
|
||||||
|
assertTrue(v1.getSkills().containsSkill("skill2"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenReadingVehicles_nuSkillsShouldBeCorrect(){
|
||||||
|
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
new VrpXMLReader(builder, null).read(inFileName);
|
||||||
|
VehicleRoutingProblem vrp = builder.build();
|
||||||
|
Vehicle v1 = getVehicle("v1",vrp.getVehicles());
|
||||||
|
assertEquals(2, v1.getSkills().values().size());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenReadingVehicles_nuSkillsOfV2ShouldBeCorrect(){
|
||||||
|
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
new VrpXMLReader(builder, null).read(inFileName);
|
||||||
|
VehicleRoutingProblem vrp = builder.build();
|
||||||
|
Vehicle v = getVehicle("v2",vrp.getVehicles());
|
||||||
|
assertEquals(0, v.getSkills().values().size());
|
||||||
|
}
|
||||||
|
|
||||||
private Vehicle getVehicle(String string, Collection<Vehicle> vehicles) {
|
private Vehicle getVehicle(String string, Collection<Vehicle> vehicles) {
|
||||||
for(Vehicle v : vehicles) if(string.equals(v.getId())) return v;
|
for(Vehicle v : vehicles) if(string.equals(v.getId())) return v;
|
||||||
return null;
|
return null;
|
||||||
|
|
@ -127,6 +159,42 @@ public class VrpXMLReaderTest {
|
||||||
assertEquals(2,servCounter);
|
assertEquals(2,servCounter);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenReadingService1_skill1ShouldBeAssigned(){
|
||||||
|
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
new VrpXMLReader(builder, null).read(inFileName);
|
||||||
|
VehicleRoutingProblem vrp = builder.build();
|
||||||
|
Service s = (Service) vrp.getJobs().get("1");
|
||||||
|
assertTrue(s.getRequiredSkills().containsSkill("skill1"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenReadingService1_skill2ShouldBeAssigned(){
|
||||||
|
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
new VrpXMLReader(builder, null).read(inFileName);
|
||||||
|
VehicleRoutingProblem vrp = builder.build();
|
||||||
|
Service s = (Service) vrp.getJobs().get("1");
|
||||||
|
assertTrue(s.getRequiredSkills().containsSkill("skill2"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenReadingService1_nuSkillsShouldBeCorrect(){
|
||||||
|
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
new VrpXMLReader(builder, null).read(inFileName);
|
||||||
|
VehicleRoutingProblem vrp = builder.build();
|
||||||
|
Service s = (Service) vrp.getJobs().get("1");
|
||||||
|
assertEquals(2,s.getRequiredSkills().values().size());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenReadingService2_nuSkillsOfV2ShouldBeCorrect(){
|
||||||
|
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
new VrpXMLReader(builder, null).read(inFileName);
|
||||||
|
VehicleRoutingProblem vrp = builder.build();
|
||||||
|
Service s = (Service) vrp.getJobs().get("2");
|
||||||
|
assertEquals(0,s.getRequiredSkills().values().size());
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenReadingShipments_itReadsThemCorrectly(){
|
public void whenReadingShipments_itReadsThemCorrectly(){
|
||||||
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
|
@ -139,6 +207,42 @@ public class VrpXMLReaderTest {
|
||||||
assertEquals(2,shipCounter);
|
assertEquals(2,shipCounter);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenReadingShipment3_skill1ShouldBeAssigned(){
|
||||||
|
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
new VrpXMLReader(builder, null).read(inFileName);
|
||||||
|
VehicleRoutingProblem vrp = builder.build();
|
||||||
|
Shipment s = (Shipment) vrp.getJobs().get("3");
|
||||||
|
assertTrue(s.getRequiredSkills().containsSkill("skill1"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenReadingShipment3_skill2ShouldBeAssigned(){
|
||||||
|
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
new VrpXMLReader(builder, null).read(inFileName);
|
||||||
|
VehicleRoutingProblem vrp = builder.build();
|
||||||
|
Shipment s = (Shipment) vrp.getJobs().get("3");
|
||||||
|
assertTrue(s.getRequiredSkills().containsSkill("skill2"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenReadingShipment3_nuSkillsShouldBeCorrect(){
|
||||||
|
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
new VrpXMLReader(builder, null).read(inFileName);
|
||||||
|
VehicleRoutingProblem vrp = builder.build();
|
||||||
|
Shipment s = (Shipment) vrp.getJobs().get("3");
|
||||||
|
assertEquals(2,s.getRequiredSkills().values().size());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenReadingShipment4_nuSkillsOfV2ShouldBeCorrect(){
|
||||||
|
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
new VrpXMLReader(builder, null).read(inFileName);
|
||||||
|
VehicleRoutingProblem vrp = builder.build();
|
||||||
|
Shipment s = (Shipment) vrp.getJobs().get("4");
|
||||||
|
assertEquals(0,s.getRequiredSkills().values().size());
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenReadingServices_capOfService1IsReadCorrectly(){
|
public void whenReadingServices_capOfService1IsReadCorrectly(){
|
||||||
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
|
@ -465,4 +569,6 @@ public class VrpXMLReaderTest {
|
||||||
VehicleRoutingProblem vrp = builder.build();
|
VehicleRoutingProblem vrp = builder.build();
|
||||||
assertEquals(2,vrp.getInitialVehicleRoutes().iterator().next().getActivities().size());
|
assertEquals(2,vrp.getInitialVehicleRoutes().iterator().next().getActivities().size());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,11 +16,6 @@
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
package jsprit.core.problem.io;
|
package jsprit.core.problem.io;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
|
||||||
import static org.junit.Assert.assertFalse;
|
|
||||||
|
|
||||||
import java.util.Collection;
|
|
||||||
|
|
||||||
import jsprit.core.problem.VehicleRoutingProblem;
|
import jsprit.core.problem.VehicleRoutingProblem;
|
||||||
import jsprit.core.problem.VehicleRoutingProblem.Builder;
|
import jsprit.core.problem.VehicleRoutingProblem.Builder;
|
||||||
import jsprit.core.problem.VehicleRoutingProblem.FleetSize;
|
import jsprit.core.problem.VehicleRoutingProblem.FleetSize;
|
||||||
|
|
@ -31,10 +26,13 @@ import jsprit.core.problem.vehicle.Vehicle;
|
||||||
import jsprit.core.problem.vehicle.VehicleImpl;
|
import jsprit.core.problem.vehicle.VehicleImpl;
|
||||||
import jsprit.core.problem.vehicle.VehicleTypeImpl;
|
import jsprit.core.problem.vehicle.VehicleTypeImpl;
|
||||||
import jsprit.core.util.Coordinate;
|
import jsprit.core.util.Coordinate;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
public class VrpXMLWriterTest {
|
public class VrpXMLWriterTest {
|
||||||
|
|
||||||
private String infileName;
|
private String infileName;
|
||||||
|
|
@ -50,7 +48,7 @@ public class VrpXMLWriterTest {
|
||||||
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
builder.setFleetSize(FleetSize.INFINITE);
|
builder.setFleetSize(FleetSize.INFINITE);
|
||||||
VehicleTypeImpl type = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
VehicleTypeImpl type = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
||||||
Vehicle vehicle = VehicleImpl.Builder.newInstance("myVehicle").setStartLocationId("loc").setType(type).build();
|
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("myVehicle").setStartLocationId("loc").setType(type).build();
|
||||||
builder.addVehicle(vehicle);
|
builder.addVehicle(vehicle);
|
||||||
VehicleRoutingProblem vrp = builder.build();
|
VehicleRoutingProblem vrp = builder.build();
|
||||||
new VrpXMLWriter(vrp, null).write(infileName);
|
new VrpXMLWriter(vrp, null).write(infileName);
|
||||||
|
|
@ -62,8 +60,8 @@ public class VrpXMLWriterTest {
|
||||||
builder.setFleetSize(FleetSize.FINITE);
|
builder.setFleetSize(FleetSize.FINITE);
|
||||||
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
||||||
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build();
|
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build();
|
||||||
Vehicle v1 = VehicleImpl.Builder.newInstance("v1").setStartLocationId("loc").setType(type1).build();
|
VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocationId("loc").setType(type1).build();
|
||||||
Vehicle v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setType(type2).build();
|
VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setType(type2).build();
|
||||||
builder.addVehicle(v1);
|
builder.addVehicle(v1);
|
||||||
builder.addVehicle(v2);
|
builder.addVehicle(v2);
|
||||||
VehicleRoutingProblem vrp = builder.build();
|
VehicleRoutingProblem vrp = builder.build();
|
||||||
|
|
@ -76,8 +74,8 @@ public class VrpXMLWriterTest {
|
||||||
builder.setFleetSize(FleetSize.FINITE);
|
builder.setFleetSize(FleetSize.FINITE);
|
||||||
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
||||||
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build();
|
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build();
|
||||||
Vehicle v1 = VehicleImpl.Builder.newInstance("v1").setStartLocationId("loc").setType(type1).build();
|
VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocationId("loc").setType(type1).build();
|
||||||
Vehicle v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setType(type2).build();
|
VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setType(type2).build();
|
||||||
builder.addVehicle(v1);
|
builder.addVehicle(v1);
|
||||||
builder.addVehicle(v2);
|
builder.addVehicle(v2);
|
||||||
VehicleRoutingProblem vrp = builder.build();
|
VehicleRoutingProblem vrp = builder.build();
|
||||||
|
|
@ -93,8 +91,8 @@ public class VrpXMLWriterTest {
|
||||||
|
|
||||||
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
||||||
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build();
|
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build();
|
||||||
Vehicle v1 = VehicleImpl.Builder.newInstance("v1").setStartLocationId("loc").setType(type1).build();
|
VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocationId("loc").setType(type1).build();
|
||||||
Vehicle v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setType(type2).build();
|
VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setType(type2).build();
|
||||||
|
|
||||||
builder.addVehicle(v1);
|
builder.addVehicle(v1);
|
||||||
builder.addVehicle(v2);
|
builder.addVehicle(v2);
|
||||||
|
|
@ -150,8 +148,8 @@ public class VrpXMLWriterTest {
|
||||||
|
|
||||||
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
||||||
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build();
|
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build();
|
||||||
Vehicle v1 = VehicleImpl.Builder.newInstance("v1").setStartLocationId("loc").setType(type1).build();
|
VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocationId("loc").setType(type1).build();
|
||||||
Vehicle v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setType(type2).build();
|
VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setType(type2).build();
|
||||||
|
|
||||||
builder.addVehicle(v1);
|
builder.addVehicle(v1);
|
||||||
builder.addVehicle(v2);
|
builder.addVehicle(v2);
|
||||||
|
|
@ -181,8 +179,8 @@ public class VrpXMLWriterTest {
|
||||||
|
|
||||||
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
||||||
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build();
|
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build();
|
||||||
Vehicle v1 = VehicleImpl.Builder.newInstance("v1").setStartLocationId("loc").setType(type1).build();
|
VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocationId("loc").setType(type1).build();
|
||||||
Vehicle v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setType(type2).build();
|
VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setType(type2).build();
|
||||||
|
|
||||||
builder.addVehicle(v1);
|
builder.addVehicle(v1);
|
||||||
builder.addVehicle(v2);
|
builder.addVehicle(v2);
|
||||||
|
|
@ -213,8 +211,8 @@ public class VrpXMLWriterTest {
|
||||||
|
|
||||||
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
||||||
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build();
|
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build();
|
||||||
Vehicle v1 = VehicleImpl.Builder.newInstance("v1").setStartLocationId("loc").setType(type1).build();
|
VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocationId("loc").setType(type1).build();
|
||||||
Vehicle v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setType(type2).build();
|
VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setType(type2).build();
|
||||||
|
|
||||||
builder.addVehicle(v1);
|
builder.addVehicle(v1);
|
||||||
builder.addVehicle(v2);
|
builder.addVehicle(v2);
|
||||||
|
|
@ -244,8 +242,8 @@ public class VrpXMLWriterTest {
|
||||||
|
|
||||||
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
||||||
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build();
|
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build();
|
||||||
Vehicle v1 = VehicleImpl.Builder.newInstance("v1").setStartLocationId("loc").setType(type1).build();
|
VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocationId("loc").setType(type1).build();
|
||||||
Vehicle v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setType(type2).build();
|
VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setType(type2).build();
|
||||||
|
|
||||||
builder.addVehicle(v1);
|
builder.addVehicle(v1);
|
||||||
builder.addVehicle(v2);
|
builder.addVehicle(v2);
|
||||||
|
|
@ -275,8 +273,8 @@ public class VrpXMLWriterTest {
|
||||||
|
|
||||||
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
||||||
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build();
|
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build();
|
||||||
Vehicle v1 = VehicleImpl.Builder.newInstance("v1").setStartLocationId("loc").setType(type1).build();
|
VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocationId("loc").setType(type1).build();
|
||||||
Vehicle v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setType(type2).build();
|
VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setType(type2).build();
|
||||||
|
|
||||||
builder.addVehicle(v1);
|
builder.addVehicle(v1);
|
||||||
builder.addVehicle(v2);
|
builder.addVehicle(v2);
|
||||||
|
|
@ -298,14 +296,183 @@ public class VrpXMLWriterTest {
|
||||||
assertEquals("[x=1.0][y=2.0]",((Shipment)readVrp.getJobs().get("1")).getPickupLocation());
|
assertEquals("[x=1.0][y=2.0]",((Shipment)readVrp.getJobs().get("1")).getPickupLocation());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
public void whenWritingVehicles_vehShouldHave2Skills(){
|
||||||
|
Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
||||||
|
VehicleImpl v = VehicleImpl.Builder.newInstance("v1").addSkill("SKILL5").addSkill("skill1").addSkill("Skill2").setStartLocationId("loc").setType(type1).build();
|
||||||
|
builder.addVehicle(v);
|
||||||
|
|
||||||
|
VehicleRoutingProblem vrp = builder.build();
|
||||||
|
new VrpXMLWriter(vrp, null).write(infileName);
|
||||||
|
|
||||||
|
VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
new VrpXMLReader(vrpToReadBuilder, null).read(infileName);
|
||||||
|
VehicleRoutingProblem readVrp = vrpToReadBuilder.build();
|
||||||
|
Vehicle veh1 = getVehicle("v1",readVrp);
|
||||||
|
|
||||||
|
assertEquals(3,veh1.getSkills().values().size());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenWritingVehicles_vehShouldContain_skill5(){
|
||||||
|
Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
||||||
|
VehicleImpl v = VehicleImpl.Builder.newInstance("v1").addSkill("SKILL5").addSkill("skill1").addSkill("Skill2").setStartLocationId("loc").setType(type1).build();
|
||||||
|
builder.addVehicle(v);
|
||||||
|
|
||||||
|
VehicleRoutingProblem vrp = builder.build();
|
||||||
|
new VrpXMLWriter(vrp, null).write(infileName);
|
||||||
|
|
||||||
|
VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
new VrpXMLReader(vrpToReadBuilder, null).read(infileName);
|
||||||
|
VehicleRoutingProblem readVrp = vrpToReadBuilder.build();
|
||||||
|
Vehicle veh1 = getVehicle("v1",readVrp);
|
||||||
|
|
||||||
|
assertTrue(veh1.getSkills().containsSkill("skill5"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenWritingVehicles_vehShouldContain_skill1(){
|
||||||
|
Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
||||||
|
VehicleImpl v = VehicleImpl.Builder.newInstance("v1").addSkill("SKILL5").addSkill("skill1").addSkill("Skill2").setStartLocationId("loc").setType(type1).build();
|
||||||
|
builder.addVehicle(v);
|
||||||
|
|
||||||
|
VehicleRoutingProblem vrp = builder.build();
|
||||||
|
new VrpXMLWriter(vrp, null).write(infileName);
|
||||||
|
|
||||||
|
VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
new VrpXMLReader(vrpToReadBuilder, null).read(infileName);
|
||||||
|
VehicleRoutingProblem readVrp = vrpToReadBuilder.build();
|
||||||
|
Vehicle veh1 = getVehicle("v1",readVrp);
|
||||||
|
|
||||||
|
assertTrue(veh1.getSkills().containsSkill("skill1"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenWritingVehicles_vehShouldContain_skill2(){
|
||||||
|
Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
||||||
|
VehicleImpl v = VehicleImpl.Builder.newInstance("v1").addSkill("SKILL5").addSkill("skill1").addSkill("Skill2").setStartLocationId("loc").setType(type1).build();
|
||||||
|
builder.addVehicle(v);
|
||||||
|
|
||||||
|
VehicleRoutingProblem vrp = builder.build();
|
||||||
|
new VrpXMLWriter(vrp, null).write(infileName);
|
||||||
|
|
||||||
|
VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
new VrpXMLReader(vrpToReadBuilder, null).read(infileName);
|
||||||
|
VehicleRoutingProblem readVrp = vrpToReadBuilder.build();
|
||||||
|
Vehicle veh1 = getVehicle("v1",readVrp);
|
||||||
|
|
||||||
|
assertTrue(veh1.getSkills().containsSkill("skill2"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenWritingVehicles_vehShouldHave0Skills(){
|
||||||
|
Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
||||||
|
VehicleImpl v = VehicleImpl.Builder.newInstance("v1").setStartLocationId("loc").setType(type1).build();
|
||||||
|
builder.addVehicle(v);
|
||||||
|
|
||||||
|
VehicleRoutingProblem vrp = builder.build();
|
||||||
|
new VrpXMLWriter(vrp, null).write(infileName);
|
||||||
|
|
||||||
|
VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
new VrpXMLReader(vrpToReadBuilder, null).read(infileName);
|
||||||
|
VehicleRoutingProblem readVrp = vrpToReadBuilder.build();
|
||||||
|
Vehicle veh = getVehicle("v1",readVrp);
|
||||||
|
|
||||||
|
assertEquals(0,veh.getSkills().values().size());
|
||||||
|
}
|
||||||
|
|
||||||
|
private Vehicle getVehicle(String v1, VehicleRoutingProblem readVrp) {
|
||||||
|
for(Vehicle v : readVrp.getVehicles()){
|
||||||
|
if(v.getId().equals(v1)) return v;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenWritingShipments_shipmentShouldHaveCorrectNuSkills(){
|
||||||
|
Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
|
||||||
|
Shipment s = Shipment.Builder.newInstance("1").addRequiredSkill("skill1").addRequiredSkill("skill2").addRequiredSkill("skill3")
|
||||||
|
.addSizeDimension(0, 10).setPickupCoord(Coordinate.newInstance(1, 2)).setDeliveryCoord(Coordinate.newInstance(5, 6)).setDeliveryLocation("delLoc").setPickupTimeWindow(TimeWindow.newInstance(1, 2))
|
||||||
|
.setDeliveryTimeWindow(TimeWindow.newInstance(3, 4)).setPickupServiceTime(100).setDeliveryServiceTime(50).build();
|
||||||
|
|
||||||
|
VehicleRoutingProblem vrp = builder.addJob(s).build();
|
||||||
|
new VrpXMLWriter(vrp, null).write(infileName);
|
||||||
|
|
||||||
|
VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
new VrpXMLReader(vrpToReadBuilder, null).read(infileName);
|
||||||
|
VehicleRoutingProblem readVrp = vrpToReadBuilder.build();
|
||||||
|
|
||||||
|
assertEquals(3,readVrp.getJobs().get("1").getRequiredSkills().values().size());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenWritingShipments_shipmentShouldContain_skill1(){
|
||||||
|
Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
|
||||||
|
Shipment s = Shipment.Builder.newInstance("1").addRequiredSkill("skill1").addRequiredSkill("skill2").addRequiredSkill("skill3")
|
||||||
|
.addSizeDimension(0, 10).setPickupCoord(Coordinate.newInstance(1, 2)).setDeliveryCoord(Coordinate.newInstance(5, 6)).setDeliveryLocation("delLoc").setPickupTimeWindow(TimeWindow.newInstance(1, 2))
|
||||||
|
.setDeliveryTimeWindow(TimeWindow.newInstance(3, 4)).setPickupServiceTime(100).setDeliveryServiceTime(50).build();
|
||||||
|
|
||||||
|
VehicleRoutingProblem vrp = builder.addJob(s).build();
|
||||||
|
new VrpXMLWriter(vrp, null).write(infileName);
|
||||||
|
|
||||||
|
VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
new VrpXMLReader(vrpToReadBuilder, null).read(infileName);
|
||||||
|
VehicleRoutingProblem readVrp = vrpToReadBuilder.build();
|
||||||
|
|
||||||
|
assertTrue(readVrp.getJobs().get("1").getRequiredSkills().containsSkill("skill1"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenWritingShipments_shipmentShouldContain_skill2(){
|
||||||
|
Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
|
||||||
|
Shipment s = Shipment.Builder.newInstance("1").addRequiredSkill("skill1").addRequiredSkill("Skill2").addRequiredSkill("skill3")
|
||||||
|
.addSizeDimension(0, 10).setPickupCoord(Coordinate.newInstance(1, 2)).setDeliveryCoord(Coordinate.newInstance(5, 6)).setDeliveryLocation("delLoc").setPickupTimeWindow(TimeWindow.newInstance(1, 2))
|
||||||
|
.setDeliveryTimeWindow(TimeWindow.newInstance(3, 4)).setPickupServiceTime(100).setDeliveryServiceTime(50).build();
|
||||||
|
|
||||||
|
VehicleRoutingProblem vrp = builder.addJob(s).build();
|
||||||
|
new VrpXMLWriter(vrp, null).write(infileName);
|
||||||
|
|
||||||
|
VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
new VrpXMLReader(vrpToReadBuilder, null).read(infileName);
|
||||||
|
VehicleRoutingProblem readVrp = vrpToReadBuilder.build();
|
||||||
|
|
||||||
|
assertTrue(readVrp.getJobs().get("1").getRequiredSkills().containsSkill("skill2"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenWritingShipments_shipmentShouldContain_skill3(){
|
||||||
|
Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
|
||||||
|
Shipment s = Shipment.Builder.newInstance("1").addRequiredSkill("skill1").addRequiredSkill("Skill2").addRequiredSkill("skill3")
|
||||||
|
.addSizeDimension(0, 10).setPickupCoord(Coordinate.newInstance(1, 2)).setDeliveryCoord(Coordinate.newInstance(5, 6)).setDeliveryLocation("delLoc").setPickupTimeWindow(TimeWindow.newInstance(1, 2))
|
||||||
|
.setDeliveryTimeWindow(TimeWindow.newInstance(3, 4)).setPickupServiceTime(100).setDeliveryServiceTime(50).build();
|
||||||
|
|
||||||
|
VehicleRoutingProblem vrp = builder.addJob(s).build();
|
||||||
|
new VrpXMLWriter(vrp, null).write(infileName);
|
||||||
|
|
||||||
|
VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
new VrpXMLReader(vrpToReadBuilder, null).read(infileName);
|
||||||
|
VehicleRoutingProblem readVrp = vrpToReadBuilder.build();
|
||||||
|
|
||||||
|
assertTrue(readVrp.getJobs().get("1").getRequiredSkills().containsSkill("skill3"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void whenWritingShipments_readingThemAgainMustReturnTheWrittenLocationCoordOfS1(){
|
public void whenWritingShipments_readingThemAgainMustReturnTheWrittenLocationCoordOfS1(){
|
||||||
Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
|
||||||
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
||||||
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build();
|
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build();
|
||||||
Vehicle v1 = VehicleImpl.Builder.newInstance("v1").setStartLocationId("loc").setType(type1).build();
|
VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocationId("loc").setType(type1).build();
|
||||||
Vehicle v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setType(type2).build();
|
VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setType(type2).build();
|
||||||
|
|
||||||
builder.addVehicle(v1);
|
builder.addVehicle(v1);
|
||||||
builder.addVehicle(v2);
|
builder.addVehicle(v2);
|
||||||
|
|
@ -352,13 +519,13 @@ public class VrpXMLWriterTest {
|
||||||
new VrpXMLReader(vrpToReadBuilder, null).read(infileName);
|
new VrpXMLReader(vrpToReadBuilder, null).read(infileName);
|
||||||
VehicleRoutingProblem readVrp = vrpToReadBuilder.build();
|
VehicleRoutingProblem readVrp = vrpToReadBuilder.build();
|
||||||
|
|
||||||
assertEquals(3,((Shipment)readVrp.getJobs().get("1")).getSize().getNuOfDimensions());
|
assertEquals(3,(readVrp.getJobs().get("1")).getSize().getNuOfDimensions());
|
||||||
assertEquals(10,((Shipment)readVrp.getJobs().get("1")).getSize().get(0));
|
assertEquals(10, (readVrp.getJobs().get("1")).getSize().get(0));
|
||||||
assertEquals(0,((Shipment)readVrp.getJobs().get("1")).getSize().get(1));
|
assertEquals(0,(readVrp.getJobs().get("1")).getSize().get(1));
|
||||||
assertEquals(100,((Shipment)readVrp.getJobs().get("1")).getSize().get(2));
|
assertEquals(100,(readVrp.getJobs().get("1")).getSize().get(2));
|
||||||
|
|
||||||
assertEquals(1,((Shipment)readVrp.getJobs().get("2")).getSize().getNuOfDimensions());
|
assertEquals(1,(readVrp.getJobs().get("2")).getSize().getNuOfDimensions());
|
||||||
assertEquals(20,((Shipment)readVrp.getJobs().get("2")).getSize().get(0));
|
assertEquals(20,(readVrp.getJobs().get("2")).getSize().get(0));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
@ -367,8 +534,8 @@ public class VrpXMLWriterTest {
|
||||||
|
|
||||||
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
||||||
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build();
|
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build();
|
||||||
Vehicle v1 = VehicleImpl.Builder.newInstance("v1").setStartLocationId("loc").setType(type1).build();
|
VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocationId("loc").setType(type1).build();
|
||||||
Vehicle v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setType(type2).build();
|
VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setType(type2).build();
|
||||||
|
|
||||||
builder.addVehicle(v1);
|
builder.addVehicle(v1);
|
||||||
builder.addVehicle(v2);
|
builder.addVehicle(v2);
|
||||||
|
|
@ -389,14 +556,62 @@ public class VrpXMLWriterTest {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenWritingService_itShouldHaveTheCorrectNuSkills(){
|
||||||
|
Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
|
||||||
|
Service s = Service.Builder.newInstance("1").addRequiredSkill("sKill1").addRequiredSkill("skill2").addSizeDimension(0, 1).setLocationId("loc").setServiceTime(2.0).build();
|
||||||
|
|
||||||
|
VehicleRoutingProblem vrp = builder.addJob(s).build();
|
||||||
|
new VrpXMLWriter(vrp, null).write(infileName);
|
||||||
|
|
||||||
|
VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
new VrpXMLReader(vrpToReadBuilder, null).read(infileName);
|
||||||
|
VehicleRoutingProblem readVrp = vrpToReadBuilder.build();
|
||||||
|
|
||||||
|
assertEquals(2,readVrp.getJobs().get("1").getRequiredSkills().values().size());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenWritingService_itShouldContain_skill1(){
|
||||||
|
Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
|
||||||
|
Service s = Service.Builder.newInstance("1").addRequiredSkill("sKill1").addRequiredSkill("skill2").addSizeDimension(0, 1).setLocationId("loc").setServiceTime(2.0).build();
|
||||||
|
|
||||||
|
VehicleRoutingProblem vrp = builder.addJob(s).build();
|
||||||
|
new VrpXMLWriter(vrp, null).write(infileName);
|
||||||
|
|
||||||
|
VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
new VrpXMLReader(vrpToReadBuilder, null).read(infileName);
|
||||||
|
VehicleRoutingProblem readVrp = vrpToReadBuilder.build();
|
||||||
|
|
||||||
|
assertTrue(readVrp.getJobs().get("1").getRequiredSkills().containsSkill("skill1"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenWritingService_itShouldContain_skill2(){
|
||||||
|
Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
|
||||||
|
Service s = Service.Builder.newInstance("1").addRequiredSkill("sKill1").addRequiredSkill("skill2").addSizeDimension(0, 1).setLocationId("loc").setServiceTime(2.0).build();
|
||||||
|
|
||||||
|
VehicleRoutingProblem vrp = builder.addJob(s).build();
|
||||||
|
new VrpXMLWriter(vrp, null).write(infileName);
|
||||||
|
|
||||||
|
VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
new VrpXMLReader(vrpToReadBuilder, null).read(infileName);
|
||||||
|
VehicleRoutingProblem readVrp = vrpToReadBuilder.build();
|
||||||
|
|
||||||
|
assertTrue(readVrp.getJobs().get("1").getRequiredSkills().containsSkill("skill2"));
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenWritingVehicleV1_itDoesNotReturnToDepotMustBeWrittenCorrectly(){
|
public void whenWritingVehicleV1_itDoesNotReturnToDepotMustBeWrittenCorrectly(){
|
||||||
Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
|
||||||
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
||||||
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build();
|
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build();
|
||||||
Vehicle v1 = VehicleImpl.Builder.newInstance("v1").setReturnToDepot(false).setStartLocationId("loc").setType(type1).build();
|
VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setReturnToDepot(false).setStartLocationId("loc").setType(type1).build();
|
||||||
Vehicle v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setType(type2).build();
|
VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setType(type2).build();
|
||||||
|
|
||||||
builder.addVehicle(v1);
|
builder.addVehicle(v1);
|
||||||
builder.addVehicle(v2);
|
builder.addVehicle(v2);
|
||||||
|
|
@ -421,8 +636,8 @@ public class VrpXMLWriterTest {
|
||||||
|
|
||||||
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
||||||
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build();
|
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build();
|
||||||
Vehicle v1 = VehicleImpl.Builder.newInstance("v1").setReturnToDepot(false).setStartLocationId("loc").setType(type1).build();
|
VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setReturnToDepot(false).setStartLocationId("loc").setType(type1).build();
|
||||||
Vehicle v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setType(type2).build();
|
VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setType(type2).build();
|
||||||
|
|
||||||
builder.addVehicle(v1);
|
builder.addVehicle(v1);
|
||||||
builder.addVehicle(v2);
|
builder.addVehicle(v2);
|
||||||
|
|
@ -447,8 +662,8 @@ public class VrpXMLWriterTest {
|
||||||
|
|
||||||
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
||||||
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build();
|
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build();
|
||||||
Vehicle v1 = VehicleImpl.Builder.newInstance("v1").setReturnToDepot(false).setStartLocationId("loc").setType(type1).build();
|
VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setReturnToDepot(false).setStartLocationId("loc").setType(type1).build();
|
||||||
Vehicle v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setType(type2).build();
|
VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setType(type2).build();
|
||||||
|
|
||||||
builder.addVehicle(v1);
|
builder.addVehicle(v1);
|
||||||
builder.addVehicle(v2);
|
builder.addVehicle(v2);
|
||||||
|
|
@ -475,8 +690,8 @@ public class VrpXMLWriterTest {
|
||||||
|
|
||||||
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
||||||
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build();
|
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build();
|
||||||
Vehicle v1 = VehicleImpl.Builder.newInstance("v1").setReturnToDepot(false).setStartLocationId("loc").setType(type1).build();
|
VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setReturnToDepot(false).setStartLocationId("loc").setType(type1).build();
|
||||||
Vehicle v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("startLoc").setStartLocationCoordinate(Coordinate.newInstance(1, 2))
|
VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("startLoc").setStartLocationCoordinate(Coordinate.newInstance(1, 2))
|
||||||
.setEndLocationId("endLoc").setEndLocationCoordinate(Coordinate.newInstance(4, 5)).setType(type2).build();
|
.setEndLocationId("endLoc").setEndLocationCoordinate(Coordinate.newInstance(4, 5)).setType(type2).build();
|
||||||
|
|
||||||
builder.addVehicle(v1);
|
builder.addVehicle(v1);
|
||||||
|
|
@ -503,8 +718,8 @@ public class VrpXMLWriterTest {
|
||||||
|
|
||||||
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
||||||
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build();
|
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build();
|
||||||
Vehicle v1 = VehicleImpl.Builder.newInstance("v1").setReturnToDepot(false).setStartLocationId("loc").setType(type1).build();
|
VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setReturnToDepot(false).setStartLocationId("loc").setType(type1).build();
|
||||||
Vehicle v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("startLoc").setStartLocationCoordinate(Coordinate.newInstance(1, 2))
|
VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("startLoc").setStartLocationCoordinate(Coordinate.newInstance(1, 2))
|
||||||
.setEndLocationId("endLoc").setEndLocationCoordinate(Coordinate.newInstance(4, 5)).setType(type2).build();
|
.setEndLocationId("endLoc").setEndLocationCoordinate(Coordinate.newInstance(4, 5)).setType(type2).build();
|
||||||
|
|
||||||
builder.addVehicle(v1);
|
builder.addVehicle(v1);
|
||||||
|
|
@ -538,7 +753,7 @@ public class VrpXMLWriterTest {
|
||||||
.addCapacityDimension(2, 10000)
|
.addCapacityDimension(2, 10000)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
Vehicle v2 = VehicleImpl.Builder.newInstance("v").setStartLocationId("startLoc").setStartLocationCoordinate(Coordinate.newInstance(1, 2))
|
VehicleImpl v2 = VehicleImpl.Builder.newInstance("v").setStartLocationId("startLoc").setStartLocationCoordinate(Coordinate.newInstance(1, 2))
|
||||||
.setEndLocationId("endLoc").setEndLocationCoordinate(Coordinate.newInstance(4, 5)).setType(type2).build();
|
.setEndLocationId("endLoc").setEndLocationCoordinate(Coordinate.newInstance(4, 5)).setType(type2).build();
|
||||||
builder.addVehicle(v2);
|
builder.addVehicle(v2);
|
||||||
|
|
||||||
|
|
@ -566,7 +781,7 @@ public class VrpXMLWriterTest {
|
||||||
.addCapacityDimension(10, 10000)
|
.addCapacityDimension(10, 10000)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
Vehicle v2 = VehicleImpl.Builder.newInstance("v").setStartLocationId("startLoc").setStartLocationCoordinate(Coordinate.newInstance(1, 2))
|
VehicleImpl v2 = VehicleImpl.Builder.newInstance("v").setStartLocationId("startLoc").setStartLocationCoordinate(Coordinate.newInstance(1, 2))
|
||||||
.setEndLocationId("endLoc").setEndLocationCoordinate(Coordinate.newInstance(4, 5)).setType(type2).build();
|
.setEndLocationId("endLoc").setEndLocationCoordinate(Coordinate.newInstance(4, 5)).setType(type2).build();
|
||||||
builder.addVehicle(v2);
|
builder.addVehicle(v2);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -60,7 +60,7 @@ public class DeliveryTest {
|
||||||
@Test
|
@Test
|
||||||
public void whenAddingSkills_theyShouldBeAddedCorrectly(){
|
public void whenAddingSkills_theyShouldBeAddedCorrectly(){
|
||||||
Delivery s = (Delivery) Delivery.Builder.newInstance("s").setLocationId("loc")
|
Delivery s = (Delivery) Delivery.Builder.newInstance("s").setLocationId("loc")
|
||||||
.addSkill("drill").addSkill("screwdriver").build();
|
.addRequiredSkill("drill").addRequiredSkill("screwdriver").build();
|
||||||
assertTrue(s.getRequiredSkills().containsSkill("drill"));
|
assertTrue(s.getRequiredSkills().containsSkill("drill"));
|
||||||
assertTrue(s.getRequiredSkills().containsSkill("ScrewDriver"));
|
assertTrue(s.getRequiredSkills().containsSkill("ScrewDriver"));
|
||||||
}
|
}
|
||||||
|
|
@ -68,7 +68,7 @@ public class DeliveryTest {
|
||||||
@Test
|
@Test
|
||||||
public void whenAddingSkillsCaseSens_theyShouldBeAddedCorrectly(){
|
public void whenAddingSkillsCaseSens_theyShouldBeAddedCorrectly(){
|
||||||
Delivery s = (Delivery) Delivery.Builder.newInstance("s").setLocationId("loc")
|
Delivery s = (Delivery) Delivery.Builder.newInstance("s").setLocationId("loc")
|
||||||
.addSkill("DriLl").addSkill("screwDriver").build();
|
.addRequiredSkill("DriLl").addRequiredSkill("screwDriver").build();
|
||||||
assertTrue(s.getRequiredSkills().containsSkill("drill"));
|
assertTrue(s.getRequiredSkills().containsSkill("drill"));
|
||||||
assertTrue(s.getRequiredSkills().containsSkill("drilL"));
|
assertTrue(s.getRequiredSkills().containsSkill("drilL"));
|
||||||
}
|
}
|
||||||
|
|
@ -76,7 +76,7 @@ public class DeliveryTest {
|
||||||
@Test
|
@Test
|
||||||
public void whenAddingSkillsCaseSensV2_theyShouldBeAddedCorrectly(){
|
public void whenAddingSkillsCaseSensV2_theyShouldBeAddedCorrectly(){
|
||||||
Delivery s = (Delivery) Delivery.Builder.newInstance("s").setLocationId("loc")
|
Delivery s = (Delivery) Delivery.Builder.newInstance("s").setLocationId("loc")
|
||||||
.addSkill("screwDriver").build();
|
.addRequiredSkill("screwDriver").build();
|
||||||
assertFalse(s.getRequiredSkills().containsSkill("drill"));
|
assertFalse(s.getRequiredSkills().containsSkill("drill"));
|
||||||
assertFalse(s.getRequiredSkills().containsSkill("drilL"));
|
assertFalse(s.getRequiredSkills().containsSkill("drilL"));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -60,7 +60,7 @@ public class PickupTest {
|
||||||
@Test
|
@Test
|
||||||
public void whenAddingSkills_theyShouldBeAddedCorrectly(){
|
public void whenAddingSkills_theyShouldBeAddedCorrectly(){
|
||||||
Pickup s = (Pickup) Pickup.Builder.newInstance("s").setLocationId("loc")
|
Pickup s = (Pickup) Pickup.Builder.newInstance("s").setLocationId("loc")
|
||||||
.addSkill("drill").addSkill("screwdriver").build();
|
.addRequiredSkill("drill").addRequiredSkill("screwdriver").build();
|
||||||
assertTrue(s.getRequiredSkills().containsSkill("drill"));
|
assertTrue(s.getRequiredSkills().containsSkill("drill"));
|
||||||
assertTrue(s.getRequiredSkills().containsSkill("drill"));
|
assertTrue(s.getRequiredSkills().containsSkill("drill"));
|
||||||
assertTrue(s.getRequiredSkills().containsSkill("ScrewDriver"));
|
assertTrue(s.getRequiredSkills().containsSkill("ScrewDriver"));
|
||||||
|
|
@ -69,7 +69,7 @@ public class PickupTest {
|
||||||
@Test
|
@Test
|
||||||
public void whenAddingSkillsCaseSens_theyShouldBeAddedCorrectly(){
|
public void whenAddingSkillsCaseSens_theyShouldBeAddedCorrectly(){
|
||||||
Pickup s = (Pickup) Pickup.Builder.newInstance("s").setLocationId("loc")
|
Pickup s = (Pickup) Pickup.Builder.newInstance("s").setLocationId("loc")
|
||||||
.addSkill("DriLl").addSkill("screwDriver").build();
|
.addRequiredSkill("DriLl").addRequiredSkill("screwDriver").build();
|
||||||
assertTrue(s.getRequiredSkills().containsSkill("drill"));
|
assertTrue(s.getRequiredSkills().containsSkill("drill"));
|
||||||
assertTrue(s.getRequiredSkills().containsSkill("drilL"));
|
assertTrue(s.getRequiredSkills().containsSkill("drilL"));
|
||||||
}
|
}
|
||||||
|
|
@ -77,7 +77,7 @@ public class PickupTest {
|
||||||
@Test
|
@Test
|
||||||
public void whenAddingSkillsCaseSensV2_theyShouldBeAddedCorrectly(){
|
public void whenAddingSkillsCaseSensV2_theyShouldBeAddedCorrectly(){
|
||||||
Pickup s = (Pickup) Pickup.Builder.newInstance("s").setLocationId("loc")
|
Pickup s = (Pickup) Pickup.Builder.newInstance("s").setLocationId("loc")
|
||||||
.addSkill("screwDriver").build();
|
.addRequiredSkill("screwDriver").build();
|
||||||
assertFalse(s.getRequiredSkills().containsSkill("drill"));
|
assertFalse(s.getRequiredSkills().containsSkill("drill"));
|
||||||
assertFalse(s.getRequiredSkills().containsSkill("drilL"));
|
assertFalse(s.getRequiredSkills().containsSkill("drilL"));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -145,7 +145,7 @@ public class ServiceTest {
|
||||||
@Test
|
@Test
|
||||||
public void whenAddingSkills_theyShouldBeAddedCorrectly(){
|
public void whenAddingSkills_theyShouldBeAddedCorrectly(){
|
||||||
Service s = Service.Builder.newInstance("s").setLocationId("loc")
|
Service s = Service.Builder.newInstance("s").setLocationId("loc")
|
||||||
.addSkill("drill").addSkill("screwdriver").build();
|
.addRequiredSkill("drill").addRequiredSkill("screwdriver").build();
|
||||||
assertTrue(s.getRequiredSkills().containsSkill("drill"));
|
assertTrue(s.getRequiredSkills().containsSkill("drill"));
|
||||||
assertTrue(s.getRequiredSkills().containsSkill("drill"));
|
assertTrue(s.getRequiredSkills().containsSkill("drill"));
|
||||||
assertTrue(s.getRequiredSkills().containsSkill("ScrewDriver"));
|
assertTrue(s.getRequiredSkills().containsSkill("ScrewDriver"));
|
||||||
|
|
@ -154,7 +154,7 @@ public class ServiceTest {
|
||||||
@Test
|
@Test
|
||||||
public void whenAddingSkillsCaseSens_theyShouldBeAddedCorrectly(){
|
public void whenAddingSkillsCaseSens_theyShouldBeAddedCorrectly(){
|
||||||
Service s = Service.Builder.newInstance("s").setLocationId("loc")
|
Service s = Service.Builder.newInstance("s").setLocationId("loc")
|
||||||
.addSkill("DriLl").addSkill("screwDriver").build();
|
.addRequiredSkill("DriLl").addRequiredSkill("screwDriver").build();
|
||||||
assertTrue(s.getRequiredSkills().containsSkill("drill"));
|
assertTrue(s.getRequiredSkills().containsSkill("drill"));
|
||||||
assertTrue(s.getRequiredSkills().containsSkill("drilL"));
|
assertTrue(s.getRequiredSkills().containsSkill("drilL"));
|
||||||
}
|
}
|
||||||
|
|
@ -162,7 +162,7 @@ public class ServiceTest {
|
||||||
@Test
|
@Test
|
||||||
public void whenAddingSkillsCaseSensV2_theyShouldBeAddedCorrectly(){
|
public void whenAddingSkillsCaseSensV2_theyShouldBeAddedCorrectly(){
|
||||||
Service s = Service.Builder.newInstance("s").setLocationId("loc")
|
Service s = Service.Builder.newInstance("s").setLocationId("loc")
|
||||||
.addSkill("screwDriver").build();
|
.addRequiredSkill("screwDriver").build();
|
||||||
assertFalse(s.getRequiredSkills().containsSkill("drill"));
|
assertFalse(s.getRequiredSkills().containsSkill("drill"));
|
||||||
assertFalse(s.getRequiredSkills().containsSkill("drilL"));
|
assertFalse(s.getRequiredSkills().containsSkill("drilL"));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -251,7 +251,7 @@ public class ShipmentTest {
|
||||||
@Test
|
@Test
|
||||||
public void whenAddingSkills_theyShouldBeAddedCorrectly(){
|
public void whenAddingSkills_theyShouldBeAddedCorrectly(){
|
||||||
Shipment s = Shipment.Builder.newInstance("s").setPickupLocation("loc").setDeliveryLocation("delLoc")
|
Shipment s = Shipment.Builder.newInstance("s").setPickupLocation("loc").setDeliveryLocation("delLoc")
|
||||||
.addSkill("drill").addSkill("screwdriver").build();
|
.addRequiredSkill("drill").addRequiredSkill("screwdriver").build();
|
||||||
assertTrue(s.getRequiredSkills().containsSkill("drill"));
|
assertTrue(s.getRequiredSkills().containsSkill("drill"));
|
||||||
assertTrue(s.getRequiredSkills().containsSkill("drill"));
|
assertTrue(s.getRequiredSkills().containsSkill("drill"));
|
||||||
assertTrue(s.getRequiredSkills().containsSkill("ScrewDriver"));
|
assertTrue(s.getRequiredSkills().containsSkill("ScrewDriver"));
|
||||||
|
|
@ -260,7 +260,7 @@ public class ShipmentTest {
|
||||||
@Test
|
@Test
|
||||||
public void whenAddingSkillsCaseSens_theyShouldBeAddedCorrectly(){
|
public void whenAddingSkillsCaseSens_theyShouldBeAddedCorrectly(){
|
||||||
Delivery s = (Delivery) Delivery.Builder.newInstance("s").setLocationId("loc")
|
Delivery s = (Delivery) Delivery.Builder.newInstance("s").setLocationId("loc")
|
||||||
.addSkill("DriLl").addSkill("screwDriver").build();
|
.addRequiredSkill("DriLl").addRequiredSkill("screwDriver").build();
|
||||||
assertTrue(s.getRequiredSkills().containsSkill("drill"));
|
assertTrue(s.getRequiredSkills().containsSkill("drill"));
|
||||||
assertTrue(s.getRequiredSkills().containsSkill("drilL"));
|
assertTrue(s.getRequiredSkills().containsSkill("drilL"));
|
||||||
}
|
}
|
||||||
|
|
@ -268,7 +268,7 @@ public class ShipmentTest {
|
||||||
@Test
|
@Test
|
||||||
public void whenAddingSkillsCaseSensV2_theyShouldBeAddedCorrectly(){
|
public void whenAddingSkillsCaseSensV2_theyShouldBeAddedCorrectly(){
|
||||||
Delivery s = (Delivery) Delivery.Builder.newInstance("s").setLocationId("loc")
|
Delivery s = (Delivery) Delivery.Builder.newInstance("s").setLocationId("loc")
|
||||||
.addSkill("screwDriver").build();
|
.addRequiredSkill("screwDriver").build();
|
||||||
assertFalse(s.getRequiredSkills().containsSkill("drill"));
|
assertFalse(s.getRequiredSkills().containsSkill("drill"));
|
||||||
assertFalse(s.getRequiredSkills().containsSkill("drilL"));
|
assertFalse(s.getRequiredSkills().containsSkill("drilL"));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -39,6 +39,7 @@
|
||||||
<start>0.0</start>
|
<start>0.0</start>
|
||||||
<end>1000.0</end>
|
<end>1000.0</end>
|
||||||
</timeSchedule>
|
</timeSchedule>
|
||||||
|
<skills>skill1; SKill2</skills>
|
||||||
</vehicle>
|
</vehicle>
|
||||||
<vehicle>
|
<vehicle>
|
||||||
<id>v2</id>
|
<id>v2</id>
|
||||||
|
|
@ -153,6 +154,7 @@
|
||||||
<end>4000.0</end>
|
<end>4000.0</end>
|
||||||
</timeWindow>
|
</timeWindow>
|
||||||
</timeWindows>
|
</timeWindows>
|
||||||
|
<requiredSkills>skill1, Skill2</requiredSkills>
|
||||||
</service>
|
</service>
|
||||||
|
|
||||||
<service id="2" type="service">
|
<service id="2" type="service">
|
||||||
|
|
@ -197,6 +199,7 @@
|
||||||
<capacity-dimensions>
|
<capacity-dimensions>
|
||||||
<dimension index="0">10</dimension>
|
<dimension index="0">10</dimension>
|
||||||
</capacity-dimensions>
|
</capacity-dimensions>
|
||||||
|
<requiredSkills>skill1, Skill2</requiredSkills>
|
||||||
</shipment>
|
</shipment>
|
||||||
|
|
||||||
<shipment id="4">
|
<shipment id="4">
|
||||||
|
|
|
||||||
|
|
@ -84,7 +84,7 @@ public class SimpleExampleWithSkills {
|
||||||
|
|
||||||
Service service3 = Service.Builder.newInstance("3").addSizeDimension(WEIGHT_INDEX, 1).setCoord(Coordinate.newInstance(15, 7)).build();
|
Service service3 = Service.Builder.newInstance("3").addSizeDimension(WEIGHT_INDEX, 1).setCoord(Coordinate.newInstance(15, 7)).build();
|
||||||
|
|
||||||
Service service4 = Service.Builder.newInstance("4").addSizeDimension(WEIGHT_INDEX, 1).addSkill("drill").setCoord(Coordinate.newInstance(15, 13)).build();
|
Service service4 = Service.Builder.newInstance("4").addSizeDimension(WEIGHT_INDEX, 1).addRequiredSkill("drill").setCoord(Coordinate.newInstance(15, 13)).build();
|
||||||
|
|
||||||
|
|
||||||
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
|
|
||||||
|
|
@ -49,13 +49,13 @@ public class SolomonWithSkillsExample {
|
||||||
skillServiceBuilder = Service.Builder.newInstance(service.getId()+"_skill2").setServiceTime(service.getServiceDuration())
|
skillServiceBuilder = Service.Builder.newInstance(service.getId()+"_skill2").setServiceTime(service.getServiceDuration())
|
||||||
.setCoord(service.getCoord()).setLocationId(service.getLocationId()).setTimeWindow(service.getTimeWindow())
|
.setCoord(service.getCoord()).setLocationId(service.getLocationId()).setTimeWindow(service.getTimeWindow())
|
||||||
.addSizeDimension(0,service.getSize().get(0));
|
.addSizeDimension(0,service.getSize().get(0));
|
||||||
skillServiceBuilder.addSkill("skill2");
|
skillServiceBuilder.addRequiredSkill("skill2");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
skillServiceBuilder = Service.Builder.newInstance(service.getId()+"_skill1").setServiceTime(service.getServiceDuration())
|
skillServiceBuilder = Service.Builder.newInstance(service.getId()+"_skill1").setServiceTime(service.getServiceDuration())
|
||||||
.setCoord(service.getCoord()).setLocationId(service.getLocationId()).setTimeWindow(service.getTimeWindow())
|
.setCoord(service.getCoord()).setLocationId(service.getLocationId()).setTimeWindow(service.getTimeWindow())
|
||||||
.addSizeDimension(0,service.getSize().get(0));
|
.addSizeDimension(0,service.getSize().get(0));
|
||||||
skillServiceBuilder.addSkill("skill1");
|
skillServiceBuilder.addRequiredSkill("skill1");
|
||||||
}
|
}
|
||||||
skillProblemBuilder.addJob(skillServiceBuilder.build());
|
skillProblemBuilder.addJob(skillServiceBuilder.build());
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue