mirror of
https://github.com/graphhopper/jsprit.git
synced 2020-01-24 07:45:05 +01:00
Merge pull request #360 from HeinrichFilter/vrpxmlwrite-update
Add VrpXMLWriter method that returns OutputStream
This commit is contained in:
commit
4ce3a86168
2 changed files with 167 additions and 453 deletions
|
|
@ -41,9 +41,7 @@ import org.slf4j.LoggerFactory;
|
||||||
import org.w3c.dom.Document;
|
import org.w3c.dom.Document;
|
||||||
import org.w3c.dom.Element;
|
import org.w3c.dom.Element;
|
||||||
|
|
||||||
import java.io.FileWriter;
|
import java.io.*;
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.Writer;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
|
@ -94,8 +92,36 @@ public class VrpXMLWriter {
|
||||||
public void write(String filename) {
|
public void write(String filename) {
|
||||||
if (!filename.endsWith(".xml")) filename += ".xml";
|
if (!filename.endsWith(".xml")) filename += ".xml";
|
||||||
log.info("write vrp: " + filename);
|
log.info("write vrp: " + filename);
|
||||||
XMLConf xmlConfig = new XMLConf();
|
XMLConf xmlConfig = createXMLConfiguration();
|
||||||
|
|
||||||
|
try {
|
||||||
xmlConfig.setFileName(filename);
|
xmlConfig.setFileName(filename);
|
||||||
|
Writer out = new FileWriter(filename);
|
||||||
|
XMLSerializer serializer = new XMLSerializer(out, createOutputFormat());
|
||||||
|
serializer.serialize(xmlConfig.getDocument());
|
||||||
|
out.close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public OutputStream write() {
|
||||||
|
XMLConf xmlConfig = createXMLConfiguration();
|
||||||
|
OutputStream out = new ByteArrayOutputStream();
|
||||||
|
|
||||||
|
try {
|
||||||
|
XMLSerializer serializer = new XMLSerializer(out, createOutputFormat());
|
||||||
|
serializer.serialize(xmlConfig.getDocument());
|
||||||
|
out.close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
|
||||||
|
private XMLConf createXMLConfiguration() {
|
||||||
|
XMLConf xmlConfig = new XMLConf();
|
||||||
xmlConfig.setRootElementName("problem");
|
xmlConfig.setRootElementName("problem");
|
||||||
xmlConfig.setAttributeSplittingDisabled(true);
|
xmlConfig.setAttributeSplittingDisabled(true);
|
||||||
xmlConfig.setDelimiterParsingDisabled(true);
|
xmlConfig.setDelimiterParsingDisabled(true);
|
||||||
|
|
@ -123,10 +149,6 @@ public class VrpXMLWriter {
|
||||||
writeSolutions(xmlConfig);
|
writeSolutions(xmlConfig);
|
||||||
|
|
||||||
|
|
||||||
OutputFormat format = new OutputFormat();
|
|
||||||
format.setIndenting(true);
|
|
||||||
format.setIndent(5);
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Document document = xmlConfig.createDoc();
|
Document document = xmlConfig.createDoc();
|
||||||
|
|
||||||
|
|
@ -138,17 +160,14 @@ public class VrpXMLWriter {
|
||||||
} catch (ConfigurationException e) {
|
} catch (ConfigurationException e) {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
|
return xmlConfig;
|
||||||
try {
|
|
||||||
Writer out = new FileWriter(filename);
|
|
||||||
XMLSerializer serializer = new XMLSerializer(out, format);
|
|
||||||
serializer.serialize(xmlConfig.getDocument());
|
|
||||||
out.close();
|
|
||||||
} catch (IOException e) {
|
|
||||||
throw new RuntimeException(e);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private OutputFormat createOutputFormat() {
|
||||||
|
OutputFormat format = new OutputFormat();
|
||||||
|
format.setIndenting(true);
|
||||||
|
format.setIndent(5);
|
||||||
|
return format;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void writeInitialRoutes(XMLConf xmlConfig) {
|
private void writeInitialRoutes(XMLConf xmlConfig) {
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,10 @@ import org.junit.Assert;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.Paths;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
@ -61,58 +65,24 @@ public class VrpXMLWriterTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenWritingFiniteVrp_itWritesCorrectly() {
|
public void whenWritingFiniteVrp_itWritesAndReadsCorrectly() {
|
||||||
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
VehicleRoutingProblem.Builder builder = twoVehicleTypesAndImpls();
|
||||||
builder.setFleetSize(VehicleRoutingProblem.FleetSize.FINITE);
|
builder.setFleetSize(VehicleRoutingProblem.FleetSize.FINITE);
|
||||||
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
|
||||||
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build();
|
|
||||||
VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocation(TestUtils.loc("loc")).setType(type1).build();
|
|
||||||
VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(TestUtils.loc("loc")).setType(type2).build();
|
|
||||||
builder.addVehicle(v1);
|
|
||||||
builder.addVehicle(v2);
|
|
||||||
VehicleRoutingProblem vrp = builder.build();
|
VehicleRoutingProblem vrp = builder.build();
|
||||||
new VrpXMLWriter(vrp, null).write(infileName);
|
writeAndRereadXml(vrp);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
public void t() {
|
|
||||||
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
|
||||||
builder.setFleetSize(VehicleRoutingProblem.FleetSize.FINITE);
|
|
||||||
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
|
||||||
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build();
|
|
||||||
VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocation(TestUtils.loc("loc")).setType(type1).build();
|
|
||||||
VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(TestUtils.loc("loc")).setType(type2).build();
|
|
||||||
builder.addVehicle(v1);
|
|
||||||
builder.addVehicle(v2);
|
|
||||||
VehicleRoutingProblem vrp = builder.build();
|
|
||||||
new VrpXMLWriter(vrp, null).write(infileName);
|
|
||||||
|
|
||||||
VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance();
|
|
||||||
new VrpXMLReader(vrpToReadBuilder, null).read(infileName);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenWritingServices_itWritesThemCorrectly() {
|
public void whenWritingServices_itWritesThemCorrectly() {
|
||||||
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
VehicleRoutingProblem.Builder builder = twoVehicleTypesAndImpls();
|
||||||
|
|
||||||
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
|
||||||
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build();
|
|
||||||
VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocation(TestUtils.loc("loc")).setType(type1).build();
|
|
||||||
VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(TestUtils.loc("loc")).setType(type2).build();
|
|
||||||
|
|
||||||
builder.addVehicle(v1);
|
|
||||||
builder.addVehicle(v2);
|
|
||||||
|
|
||||||
|
|
||||||
Service s1 = Service.Builder.newInstance("1").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc")).setServiceTime(2.0).build();
|
Service s1 = Service.Builder.newInstance("1").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc")).setServiceTime(2.0).build();
|
||||||
Service s2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc2")).setServiceTime(4.0).build();
|
Service s2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc2")).setServiceTime(4.0).build();
|
||||||
|
|
||||||
VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build();
|
VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build();
|
||||||
new VrpXMLWriter(vrp, null).write(infileName);
|
VehicleRoutingProblem readVrp = writeAndRereadXml(vrp);
|
||||||
|
|
||||||
VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance();
|
|
||||||
new VrpXMLReader(vrpToReadBuilder, null).read(infileName);
|
|
||||||
VehicleRoutingProblem readVrp = vrpToReadBuilder.build();
|
|
||||||
assertEquals(2, readVrp.getJobs().size());
|
assertEquals(2, readVrp.getJobs().size());
|
||||||
|
|
||||||
Service s1_read = (Service) vrp.getJobs().get("1");
|
Service s1_read = (Service) vrp.getJobs().get("1");
|
||||||
|
|
@ -128,11 +98,7 @@ public class VrpXMLWriterTest {
|
||||||
Service s1 = Service.Builder.newInstance("1").setName("cleaning").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc")).setServiceTime(2.0).build();
|
Service s1 = Service.Builder.newInstance("1").setName("cleaning").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc")).setServiceTime(2.0).build();
|
||||||
|
|
||||||
VehicleRoutingProblem vrp = builder.addJob(s1).build();
|
VehicleRoutingProblem vrp = builder.addJob(s1).build();
|
||||||
new VrpXMLWriter(vrp, null).write(infileName);
|
VehicleRoutingProblem readVrp = writeAndRereadXml(vrp);
|
||||||
|
|
||||||
VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance();
|
|
||||||
new VrpXMLReader(vrpToReadBuilder, null).read(infileName);
|
|
||||||
VehicleRoutingProblem readVrp = vrpToReadBuilder.build();
|
|
||||||
Service s1_read = (Service) readVrp.getJobs().get("1");
|
Service s1_read = (Service) readVrp.getJobs().get("1");
|
||||||
assertTrue(s1_read.getName().equals("cleaning"));
|
assertTrue(s1_read.getName().equals("cleaning"));
|
||||||
}
|
}
|
||||||
|
|
@ -146,11 +112,7 @@ public class VrpXMLWriterTest {
|
||||||
.setDeliveryLocation(TestUtils.loc("del")).build();
|
.setDeliveryLocation(TestUtils.loc("del")).build();
|
||||||
|
|
||||||
VehicleRoutingProblem vrp = builder.addJob(s1).build();
|
VehicleRoutingProblem vrp = builder.addJob(s1).build();
|
||||||
new VrpXMLWriter(vrp, null).write(infileName);
|
VehicleRoutingProblem readVrp = writeAndRereadXml(vrp);
|
||||||
|
|
||||||
VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance();
|
|
||||||
new VrpXMLReader(vrpToReadBuilder, null).read(infileName);
|
|
||||||
VehicleRoutingProblem readVrp = vrpToReadBuilder.build();
|
|
||||||
Shipment s1_read = (Shipment) readVrp.getJobs().get("1");
|
Shipment s1_read = (Shipment) readVrp.getJobs().get("1");
|
||||||
assertTrue(s1_read.getName().equals("cleaning"));
|
assertTrue(s1_read.getName().equals("cleaning"));
|
||||||
Assert.assertEquals(1, s1_read.getPickupLocation().getIndex());
|
Assert.assertEquals(1, s1_read.getPickupLocation().getIndex());
|
||||||
|
|
@ -167,32 +129,20 @@ public class VrpXMLWriterTest {
|
||||||
Service s2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc2")).setServiceTime(4.0).build();
|
Service s2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc2")).setServiceTime(4.0).build();
|
||||||
|
|
||||||
VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build();
|
VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build();
|
||||||
new VrpXMLWriter(vrp, null).write(infileName);
|
VehicleRoutingProblem readVrp = writeAndRereadXml(vrp);
|
||||||
|
|
||||||
VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance();
|
|
||||||
new VrpXMLReader(vrpToReadBuilder, null).read(infileName);
|
|
||||||
VehicleRoutingProblem readVrp = vrpToReadBuilder.build();
|
|
||||||
assertEquals(2, readVrp.getJobs().size());
|
assertEquals(2, readVrp.getJobs().size());
|
||||||
|
|
||||||
Service s1_read = (Service) vrp.getJobs().get("1");
|
Service s1_read = (Service) vrp.getJobs().get("1");
|
||||||
|
|
||||||
Assert.assertEquals(2, s1_read.getSize().getNuOfDimensions());
|
assertEquals(2, s1_read.getSize().getNuOfDimensions());
|
||||||
Assert.assertEquals(20, s1_read.getSize().get(0));
|
assertEquals(20, s1_read.getSize().get(0));
|
||||||
Assert.assertEquals(200, s1_read.getSize().get(1));
|
assertEquals(200, s1_read.getSize().get(1));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenWritingShipments_readingThemAgainMustReturnTheWrittenLocationIdsOfS1() {
|
public void whenWritingShipments_readingThemAgainMustReturnTheWrittenLocationIdsOfS1() {
|
||||||
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
VehicleRoutingProblem.Builder builder = twoVehicleTypesAndImpls();
|
||||||
|
|
||||||
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
|
||||||
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build();
|
|
||||||
VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocation(TestUtils.loc("loc")).setType(type1).build();
|
|
||||||
VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(TestUtils.loc("loc")).setType(type2).build();
|
|
||||||
|
|
||||||
builder.addVehicle(v1);
|
|
||||||
builder.addVehicle(v2);
|
|
||||||
|
|
||||||
Shipment s1 = Shipment.Builder.newInstance("1").addSizeDimension(0, 10)
|
Shipment s1 = Shipment.Builder.newInstance("1").addSizeDimension(0, 10)
|
||||||
.setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build())
|
.setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build())
|
||||||
|
|
@ -205,29 +155,17 @@ public class VrpXMLWriterTest {
|
||||||
|
|
||||||
|
|
||||||
VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build();
|
VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build();
|
||||||
new VrpXMLWriter(vrp, null).write(infileName);
|
VehicleRoutingProblem readVrp = writeAndRereadXml(vrp);
|
||||||
|
|
||||||
VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance();
|
|
||||||
new VrpXMLReader(vrpToReadBuilder, null).read(infileName);
|
|
||||||
VehicleRoutingProblem readVrp = vrpToReadBuilder.build();
|
|
||||||
assertEquals(2, readVrp.getJobs().size());
|
assertEquals(2, readVrp.getJobs().size());
|
||||||
|
|
||||||
Assert.assertEquals("pickLoc", ((Shipment) readVrp.getJobs().get("1")).getPickupLocation().getId());
|
assertEquals("pickLoc", ((Shipment) readVrp.getJobs().get("1")).getPickupLocation().getId());
|
||||||
Assert.assertEquals("delLoc", ((Shipment) readVrp.getJobs().get("1")).getDeliveryLocation().getId());
|
assertEquals("delLoc", ((Shipment) readVrp.getJobs().get("1")).getDeliveryLocation().getId());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenWritingShipments_readingThemAgainMustReturnTheWrittenPickupTimeWindowsOfS1() {
|
public void whenWritingShipments_readingThemAgainMustReturnTheWrittenPickupTimeWindowsOfS1() {
|
||||||
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
VehicleRoutingProblem.Builder builder = twoVehicleTypesAndImpls();
|
||||||
|
|
||||||
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
|
||||||
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build();
|
|
||||||
VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocation(TestUtils.loc("loc")).setType(type1).build();
|
|
||||||
VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(TestUtils.loc("loc")).setType(type2).build();
|
|
||||||
|
|
||||||
builder.addVehicle(v1);
|
|
||||||
builder.addVehicle(v2);
|
|
||||||
|
|
||||||
Shipment s1 = Shipment.Builder.newInstance("1").addSizeDimension(0, 10)
|
Shipment s1 = Shipment.Builder.newInstance("1").addSizeDimension(0, 10)
|
||||||
.setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build())
|
.setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build())
|
||||||
|
|
@ -240,30 +178,18 @@ public class VrpXMLWriterTest {
|
||||||
|
|
||||||
|
|
||||||
VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build();
|
VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build();
|
||||||
new VrpXMLWriter(vrp, null).write(infileName);
|
VehicleRoutingProblem readVrp = writeAndRereadXml(vrp);
|
||||||
|
|
||||||
VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance();
|
|
||||||
new VrpXMLReader(vrpToReadBuilder, null).read(infileName);
|
|
||||||
VehicleRoutingProblem readVrp = vrpToReadBuilder.build();
|
|
||||||
assertEquals(2, readVrp.getJobs().size());
|
assertEquals(2, readVrp.getJobs().size());
|
||||||
|
|
||||||
Assert.assertEquals(1.0, ((Shipment) readVrp.getJobs().get("1")).getPickupTimeWindow().getStart(), 0.01);
|
assertEquals(1.0, ((Shipment) readVrp.getJobs().get("1")).getPickupTimeWindow().getStart(), 0.01);
|
||||||
Assert.assertEquals(2.0, ((Shipment) readVrp.getJobs().get("1")).getPickupTimeWindow().getEnd(), 0.01);
|
assertEquals(2.0, ((Shipment) readVrp.getJobs().get("1")).getPickupTimeWindow().getEnd(), 0.01);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenWritingShipments_readingThemAgainMustReturnTheWrittenDeliveryTimeWindowsOfS1() {
|
public void whenWritingShipments_readingThemAgainMustReturnTheWrittenDeliveryTimeWindowsOfS1() {
|
||||||
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
VehicleRoutingProblem.Builder builder = twoVehicleTypesAndImpls();
|
||||||
|
|
||||||
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
|
||||||
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build();
|
|
||||||
VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocation(TestUtils.loc("loc")).setType(type1).build();
|
|
||||||
VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(TestUtils.loc("loc")).setType(type2).build();
|
|
||||||
|
|
||||||
builder.addVehicle(v1);
|
|
||||||
builder.addVehicle(v2);
|
|
||||||
|
|
||||||
Shipment s1 = Shipment.Builder.newInstance("1").addSizeDimension(0, 10)
|
Shipment s1 = Shipment.Builder.newInstance("1").addSizeDimension(0, 10)
|
||||||
.setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build())
|
.setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build())
|
||||||
|
|
@ -276,29 +202,17 @@ public class VrpXMLWriterTest {
|
||||||
|
|
||||||
|
|
||||||
VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build();
|
VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build();
|
||||||
new VrpXMLWriter(vrp, null).write(infileName);
|
VehicleRoutingProblem readVrp = writeAndRereadXml(vrp);
|
||||||
|
|
||||||
VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance();
|
|
||||||
new VrpXMLReader(vrpToReadBuilder, null).read(infileName);
|
|
||||||
VehicleRoutingProblem readVrp = vrpToReadBuilder.build();
|
|
||||||
assertEquals(2, readVrp.getJobs().size());
|
assertEquals(2, readVrp.getJobs().size());
|
||||||
|
|
||||||
Assert.assertEquals(3.0, ((Shipment) readVrp.getJobs().get("1")).getDeliveryTimeWindow().getStart(), 0.01);
|
assertEquals(3.0, ((Shipment) readVrp.getJobs().get("1")).getDeliveryTimeWindow().getStart(), 0.01);
|
||||||
Assert.assertEquals(4.0, ((Shipment) readVrp.getJobs().get("1")).getDeliveryTimeWindow().getEnd(), 0.01);
|
assertEquals(4.0, ((Shipment) readVrp.getJobs().get("1")).getDeliveryTimeWindow().getEnd(), 0.01);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenWritingShipments_readingThemAgainMustReturnTheWrittenDeliveryServiceTimeOfS1() {
|
public void whenWritingShipments_readingThemAgainMustReturnTheWrittenDeliveryServiceTimeOfS1() {
|
||||||
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
VehicleRoutingProblem.Builder builder = twoVehicleTypesAndImpls();
|
||||||
|
|
||||||
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
|
||||||
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build();
|
|
||||||
VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocation(TestUtils.loc("loc")).setType(type1).build();
|
|
||||||
VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(TestUtils.loc("loc")).setType(type2).build();
|
|
||||||
|
|
||||||
builder.addVehicle(v1);
|
|
||||||
builder.addVehicle(v2);
|
|
||||||
|
|
||||||
Shipment s1 = Shipment.Builder.newInstance("1").addSizeDimension(0, 10)
|
Shipment s1 = Shipment.Builder.newInstance("1").addSizeDimension(0, 10)
|
||||||
.setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build())
|
.setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build())
|
||||||
|
|
@ -311,11 +225,7 @@ public class VrpXMLWriterTest {
|
||||||
|
|
||||||
|
|
||||||
VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build();
|
VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build();
|
||||||
new VrpXMLWriter(vrp, null).write(infileName);
|
VehicleRoutingProblem readVrp = writeAndRereadXml(vrp);
|
||||||
|
|
||||||
VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance();
|
|
||||||
new VrpXMLReader(vrpToReadBuilder, null).read(infileName);
|
|
||||||
VehicleRoutingProblem readVrp = vrpToReadBuilder.build();
|
|
||||||
assertEquals(2, readVrp.getJobs().size());
|
assertEquals(2, readVrp.getJobs().size());
|
||||||
|
|
||||||
assertEquals(100.0, ((Shipment) readVrp.getJobs().get("1")).getPickupServiceTime(), 0.01);
|
assertEquals(100.0, ((Shipment) readVrp.getJobs().get("1")).getPickupServiceTime(), 0.01);
|
||||||
|
|
@ -325,15 +235,7 @@ public class VrpXMLWriterTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenWritingShipments_readingThemAgainMustReturnTheWrittenLocationIdOfS1() {
|
public void whenWritingShipments_readingThemAgainMustReturnTheWrittenLocationIdOfS1() {
|
||||||
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
VehicleRoutingProblem.Builder builder = twoVehicleTypesAndImpls();
|
||||||
|
|
||||||
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
|
||||||
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build();
|
|
||||||
VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocation(TestUtils.loc("loc")).setType(type1).build();
|
|
||||||
VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(TestUtils.loc("loc")).setType(type2).build();
|
|
||||||
|
|
||||||
builder.addVehicle(v1);
|
|
||||||
builder.addVehicle(v2);
|
|
||||||
|
|
||||||
Shipment s1 = Shipment.Builder.newInstance("1").addSizeDimension(0, 10)
|
Shipment s1 = Shipment.Builder.newInstance("1").addSizeDimension(0, 10)
|
||||||
.setPickupLocation(TestUtils.loc(Coordinate.newInstance(1, 2))).setDeliveryLocation(TestUtils.loc("delLoc")).setPickupTimeWindow(TimeWindow.newInstance(1, 2))
|
.setPickupLocation(TestUtils.loc(Coordinate.newInstance(1, 2))).setDeliveryLocation(TestUtils.loc("delLoc")).setPickupTimeWindow(TimeWindow.newInstance(1, 2))
|
||||||
|
|
@ -345,18 +247,14 @@ public class VrpXMLWriterTest {
|
||||||
|
|
||||||
|
|
||||||
VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build();
|
VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build();
|
||||||
new VrpXMLWriter(vrp, null).write(infileName);
|
VehicleRoutingProblem readVrp = writeAndRereadXml(vrp);
|
||||||
|
|
||||||
VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance();
|
|
||||||
new VrpXMLReader(vrpToReadBuilder, null).read(infileName);
|
|
||||||
VehicleRoutingProblem readVrp = vrpToReadBuilder.build();
|
|
||||||
assertEquals(2, readVrp.getJobs().size());
|
assertEquals(2, readVrp.getJobs().size());
|
||||||
|
|
||||||
Assert.assertEquals("[x=1.0][y=2.0]", ((Shipment) readVrp.getJobs().get("1")).getPickupLocation().getId());
|
assertEquals("[x=1.0][y=2.0]", ((Shipment) readVrp.getJobs().get("1")).getPickupLocation().getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenWritingVehicles_vehShouldHave2Skills() {
|
public void whenWritingVehicles_vehShouldHave3Skills() {
|
||||||
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
VehicleRoutingProblem.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();
|
||||||
VehicleImpl v = VehicleImpl.Builder.newInstance("v1").addSkill("SKILL5").addSkill("skill1").addSkill("Skill2")
|
VehicleImpl v = VehicleImpl.Builder.newInstance("v1").addSkill("SKILL5").addSkill("skill1").addSkill("Skill2")
|
||||||
|
|
@ -364,70 +262,12 @@ public class VrpXMLWriterTest {
|
||||||
builder.addVehicle(v);
|
builder.addVehicle(v);
|
||||||
|
|
||||||
VehicleRoutingProblem vrp = builder.build();
|
VehicleRoutingProblem vrp = builder.build();
|
||||||
new VrpXMLWriter(vrp, null).write(infileName);
|
VehicleRoutingProblem readVrp = writeAndRereadXml(vrp);
|
||||||
|
|
||||||
VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance();
|
|
||||||
new VrpXMLReader(vrpToReadBuilder, null).read(infileName);
|
|
||||||
VehicleRoutingProblem readVrp = vrpToReadBuilder.build();
|
|
||||||
Vehicle veh1 = getVehicle("v1", readVrp);
|
|
||||||
|
|
||||||
Assert.assertEquals(3, veh1.getSkills().values().size());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void whenWritingVehicles_vehShouldContain_skill5() {
|
|
||||||
VehicleRoutingProblem.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")
|
|
||||||
.setStartLocation(TestUtils.loc("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);
|
Vehicle veh1 = getVehicle("v1", readVrp);
|
||||||
|
|
||||||
|
assertEquals(3, veh1.getSkills().values().size());
|
||||||
assertTrue(veh1.getSkills().containsSkill("skill5"));
|
assertTrue(veh1.getSkills().containsSkill("skill5"));
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void whenWritingVehicles_vehShouldContain_skill1() {
|
|
||||||
VehicleRoutingProblem.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")
|
|
||||||
.setStartLocation(TestUtils.loc("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"));
|
assertTrue(veh1.getSkills().containsSkill("skill1"));
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void whenWritingVehicles_vehShouldContain_skill2() {
|
|
||||||
VehicleRoutingProblem.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")
|
|
||||||
.setStartLocation(TestUtils.loc("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"));
|
assertTrue(veh1.getSkills().containsSkill("skill2"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -439,14 +279,10 @@ public class VrpXMLWriterTest {
|
||||||
builder.addVehicle(v);
|
builder.addVehicle(v);
|
||||||
|
|
||||||
VehicleRoutingProblem vrp = builder.build();
|
VehicleRoutingProblem vrp = builder.build();
|
||||||
new VrpXMLWriter(vrp, null).write(infileName);
|
VehicleRoutingProblem readVrp = writeAndRereadXml(vrp);
|
||||||
|
|
||||||
VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance();
|
|
||||||
new VrpXMLReader(vrpToReadBuilder, null).read(infileName);
|
|
||||||
VehicleRoutingProblem readVrp = vrpToReadBuilder.build();
|
|
||||||
Vehicle veh = getVehicle("v1", readVrp);
|
Vehicle veh = getVehicle("v1", readVrp);
|
||||||
|
|
||||||
Assert.assertEquals(0, veh.getSkills().values().size());
|
assertEquals(0, veh.getSkills().values().size());
|
||||||
}
|
}
|
||||||
|
|
||||||
private Vehicle getVehicle(String v1, VehicleRoutingProblem readVrp) {
|
private Vehicle getVehicle(String v1, VehicleRoutingProblem readVrp) {
|
||||||
|
|
@ -468,89 +304,17 @@ public class VrpXMLWriterTest {
|
||||||
.setDeliveryTimeWindow(TimeWindow.newInstance(3, 4)).setPickupServiceTime(100).setDeliveryServiceTime(50).build();
|
.setDeliveryTimeWindow(TimeWindow.newInstance(3, 4)).setPickupServiceTime(100).setDeliveryServiceTime(50).build();
|
||||||
|
|
||||||
VehicleRoutingProblem vrp = builder.addJob(s).build();
|
VehicleRoutingProblem vrp = builder.addJob(s).build();
|
||||||
new VrpXMLWriter(vrp, null).write(infileName);
|
VehicleRoutingProblem readVrp = writeAndRereadXml(vrp);
|
||||||
|
|
||||||
VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance();
|
|
||||||
new VrpXMLReader(vrpToReadBuilder, null).read(infileName);
|
|
||||||
VehicleRoutingProblem readVrp = vrpToReadBuilder.build();
|
|
||||||
|
|
||||||
Assert.assertEquals(3, readVrp.getJobs().get("1").getRequiredSkills().values().size());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void whenWritingShipments_shipmentShouldContain_skill1() {
|
|
||||||
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
|
||||||
|
|
||||||
Shipment s = Shipment.Builder.newInstance("1").addRequiredSkill("skill1").addRequiredSkill("skill2").addRequiredSkill("skill3")
|
|
||||||
.addSizeDimension(0, 10)
|
|
||||||
.setPickupLocation(TestUtils.loc(Coordinate.newInstance(1, 2)))
|
|
||||||
.setDeliveryLocation(TestUtils.loc("delLoc", Coordinate.newInstance(5, 6)))
|
|
||||||
.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());
|
||||||
assertTrue(readVrp.getJobs().get("1").getRequiredSkills().containsSkill("skill1"));
|
assertTrue(readVrp.getJobs().get("1").getRequiredSkills().containsSkill("skill1"));
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void whenWritingShipments_shipmentShouldContain_skill2() {
|
|
||||||
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
|
||||||
|
|
||||||
Shipment s = Shipment.Builder.newInstance("1").addRequiredSkill("skill1").addRequiredSkill("Skill2").addRequiredSkill("skill3")
|
|
||||||
.addSizeDimension(0, 10)
|
|
||||||
.setPickupLocation(TestUtils.loc(Coordinate.newInstance(1, 2)))
|
|
||||||
.setDeliveryLocation(TestUtils.loc("delLoc", Coordinate.newInstance(5, 6)))
|
|
||||||
.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"));
|
assertTrue(readVrp.getJobs().get("1").getRequiredSkills().containsSkill("skill2"));
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void whenWritingShipments_shipmentShouldContain_skill3() {
|
|
||||||
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
|
||||||
|
|
||||||
Shipment s = Shipment.Builder.newInstance("1").addRequiredSkill("skill1").addRequiredSkill("Skill2").addRequiredSkill("skill3")
|
|
||||||
.addSizeDimension(0, 10)
|
|
||||||
.setPickupLocation(TestUtils.loc(Coordinate.newInstance(1, 2)))
|
|
||||||
.setDeliveryLocation(TestUtils.loc("delLoc", Coordinate.newInstance(5, 6)))
|
|
||||||
.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"));
|
assertTrue(readVrp.getJobs().get("1").getRequiredSkills().containsSkill("skill3"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenWritingShipments_readingThemAgainMustReturnTheWrittenLocationCoordinateOfS1() {
|
public void whenWritingShipments_readingThemAgainMustReturnTheWrittenLocationCoordinateOfS1() {
|
||||||
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
VehicleRoutingProblem.Builder builder = twoVehicleTypesAndImpls();
|
||||||
|
|
||||||
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build();
|
|
||||||
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build();
|
|
||||||
VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocation(TestUtils.loc("loc")).setType(type1).build();
|
|
||||||
VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(TestUtils.loc("loc")).setType(type2).build();
|
|
||||||
|
|
||||||
builder.addVehicle(v1);
|
|
||||||
builder.addVehicle(v2);
|
|
||||||
|
|
||||||
Shipment s1 = Shipment.Builder.newInstance("1").addSizeDimension(0, 10).setPickupLocation(TestUtils.loc(Coordinate.newInstance(1, 2)))
|
Shipment s1 = Shipment.Builder.newInstance("1").addSizeDimension(0, 10).setPickupLocation(TestUtils.loc(Coordinate.newInstance(1, 2)))
|
||||||
.setDeliveryLocation(TestUtils.loc("delLoc", Coordinate.newInstance(5, 6)))
|
.setDeliveryLocation(TestUtils.loc("delLoc", Coordinate.newInstance(5, 6)))
|
||||||
|
|
@ -564,18 +328,14 @@ public class VrpXMLWriterTest {
|
||||||
|
|
||||||
|
|
||||||
VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build();
|
VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build();
|
||||||
new VrpXMLWriter(vrp, null).write(infileName);
|
VehicleRoutingProblem readVrp = writeAndRereadXml(vrp);
|
||||||
|
|
||||||
VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance();
|
|
||||||
new VrpXMLReader(vrpToReadBuilder, null).read(infileName);
|
|
||||||
VehicleRoutingProblem readVrp = vrpToReadBuilder.build();
|
|
||||||
assertEquals(2, readVrp.getJobs().size());
|
assertEquals(2, readVrp.getJobs().size());
|
||||||
|
|
||||||
Assert.assertEquals(1.0, ((Shipment) readVrp.getJobs().get("1")).getPickupLocation().getCoordinate().getX(), 0.01);
|
assertEquals(1.0, ((Shipment) readVrp.getJobs().get("1")).getPickupLocation().getCoordinate().getX(), 0.01);
|
||||||
Assert.assertEquals(2.0, ((Shipment) readVrp.getJobs().get("1")).getPickupLocation().getCoordinate().getY(), 0.01);
|
assertEquals(2.0, ((Shipment) readVrp.getJobs().get("1")).getPickupLocation().getCoordinate().getY(), 0.01);
|
||||||
|
|
||||||
Assert.assertEquals(5.0, ((Shipment) readVrp.getJobs().get("1")).getDeliveryLocation().getCoordinate().getX(), 0.01);
|
assertEquals(5.0, ((Shipment) readVrp.getJobs().get("1")).getDeliveryLocation().getCoordinate().getX(), 0.01);
|
||||||
Assert.assertEquals(6.0, ((Shipment) readVrp.getJobs().get("1")).getDeliveryLocation().getCoordinate().getY(), 0.01);
|
assertEquals(6.0, ((Shipment) readVrp.getJobs().get("1")).getDeliveryLocation().getCoordinate().getY(), 0.01);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
@ -597,23 +357,34 @@ public class VrpXMLWriterTest {
|
||||||
.setDeliveryTimeWindow(TimeWindow.newInstance(7, 8)).build();
|
.setDeliveryTimeWindow(TimeWindow.newInstance(7, 8)).build();
|
||||||
|
|
||||||
VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build();
|
VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build();
|
||||||
new VrpXMLWriter(vrp, null).write(infileName);
|
VehicleRoutingProblem readVrp = writeAndRereadXml(vrp);
|
||||||
|
|
||||||
VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance();
|
assertEquals(3, (readVrp.getJobs().get("1")).getSize().getNuOfDimensions());
|
||||||
new VrpXMLReader(vrpToReadBuilder, null).read(infileName);
|
assertEquals(10, (readVrp.getJobs().get("1")).getSize().get(0));
|
||||||
VehicleRoutingProblem readVrp = vrpToReadBuilder.build();
|
assertEquals(0, (readVrp.getJobs().get("1")).getSize().get(1));
|
||||||
|
assertEquals(100, (readVrp.getJobs().get("1")).getSize().get(2));
|
||||||
|
|
||||||
Assert.assertEquals(3, (readVrp.getJobs().get("1")).getSize().getNuOfDimensions());
|
assertEquals(1, (readVrp.getJobs().get("2")).getSize().getNuOfDimensions());
|
||||||
Assert.assertEquals(10, (readVrp.getJobs().get("1")).getSize().get(0));
|
assertEquals(20, (readVrp.getJobs().get("2")).getSize().get(0));
|
||||||
Assert.assertEquals(0, (readVrp.getJobs().get("1")).getSize().get(1));
|
|
||||||
Assert.assertEquals(100, (readVrp.getJobs().get("1")).getSize().get(2));
|
|
||||||
|
|
||||||
Assert.assertEquals(1, (readVrp.getJobs().get("2")).getSize().getNuOfDimensions());
|
|
||||||
Assert.assertEquals(20, (readVrp.getJobs().get("2")).getSize().get(0));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenWritingVehicleV1_itsStartLocationMustBeWrittenCorrectly() {
|
public void whenWritingVehicleV1_itsStartLocationMustBeWrittenCorrectly() {
|
||||||
|
VehicleRoutingProblem.Builder builder = twoVehicleTypesAndImpls();
|
||||||
|
|
||||||
|
Service s1 = Service.Builder.newInstance("1").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc")).setServiceTime(2.0).build();
|
||||||
|
Service s2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc2")).setServiceTime(4.0).build();
|
||||||
|
|
||||||
|
VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build();
|
||||||
|
VehicleRoutingProblem readVrp = writeAndRereadXml(vrp);
|
||||||
|
|
||||||
|
Vehicle v = getVehicle("v1", readVrp.getVehicles());
|
||||||
|
assertEquals("loc", v.getStartLocation().getId());
|
||||||
|
assertEquals("loc", v.getEndLocation().getId());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private VehicleRoutingProblem.Builder twoVehicleTypesAndImpls() {
|
||||||
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
VehicleRoutingProblem.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();
|
||||||
|
|
@ -623,74 +394,27 @@ public class VrpXMLWriterTest {
|
||||||
|
|
||||||
builder.addVehicle(v1);
|
builder.addVehicle(v1);
|
||||||
builder.addVehicle(v2);
|
builder.addVehicle(v2);
|
||||||
|
return builder;
|
||||||
Service s1 = Service.Builder.newInstance("1").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc")).setServiceTime(2.0).build();
|
|
||||||
Service s2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc2")).setServiceTime(4.0).build();
|
|
||||||
|
|
||||||
VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build();
|
|
||||||
new VrpXMLWriter(vrp, null).write(infileName);
|
|
||||||
|
|
||||||
VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance();
|
|
||||||
new VrpXMLReader(vrpToReadBuilder, null).read(infileName);
|
|
||||||
VehicleRoutingProblem readVrp = vrpToReadBuilder.build();
|
|
||||||
|
|
||||||
Vehicle v = getVehicle("v1", readVrp.getVehicles());
|
|
||||||
Assert.assertEquals("loc", v.getStartLocation().getId());
|
|
||||||
Assert.assertEquals("loc", v.getEndLocation().getId());
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenWritingService_itShouldHaveTheCorrectNuSkills() {
|
public void whenWritingService_itShouldContain_bothSkills() {
|
||||||
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
|
||||||
Service s = Service.Builder.newInstance("1").addRequiredSkill("sKill1").addRequiredSkill("skill2").addSizeDimension(0, 1)
|
//skill names are case-insensitive
|
||||||
|
Service s = Service.Builder.newInstance("1").addRequiredSkill("skill1").addRequiredSkill("SKILL2").addSizeDimension(0, 1)
|
||||||
.setLocation(TestUtils.loc("loc")).setServiceTime(2.0).build();
|
.setLocation(TestUtils.loc("loc")).setServiceTime(2.0).build();
|
||||||
|
|
||||||
VehicleRoutingProblem vrp = builder.addJob(s).build();
|
VehicleRoutingProblem vrp = builder.addJob(s).build();
|
||||||
new VrpXMLWriter(vrp, null).write(infileName);
|
|
||||||
|
|
||||||
VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance();
|
VehicleRoutingProblem readVrp = writeAndRereadXml(vrp);
|
||||||
new VrpXMLReader(vrpToReadBuilder, null).read(infileName);
|
|
||||||
VehicleRoutingProblem readVrp = vrpToReadBuilder.build();
|
|
||||||
|
|
||||||
Assert.assertEquals(2, readVrp.getJobs().get("1").getRequiredSkills().values().size());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void whenWritingService_itShouldContain_skill1() {
|
|
||||||
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
|
||||||
|
|
||||||
Service s = Service.Builder.newInstance("1").addRequiredSkill("sKill1").addRequiredSkill("skill2").addSizeDimension(0, 1)
|
|
||||||
.setLocation(TestUtils.loc("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());
|
||||||
assertTrue(readVrp.getJobs().get("1").getRequiredSkills().containsSkill("skill1"));
|
assertTrue(readVrp.getJobs().get("1").getRequiredSkills().containsSkill("skill1"));
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void whenWritingService_itShouldContain_skill2() {
|
|
||||||
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
|
||||||
|
|
||||||
Service s = Service.Builder.newInstance("1").addRequiredSkill("sKill1").addRequiredSkill("skill2").addSizeDimension(0, 1)
|
|
||||||
.setLocation(TestUtils.loc("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"));
|
assertTrue(readVrp.getJobs().get("1").getRequiredSkills().containsSkill("skill2"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenWritingVehicleV1_itDoesNotReturnToDepotMustBeWrittenCorrectly() {
|
public void whenWritingVehicleV1_itDoesNotReturnToDepotMustBeWrittenCorrectly() {
|
||||||
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
|
@ -708,11 +432,7 @@ public class VrpXMLWriterTest {
|
||||||
Service s2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc2")).setServiceTime(4.0).build();
|
Service s2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc2")).setServiceTime(4.0).build();
|
||||||
|
|
||||||
VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build();
|
VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build();
|
||||||
new VrpXMLWriter(vrp, null).write(infileName);
|
VehicleRoutingProblem readVrp = writeAndRereadXml(vrp);
|
||||||
|
|
||||||
VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance();
|
|
||||||
new VrpXMLReader(vrpToReadBuilder, null).read(infileName);
|
|
||||||
VehicleRoutingProblem readVrp = vrpToReadBuilder.build();
|
|
||||||
|
|
||||||
Vehicle v = getVehicle("v1", readVrp.getVehicles());
|
Vehicle v = getVehicle("v1", readVrp.getVehicles());
|
||||||
assertFalse(v.isReturnToDepot());
|
assertFalse(v.isReturnToDepot());
|
||||||
|
|
@ -734,11 +454,7 @@ public class VrpXMLWriterTest {
|
||||||
Service s2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc2")).setServiceTime(4.0).build();
|
Service s2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc2")).setServiceTime(4.0).build();
|
||||||
|
|
||||||
VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build();
|
VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build();
|
||||||
new VrpXMLWriter(vrp, null).write(infileName);
|
VehicleRoutingProblem readVrp = writeAndRereadXml(vrp);
|
||||||
|
|
||||||
VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance();
|
|
||||||
new VrpXMLReader(vrpToReadBuilder, null).read(infileName);
|
|
||||||
VehicleRoutingProblem readVrp = vrpToReadBuilder.build();
|
|
||||||
|
|
||||||
Vehicle v = getVehicle("v1", readVrp.getVehicles());
|
Vehicle v = getVehicle("v1", readVrp.getVehicles());
|
||||||
assertEquals("vehType", v.getType().getTypeId());
|
assertEquals("vehType", v.getType().getTypeId());
|
||||||
|
|
@ -760,15 +476,11 @@ public class VrpXMLWriterTest {
|
||||||
Service s2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc2")).setServiceTime(4.0).build();
|
Service s2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc2")).setServiceTime(4.0).build();
|
||||||
|
|
||||||
VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build();
|
VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build();
|
||||||
new VrpXMLWriter(vrp, null).write(infileName);
|
VehicleRoutingProblem readVrp = writeAndRereadXml(vrp);
|
||||||
|
|
||||||
VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance();
|
|
||||||
new VrpXMLReader(vrpToReadBuilder, null).read(infileName);
|
|
||||||
VehicleRoutingProblem readVrp = vrpToReadBuilder.build();
|
|
||||||
|
|
||||||
Vehicle v = getVehicle("v2", readVrp.getVehicles());
|
Vehicle v = getVehicle("v2", readVrp.getVehicles());
|
||||||
assertEquals("vehType2", v.getType().getTypeId());
|
assertEquals("vehType2", v.getType().getTypeId());
|
||||||
Assert.assertEquals(200, v.getType().getCapacityDimensions().get(0));
|
assertEquals(200, v.getType().getCapacityDimensions().get(0));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -776,35 +488,6 @@ public class VrpXMLWriterTest {
|
||||||
public void whenWritingVehicleV2_readingItsLocationsAgainReturnsCorrectLocations() {
|
public void whenWritingVehicleV2_readingItsLocationsAgainReturnsCorrectLocations() {
|
||||||
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
VehicleRoutingProblem.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();
|
|
||||||
VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setReturnToDepot(false).setStartLocation(TestUtils.loc("loc")).setType(type1).build();
|
|
||||||
VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2")
|
|
||||||
.setStartLocation(TestUtils.loc("startLoc", Coordinate.newInstance(1, 2)))
|
|
||||||
.setEndLocation(TestUtils.loc("endLoc", Coordinate.newInstance(4, 5))).setType(type2).build();
|
|
||||||
|
|
||||||
builder.addVehicle(v1);
|
|
||||||
builder.addVehicle(v2);
|
|
||||||
|
|
||||||
Service s1 = Service.Builder.newInstance("1").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc")).setServiceTime(2.0).build();
|
|
||||||
Service s2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc2")).setServiceTime(4.0).build();
|
|
||||||
|
|
||||||
VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build();
|
|
||||||
new VrpXMLWriter(vrp, null).write(infileName);
|
|
||||||
|
|
||||||
VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance();
|
|
||||||
new VrpXMLReader(vrpToReadBuilder, null).read(infileName);
|
|
||||||
VehicleRoutingProblem readVrp = vrpToReadBuilder.build();
|
|
||||||
|
|
||||||
Vehicle v = getVehicle("v2", readVrp.getVehicles());
|
|
||||||
Assert.assertEquals("startLoc", v.getStartLocation().getId());
|
|
||||||
Assert.assertEquals("endLoc", v.getEndLocation().getId());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void whenWritingVehicleV2_readingItsLocationsCoordsAgainReturnsCorrectLocationsCoords() {
|
|
||||||
VehicleRoutingProblem.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();
|
||||||
VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setReturnToDepot(false)
|
VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setReturnToDepot(false)
|
||||||
|
|
@ -820,20 +503,18 @@ public class VrpXMLWriterTest {
|
||||||
Service s2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc2")).setServiceTime(4.0).build();
|
Service s2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc2")).setServiceTime(4.0).build();
|
||||||
|
|
||||||
VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build();
|
VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build();
|
||||||
new VrpXMLWriter(vrp, null).write(infileName);
|
VehicleRoutingProblem readVrp = writeAndRereadXml(vrp);
|
||||||
|
|
||||||
VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance();
|
|
||||||
new VrpXMLReader(vrpToReadBuilder, null).read(infileName);
|
|
||||||
VehicleRoutingProblem readVrp = vrpToReadBuilder.build();
|
|
||||||
|
|
||||||
Vehicle v = getVehicle("v2", readVrp.getVehicles());
|
Vehicle v = getVehicle("v2", readVrp.getVehicles());
|
||||||
Assert.assertEquals(1.0, v.getStartLocation().getCoordinate().getX(), 0.01);
|
assertEquals("startLoc", v.getStartLocation().getId());
|
||||||
Assert.assertEquals(2.0, v.getStartLocation().getCoordinate().getY(), 0.01);
|
assertEquals("endLoc", v.getEndLocation().getId());
|
||||||
|
assertEquals(1.0, v.getStartLocation().getCoordinate().getX(), 0.01);
|
||||||
Assert.assertEquals(4.0, v.getEndLocation().getCoordinate().getX(), 0.01);
|
assertEquals(2.0, v.getStartLocation().getCoordinate().getY(), 0.01);
|
||||||
Assert.assertEquals(5.0, v.getEndLocation().getCoordinate().getY(), 0.01);
|
assertEquals(4.0, v.getEndLocation().getCoordinate().getX(), 0.01);
|
||||||
|
assertEquals(5.0, v.getEndLocation().getCoordinate().getY(), 0.01);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenWritingVehicleWithSeveralCapacityDimensions_itShouldBeWrittenAndRereadCorrectly() {
|
public void whenWritingVehicleWithSeveralCapacityDimensions_itShouldBeWrittenAndRereadCorrectly() {
|
||||||
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
|
@ -850,17 +531,13 @@ public class VrpXMLWriterTest {
|
||||||
builder.addVehicle(v2);
|
builder.addVehicle(v2);
|
||||||
|
|
||||||
VehicleRoutingProblem vrp = builder.build();
|
VehicleRoutingProblem vrp = builder.build();
|
||||||
new VrpXMLWriter(vrp, null).write(infileName);
|
VehicleRoutingProblem readVrp = writeAndRereadXml(vrp);
|
||||||
|
|
||||||
VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance();
|
|
||||||
new VrpXMLReader(vrpToReadBuilder, null).read(infileName);
|
|
||||||
VehicleRoutingProblem readVrp = vrpToReadBuilder.build();
|
|
||||||
|
|
||||||
Vehicle v = getVehicle("v", readVrp.getVehicles());
|
Vehicle v = getVehicle("v", readVrp.getVehicles());
|
||||||
Assert.assertEquals(3, v.getType().getCapacityDimensions().getNuOfDimensions());
|
assertEquals(3, v.getType().getCapacityDimensions().getNuOfDimensions());
|
||||||
Assert.assertEquals(100, v.getType().getCapacityDimensions().get(0));
|
assertEquals(100, v.getType().getCapacityDimensions().get(0));
|
||||||
Assert.assertEquals(1000, v.getType().getCapacityDimensions().get(1));
|
assertEquals(1000, v.getType().getCapacityDimensions().get(1));
|
||||||
Assert.assertEquals(10000, v.getType().getCapacityDimensions().get(2));
|
assertEquals(10000, v.getType().getCapacityDimensions().get(2));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
@ -879,16 +556,12 @@ public class VrpXMLWriterTest {
|
||||||
builder.addVehicle(v2);
|
builder.addVehicle(v2);
|
||||||
|
|
||||||
VehicleRoutingProblem vrp = builder.build();
|
VehicleRoutingProblem vrp = builder.build();
|
||||||
new VrpXMLWriter(vrp, null).write(infileName);
|
VehicleRoutingProblem readVrp = writeAndRereadXml(vrp);
|
||||||
|
|
||||||
VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance();
|
|
||||||
new VrpXMLReader(vrpToReadBuilder, null).read(infileName);
|
|
||||||
VehicleRoutingProblem readVrp = vrpToReadBuilder.build();
|
|
||||||
|
|
||||||
Vehicle v = getVehicle("v", readVrp.getVehicles());
|
Vehicle v = getVehicle("v", readVrp.getVehicles());
|
||||||
Assert.assertEquals(11, v.getType().getCapacityDimensions().getNuOfDimensions());
|
assertEquals(11, v.getType().getCapacityDimensions().getNuOfDimensions());
|
||||||
Assert.assertEquals(0, v.getType().getCapacityDimensions().get(9));
|
assertEquals(0, v.getType().getCapacityDimensions().get(9));
|
||||||
Assert.assertEquals(10000, v.getType().getCapacityDimensions().get(10));
|
assertEquals(10000, v.getType().getCapacityDimensions().get(10));
|
||||||
}
|
}
|
||||||
|
|
||||||
private Vehicle getVehicle(String string, Collection<Vehicle> vehicles) {
|
private Vehicle getVehicle(String string, Collection<Vehicle> vehicles) {
|
||||||
|
|
@ -916,14 +589,10 @@ public class VrpXMLWriterTest {
|
||||||
List<VehicleRoutingProblemSolution> solutions = new ArrayList<VehicleRoutingProblemSolution>();
|
List<VehicleRoutingProblemSolution> solutions = new ArrayList<VehicleRoutingProblemSolution>();
|
||||||
solutions.add(solution);
|
solutions.add(solution);
|
||||||
|
|
||||||
new VrpXMLWriter(vrp, solutions).write(infileName);
|
List<VehicleRoutingProblemSolution> solutionsToRead = writeAndRereadXmlWithSolutions(vrp, solutions);
|
||||||
|
|
||||||
VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance();
|
|
||||||
List<VehicleRoutingProblemSolution> solutionsToRead = new ArrayList<VehicleRoutingProblemSolution>();
|
|
||||||
new VrpXMLReader(vrpToReadBuilder, solutionsToRead).read(infileName);
|
|
||||||
|
|
||||||
assertEquals(1, solutionsToRead.size());
|
assertEquals(1, solutionsToRead.size());
|
||||||
Assert.assertEquals(10., Solutions.bestOf(solutionsToRead).getCost(), 0.01);
|
assertEquals(10., Solutions.bestOf(solutionsToRead).getCost(), 0.01);
|
||||||
assertTrue(Solutions.bestOf(solutionsToRead).getUnassignedJobs().isEmpty());
|
assertTrue(Solutions.bestOf(solutionsToRead).getUnassignedJobs().isEmpty());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -948,16 +617,42 @@ public class VrpXMLWriterTest {
|
||||||
List<VehicleRoutingProblemSolution> solutions = new ArrayList<VehicleRoutingProblemSolution>();
|
List<VehicleRoutingProblemSolution> solutions = new ArrayList<VehicleRoutingProblemSolution>();
|
||||||
solutions.add(solution);
|
solutions.add(solution);
|
||||||
|
|
||||||
|
List<VehicleRoutingProblemSolution> solutionsToRead = writeAndRereadXmlWithSolutions(vrp, solutions);
|
||||||
|
|
||||||
|
assertEquals(1, solutionsToRead.size());
|
||||||
|
assertEquals(10., Solutions.bestOf(solutionsToRead).getCost(), 0.01);
|
||||||
|
assertEquals(1, Solutions.bestOf(solutionsToRead).getUnassignedJobs().size());
|
||||||
|
assertEquals("2", Solutions.bestOf(solutionsToRead).getUnassignedJobs().iterator().next().getId());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void outputStreamAndFileContentsAreEqual() throws IOException {
|
||||||
|
VehicleRoutingProblem.Builder builder = twoVehicleTypesAndImpls();
|
||||||
|
VehicleRoutingProblem vrp = builder.build();
|
||||||
|
|
||||||
|
new VrpXMLWriter(vrp, null).write(infileName);
|
||||||
|
String outputStringFromFile = new String(Files.readAllBytes(Paths.get(infileName)));
|
||||||
|
String outputStringFromStream = new VrpXMLWriter(vrp, null).write().toString();
|
||||||
|
|
||||||
|
assertEquals(outputStringFromFile, outputStringFromStream);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private VehicleRoutingProblem writeAndRereadXml(VehicleRoutingProblem vrp) {
|
||||||
|
new VrpXMLWriter(vrp, null).write(infileName);
|
||||||
|
|
||||||
|
VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
new VrpXMLReader(vrpToReadBuilder, null).read(infileName);
|
||||||
|
return vrpToReadBuilder.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<VehicleRoutingProblemSolution> writeAndRereadXmlWithSolutions(VehicleRoutingProblem vrp, List<VehicleRoutingProblemSolution> solutions) {
|
||||||
new VrpXMLWriter(vrp, solutions).write(infileName);
|
new VrpXMLWriter(vrp, solutions).write(infileName);
|
||||||
|
|
||||||
VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance();
|
VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
List<VehicleRoutingProblemSolution> solutionsToRead = new ArrayList<VehicleRoutingProblemSolution>();
|
List<VehicleRoutingProblemSolution> solutionsToRead = new ArrayList<VehicleRoutingProblemSolution>();
|
||||||
new VrpXMLReader(vrpToReadBuilder, solutionsToRead).read(infileName);
|
new VrpXMLReader(vrpToReadBuilder, solutionsToRead).read(infileName);
|
||||||
|
return solutionsToRead;
|
||||||
assertEquals(1, solutionsToRead.size());
|
|
||||||
Assert.assertEquals(10., Solutions.bestOf(solutionsToRead).getCost(), 0.01);
|
|
||||||
Assert.assertEquals(1, Solutions.bestOf(solutionsToRead).getUnassignedJobs().size());
|
|
||||||
Assert.assertEquals("2", Solutions.bestOf(solutionsToRead).getUnassignedJobs().iterator().next().getId());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue