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
|
|
@ -628,8 +628,8 @@ public class VehicleRoutingProblem {
|
|||
this.nuActivities = builder.activityIndexCounter;
|
||||
logger.info("initialise " + this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "[fleetSize="+fleetSize+"][#jobs="+jobs.size()+"][#vehicles="+vehicles.size()+"][#vehicleTypes="+vehicleTypes.size()+"]["+
|
||||
"transportCost="+transportCosts+"][activityCosts="+activityCosts+"]";
|
||||
|
|
|
|||
|
|
@ -70,45 +70,12 @@ public class VrpXMLReader{
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Deprecated
|
||||
interface JobConfigReader {
|
||||
|
||||
|
||||
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);
|
||||
|
||||
|
|
@ -130,13 +97,16 @@ public class VrpXMLReader{
|
|||
|
||||
private Collection<JobConfigReader> jobConfigReaders = new ArrayList<VrpXMLReader.JobConfigReader>();
|
||||
|
||||
|
||||
@Deprecated
|
||||
public void addJobConfigReader(JobConfigReader reader){
|
||||
jobConfigReaders.add(reader);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public void setTourActivityFactory(TourActivityFactory tourActivityFactory){
|
||||
}
|
||||
|
||||
|
||||
@Deprecated
|
||||
public void setServiceBuilderFactory(ServiceBuilderFactory serviceBuilderFactory){
|
||||
this.serviceBuilderFactory=serviceBuilderFactory;
|
||||
}
|
||||
|
|
@ -144,7 +114,8 @@ public class VrpXMLReader{
|
|||
/**
|
||||
* @param schemaValidation the schemaValidation to set
|
||||
*/
|
||||
public void setSchemaValidation(boolean schemaValidation) {
|
||||
@SuppressWarnings("UnusedDeclaration")
|
||||
public void setSchemaValidation(boolean schemaValidation) {
|
||||
this.schemaValidation = schemaValidation;
|
||||
}
|
||||
|
||||
|
|
@ -403,6 +374,7 @@ public class VrpXMLReader{
|
|||
builder.setPickupLocation(pickupCoord.toString());
|
||||
}
|
||||
}
|
||||
|
||||
//pickup-serviceTime
|
||||
String pickupServiceTime = shipmentConfig.getString("pickup.duration");
|
||||
if(pickupServiceTime != null) builder.setPickupServiceTime(Double.parseDouble(pickupServiceTime));
|
||||
|
|
@ -414,8 +386,7 @@ public class VrpXMLReader{
|
|||
TimeWindow pickupTW = TimeWindow.newInstance(Double.parseDouble(pickupTWStart), Double.parseDouble(pickupTWEnd));
|
||||
builder.setPickupTimeWindow(pickupTW);
|
||||
}
|
||||
|
||||
|
||||
|
||||
//delivery-locationId
|
||||
String deliveryLocationId = shipmentConfig.getString("delivery.locationId");
|
||||
if(deliveryLocationId != null){
|
||||
|
|
@ -434,6 +405,7 @@ public class VrpXMLReader{
|
|||
builder.setDeliveryLocation(deliveryCoord.toString());
|
||||
}
|
||||
}
|
||||
|
||||
//delivery-serviceTime
|
||||
String deliveryServiceTime = shipmentConfig.getString("delivery.duration");
|
||||
if(deliveryServiceTime != null) builder.setDeliveryServiceTime(Double.parseDouble(deliveryServiceTime));
|
||||
|
|
@ -445,8 +417,16 @@ public class VrpXMLReader{
|
|||
TimeWindow delTW = TimeWindow.newInstance(Double.parseDouble(delTWStart), Double.parseDouble(delTWEnd));
|
||||
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();
|
||||
// vrpBuilder.addJob(shipment);
|
||||
shipmentMap.put(shipment.getId(),shipment);
|
||||
|
|
@ -515,6 +495,16 @@ public class VrpXMLReader{
|
|||
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();
|
||||
serviceMap.put(service.getId(),service);
|
||||
// vrpBuilder.addJob(service);
|
||||
|
|
@ -595,7 +585,9 @@ public class VrpXMLReader{
|
|||
VehicleType type = types.get(typeId);
|
||||
if(type == null) throw new IllegalStateException("vehicleType with typeId " + typeId + " is missing.");
|
||||
builder.setType(type);
|
||||
String locationId = vehicleConfig.getString("location.id");
|
||||
|
||||
//read startlocation
|
||||
String locationId = vehicleConfig.getString("location.id");
|
||||
if(locationId == null) {
|
||||
locationId = vehicleConfig.getString("startLocation.id");
|
||||
}
|
||||
|
|
@ -618,7 +610,8 @@ public class VrpXMLReader{
|
|||
builder.setStartLocationCoordinate(coordinate);
|
||||
|
||||
}
|
||||
|
||||
|
||||
//read endlocation
|
||||
String endLocationId = vehicleConfig.getString("endLocation.id");
|
||||
if(endLocationId != null) builder.setEndLocationId(endLocationId);
|
||||
String endCoordX = vehicleConfig.getString("endLocation.coord[@x]");
|
||||
|
|
@ -634,15 +627,27 @@ public class VrpXMLReader{
|
|||
builder.setEndLocationCoordinate(coordinate);
|
||||
}
|
||||
|
||||
|
||||
//read timeSchedule
|
||||
String start = vehicleConfig.getString("timeSchedule.start");
|
||||
String end = vehicleConfig.getString("timeSchedule.end");
|
||||
if(start != null) builder.setEarliestStart(Double.parseDouble(start));
|
||||
if(end != null) builder.setLatestArrival(Double.parseDouble(end));
|
||||
String returnToDepot = vehicleConfig.getString("returnToDepot");
|
||||
|
||||
//read return2depot
|
||||
String returnToDepot = vehicleConfig.getString("returnToDepot");
|
||||
if(returnToDepot != null){
|
||||
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();
|
||||
vrpBuilder.addVehicle(vehicle);
|
||||
vehicleMap.put(vehicleId, vehicle);
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@
|
|||
******************************************************************************/
|
||||
package jsprit.core.problem.io;
|
||||
|
||||
import jsprit.core.problem.Skills;
|
||||
import jsprit.core.problem.VehicleRoutingProblem;
|
||||
import jsprit.core.problem.job.Job;
|
||||
import jsprit.core.problem.job.Service;
|
||||
|
|
@ -55,8 +56,7 @@ public class VrpXMLWriter {
|
|||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public Document createDoc() throws ConfigurationException{
|
||||
Document doc = createDocument();
|
||||
return doc;
|
||||
return createDocument();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -227,7 +227,11 @@ public class VrpXMLWriter {
|
|||
xmlConfig.setProperty(shipmentPathString + "("+counter+").duration", service.getServiceDuration());
|
||||
xmlConfig.setProperty(shipmentPathString + "("+counter+").timeWindows.timeWindow(0).start", service.getTimeWindow().getStart());
|
||||
xmlConfig.setProperty(shipmentPathString + "("+counter+").timeWindows.timeWindow(0).end", service.getTimeWindow().getEnd());
|
||||
|
||||
|
||||
//skills
|
||||
String skillString = getSkillString(service);
|
||||
xmlConfig.setProperty(shipmentPathString + "("+counter+").requiredSkills", skillString);
|
||||
|
||||
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+")", shipment.getSize().get(i));
|
||||
}
|
||||
|
||||
//skills
|
||||
String skillString = getSkillString(shipment);
|
||||
xmlConfig.setProperty(shipmentPathString + "("+counter+").requiredSkills", skillString);
|
||||
|
||||
counter++;
|
||||
}
|
||||
}
|
||||
|
|
@ -276,8 +285,7 @@ public class VrpXMLWriter {
|
|||
private void writeVehiclesAndTheirTypes(XMLConfiguration xmlConfig) {
|
||||
|
||||
//vehicles
|
||||
String vehiclePathString = new StringBuilder().append(Schema.VEHICLES).append(".").
|
||||
append(Schema.VEHICLE).toString();
|
||||
String vehiclePathString = Schema.VEHICLES + "." + Schema.VEHICLE;
|
||||
int counter = 0;
|
||||
for(Vehicle vehicle : vrp.getVehicles()){
|
||||
if(vehicle.getType() instanceof PenaltyVehicleType){
|
||||
|
|
@ -299,6 +307,11 @@ public class VrpXMLWriter {
|
|||
xmlConfig.setProperty(vehiclePathString + "("+counter+").timeSchedule.end", vehicle.getLatestArrival());
|
||||
|
||||
xmlConfig.setProperty(vehiclePathString + "("+counter+").returnToDepot", vehicle.isReturnToDepot());
|
||||
|
||||
//write skills
|
||||
String skillString = getSkillString(vehicle);
|
||||
xmlConfig.setProperty(vehiclePathString + "("+counter+").skills", skillString);
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
public Builder addSkill(String skill) {
|
||||
public Builder addRequiredSkill(String skill) {
|
||||
skillBuilder.addSkill(skill);
|
||||
return this;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -243,7 +243,7 @@ public class Shipment extends AbstractJob{
|
|||
}
|
||||
|
||||
|
||||
public Builder addSkill(String skill) {
|
||||
public Builder addRequiredSkill(String skill) {
|
||||
skillBuilder.addSkill(skill);
|
||||
return this;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -65,6 +65,7 @@
|
|||
<xs:element name="typeId" type="xs:string" minOccurs="1" maxOccurs="1"/>
|
||||
<xs:element name="timeSchedule" type="timeWindowType"/>
|
||||
<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:attribute name="type" type="xs:string" use="optional" />
|
||||
</xs:complexType>
|
||||
|
|
@ -146,8 +147,8 @@
|
|||
<xs:element name="timeWindow" type="timeWindowType" minOccurs="1" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
</xs:element>
|
||||
<xs:element name="requiredSkills" type="xs:string" minOccurs="0" maxOccurs="1"/>
|
||||
</xs:all>
|
||||
<xs:attribute name="id" type="xs:string" use="required" />
|
||||
<xs:attribute name="type" type="xs:string"/>
|
||||
|
|
@ -211,6 +212,7 @@
|
|||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="requiredSkills" type="xs:string" minOccurs="0" maxOccurs="1"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="id" type="xs:string" use="required" />
|
||||
</xs:complexType>
|
||||
|
|
|
|||
|
|
@ -53,8 +53,8 @@ public class SolomonSkills_IT {
|
|||
Service.Builder skillServiceBuilder = Service.Builder.newInstance(service.getId()).setServiceTime(service.getServiceDuration())
|
||||
.setCoord(service.getCoord()).setLocationId(service.getLocationId()).setTimeWindow(service.getTimeWindow())
|
||||
.addSizeDimension(0,service.getSize().get(0));
|
||||
if(service.getCoord().getY()<50) skillServiceBuilder.addSkill("skill2");
|
||||
else skillServiceBuilder.addSkill("skill1");
|
||||
if(service.getCoord().getY()<50) skillServiceBuilder.addRequiredSkill("skill2");
|
||||
else skillServiceBuilder.addRequiredSkill("skill1");
|
||||
skillProblemBuilder.addJob(skillServiceBuilder.build());
|
||||
}
|
||||
skillProblemBuilder.addPenaltyVehicles(3.);
|
||||
|
|
|
|||
|
|
@ -29,9 +29,9 @@ public class UpdateRequiredSkillsTest {
|
|||
public void doBefore(){
|
||||
VehicleType type = VehicleTypeImpl.Builder.newInstance("t").build();
|
||||
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocationId("start").setType(type).build();
|
||||
Service service = Service.Builder.newInstance("s").setLocationId("loc").addSkill("skill1").build();
|
||||
Service service2 = Service.Builder.newInstance("s2").setLocationId("loc").addSkill("skill1").addSkill("skill2").addSkill("skill3").build();
|
||||
Service service3 = Service.Builder.newInstance("s3").setLocationId("loc").addSkill("skill4").addSkill("skill5").build();
|
||||
Service service = Service.Builder.newInstance("s").setLocationId("loc").addRequiredSkill("skill1").build();
|
||||
Service service2 = Service.Builder.newInstance("s2").setLocationId("loc").addRequiredSkill("skill1").addRequiredSkill("skill2").addRequiredSkill("skill3").build();
|
||||
Service service3 = Service.Builder.newInstance("s3").setLocationId("loc").addRequiredSkill("skill4").addRequiredSkill("skill5").build();
|
||||
VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addVehicle(vehicle).addJob(service)
|
||||
.addJob(service2).addJob(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();
|
||||
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 service2 = Service.Builder.newInstance("s2").setLocationId("loc").addSkill("skill1").addSkill("skill2").addSkill("skill3").build();
|
||||
Service service = Service.Builder.newInstance("s").setLocationId("loc").addRequiredSkill("skill1").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 service4 = Service.Builder.newInstance("s4").setLocationId("loc").addSkill("skill1").build();
|
||||
Service service3 = Service.Builder.newInstance("s3").setLocationId("loc").addRequiredSkill("skill4").addRequiredSkill("skill5").build();
|
||||
Service service4 = Service.Builder.newInstance("s4").setLocationId("loc").addRequiredSkill("skill1").build();
|
||||
|
||||
vrp = VehicleRoutingProblem.Builder.newInstance().addVehicle(vehicle).addVehicle(vehicle2).addJob(service)
|
||||
.addJob(service2).addJob(service3).addJob(service4).build();
|
||||
|
|
|
|||
|
|
@ -16,26 +16,22 @@
|
|||
******************************************************************************/
|
||||
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.FleetSize;
|
||||
import jsprit.core.problem.job.Job;
|
||||
import jsprit.core.problem.job.Service;
|
||||
import jsprit.core.problem.job.Shipment;
|
||||
import jsprit.core.problem.vehicle.Vehicle;
|
||||
|
||||
import org.junit.Before;
|
||||
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 {
|
||||
|
||||
|
|
@ -77,6 +73,42 @@ public class VrpXMLReaderTest {
|
|||
assertEquals("vehType", v1.getType().getTypeId());
|
||||
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) {
|
||||
for(Vehicle v : vehicles) if(string.equals(v.getId())) return v;
|
||||
|
|
@ -126,6 +158,42 @@ public class VrpXMLReaderTest {
|
|||
}
|
||||
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
|
||||
public void whenReadingShipments_itReadsThemCorrectly(){
|
||||
|
|
@ -138,6 +206,42 @@ public class VrpXMLReaderTest {
|
|||
}
|
||||
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
|
||||
public void whenReadingServices_capOfService1IsReadCorrectly(){
|
||||
|
|
@ -465,4 +569,6 @@ public class VrpXMLReaderTest {
|
|||
VehicleRoutingProblem vrp = builder.build();
|
||||
assertEquals(2,vrp.getInitialVehicleRoutes().iterator().next().getActivities().size());
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,11 +16,6 @@
|
|||
******************************************************************************/
|
||||
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.Builder;
|
||||
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.VehicleTypeImpl;
|
||||
import jsprit.core.util.Coordinate;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
public class VrpXMLWriterTest {
|
||||
|
||||
private String infileName;
|
||||
|
|
@ -50,7 +48,7 @@ public class VrpXMLWriterTest {
|
|||
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
||||
builder.setFleetSize(FleetSize.INFINITE);
|
||||
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);
|
||||
VehicleRoutingProblem vrp = builder.build();
|
||||
new VrpXMLWriter(vrp, null).write(infileName);
|
||||
|
|
@ -62,8 +60,8 @@ public class VrpXMLWriterTest {
|
|||
builder.setFleetSize(FleetSize.FINITE);
|
||||
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
||||
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build();
|
||||
Vehicle v1 = VehicleImpl.Builder.newInstance("v1").setStartLocationId("loc").setType(type1).build();
|
||||
Vehicle v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setType(type2).build();
|
||||
VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocationId("loc").setType(type1).build();
|
||||
VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setType(type2).build();
|
||||
builder.addVehicle(v1);
|
||||
builder.addVehicle(v2);
|
||||
VehicleRoutingProblem vrp = builder.build();
|
||||
|
|
@ -76,8 +74,8 @@ public class VrpXMLWriterTest {
|
|||
builder.setFleetSize(FleetSize.FINITE);
|
||||
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
||||
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build();
|
||||
Vehicle v1 = VehicleImpl.Builder.newInstance("v1").setStartLocationId("loc").setType(type1).build();
|
||||
Vehicle v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setType(type2).build();
|
||||
VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocationId("loc").setType(type1).build();
|
||||
VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setType(type2).build();
|
||||
builder.addVehicle(v1);
|
||||
builder.addVehicle(v2);
|
||||
VehicleRoutingProblem vrp = builder.build();
|
||||
|
|
@ -93,8 +91,8 @@ public class VrpXMLWriterTest {
|
|||
|
||||
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
||||
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build();
|
||||
Vehicle v1 = VehicleImpl.Builder.newInstance("v1").setStartLocationId("loc").setType(type1).build();
|
||||
Vehicle v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setType(type2).build();
|
||||
VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocationId("loc").setType(type1).build();
|
||||
VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setType(type2).build();
|
||||
|
||||
builder.addVehicle(v1);
|
||||
builder.addVehicle(v2);
|
||||
|
|
@ -150,8 +148,8 @@ public class VrpXMLWriterTest {
|
|||
|
||||
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
||||
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build();
|
||||
Vehicle v1 = VehicleImpl.Builder.newInstance("v1").setStartLocationId("loc").setType(type1).build();
|
||||
Vehicle v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setType(type2).build();
|
||||
VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocationId("loc").setType(type1).build();
|
||||
VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setType(type2).build();
|
||||
|
||||
builder.addVehicle(v1);
|
||||
builder.addVehicle(v2);
|
||||
|
|
@ -181,8 +179,8 @@ public class VrpXMLWriterTest {
|
|||
|
||||
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
||||
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build();
|
||||
Vehicle v1 = VehicleImpl.Builder.newInstance("v1").setStartLocationId("loc").setType(type1).build();
|
||||
Vehicle v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setType(type2).build();
|
||||
VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocationId("loc").setType(type1).build();
|
||||
VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setType(type2).build();
|
||||
|
||||
builder.addVehicle(v1);
|
||||
builder.addVehicle(v2);
|
||||
|
|
@ -213,8 +211,8 @@ public class VrpXMLWriterTest {
|
|||
|
||||
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
||||
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build();
|
||||
Vehicle v1 = VehicleImpl.Builder.newInstance("v1").setStartLocationId("loc").setType(type1).build();
|
||||
Vehicle v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setType(type2).build();
|
||||
VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocationId("loc").setType(type1).build();
|
||||
VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setType(type2).build();
|
||||
|
||||
builder.addVehicle(v1);
|
||||
builder.addVehicle(v2);
|
||||
|
|
@ -244,8 +242,8 @@ public class VrpXMLWriterTest {
|
|||
|
||||
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
||||
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build();
|
||||
Vehicle v1 = VehicleImpl.Builder.newInstance("v1").setStartLocationId("loc").setType(type1).build();
|
||||
Vehicle v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setType(type2).build();
|
||||
VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocationId("loc").setType(type1).build();
|
||||
VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setType(type2).build();
|
||||
|
||||
builder.addVehicle(v1);
|
||||
builder.addVehicle(v2);
|
||||
|
|
@ -275,8 +273,8 @@ public class VrpXMLWriterTest {
|
|||
|
||||
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
||||
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build();
|
||||
Vehicle v1 = VehicleImpl.Builder.newInstance("v1").setStartLocationId("loc").setType(type1).build();
|
||||
Vehicle v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setType(type2).build();
|
||||
VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocationId("loc").setType(type1).build();
|
||||
VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setType(type2).build();
|
||||
|
||||
builder.addVehicle(v1);
|
||||
builder.addVehicle(v2);
|
||||
|
|
@ -297,15 +295,184 @@ public class VrpXMLWriterTest {
|
|||
|
||||
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(){
|
||||
Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
||||
|
||||
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
||||
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build();
|
||||
Vehicle v1 = VehicleImpl.Builder.newInstance("v1").setStartLocationId("loc").setType(type1).build();
|
||||
Vehicle v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setType(type2).build();
|
||||
VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocationId("loc").setType(type1).build();
|
||||
VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setType(type2).build();
|
||||
|
||||
builder.addVehicle(v1);
|
||||
builder.addVehicle(v2);
|
||||
|
|
@ -352,13 +519,13 @@ public class VrpXMLWriterTest {
|
|||
new VrpXMLReader(vrpToReadBuilder, null).read(infileName);
|
||||
VehicleRoutingProblem readVrp = vrpToReadBuilder.build();
|
||||
|
||||
assertEquals(3,((Shipment)readVrp.getJobs().get("1")).getSize().getNuOfDimensions());
|
||||
assertEquals(10,((Shipment)readVrp.getJobs().get("1")).getSize().get(0));
|
||||
assertEquals(0,((Shipment)readVrp.getJobs().get("1")).getSize().get(1));
|
||||
assertEquals(100,((Shipment)readVrp.getJobs().get("1")).getSize().get(2));
|
||||
assertEquals(3,(readVrp.getJobs().get("1")).getSize().getNuOfDimensions());
|
||||
assertEquals(10, (readVrp.getJobs().get("1")).getSize().get(0));
|
||||
assertEquals(0,(readVrp.getJobs().get("1")).getSize().get(1));
|
||||
assertEquals(100,(readVrp.getJobs().get("1")).getSize().get(2));
|
||||
|
||||
assertEquals(1,((Shipment)readVrp.getJobs().get("2")).getSize().getNuOfDimensions());
|
||||
assertEquals(20,((Shipment)readVrp.getJobs().get("2")).getSize().get(0));
|
||||
assertEquals(1,(readVrp.getJobs().get("2")).getSize().getNuOfDimensions());
|
||||
assertEquals(20,(readVrp.getJobs().get("2")).getSize().get(0));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -367,8 +534,8 @@ public class VrpXMLWriterTest {
|
|||
|
||||
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
||||
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build();
|
||||
Vehicle v1 = VehicleImpl.Builder.newInstance("v1").setStartLocationId("loc").setType(type1).build();
|
||||
Vehicle v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setType(type2).build();
|
||||
VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocationId("loc").setType(type1).build();
|
||||
VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setType(type2).build();
|
||||
|
||||
builder.addVehicle(v1);
|
||||
builder.addVehicle(v2);
|
||||
|
|
@ -382,12 +549,60 @@ public class VrpXMLWriterTest {
|
|||
VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||
new VrpXMLReader(vrpToReadBuilder, null).read(infileName);
|
||||
VehicleRoutingProblem readVrp = vrpToReadBuilder.build();
|
||||
|
||||
|
||||
Vehicle v = getVehicle("v1",readVrp.getVehicles());
|
||||
assertEquals("loc",v.getStartLocationId());
|
||||
assertEquals("loc",v.getEndLocationId());
|
||||
|
||||
}
|
||||
|
||||
@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
|
||||
public void whenWritingVehicleV1_itDoesNotReturnToDepotMustBeWrittenCorrectly(){
|
||||
|
|
@ -395,8 +610,8 @@ public class VrpXMLWriterTest {
|
|||
|
||||
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
||||
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build();
|
||||
Vehicle v1 = VehicleImpl.Builder.newInstance("v1").setReturnToDepot(false).setStartLocationId("loc").setType(type1).build();
|
||||
Vehicle v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setType(type2).build();
|
||||
VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setReturnToDepot(false).setStartLocationId("loc").setType(type1).build();
|
||||
VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setType(type2).build();
|
||||
|
||||
builder.addVehicle(v1);
|
||||
builder.addVehicle(v2);
|
||||
|
|
@ -421,8 +636,8 @@ public class VrpXMLWriterTest {
|
|||
|
||||
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
||||
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build();
|
||||
Vehicle v1 = VehicleImpl.Builder.newInstance("v1").setReturnToDepot(false).setStartLocationId("loc").setType(type1).build();
|
||||
Vehicle v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setType(type2).build();
|
||||
VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setReturnToDepot(false).setStartLocationId("loc").setType(type1).build();
|
||||
VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setType(type2).build();
|
||||
|
||||
builder.addVehicle(v1);
|
||||
builder.addVehicle(v2);
|
||||
|
|
@ -447,8 +662,8 @@ public class VrpXMLWriterTest {
|
|||
|
||||
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
||||
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build();
|
||||
Vehicle v1 = VehicleImpl.Builder.newInstance("v1").setReturnToDepot(false).setStartLocationId("loc").setType(type1).build();
|
||||
Vehicle v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setType(type2).build();
|
||||
VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setReturnToDepot(false).setStartLocationId("loc").setType(type1).build();
|
||||
VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setType(type2).build();
|
||||
|
||||
builder.addVehicle(v1);
|
||||
builder.addVehicle(v2);
|
||||
|
|
@ -475,8 +690,8 @@ public class VrpXMLWriterTest {
|
|||
|
||||
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
||||
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build();
|
||||
Vehicle 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 v1 = VehicleImpl.Builder.newInstance("v1").setReturnToDepot(false).setStartLocationId("loc").setType(type1).build();
|
||||
VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("startLoc").setStartLocationCoordinate(Coordinate.newInstance(1, 2))
|
||||
.setEndLocationId("endLoc").setEndLocationCoordinate(Coordinate.newInstance(4, 5)).setType(type2).build();
|
||||
|
||||
builder.addVehicle(v1);
|
||||
|
|
@ -503,8 +718,8 @@ public class VrpXMLWriterTest {
|
|||
|
||||
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
||||
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build();
|
||||
Vehicle 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 v1 = VehicleImpl.Builder.newInstance("v1").setReturnToDepot(false).setStartLocationId("loc").setType(type1).build();
|
||||
VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("startLoc").setStartLocationCoordinate(Coordinate.newInstance(1, 2))
|
||||
.setEndLocationId("endLoc").setEndLocationCoordinate(Coordinate.newInstance(4, 5)).setType(type2).build();
|
||||
|
||||
builder.addVehicle(v1);
|
||||
|
|
@ -537,8 +752,8 @@ public class VrpXMLWriterTest {
|
|||
.addCapacityDimension(1, 1000)
|
||||
.addCapacityDimension(2, 10000)
|
||||
.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();
|
||||
builder.addVehicle(v2);
|
||||
|
||||
|
|
@ -565,8 +780,8 @@ public class VrpXMLWriterTest {
|
|||
.addCapacityDimension(1, 1000)
|
||||
.addCapacityDimension(10, 10000)
|
||||
.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();
|
||||
builder.addVehicle(v2);
|
||||
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ public class DeliveryTest {
|
|||
@Test
|
||||
public void whenAddingSkills_theyShouldBeAddedCorrectly(){
|
||||
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("ScrewDriver"));
|
||||
}
|
||||
|
|
@ -68,7 +68,7 @@ public class DeliveryTest {
|
|||
@Test
|
||||
public void whenAddingSkillsCaseSens_theyShouldBeAddedCorrectly(){
|
||||
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"));
|
||||
}
|
||||
|
|
@ -76,7 +76,7 @@ public class DeliveryTest {
|
|||
@Test
|
||||
public void whenAddingSkillsCaseSensV2_theyShouldBeAddedCorrectly(){
|
||||
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"));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ public class PickupTest {
|
|||
@Test
|
||||
public void whenAddingSkills_theyShouldBeAddedCorrectly(){
|
||||
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("ScrewDriver"));
|
||||
|
|
@ -69,7 +69,7 @@ public class PickupTest {
|
|||
@Test
|
||||
public void whenAddingSkillsCaseSens_theyShouldBeAddedCorrectly(){
|
||||
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"));
|
||||
}
|
||||
|
|
@ -77,7 +77,7 @@ public class PickupTest {
|
|||
@Test
|
||||
public void whenAddingSkillsCaseSensV2_theyShouldBeAddedCorrectly(){
|
||||
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"));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -145,7 +145,7 @@ public class ServiceTest {
|
|||
@Test
|
||||
public void whenAddingSkills_theyShouldBeAddedCorrectly(){
|
||||
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("ScrewDriver"));
|
||||
|
|
@ -154,7 +154,7 @@ public class ServiceTest {
|
|||
@Test
|
||||
public void whenAddingSkillsCaseSens_theyShouldBeAddedCorrectly(){
|
||||
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"));
|
||||
}
|
||||
|
|
@ -162,7 +162,7 @@ public class ServiceTest {
|
|||
@Test
|
||||
public void whenAddingSkillsCaseSensV2_theyShouldBeAddedCorrectly(){
|
||||
Service s = Service.Builder.newInstance("s").setLocationId("loc")
|
||||
.addSkill("screwDriver").build();
|
||||
.addRequiredSkill("screwDriver").build();
|
||||
assertFalse(s.getRequiredSkills().containsSkill("drill"));
|
||||
assertFalse(s.getRequiredSkills().containsSkill("drilL"));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -251,7 +251,7 @@ public class ShipmentTest {
|
|||
@Test
|
||||
public void whenAddingSkills_theyShouldBeAddedCorrectly(){
|
||||
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("ScrewDriver"));
|
||||
|
|
@ -260,7 +260,7 @@ public class ShipmentTest {
|
|||
@Test
|
||||
public void whenAddingSkillsCaseSens_theyShouldBeAddedCorrectly(){
|
||||
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"));
|
||||
}
|
||||
|
|
@ -268,7 +268,7 @@ public class ShipmentTest {
|
|||
@Test
|
||||
public void whenAddingSkillsCaseSensV2_theyShouldBeAddedCorrectly(){
|
||||
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"));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -39,6 +39,7 @@
|
|||
<start>0.0</start>
|
||||
<end>1000.0</end>
|
||||
</timeSchedule>
|
||||
<skills>skill1; SKill2</skills>
|
||||
</vehicle>
|
||||
<vehicle>
|
||||
<id>v2</id>
|
||||
|
|
@ -153,6 +154,7 @@
|
|||
<end>4000.0</end>
|
||||
</timeWindow>
|
||||
</timeWindows>
|
||||
<requiredSkills>skill1, Skill2</requiredSkills>
|
||||
</service>
|
||||
|
||||
<service id="2" type="service">
|
||||
|
|
@ -197,6 +199,7 @@
|
|||
<capacity-dimensions>
|
||||
<dimension index="0">10</dimension>
|
||||
</capacity-dimensions>
|
||||
<requiredSkills>skill1, Skill2</requiredSkills>
|
||||
</shipment>
|
||||
|
||||
<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 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();
|
||||
|
|
|
|||
|
|
@ -49,13 +49,13 @@ public class SolomonWithSkillsExample {
|
|||
skillServiceBuilder = Service.Builder.newInstance(service.getId()+"_skill2").setServiceTime(service.getServiceDuration())
|
||||
.setCoord(service.getCoord()).setLocationId(service.getLocationId()).setTimeWindow(service.getTimeWindow())
|
||||
.addSizeDimension(0,service.getSize().get(0));
|
||||
skillServiceBuilder.addSkill("skill2");
|
||||
skillServiceBuilder.addRequiredSkill("skill2");
|
||||
}
|
||||
else {
|
||||
skillServiceBuilder = Service.Builder.newInstance(service.getId()+"_skill1").setServiceTime(service.getServiceDuration())
|
||||
.setCoord(service.getCoord()).setLocationId(service.getLocationId()).setTimeWindow(service.getTimeWindow())
|
||||
.addSizeDimension(0,service.getSize().get(0));
|
||||
skillServiceBuilder.addSkill("skill1");
|
||||
skillServiceBuilder.addRequiredSkill("skill1");
|
||||
}
|
||||
skillProblemBuilder.addJob(skillServiceBuilder.build());
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue