mirror of
https://github.com/graphhopper/jsprit.git
synced 2020-01-24 07:45:05 +01:00
replace deprecated methods
This commit is contained in:
parent
335b58d95a
commit
db0cdbe310
61 changed files with 752 additions and 744 deletions
|
|
@ -19,6 +19,7 @@ package jsprit.core.algorithm;
|
||||||
|
|
||||||
|
|
||||||
import jsprit.core.algorithm.state.StateManager;
|
import jsprit.core.algorithm.state.StateManager;
|
||||||
|
import jsprit.core.problem.Location;
|
||||||
import jsprit.core.problem.VehicleRoutingProblem;
|
import jsprit.core.problem.VehicleRoutingProblem;
|
||||||
import jsprit.core.problem.constraint.ConstraintManager;
|
import jsprit.core.problem.constraint.ConstraintManager;
|
||||||
import jsprit.core.problem.job.Service;
|
import jsprit.core.problem.job.Service;
|
||||||
|
|
@ -26,7 +27,6 @@ import jsprit.core.problem.solution.VehicleRoutingProblemSolution;
|
||||||
import jsprit.core.problem.solution.route.VehicleRoute;
|
import jsprit.core.problem.solution.route.VehicleRoute;
|
||||||
import jsprit.core.problem.solution.route.activity.TimeWindow;
|
import jsprit.core.problem.solution.route.activity.TimeWindow;
|
||||||
import jsprit.core.problem.vehicle.VehicleImpl;
|
import jsprit.core.problem.vehicle.VehicleImpl;
|
||||||
import jsprit.core.util.Coordinate;
|
|
||||||
import jsprit.core.util.Solutions;
|
import jsprit.core.util.Solutions;
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
@ -37,9 +37,9 @@ public class DeactivateTimeWindowsTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void activityTimesShouldIgnoreTimeWindows(){
|
public void activityTimesShouldIgnoreTimeWindows(){
|
||||||
Service service = Service.Builder.newInstance("s").setCoord(Coordinate.newInstance(20, 0))
|
Service service = Service.Builder.newInstance("s").setLocation(Location.newInstance(20, 0))
|
||||||
.setTimeWindow(TimeWindow.newInstance(40,50)).build();
|
.setTimeWindow(TimeWindow.newInstance(40, 50)).build();
|
||||||
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocationCoordinate(Coordinate.newInstance(0,0)).build();
|
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(0, 0)).build();
|
||||||
VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(service).addVehicle(vehicle).build();
|
VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(service).addVehicle(vehicle).build();
|
||||||
VehicleRoutingAlgorithmBuilder vraBuilder = new VehicleRoutingAlgorithmBuilder(vrp,"src/test/resources/algorithmConfig.xml");
|
VehicleRoutingAlgorithmBuilder vraBuilder = new VehicleRoutingAlgorithmBuilder(vrp,"src/test/resources/algorithmConfig.xml");
|
||||||
vraBuilder.addDefaultCostCalculators();
|
vraBuilder.addDefaultCostCalculators();
|
||||||
|
|
@ -53,9 +53,9 @@ public class DeactivateTimeWindowsTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenNotActivatingViaStateManager_activityTimesShouldConsiderTimeWindows(){
|
public void whenNotActivatingViaStateManager_activityTimesShouldConsiderTimeWindows(){
|
||||||
Service service = Service.Builder.newInstance("s").setCoord(Coordinate.newInstance(20, 0))
|
Service service = Service.Builder.newInstance("s").setLocation(Location.newInstance(20, 0))
|
||||||
.setTimeWindow(TimeWindow.newInstance(40,50)).build();
|
.setTimeWindow(TimeWindow.newInstance(40, 50)).build();
|
||||||
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocationCoordinate(Coordinate.newInstance(0,0)).build();
|
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(0, 0)).build();
|
||||||
VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(service).addVehicle(vehicle).build();
|
VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(service).addVehicle(vehicle).build();
|
||||||
VehicleRoutingAlgorithmBuilder vraBuilder = new VehicleRoutingAlgorithmBuilder(vrp,"src/test/resources/algorithmConfig.xml");
|
VehicleRoutingAlgorithmBuilder vraBuilder = new VehicleRoutingAlgorithmBuilder(vrp,"src/test/resources/algorithmConfig.xml");
|
||||||
vraBuilder.addDefaultCostCalculators();
|
vraBuilder.addDefaultCostCalculators();
|
||||||
|
|
@ -72,9 +72,9 @@ public class DeactivateTimeWindowsTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void activityTimesShouldConsiderTimeWindows(){
|
public void activityTimesShouldConsiderTimeWindows(){
|
||||||
Service service = Service.Builder.newInstance("s").setCoord(Coordinate.newInstance(20, 0))
|
Service service = Service.Builder.newInstance("s").setLocation(Location.newInstance(20, 0))
|
||||||
.setTimeWindow(TimeWindow.newInstance(40,50)).build();
|
.setTimeWindow(TimeWindow.newInstance(40, 50)).build();
|
||||||
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocationCoordinate(Coordinate.newInstance(0,0)).build();
|
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(0, 0)).build();
|
||||||
VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(service).addVehicle(vehicle).build();
|
VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(service).addVehicle(vehicle).build();
|
||||||
VehicleRoutingAlgorithmBuilder vraBuilder = new VehicleRoutingAlgorithmBuilder(vrp,"src/test/resources/algorithmConfig.xml");
|
VehicleRoutingAlgorithmBuilder vraBuilder = new VehicleRoutingAlgorithmBuilder(vrp,"src/test/resources/algorithmConfig.xml");
|
||||||
vraBuilder.addCoreConstraints();
|
vraBuilder.addCoreConstraints();
|
||||||
|
|
@ -89,9 +89,9 @@ public class DeactivateTimeWindowsTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenActivatingViaStateManager_activityTimesShouldConsiderTimeWindows(){
|
public void whenActivatingViaStateManager_activityTimesShouldConsiderTimeWindows(){
|
||||||
Service service = Service.Builder.newInstance("s").setCoord(Coordinate.newInstance(20, 0))
|
Service service = Service.Builder.newInstance("s").setLocation(Location.newInstance(20, 0))
|
||||||
.setTimeWindow(TimeWindow.newInstance(40,50)).build();
|
.setTimeWindow(TimeWindow.newInstance(40, 50)).build();
|
||||||
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocationCoordinate(Coordinate.newInstance(0,0)).build();
|
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(0, 0)).build();
|
||||||
VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(service).addVehicle(vehicle).build();
|
VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(service).addVehicle(vehicle).build();
|
||||||
VehicleRoutingAlgorithmBuilder vraBuilder = new VehicleRoutingAlgorithmBuilder(vrp,"src/test/resources/algorithmConfig.xml");
|
VehicleRoutingAlgorithmBuilder vraBuilder = new VehicleRoutingAlgorithmBuilder(vrp,"src/test/resources/algorithmConfig.xml");
|
||||||
vraBuilder.addDefaultCostCalculators();
|
vraBuilder.addDefaultCostCalculators();
|
||||||
|
|
|
||||||
|
|
@ -1,37 +1,34 @@
|
||||||
package jsprit.core.algorithm;
|
package jsprit.core.algorithm;
|
||||||
|
|
||||||
import jsprit.core.algorithm.io.VehicleRoutingAlgorithms;
|
import jsprit.core.algorithm.io.VehicleRoutingAlgorithms;
|
||||||
|
import jsprit.core.problem.Location;
|
||||||
import jsprit.core.problem.VehicleRoutingProblem;
|
import jsprit.core.problem.VehicleRoutingProblem;
|
||||||
import jsprit.core.problem.job.Service;
|
import jsprit.core.problem.job.Service;
|
||||||
import jsprit.core.problem.solution.VehicleRoutingProblemSolution;
|
import jsprit.core.problem.solution.VehicleRoutingProblemSolution;
|
||||||
import jsprit.core.problem.solution.route.VehicleRoute;
|
import jsprit.core.problem.solution.route.VehicleRoute;
|
||||||
import jsprit.core.problem.vehicle.VehicleImpl;
|
import jsprit.core.problem.vehicle.VehicleImpl;
|
||||||
import jsprit.core.reporting.SolutionPrinter;
|
import jsprit.core.reporting.SolutionPrinter;
|
||||||
import jsprit.core.util.Coordinate;
|
|
||||||
import jsprit.core.util.Solutions;
|
import jsprit.core.util.Solutions;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
|
||||||
/**
|
|
||||||
* Created by schroeder on 24.07.14.
|
|
||||||
*/
|
|
||||||
public class ExternalInitialSolutionIsInValidTest {
|
public class ExternalInitialSolutionIsInValidTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void itShouldSolveProblemWithIniSolutionExternallyCreated(){
|
public void itShouldSolveProblemWithIniSolutionExternallyCreated(){
|
||||||
|
|
||||||
Service s1 = Service.Builder.newInstance("s1").setCoord(Coordinate.newInstance(10,0)).build();
|
Service s1 = Service.Builder.newInstance("s1").setLocation(Location.newInstance(10, 0)).build();
|
||||||
Service s2 = Service.Builder.newInstance("s2").setCoord(Coordinate.newInstance(0,10)).build();
|
Service s2 = Service.Builder.newInstance("s2").setLocation(Location.newInstance(0,10)).build();
|
||||||
|
|
||||||
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v1").setStartLocationCoordinate(Coordinate.newInstance(0,0)).build();
|
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v1").setStartLocation(Location.newInstance(0,0)).build();
|
||||||
|
|
||||||
VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(s1).addJob(s2).addVehicle(vehicle).build();
|
VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(s1).addJob(s2).addVehicle(vehicle).build();
|
||||||
|
|
||||||
VehicleRoutingAlgorithm vra = VehicleRoutingAlgorithms.readAndCreateAlgorithm(vrp, "src/test/resources/algorithm_without_construction.xml");
|
VehicleRoutingAlgorithm vra = VehicleRoutingAlgorithms.readAndCreateAlgorithm(vrp, "src/test/resources/algorithm_without_construction.xml");
|
||||||
|
|
||||||
VehicleImpl vehicle2 = VehicleImpl.Builder.newInstance("v1").setStartLocationCoordinate(Coordinate.newInstance(0,0)).build();
|
|
||||||
/*
|
/*
|
||||||
create ini sol
|
create ini sol
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,7 @@ package jsprit.core.algorithm;
|
||||||
|
|
||||||
import jsprit.core.algorithm.box.GreedySchrimpfFactory;
|
import jsprit.core.algorithm.box.GreedySchrimpfFactory;
|
||||||
import jsprit.core.algorithm.termination.IterationWithoutImprovementTermination;
|
import jsprit.core.algorithm.termination.IterationWithoutImprovementTermination;
|
||||||
|
import jsprit.core.problem.Location;
|
||||||
import jsprit.core.problem.VehicleRoutingProblem;
|
import jsprit.core.problem.VehicleRoutingProblem;
|
||||||
import jsprit.core.problem.VehicleRoutingProblem.FleetSize;
|
import jsprit.core.problem.VehicleRoutingProblem.FleetSize;
|
||||||
import jsprit.core.problem.job.Service;
|
import jsprit.core.problem.job.Service;
|
||||||
|
|
@ -169,7 +170,8 @@ public class RefuseCollectionWithCostsHigherThanTimesAndFiniteFleet_IT {
|
||||||
/*
|
/*
|
||||||
* build service
|
* build service
|
||||||
*/
|
*/
|
||||||
Service service = Service.Builder.newInstance(lineTokens[0]).addSizeDimension(0, Integer.parseInt(lineTokens[1])).setLocationId(lineTokens[0]).build();
|
Service service = Service.Builder.newInstance(lineTokens[0]).addSizeDimension(0, Integer.parseInt(lineTokens[1]))
|
||||||
|
.setLocation(Location.newInstance(lineTokens[0])).build();
|
||||||
/*
|
/*
|
||||||
* and add it to problem
|
* and add it to problem
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,7 @@ package jsprit.core.algorithm;
|
||||||
|
|
||||||
import jsprit.core.algorithm.box.GreedySchrimpfFactory;
|
import jsprit.core.algorithm.box.GreedySchrimpfFactory;
|
||||||
import jsprit.core.algorithm.termination.IterationWithoutImprovementTermination;
|
import jsprit.core.algorithm.termination.IterationWithoutImprovementTermination;
|
||||||
|
import jsprit.core.problem.Location;
|
||||||
import jsprit.core.problem.VehicleRoutingProblem;
|
import jsprit.core.problem.VehicleRoutingProblem;
|
||||||
import jsprit.core.problem.VehicleRoutingProblem.FleetSize;
|
import jsprit.core.problem.VehicleRoutingProblem.FleetSize;
|
||||||
import jsprit.core.problem.job.Service;
|
import jsprit.core.problem.job.Service;
|
||||||
|
|
@ -169,7 +170,8 @@ public class RefuseCollectionWithCostsHigherThanTimesAndFiniteFleet_withTimeAndD
|
||||||
/*
|
/*
|
||||||
* build service
|
* build service
|
||||||
*/
|
*/
|
||||||
Service service = Service.Builder.newInstance(lineTokens[0]).addSizeDimension(0, Integer.parseInt(lineTokens[1])).setLocationId(lineTokens[0]).build();
|
Service service = Service.Builder.newInstance(lineTokens[0]).addSizeDimension(0, Integer.parseInt(lineTokens[1]))
|
||||||
|
.setLocation(Location.newInstance(lineTokens[0])).build();
|
||||||
/*
|
/*
|
||||||
* and add it to problem
|
* and add it to problem
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -287,7 +287,8 @@ public class RefuseCollection_IT {
|
||||||
/*
|
/*
|
||||||
* build service
|
* build service
|
||||||
*/
|
*/
|
||||||
Service service = Service.Builder.newInstance(lineTokens[0]).addSizeDimension(0, Integer.parseInt(lineTokens[1])).setLocationId(lineTokens[0]).build();
|
Service service = Service.Builder.newInstance(lineTokens[0]).addSizeDimension(0, Integer.parseInt(lineTokens[1]))
|
||||||
|
.setLocation(Location.newInstance(lineTokens[0])).build();
|
||||||
/*
|
/*
|
||||||
* and add it to problem
|
* and add it to problem
|
||||||
*/
|
*/
|
||||||
|
|
@ -319,7 +320,8 @@ public class RefuseCollection_IT {
|
||||||
/*
|
/*
|
||||||
* build service
|
* build service
|
||||||
*/
|
*/
|
||||||
Pickup service = (Pickup) Pickup.Builder.newInstance(lineTokens[0]).addSizeDimension(0, Integer.parseInt(lineTokens[1])).setLocationId(lineTokens[0]).build();
|
Pickup service = (Pickup) Pickup.Builder.newInstance(lineTokens[0]).addSizeDimension(0, Integer.parseInt(lineTokens[1]))
|
||||||
|
.setLocation(Location.newInstance(lineTokens[0])).build();
|
||||||
/*
|
/*
|
||||||
* and add it to problem
|
* and add it to problem
|
||||||
*/
|
*/
|
||||||
|
|
@ -341,7 +343,8 @@ public class RefuseCollection_IT {
|
||||||
/*
|
/*
|
||||||
* build service
|
* build service
|
||||||
*/
|
*/
|
||||||
Delivery service = (Delivery) Delivery.Builder.newInstance(lineTokens[0]).addSizeDimension(0, Integer.parseInt(lineTokens[1])).setLocationId(lineTokens[0]).build();
|
Delivery service = (Delivery) Delivery.Builder.newInstance(lineTokens[0]).addSizeDimension(0, Integer.parseInt(lineTokens[1]))
|
||||||
|
.setLocation(Location.newInstance(lineTokens[0])).build();
|
||||||
/*
|
/*
|
||||||
* and add it to problem
|
* and add it to problem
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,12 @@
|
||||||
package jsprit.core.algorithm;
|
package jsprit.core.algorithm;
|
||||||
|
|
||||||
import jsprit.core.algorithm.box.GreedySchrimpfFactory;
|
import jsprit.core.algorithm.box.GreedySchrimpfFactory;
|
||||||
|
import jsprit.core.problem.Location;
|
||||||
import jsprit.core.problem.VehicleRoutingProblem;
|
import jsprit.core.problem.VehicleRoutingProblem;
|
||||||
import jsprit.core.problem.job.Service;
|
import jsprit.core.problem.job.Service;
|
||||||
import jsprit.core.problem.solution.VehicleRoutingProblemSolution;
|
import jsprit.core.problem.solution.VehicleRoutingProblemSolution;
|
||||||
import jsprit.core.problem.solution.route.activity.TimeWindow;
|
import jsprit.core.problem.solution.route.activity.TimeWindow;
|
||||||
import jsprit.core.problem.vehicle.VehicleImpl;
|
import jsprit.core.problem.vehicle.VehicleImpl;
|
||||||
import jsprit.core.util.Coordinate;
|
|
||||||
import jsprit.core.util.Solutions;
|
import jsprit.core.util.Solutions;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
|
|
@ -19,10 +19,10 @@ public class UnassignedJobListTest {
|
||||||
@Test
|
@Test
|
||||||
public void job2ShouldBeInBadJobList_dueToTimeWindow(){
|
public void job2ShouldBeInBadJobList_dueToTimeWindow(){
|
||||||
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
builder.addVehicle(VehicleImpl.Builder.newInstance("v1").setEarliestStart(0).setLatestArrival(12).setStartLocationCoordinate(Coordinate.newInstance(1, 1)).build());
|
builder.addVehicle(VehicleImpl.Builder.newInstance("v1").setEarliestStart(0).setLatestArrival(12).setStartLocation(Location.newInstance(1, 1)).build());
|
||||||
Service job1 = Service.Builder.newInstance("job1").setCoord(Coordinate.newInstance(0, 0)).setTimeWindow(TimeWindow.newInstance(0, 12)).setServiceTime(1).build();
|
Service job1 = Service.Builder.newInstance("job1").setLocation(Location.newInstance(0, 0)).setTimeWindow(TimeWindow.newInstance(0, 12)).setServiceTime(1).build();
|
||||||
builder.addJob(job1);
|
builder.addJob(job1);
|
||||||
Service job2 = Service.Builder.newInstance("job2").setCoord(Coordinate.newInstance(2, 2)).setTimeWindow(TimeWindow.newInstance(12, 24)).setServiceTime(1).build();
|
Service job2 = Service.Builder.newInstance("job2").setLocation(Location.newInstance(2, 2)).setTimeWindow(TimeWindow.newInstance(12, 24)).setServiceTime(1).build();
|
||||||
builder.addJob(job2);
|
builder.addJob(job2);
|
||||||
|
|
||||||
VehicleRoutingProblem vrp = builder.build();
|
VehicleRoutingProblem vrp = builder.build();
|
||||||
|
|
@ -38,10 +38,10 @@ public class UnassignedJobListTest {
|
||||||
@Test
|
@Test
|
||||||
public void job2ShouldBeInBadJobList_dueToSize(){
|
public void job2ShouldBeInBadJobList_dueToSize(){
|
||||||
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
builder.addVehicle(VehicleImpl.Builder.newInstance("v1").setEarliestStart(0).setLatestArrival(12).setStartLocationCoordinate(Coordinate.newInstance(1, 1)).build());
|
builder.addVehicle(VehicleImpl.Builder.newInstance("v1").setEarliestStart(0).setLatestArrival(12).setStartLocation(Location.newInstance(1, 1)).build());
|
||||||
Service job1 = Service.Builder.newInstance("job1").setCoord(Coordinate.newInstance(0, 0)).setTimeWindow(TimeWindow.newInstance(0, 12)).setServiceTime(1).build();
|
Service job1 = Service.Builder.newInstance("job1").setLocation(Location.newInstance(0, 0)).setTimeWindow(TimeWindow.newInstance(0, 12)).setServiceTime(1).build();
|
||||||
builder.addJob(job1);
|
builder.addJob(job1);
|
||||||
Service job2 = Service.Builder.newInstance("job2").setCoord(Coordinate.newInstance(2, 2)).addSizeDimension(0,10).setTimeWindow(TimeWindow.newInstance(0, 12)).setServiceTime(1).build();
|
Service job2 = Service.Builder.newInstance("job2").setLocation(Location.newInstance(2, 2)).addSizeDimension(0,10).setTimeWindow(TimeWindow.newInstance(0, 12)).setServiceTime(1).build();
|
||||||
builder.addJob(job2);
|
builder.addJob(job2);
|
||||||
|
|
||||||
VehicleRoutingProblem vrp = builder.build();
|
VehicleRoutingProblem vrp = builder.build();
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,7 @@ import jsprit.core.problem.vehicle.VehicleTypeImpl;
|
||||||
import jsprit.core.util.Coordinate;
|
import jsprit.core.util.Coordinate;
|
||||||
import jsprit.core.util.CrowFlyCosts;
|
import jsprit.core.util.CrowFlyCosts;
|
||||||
import jsprit.core.util.Solutions;
|
import jsprit.core.util.Solutions;
|
||||||
|
import jsprit.core.util.TestUtils;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
|
||||||
|
|
@ -43,11 +44,12 @@ public class CalcWithTimeSchedulingTest {
|
||||||
|
|
||||||
public void timeScheduler(){
|
public void timeScheduler(){
|
||||||
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
Vehicle vehicle = VehicleImpl.Builder.newInstance("myVehicle").setEarliestStart(0.0).setLatestArrival(100.0).
|
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("myVehicle").setEarliestStart(0.0).setLatestArrival(100.0).
|
||||||
setStartLocationCoordinate(Coordinate.newInstance(0, 0)).setStartLocationId("0,0")
|
setStartLocation(TestUtils.loc("0,0", Coordinate.newInstance(0, 0)))
|
||||||
.setType(VehicleTypeImpl.Builder.newInstance("myType").addCapacityDimension(0, 20).setCostPerDistance(1.0).build()).build();
|
.setType(VehicleTypeImpl.Builder.newInstance("myType").addCapacityDimension(0, 20).setCostPerDistance(1.0).build()).build();
|
||||||
vrpBuilder.addVehicle(vehicle);
|
vrpBuilder.addVehicle(vehicle);
|
||||||
vrpBuilder.addJob(Service.Builder.newInstance("myService").addSizeDimension(0, 2).setLocationId("0,20").setCoord(Coordinate.newInstance(0, 20)).build());
|
vrpBuilder.addJob(Service.Builder.newInstance("myService").addSizeDimension(0, 2)
|
||||||
|
.setLocation(TestUtils.loc("0,20",Coordinate.newInstance(0, 20))).build());
|
||||||
vrpBuilder.setFleetSize(FleetSize.INFINITE);
|
vrpBuilder.setFleetSize(FleetSize.INFINITE);
|
||||||
vrpBuilder.setRoutingCost(getTpCosts(new CrowFlyCosts(vrpBuilder.getLocations())));
|
vrpBuilder.setRoutingCost(getTpCosts(new CrowFlyCosts(vrpBuilder.getLocations())));
|
||||||
VehicleRoutingProblem vrp = vrpBuilder.build();
|
VehicleRoutingProblem vrp = vrpBuilder.build();
|
||||||
|
|
|
||||||
|
|
@ -39,10 +39,10 @@ public class RegretInsertionTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void noRoutesShouldBeCorrect(){
|
public void noRoutesShouldBeCorrect(){
|
||||||
Service s1 = Service.Builder.newInstance("s1").setCoord(Coordinate.newInstance(0,10)).build();
|
Service s1 = Service.Builder.newInstance("s1").setLocation(Location.newInstance(0, 10)).build();
|
||||||
Service s2 = Service.Builder.newInstance("s2").setCoord(Coordinate.newInstance(0,5)).build();
|
Service s2 = Service.Builder.newInstance("s2").setLocation(Location.newInstance(0, 5)).build();
|
||||||
|
|
||||||
VehicleImpl v = VehicleImpl.Builder.newInstance("v").setStartLocationCoordinate(Coordinate.newInstance(0,0)).build();
|
VehicleImpl v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(0, 0)).build();
|
||||||
VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(s1).addJob(s2).addVehicle(v).build();
|
VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(s1).addJob(s2).addVehicle(v).build();
|
||||||
|
|
||||||
JobInsertionCostsCalculator calculator = getCalculator(vrp);
|
JobInsertionCostsCalculator calculator = getCalculator(vrp);
|
||||||
|
|
@ -55,10 +55,10 @@ public class RegretInsertionTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void noJobsInRouteShouldBeCorrect(){
|
public void noJobsInRouteShouldBeCorrect(){
|
||||||
Service s1 = Service.Builder.newInstance("s1").setCoord(Coordinate.newInstance(0,10)).build();
|
Service s1 = Service.Builder.newInstance("s1").setLocation(Location.newInstance(0, 10)).build();
|
||||||
Service s2 = Service.Builder.newInstance("s2").setCoord(Coordinate.newInstance(0,5)).build();
|
Service s2 = Service.Builder.newInstance("s2").setLocation(Location.newInstance(0, 5)).build();
|
||||||
|
|
||||||
VehicleImpl v = VehicleImpl.Builder.newInstance("v").setStartLocationCoordinate(Coordinate.newInstance(0,0)).build();
|
VehicleImpl v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(0, 0)).build();
|
||||||
VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(s1).addJob(s2).addVehicle(v).build();
|
VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(s1).addJob(s2).addVehicle(v).build();
|
||||||
|
|
||||||
JobInsertionCostsCalculator calculator = getCalculator(vrp);
|
JobInsertionCostsCalculator calculator = getCalculator(vrp);
|
||||||
|
|
@ -71,10 +71,10 @@ public class RegretInsertionTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void s1ShouldBeAddedFirst(){
|
public void s1ShouldBeAddedFirst(){
|
||||||
Service s1 = Service.Builder.newInstance("s1").setCoord(Coordinate.newInstance(0,10)).build();
|
Service s1 = Service.Builder.newInstance("s1").setLocation(Location.newInstance(0, 10)).build();
|
||||||
Service s2 = Service.Builder.newInstance("s2").setCoord(Coordinate.newInstance(0,5)).build();
|
Service s2 = Service.Builder.newInstance("s2").setLocation(Location.newInstance(0, 5)).build();
|
||||||
|
|
||||||
VehicleImpl v = VehicleImpl.Builder.newInstance("v").setStartLocationCoordinate(Coordinate.newInstance(0,0)).build();
|
VehicleImpl v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(0,0)).build();
|
||||||
final VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(s1).addJob(s2).addVehicle(v).build();
|
final VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(s1).addJob(s2).addVehicle(v).build();
|
||||||
|
|
||||||
JobInsertionCostsCalculator calculator = getCalculator(vrp);
|
JobInsertionCostsCalculator calculator = getCalculator(vrp);
|
||||||
|
|
@ -164,7 +164,7 @@ public class RegretInsertionTest {
|
||||||
public InsertionData getInsertionData(VehicleRoute currentRoute, Job newJob, Vehicle newVehicle, double newVehicleDepartureTime, Driver newDriver, double bestKnownCosts) {
|
public InsertionData getInsertionData(VehicleRoute currentRoute, Job newJob, Vehicle newVehicle, double newVehicleDepartureTime, Driver newDriver, double bestKnownCosts) {
|
||||||
Service service = (Service)newJob;
|
Service service = (Service)newJob;
|
||||||
Vehicle vehicle = vrp.getVehicles().iterator().next();
|
Vehicle vehicle = vrp.getVehicles().iterator().next();
|
||||||
InsertionData iData = null;
|
InsertionData iData;
|
||||||
if(currentRoute.isEmpty()){
|
if(currentRoute.isEmpty()){
|
||||||
double mc = getCost(service.getLocation(), vehicle.getStartLocation());
|
double mc = getCost(service.getLocation(), vehicle.getStartLocation());
|
||||||
iData = new InsertionData(2*mc,-1,0,vehicle,newDriver);
|
iData = new InsertionData(2*mc,-1,0,vehicle,newDriver);
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@ import jsprit.core.algorithm.recreate.listener.InsertionListeners;
|
||||||
import jsprit.core.algorithm.state.StateManager;
|
import jsprit.core.algorithm.state.StateManager;
|
||||||
import jsprit.core.problem.AbstractActivity;
|
import jsprit.core.problem.AbstractActivity;
|
||||||
import jsprit.core.problem.JobActivityFactory;
|
import jsprit.core.problem.JobActivityFactory;
|
||||||
|
import jsprit.core.problem.Location;
|
||||||
import jsprit.core.problem.VehicleRoutingProblem;
|
import jsprit.core.problem.VehicleRoutingProblem;
|
||||||
import jsprit.core.problem.constraint.ConstraintManager;
|
import jsprit.core.problem.constraint.ConstraintManager;
|
||||||
import jsprit.core.problem.constraint.HardActivityConstraint;
|
import jsprit.core.problem.constraint.HardActivityConstraint;
|
||||||
|
|
@ -107,8 +108,8 @@ public class ServiceInsertionAndLoadConstraintsTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenInsertingServiceWhileNoCapIsAvailable_itMustReturnTheCorrectInsertionIndex(){
|
public void whenInsertingServiceWhileNoCapIsAvailable_itMustReturnTheCorrectInsertionIndex(){
|
||||||
Delivery delivery = (Delivery) Delivery.Builder.newInstance("del").addSizeDimension(0, 41).setLocationId("10,10").build();
|
Delivery delivery = (Delivery) Delivery.Builder.newInstance("del").addSizeDimension(0, 41).setLocation(Location.newInstance("10,10")).build();
|
||||||
Pickup pickup = (Pickup) Pickup.Builder.newInstance("pick").addSizeDimension(0, 15).setLocationId("0,10").build();
|
Pickup pickup = (Pickup) Pickup.Builder.newInstance("pick").addSizeDimension(0, 15).setLocation(Location.newInstance("0,10")).build();
|
||||||
|
|
||||||
VehicleType type = VehicleTypeImpl.Builder.newInstance("t").addCapacityDimension(0, 50).setCostPerDistance(1).build();
|
VehicleType type = VehicleTypeImpl.Builder.newInstance("t").addCapacityDimension(0, 50).setCostPerDistance(1).build();
|
||||||
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocationId("0,0").setType(type).build();
|
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocationId("0,0").setType(type).build();
|
||||||
|
|
|
||||||
|
|
@ -301,7 +301,7 @@ public class ShipmentInsertionCalculatorTest {
|
||||||
switcher.put(Shipment.class, insertionCalculator);
|
switcher.put(Shipment.class, insertionCalculator);
|
||||||
|
|
||||||
// Service service = Service.Builder.newInstance("pick", 1).setLocationId("5,5").build();
|
// Service service = Service.Builder.newInstance("pick", 1).setLocationId("5,5").build();
|
||||||
Pickup service = (Pickup)Pickup.Builder.newInstance("pick").addSizeDimension(0, 1).setLocationId("5,5").build();
|
Pickup service = (Pickup)Pickup.Builder.newInstance("pick").addSizeDimension(0, 1).setLocation(Location.newInstance("5,5")).build();
|
||||||
|
|
||||||
JobActivityFactory activityFactory = mock(JobActivityFactory.class);
|
JobActivityFactory activityFactory = mock(JobActivityFactory.class);
|
||||||
List<AbstractActivity> activities = new ArrayList<AbstractActivity>();
|
List<AbstractActivity> activities = new ArrayList<AbstractActivity>();
|
||||||
|
|
|
||||||
|
|
@ -110,9 +110,9 @@ public class TestCalculatesServiceInsertion {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
first = Service.Builder.newInstance("1").addSizeDimension(0, 0).setLocationId("0,10").setTimeWindow(TimeWindow.newInstance(0.0, 100.0)).build();
|
first = Service.Builder.newInstance("1").addSizeDimension(0, 0).setLocation(Location.newInstance("0,10")).setTimeWindow(TimeWindow.newInstance(0.0, 100.0)).build();
|
||||||
second = Service.Builder.newInstance("2").addSizeDimension(0, 0).setLocationId("10,10").setTimeWindow(TimeWindow.newInstance(0.0, 100.0)).build();
|
second = Service.Builder.newInstance("2").addSizeDimension(0, 0).setLocation(Location.newInstance("10,10")).setTimeWindow(TimeWindow.newInstance(0.0, 100.0)).build();
|
||||||
third = Service.Builder.newInstance("3").addSizeDimension(0, 0).setLocationId("10,0").setTimeWindow(TimeWindow.newInstance(0.0, 100.0)).build();
|
third = Service.Builder.newInstance("3").addSizeDimension(0, 0).setLocation(Location.newInstance("10,0")).setTimeWindow(TimeWindow.newInstance(0.0, 100.0)).build();
|
||||||
|
|
||||||
Collection<Job> jobs = new ArrayList<Job>();
|
Collection<Job> jobs = new ArrayList<Job>();
|
||||||
jobs.add(first);
|
jobs.add(first);
|
||||||
|
|
@ -207,7 +207,7 @@ public class TestCalculatesServiceInsertion {
|
||||||
public void whenInsertingJobAndCurrRouteIsEmpty_accessEggressCalcShouldReturnZero(){
|
public void whenInsertingJobAndCurrRouteIsEmpty_accessEggressCalcShouldReturnZero(){
|
||||||
VehicleRoute route = VehicleRoute.Builder.newInstance(VehicleImpl.createNoVehicle(), DriverImpl.noDriver()).build();
|
VehicleRoute route = VehicleRoute.Builder.newInstance(VehicleImpl.createNoVehicle(), DriverImpl.noDriver()).build();
|
||||||
AdditionalAccessEgressCalculator accessEgressCalc = new AdditionalAccessEgressCalculator(costs);
|
AdditionalAccessEgressCalculator accessEgressCalc = new AdditionalAccessEgressCalculator(costs);
|
||||||
Job job = Service.Builder.newInstance("1").addSizeDimension(0, 0).setLocationId("1").setTimeWindow(TimeWindow.newInstance(0.0, 100.0)).build();
|
Job job = Service.Builder.newInstance("1").addSizeDimension(0, 0).setLocation(Location.newInstance("1")).setTimeWindow(TimeWindow.newInstance(0.0, 100.0)).build();
|
||||||
JobInsertionContext iContex = new JobInsertionContext(route, job, newVehicle, mock(Driver.class), 0.0);
|
JobInsertionContext iContex = new JobInsertionContext(route, job, newVehicle, mock(Driver.class), 0.0);
|
||||||
assertEquals(0.0, accessEgressCalc.getCosts(iContex),0.01);
|
assertEquals(0.0, accessEgressCalc.getCosts(iContex),0.01);
|
||||||
}
|
}
|
||||||
|
|
@ -242,16 +242,16 @@ public class TestCalculatesServiceInsertion {
|
||||||
return EuclideanDistanceCalculator.calculateDistance(coords.get(from.getId()), coords.get(to.getId()));
|
return EuclideanDistanceCalculator.calculateDistance(coords.get(from.getId()), coords.get(to.getId()));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
Vehicle oldVehicle = VehicleImpl.Builder.newInstance("oldV").setStartLocationId("oldV").build();
|
Vehicle oldVehicle = VehicleImpl.Builder.newInstance("oldV").setStartLocation(Location.newInstance("oldV")).build();
|
||||||
|
|
||||||
VehicleRoute route = VehicleRoute.Builder.newInstance(oldVehicle, DriverImpl.noDriver())
|
VehicleRoute route = VehicleRoute.Builder.newInstance(oldVehicle, DriverImpl.noDriver())
|
||||||
.addService(Service.Builder.newInstance("service").addSizeDimension(0, 0).setLocationId("service").build())
|
.addService(Service.Builder.newInstance("service").addSizeDimension(0, 0).setLocation(Location.newInstance("service")).build())
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
Vehicle newVehicle = VehicleImpl.Builder.newInstance("newV").setStartLocationId("newV").build();
|
Vehicle newVehicle = VehicleImpl.Builder.newInstance("newV").setStartLocation(Location.newInstance("newV")).build();
|
||||||
|
|
||||||
AdditionalAccessEgressCalculator accessEgressCalc = new AdditionalAccessEgressCalculator(routingCosts);
|
AdditionalAccessEgressCalculator accessEgressCalc = new AdditionalAccessEgressCalculator(routingCosts);
|
||||||
Job job = Service.Builder.newInstance("service2").addSizeDimension(0, 0).setLocationId("service").build();
|
Job job = Service.Builder.newInstance("service2").addSizeDimension(0, 0).setLocation(Location.newInstance("service")).build();
|
||||||
JobInsertionContext iContex = new JobInsertionContext(route, job, newVehicle, mock(Driver.class), 0.0);
|
JobInsertionContext iContex = new JobInsertionContext(route, job, newVehicle, mock(Driver.class), 0.0);
|
||||||
assertEquals(8.0, accessEgressCalc.getCosts(iContex),0.01);
|
assertEquals(8.0, accessEgressCalc.getCosts(iContex),0.01);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -100,9 +100,9 @@ public class TestCalculatesServiceInsertionOnRouteLevel {
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
first = Service.Builder.newInstance("1").setLocationId("0,10").setTimeWindow(TimeWindow.newInstance(0.0, 100.0)).build();
|
first = Service.Builder.newInstance("1").setLocation(Location.newInstance("0,10")).setTimeWindow(TimeWindow.newInstance(0.0, 100.0)).build();
|
||||||
second = Service.Builder.newInstance("3").setLocationId("10,0").setTimeWindow(TimeWindow.newInstance(0.0, 100.0)).build();
|
second = Service.Builder.newInstance("3").setLocation(Location.newInstance("10,0")).setTimeWindow(TimeWindow.newInstance(0.0, 100.0)).build();
|
||||||
third = Service.Builder.newInstance("2").setLocationId("10,10").setTimeWindow(TimeWindow.newInstance(0.0, 100.0)).build();
|
third = Service.Builder.newInstance("2").setLocation(Location.newInstance("10,10")).setTimeWindow(TimeWindow.newInstance(0.0, 100.0)).build();
|
||||||
Collection<Job> jobs = new ArrayList<Job>();
|
Collection<Job> jobs = new ArrayList<Job>();
|
||||||
jobs.add(first);
|
jobs.add(first);
|
||||||
jobs.add(second);
|
jobs.add(second);
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,7 @@ import jsprit.core.problem.vehicle.VehicleImpl;
|
||||||
import jsprit.core.problem.vehicle.VehicleTypeImpl;
|
import jsprit.core.problem.vehicle.VehicleTypeImpl;
|
||||||
import jsprit.core.util.Coordinate;
|
import jsprit.core.util.Coordinate;
|
||||||
import jsprit.core.util.Solutions;
|
import jsprit.core.util.Solutions;
|
||||||
|
import jsprit.core.util.TestUtils;
|
||||||
import org.junit.Ignore;
|
import org.junit.Ignore;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
|
|
@ -44,8 +45,8 @@ public class TestDepartureTimeOpt {
|
||||||
@Test
|
@Test
|
||||||
public void whenSettingOneCustWithTWAnd_NO_DepTimeChoice_totalCostsShouldBe50(){
|
public void whenSettingOneCustWithTWAnd_NO_DepTimeChoice_totalCostsShouldBe50(){
|
||||||
TimeWindow timeWindow = TimeWindow.newInstance(40, 45);
|
TimeWindow timeWindow = TimeWindow.newInstance(40, 45);
|
||||||
Service service = Service.Builder.newInstance("s").setLocationId("servLoc").setCoord(Coordinate.newInstance(0, 10)).setTimeWindow(timeWindow).build();
|
Service service = Service.Builder.newInstance("s").setLocation(TestUtils.loc("servLoc",Coordinate.newInstance(0, 10))).setTimeWindow(timeWindow).build();
|
||||||
Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setStartLocationId("vehLoc").setStartLocationCoordinate(Coordinate.newInstance(0, 0))
|
Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(TestUtils.loc("vehLoc", Coordinate.newInstance(0, 0)))
|
||||||
.setType(VehicleTypeImpl.Builder.newInstance("vType").build()).build();
|
.setType(VehicleTypeImpl.Builder.newInstance("vType").build()).build();
|
||||||
|
|
||||||
Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
|
@ -71,7 +72,8 @@ public class TestDepartureTimeOpt {
|
||||||
@Test
|
@Test
|
||||||
public void whenSettingOneCustWithTWAnd_NO_DepTimeChoice_depTimeShouldBe0(){
|
public void whenSettingOneCustWithTWAnd_NO_DepTimeChoice_depTimeShouldBe0(){
|
||||||
TimeWindow timeWindow = TimeWindow.newInstance(40, 45);
|
TimeWindow timeWindow = TimeWindow.newInstance(40, 45);
|
||||||
Service service = Service.Builder.newInstance("s").setLocationId("servLoc").setCoord(Coordinate.newInstance(0, 10)).setTimeWindow(timeWindow).build();
|
Service service = Service.Builder.newInstance("s")
|
||||||
|
.setLocation(TestUtils.loc("servLoc",Coordinate.newInstance(0, 10))).setTimeWindow(timeWindow).build();
|
||||||
Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setStartLocationId("vehLoc").setStartLocationCoordinate(Coordinate.newInstance(0, 0))
|
Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setStartLocationId("vehLoc").setStartLocationCoordinate(Coordinate.newInstance(0, 0))
|
||||||
.setType(VehicleTypeImpl.Builder.newInstance("vType").build()).build();
|
.setType(VehicleTypeImpl.Builder.newInstance("vType").build()).build();
|
||||||
|
|
||||||
|
|
@ -98,8 +100,8 @@ public class TestDepartureTimeOpt {
|
||||||
@Test
|
@Test
|
||||||
public void whenSettingOneCustWithTWAndDepTimeChoice_totalCostsShouldBe50(){
|
public void whenSettingOneCustWithTWAndDepTimeChoice_totalCostsShouldBe50(){
|
||||||
TimeWindow timeWindow = TimeWindow.newInstance(40, 45);
|
TimeWindow timeWindow = TimeWindow.newInstance(40, 45);
|
||||||
Service service = Service.Builder.newInstance("s").setLocationId("servLoc").setCoord(Coordinate.newInstance(0, 10)).setTimeWindow(timeWindow).build();
|
Service service = Service.Builder.newInstance("s").setLocation(TestUtils.loc("servLoc",Coordinate.newInstance(0, 10))).setTimeWindow(timeWindow).build();
|
||||||
Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setStartLocationId("vehLoc").setStartLocationCoordinate(Coordinate.newInstance(0, 0))
|
Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(TestUtils.loc("vehLoc",Coordinate.newInstance(0, 0)))
|
||||||
.setType(VehicleTypeImpl.Builder.newInstance("vType").build()).build();
|
.setType(VehicleTypeImpl.Builder.newInstance("vType").build()).build();
|
||||||
|
|
||||||
Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
|
@ -126,8 +128,8 @@ public class TestDepartureTimeOpt {
|
||||||
@Test
|
@Test
|
||||||
public void whenSettingOneCustWithTWAndDepTimeChoice_depTimeShouldBe0(){
|
public void whenSettingOneCustWithTWAndDepTimeChoice_depTimeShouldBe0(){
|
||||||
TimeWindow timeWindow = TimeWindow.newInstance(40, 45);
|
TimeWindow timeWindow = TimeWindow.newInstance(40, 45);
|
||||||
Service service = Service.Builder.newInstance("s").setLocationId("servLoc").setCoord(Coordinate.newInstance(0, 10)).setTimeWindow(timeWindow).build();
|
Service service = Service.Builder.newInstance("s").setLocation(TestUtils.loc("servLoc",Coordinate.newInstance(0, 10))).setTimeWindow(timeWindow).build();
|
||||||
Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setStartLocationId("vehLoc").setStartLocationCoordinate(Coordinate.newInstance(0, 0))
|
Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(TestUtils.loc("vehLoc",Coordinate.newInstance(0, 0)))
|
||||||
.setType(VehicleTypeImpl.Builder.newInstance("vType").build()).build();
|
.setType(VehicleTypeImpl.Builder.newInstance("vType").build()).build();
|
||||||
|
|
||||||
Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
|
@ -154,12 +156,12 @@ public class TestDepartureTimeOpt {
|
||||||
@Test
|
@Test
|
||||||
public void whenSettingTwoCustWithTWAndDepTimeChoice_totalCostsShouldBe50(){
|
public void whenSettingTwoCustWithTWAndDepTimeChoice_totalCostsShouldBe50(){
|
||||||
TimeWindow timeWindow = TimeWindow.newInstance(40, 45);
|
TimeWindow timeWindow = TimeWindow.newInstance(40, 45);
|
||||||
Service service = Service.Builder.newInstance("s").setLocationId("servLoc").setCoord(Coordinate.newInstance(0, 10)).setTimeWindow(timeWindow).build();
|
Service service = Service.Builder.newInstance("s").setLocation(TestUtils.loc("servLoc",Coordinate.newInstance(0, 10))).setTimeWindow(timeWindow).build();
|
||||||
|
|
||||||
Service service2 = Service.Builder.newInstance("s2").setLocationId("servLoc2").setCoord(Coordinate.newInstance(0, 20)).
|
Service service2 = Service.Builder.newInstance("s2").setLocation(TestUtils.loc("servLoc2",Coordinate.newInstance(0, 20))).
|
||||||
setTimeWindow(TimeWindow.newInstance(30, 40)).build();
|
setTimeWindow(TimeWindow.newInstance(30, 40)).build();
|
||||||
|
|
||||||
Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setStartLocationId("vehLoc").setStartLocationCoordinate(Coordinate.newInstance(0, 0))
|
Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(TestUtils.loc("vehLoc",Coordinate.newInstance(0, 0)))
|
||||||
.setType(VehicleTypeImpl.Builder.newInstance("vType").build()).build();
|
.setType(VehicleTypeImpl.Builder.newInstance("vType").build()).build();
|
||||||
|
|
||||||
Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
|
@ -186,12 +188,12 @@ public class TestDepartureTimeOpt {
|
||||||
@Test
|
@Test
|
||||||
public void whenSettingTwoCustWithTWAndDepTimeChoice_depTimeShouldBe10(){
|
public void whenSettingTwoCustWithTWAndDepTimeChoice_depTimeShouldBe10(){
|
||||||
TimeWindow timeWindow = TimeWindow.newInstance(40, 45);
|
TimeWindow timeWindow = TimeWindow.newInstance(40, 45);
|
||||||
Service service = Service.Builder.newInstance("s").setLocationId("servLoc").setCoord(Coordinate.newInstance(0, 10)).setTimeWindow(timeWindow).build();
|
Service service = Service.Builder.newInstance("s").setLocation(TestUtils.loc("servLoc",Coordinate.newInstance(0, 10))).setTimeWindow(timeWindow).build();
|
||||||
|
|
||||||
Service service2 = Service.Builder.newInstance("s2").setLocationId("servLoc2").setCoord(Coordinate.newInstance(0, 20)).
|
Service service2 = Service.Builder.newInstance("s2").setLocation(TestUtils.loc("servLoc2",Coordinate.newInstance(0, 20))).
|
||||||
setTimeWindow(TimeWindow.newInstance(30, 40)).build();
|
setTimeWindow(TimeWindow.newInstance(30, 40)).build();
|
||||||
|
|
||||||
Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setStartLocationId("vehLoc").setStartLocationCoordinate(Coordinate.newInstance(0, 0))
|
Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(TestUtils.loc("vehLoc",Coordinate.newInstance(0, 0)))
|
||||||
.setType(VehicleTypeImpl.Builder.newInstance("vType").build()).build();
|
.setType(VehicleTypeImpl.Builder.newInstance("vType").build()).build();
|
||||||
|
|
||||||
Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@
|
||||||
package jsprit.core.algorithm.recreate;
|
package jsprit.core.algorithm.recreate;
|
||||||
|
|
||||||
import jsprit.core.algorithm.state.StateManager;
|
import jsprit.core.algorithm.state.StateManager;
|
||||||
|
import jsprit.core.problem.Location;
|
||||||
import jsprit.core.problem.VehicleRoutingProblem;
|
import jsprit.core.problem.VehicleRoutingProblem;
|
||||||
import jsprit.core.problem.constraint.ConstraintManager;
|
import jsprit.core.problem.constraint.ConstraintManager;
|
||||||
import jsprit.core.problem.job.Delivery;
|
import jsprit.core.problem.job.Delivery;
|
||||||
|
|
@ -50,7 +51,7 @@ public class TestMixedServiceAndShipmentsProblemOnRouteLevel {
|
||||||
* get a vehicle-builder and build a vehicle located at (10,10) with type "vehicleType"
|
* get a vehicle-builder and build a vehicle located at (10,10) with type "vehicleType"
|
||||||
*/
|
*/
|
||||||
Builder vehicleBuilder = VehicleImpl.Builder.newInstance("vehicle");
|
Builder vehicleBuilder = VehicleImpl.Builder.newInstance("vehicle");
|
||||||
vehicleBuilder.setStartLocationCoordinate(Coordinate.newInstance(10, 10));
|
vehicleBuilder.setStartLocation(Location.newInstance(10, 10));
|
||||||
vehicleBuilder.setType(vehicleType);
|
vehicleBuilder.setType(vehicleType);
|
||||||
VehicleImpl vehicle = vehicleBuilder.build();
|
VehicleImpl vehicle = vehicleBuilder.build();
|
||||||
|
|
||||||
|
|
@ -115,7 +116,7 @@ public class TestMixedServiceAndShipmentsProblemOnRouteLevel {
|
||||||
* get a vehicle-builder and build a vehicle located at (10,10) with type "vehicleType"
|
* get a vehicle-builder and build a vehicle located at (10,10) with type "vehicleType"
|
||||||
*/
|
*/
|
||||||
Builder vehicleBuilder = VehicleImpl.Builder.newInstance("vehicle");
|
Builder vehicleBuilder = VehicleImpl.Builder.newInstance("vehicle");
|
||||||
vehicleBuilder.setStartLocationCoordinate(Coordinate.newInstance(10, 10));
|
vehicleBuilder.setStartLocation(Location.newInstance(10, 10));
|
||||||
vehicleBuilder.setType(vehicleType);
|
vehicleBuilder.setType(vehicleType);
|
||||||
VehicleImpl vehicle = vehicleBuilder.build();
|
VehicleImpl vehicle = vehicleBuilder.build();
|
||||||
|
|
||||||
|
|
@ -127,10 +128,10 @@ public class TestMixedServiceAndShipmentsProblemOnRouteLevel {
|
||||||
* 3: (16,8)
|
* 3: (16,8)
|
||||||
* 4: (16,12)
|
* 4: (16,12)
|
||||||
*/
|
*/
|
||||||
Delivery delivery1 = (Delivery) Delivery.Builder.newInstance("5").addSizeDimension(0, 1).setCoord(Coordinate.newInstance(4, 8)).build();
|
Delivery delivery1 = (Delivery) Delivery.Builder.newInstance("5").addSizeDimension(0, 1).setLocation(Location.newInstance(4, 8)).build();
|
||||||
Delivery delivery2 = (Delivery) Delivery.Builder.newInstance("6").addSizeDimension(0, 1).setCoord(Coordinate.newInstance(4, 12)).build();
|
Delivery delivery2 = (Delivery) Delivery.Builder.newInstance("6").addSizeDimension(0, 1).setLocation(Location.newInstance(4, 12)).build();
|
||||||
Delivery delivery3 = (Delivery) Delivery.Builder.newInstance("7").addSizeDimension(0, 1).setCoord(Coordinate.newInstance(16, 8)).build();
|
Delivery delivery3 = (Delivery) Delivery.Builder.newInstance("7").addSizeDimension(0, 1).setLocation(Location.newInstance(16, 8)).build();
|
||||||
Delivery delivery4 = (Delivery) Delivery.Builder.newInstance("8").addSizeDimension(0, 1).setCoord(Coordinate.newInstance(16, 12)).build();
|
Delivery delivery4 = (Delivery) Delivery.Builder.newInstance("8").addSizeDimension(0, 1).setLocation(Location.newInstance(16, 12)).build();
|
||||||
|
|
||||||
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
vrpBuilder.addVehicle(vehicle)
|
vrpBuilder.addVehicle(vehicle)
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ import jsprit.core.algorithm.state.StateManager;
|
||||||
import jsprit.core.algorithm.state.UpdateVariableCosts;
|
import jsprit.core.algorithm.state.UpdateVariableCosts;
|
||||||
import jsprit.core.problem.AbstractActivity;
|
import jsprit.core.problem.AbstractActivity;
|
||||||
import jsprit.core.problem.JobActivityFactory;
|
import jsprit.core.problem.JobActivityFactory;
|
||||||
|
import jsprit.core.problem.Location;
|
||||||
import jsprit.core.problem.VehicleRoutingProblem;
|
import jsprit.core.problem.VehicleRoutingProblem;
|
||||||
import jsprit.core.problem.cost.VehicleRoutingActivityCosts;
|
import jsprit.core.problem.cost.VehicleRoutingActivityCosts;
|
||||||
import jsprit.core.problem.cost.VehicleRoutingTransportCosts;
|
import jsprit.core.problem.cost.VehicleRoutingTransportCosts;
|
||||||
|
|
@ -73,12 +74,12 @@ public class TestRouteLevelActivityInsertionCostEstimator {
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
Service s1 = Service.Builder.newInstance("s1").setLocationId("10,0").setTimeWindow(TimeWindow.newInstance(10.,10.)).build();
|
Service s1 = Service.Builder.newInstance("s1").setLocation(Location.newInstance("10,0")).setTimeWindow(TimeWindow.newInstance(10., 10.)).build();
|
||||||
Service s2 = Service.Builder.newInstance("s2").setLocationId("20,0").setTimeWindow(TimeWindow.newInstance(20.,20.)).build();
|
Service s2 = Service.Builder.newInstance("s2").setLocation(Location.newInstance("20,0")).setTimeWindow(TimeWindow.newInstance(20.,20.)).build();
|
||||||
Service s3 = Service.Builder.newInstance("s3").setLocationId("30,0").setTimeWindow(TimeWindow.newInstance(30.,30.)).build();
|
Service s3 = Service.Builder.newInstance("s3").setLocation(Location.newInstance("30,0")).setTimeWindow(TimeWindow.newInstance(30.,30.)).build();
|
||||||
|
|
||||||
VehicleType type = VehicleTypeImpl.Builder.newInstance("type").build();
|
VehicleType type = VehicleTypeImpl.Builder.newInstance("type").build();
|
||||||
Vehicle vehicle = VehicleImpl.Builder.newInstance("vehicle").setStartLocationId("0,0").setType(type).build();
|
Vehicle vehicle = VehicleImpl.Builder.newInstance("vehicle").setStartLocation(Location.newInstance("0,0")).setType(type).build();
|
||||||
|
|
||||||
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
final VehicleRoutingProblem vrp = vrpBuilder.addJob(s1).addJob(s2).addJob(s3).build();
|
final VehicleRoutingProblem vrp = vrpBuilder.addJob(s1).addJob(s2).addJob(s3).build();
|
||||||
|
|
@ -98,7 +99,7 @@ public class TestRouteLevelActivityInsertionCostEstimator {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenNewActInBetweenFirstAndSecond_and_forwardLookingIs0_itShouldReturnCorrectCosts(){
|
public void whenNewActInBetweenFirstAndSecond_and_forwardLookingIs0_itShouldReturnCorrectCosts(){
|
||||||
Service s4 = Service.Builder.newInstance("s4").setLocationId("5,0").build();
|
Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance("5,0")).build();
|
||||||
PickupActivity pickupService = new PickupService(s4);
|
PickupActivity pickupService = new PickupService(s4);
|
||||||
JobInsertionContext context = new JobInsertionContext(route,s4,route.getVehicle(),route.getDriver(),0.);
|
JobInsertionContext context = new JobInsertionContext(route,s4,route.getVehicle(),route.getDriver(),0.);
|
||||||
RouteLevelActivityInsertionCostsEstimator estimator = new RouteLevelActivityInsertionCostsEstimator(routingCosts,activityCosts,stateManager);
|
RouteLevelActivityInsertionCostsEstimator estimator = new RouteLevelActivityInsertionCostsEstimator(routingCosts,activityCosts,stateManager);
|
||||||
|
|
@ -109,7 +110,7 @@ public class TestRouteLevelActivityInsertionCostEstimator {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenNewActWithTWInBetweenFirstAndSecond_and_forwardLookingIs0_itShouldReturnCorrectCosts(){
|
public void whenNewActWithTWInBetweenFirstAndSecond_and_forwardLookingIs0_itShouldReturnCorrectCosts(){
|
||||||
Service s4 = Service.Builder.newInstance("s4").setLocationId("5,0").setTimeWindow(TimeWindow.newInstance(5.,5.)).build();
|
Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance("5,0")).setTimeWindow(TimeWindow.newInstance(5.,5.)).build();
|
||||||
PickupActivity pickupService = new PickupService(s4);
|
PickupActivity pickupService = new PickupService(s4);
|
||||||
JobInsertionContext context = new JobInsertionContext(route,s4,route.getVehicle(),route.getDriver(),0.);
|
JobInsertionContext context = new JobInsertionContext(route,s4,route.getVehicle(),route.getDriver(),0.);
|
||||||
RouteLevelActivityInsertionCostsEstimator estimator = new RouteLevelActivityInsertionCostsEstimator(routingCosts,activityCosts,stateManager);
|
RouteLevelActivityInsertionCostsEstimator estimator = new RouteLevelActivityInsertionCostsEstimator(routingCosts,activityCosts,stateManager);
|
||||||
|
|
@ -120,7 +121,7 @@ public class TestRouteLevelActivityInsertionCostEstimator {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenNewActWithTWAndServiceTimeInBetweenFirstAndSecond_and_forwardLookingIs0_itShouldReturnCorrectCosts(){
|
public void whenNewActWithTWAndServiceTimeInBetweenFirstAndSecond_and_forwardLookingIs0_itShouldReturnCorrectCosts(){
|
||||||
Service s4 = Service.Builder.newInstance("s4").setLocationId("5,0").setServiceTime(10.).setTimeWindow(TimeWindow.newInstance(5.,5.)).build();
|
Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance("5,0")).setServiceTime(10.).setTimeWindow(TimeWindow.newInstance(5.,5.)).build();
|
||||||
PickupActivity pickupService = new PickupService(s4);
|
PickupActivity pickupService = new PickupService(s4);
|
||||||
JobInsertionContext context = new JobInsertionContext(route,s4,route.getVehicle(),route.getDriver(),0.);
|
JobInsertionContext context = new JobInsertionContext(route,s4,route.getVehicle(),route.getDriver(),0.);
|
||||||
RouteLevelActivityInsertionCostsEstimator estimator = new RouteLevelActivityInsertionCostsEstimator(routingCosts,activityCosts,stateManager);
|
RouteLevelActivityInsertionCostsEstimator estimator = new RouteLevelActivityInsertionCostsEstimator(routingCosts,activityCosts,stateManager);
|
||||||
|
|
@ -133,7 +134,7 @@ public class TestRouteLevelActivityInsertionCostEstimator {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenNewActWithTWAndServiceTimeInBetweenFirstAndSecond_and_forwardLookingIs3_itShouldReturnCorrectCosts(){
|
public void whenNewActWithTWAndServiceTimeInBetweenFirstAndSecond_and_forwardLookingIs3_itShouldReturnCorrectCosts(){
|
||||||
Service s4 = Service.Builder.newInstance("s4").setLocationId("5,0").setServiceTime(10.).setTimeWindow(TimeWindow.newInstance(5.,5.)).build();
|
Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance("5,0")).setServiceTime(10.).setTimeWindow(TimeWindow.newInstance(5.,5.)).build();
|
||||||
PickupActivity pickupService = new PickupService(s4);
|
PickupActivity pickupService = new PickupService(s4);
|
||||||
JobInsertionContext context = new JobInsertionContext(route,s4,route.getVehicle(),route.getDriver(),0.);
|
JobInsertionContext context = new JobInsertionContext(route,s4,route.getVehicle(),route.getDriver(),0.);
|
||||||
RouteLevelActivityInsertionCostsEstimator estimator = new RouteLevelActivityInsertionCostsEstimator(routingCosts,activityCosts,stateManager);
|
RouteLevelActivityInsertionCostsEstimator estimator = new RouteLevelActivityInsertionCostsEstimator(routingCosts,activityCosts,stateManager);
|
||||||
|
|
@ -146,7 +147,7 @@ public class TestRouteLevelActivityInsertionCostEstimator {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenNewActInBetweenSecondAndThird_and_forwardLookingIs0_itShouldReturnCorrectCosts(){
|
public void whenNewActInBetweenSecondAndThird_and_forwardLookingIs0_itShouldReturnCorrectCosts(){
|
||||||
Service s4 = Service.Builder.newInstance("s4").setLocationId("5,0").build();
|
Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance("5,0")).build();
|
||||||
PickupActivity pickupService = new PickupService(s4);
|
PickupActivity pickupService = new PickupService(s4);
|
||||||
JobInsertionContext context = new JobInsertionContext(route,s4,route.getVehicle(),route.getDriver(),0.);
|
JobInsertionContext context = new JobInsertionContext(route,s4,route.getVehicle(),route.getDriver(),0.);
|
||||||
RouteLevelActivityInsertionCostsEstimator estimator = new RouteLevelActivityInsertionCostsEstimator(routingCosts,activityCosts,stateManager);
|
RouteLevelActivityInsertionCostsEstimator estimator = new RouteLevelActivityInsertionCostsEstimator(routingCosts,activityCosts,stateManager);
|
||||||
|
|
@ -160,7 +161,7 @@ public class TestRouteLevelActivityInsertionCostEstimator {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenNewActInBetweenSecondAndThird_and_forwardLookingIs3_itShouldReturnCorrectCosts(){
|
public void whenNewActInBetweenSecondAndThird_and_forwardLookingIs3_itShouldReturnCorrectCosts(){
|
||||||
Service s4 = Service.Builder.newInstance("s4").setLocationId("5,0").build();
|
Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance("5,0")).build();
|
||||||
PickupActivity pickupService = new PickupService(s4);
|
PickupActivity pickupService = new PickupService(s4);
|
||||||
JobInsertionContext context = new JobInsertionContext(route,s4,route.getVehicle(),route.getDriver(),0.);
|
JobInsertionContext context = new JobInsertionContext(route,s4,route.getVehicle(),route.getDriver(),0.);
|
||||||
RouteLevelActivityInsertionCostsEstimator estimator = new RouteLevelActivityInsertionCostsEstimator(routingCosts,activityCosts,stateManager);
|
RouteLevelActivityInsertionCostsEstimator estimator = new RouteLevelActivityInsertionCostsEstimator(routingCosts,activityCosts,stateManager);
|
||||||
|
|
@ -174,7 +175,7 @@ public class TestRouteLevelActivityInsertionCostEstimator {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenNewActWithTWInBetweenSecondAndThird_and_forwardLookingIs3_itShouldReturnCorrectCosts(){
|
public void whenNewActWithTWInBetweenSecondAndThird_and_forwardLookingIs3_itShouldReturnCorrectCosts(){
|
||||||
Service s4 = Service.Builder.newInstance("s4").setLocationId("5,0").setTimeWindow(TimeWindow.newInstance(5.,5.)).build();
|
Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance("5,0")).setTimeWindow(TimeWindow.newInstance(5.,5.)).build();
|
||||||
PickupActivity pickupService = new PickupService(s4);
|
PickupActivity pickupService = new PickupService(s4);
|
||||||
JobInsertionContext context = new JobInsertionContext(route,s4,route.getVehicle(),route.getDriver(),0.);
|
JobInsertionContext context = new JobInsertionContext(route,s4,route.getVehicle(),route.getDriver(),0.);
|
||||||
RouteLevelActivityInsertionCostsEstimator estimator = new RouteLevelActivityInsertionCostsEstimator(routingCosts,activityCosts,stateManager);
|
RouteLevelActivityInsertionCostsEstimator estimator = new RouteLevelActivityInsertionCostsEstimator(routingCosts,activityCosts,stateManager);
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ import jsprit.core.algorithm.state.StateManager;
|
||||||
import jsprit.core.algorithm.state.UpdateVariableCosts;
|
import jsprit.core.algorithm.state.UpdateVariableCosts;
|
||||||
import jsprit.core.problem.AbstractActivity;
|
import jsprit.core.problem.AbstractActivity;
|
||||||
import jsprit.core.problem.JobActivityFactory;
|
import jsprit.core.problem.JobActivityFactory;
|
||||||
|
import jsprit.core.problem.Location;
|
||||||
import jsprit.core.problem.VehicleRoutingProblem;
|
import jsprit.core.problem.VehicleRoutingProblem;
|
||||||
import jsprit.core.problem.constraint.ConstraintManager;
|
import jsprit.core.problem.constraint.ConstraintManager;
|
||||||
import jsprit.core.problem.cost.VehicleRoutingActivityCosts;
|
import jsprit.core.problem.cost.VehicleRoutingActivityCosts;
|
||||||
|
|
@ -84,13 +85,13 @@ public class TestRouteLevelServiceInsertionCostEstimator {
|
||||||
};
|
};
|
||||||
vrpBuilder.setActivityCosts(activityCosts);
|
vrpBuilder.setActivityCosts(activityCosts);
|
||||||
|
|
||||||
Service s1 = Service.Builder.newInstance("s1").setLocationId("10,0").setTimeWindow(TimeWindow.newInstance(10.,10.)).build();
|
Service s1 = Service.Builder.newInstance("s1").setLocation(Location.newInstance("10,0")).setTimeWindow(TimeWindow.newInstance(10., 10.)).build();
|
||||||
Service s2 = Service.Builder.newInstance("s2").setLocationId("20,0").setTimeWindow(TimeWindow.newInstance(20.,20.)).build();
|
Service s2 = Service.Builder.newInstance("s2").setLocation(Location.newInstance("20,0")).setTimeWindow(TimeWindow.newInstance(20.,20.)).build();
|
||||||
Service s3 = Service.Builder.newInstance("s3").setLocationId("30,0").setTimeWindow(TimeWindow.newInstance(30.,30.)).build();
|
Service s3 = Service.Builder.newInstance("s3").setLocation(Location.newInstance("30,0")).setTimeWindow(TimeWindow.newInstance(30.,30.)).build();
|
||||||
vrpBuilder.addJob(s1).addJob(s2).addJob(s3);
|
vrpBuilder.addJob(s1).addJob(s2).addJob(s3);
|
||||||
|
|
||||||
VehicleType type = VehicleTypeImpl.Builder.newInstance("type").build();
|
VehicleType type = VehicleTypeImpl.Builder.newInstance("type").build();
|
||||||
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("vehicle").setStartLocationId("0,0").setType(type).build();
|
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("vehicle").setStartLocation(Location.newInstance("0,0")).setType(type).build();
|
||||||
vrpBuilder.addVehicle(vehicle);
|
vrpBuilder.addVehicle(vehicle);
|
||||||
vrp = vrpBuilder.build();
|
vrp = vrpBuilder.build();
|
||||||
|
|
||||||
|
|
@ -110,7 +111,7 @@ public class TestRouteLevelServiceInsertionCostEstimator {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenNewServiceNeedToBeInserted_itShouldReturnCorrectInsertionCosts(){
|
public void whenNewServiceNeedToBeInserted_itShouldReturnCorrectInsertionCosts(){
|
||||||
final Service s4 = Service.Builder.newInstance("s4").setLocationId("5,0").setTimeWindow(TimeWindow.newInstance(5.,5.)).build();
|
final Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance("5,0")).setTimeWindow(TimeWindow.newInstance(5.,5.)).build();
|
||||||
RouteLevelActivityInsertionCostsEstimator estimator = new RouteLevelActivityInsertionCostsEstimator(routingCosts,activityCosts,stateManager);
|
RouteLevelActivityInsertionCostsEstimator estimator = new RouteLevelActivityInsertionCostsEstimator(routingCosts,activityCosts,stateManager);
|
||||||
estimator.setForwardLooking(0);
|
estimator.setForwardLooking(0);
|
||||||
ServiceInsertionOnRouteLevelCalculator routeInserter = new ServiceInsertionOnRouteLevelCalculator(routingCosts,
|
ServiceInsertionOnRouteLevelCalculator routeInserter = new ServiceInsertionOnRouteLevelCalculator(routingCosts,
|
||||||
|
|
@ -132,7 +133,7 @@ public class TestRouteLevelServiceInsertionCostEstimator {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenNewServiceNeedToBeInserted_itShouldReturnCorrectInsertionIndex(){
|
public void whenNewServiceNeedToBeInserted_itShouldReturnCorrectInsertionIndex(){
|
||||||
final Service s4 = Service.Builder.newInstance("s4").setLocationId("5,0").setTimeWindow(TimeWindow.newInstance(5.,5.)).build();
|
final Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance("5,0")).setTimeWindow(TimeWindow.newInstance(5.,5.)).build();
|
||||||
RouteLevelActivityInsertionCostsEstimator estimator = new RouteLevelActivityInsertionCostsEstimator(routingCosts,activityCosts,stateManager);
|
RouteLevelActivityInsertionCostsEstimator estimator = new RouteLevelActivityInsertionCostsEstimator(routingCosts,activityCosts,stateManager);
|
||||||
estimator.setForwardLooking(0);
|
estimator.setForwardLooking(0);
|
||||||
final ServiceInsertionOnRouteLevelCalculator routeInserter = new ServiceInsertionOnRouteLevelCalculator(routingCosts,
|
final ServiceInsertionOnRouteLevelCalculator routeInserter = new ServiceInsertionOnRouteLevelCalculator(routingCosts,
|
||||||
|
|
@ -154,7 +155,7 @@ public class TestRouteLevelServiceInsertionCostEstimator {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenNewServiceWithServiceTimeNeedToBeInserted_itShouldReturnCorrectInsertionData(){
|
public void whenNewServiceWithServiceTimeNeedToBeInserted_itShouldReturnCorrectInsertionData(){
|
||||||
final Service s4 = Service.Builder.newInstance("s4").setServiceTime(10.).setLocationId("5,0").setTimeWindow(TimeWindow.newInstance(5.,5.)).build();
|
final Service s4 = Service.Builder.newInstance("s4").setServiceTime(10.).setLocation(Location.newInstance("5,0")).setTimeWindow(TimeWindow.newInstance(5.,5.)).build();
|
||||||
RouteLevelActivityInsertionCostsEstimator estimator = new RouteLevelActivityInsertionCostsEstimator(routingCosts,activityCosts,stateManager);
|
RouteLevelActivityInsertionCostsEstimator estimator = new RouteLevelActivityInsertionCostsEstimator(routingCosts,activityCosts,stateManager);
|
||||||
estimator.setForwardLooking(0);
|
estimator.setForwardLooking(0);
|
||||||
ServiceInsertionOnRouteLevelCalculator routeInserter = new ServiceInsertionOnRouteLevelCalculator(routingCosts,
|
ServiceInsertionOnRouteLevelCalculator routeInserter = new ServiceInsertionOnRouteLevelCalculator(routingCosts,
|
||||||
|
|
@ -178,7 +179,7 @@ public class TestRouteLevelServiceInsertionCostEstimator {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenNewServiceWithServiceTimeNeedToBeInsertedAndRouteIsEmpty_itShouldReturnCorrectInsertionData(){
|
public void whenNewServiceWithServiceTimeNeedToBeInsertedAndRouteIsEmpty_itShouldReturnCorrectInsertionData(){
|
||||||
final Service s4 = Service.Builder.newInstance("s4").setServiceTime(10.).setLocationId("5,0").setTimeWindow(TimeWindow.newInstance(5.,5.)).build();
|
final Service s4 = Service.Builder.newInstance("s4").setServiceTime(10.).setLocation(Location.newInstance("5,0")).setTimeWindow(TimeWindow.newInstance(5.,5.)).build();
|
||||||
// PickupActivity pickupService = new PickupService(s4);
|
// PickupActivity pickupService = new PickupService(s4);
|
||||||
VehicleRoute emptyroute = VehicleRoute.emptyRoute();
|
VehicleRoute emptyroute = VehicleRoute.emptyRoute();
|
||||||
RouteLevelActivityInsertionCostsEstimator estimator = new RouteLevelActivityInsertionCostsEstimator(routingCosts,activityCosts,stateManager);
|
RouteLevelActivityInsertionCostsEstimator estimator = new RouteLevelActivityInsertionCostsEstimator(routingCosts,activityCosts,stateManager);
|
||||||
|
|
@ -203,7 +204,7 @@ public class TestRouteLevelServiceInsertionCostEstimator {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenNewServiceWithServiceTimeAndTWNeedToBeInsertedAndRouteIsEmpty_itShouldReturnCorrectInsertionData(){
|
public void whenNewServiceWithServiceTimeAndTWNeedToBeInsertedAndRouteIsEmpty_itShouldReturnCorrectInsertionData(){
|
||||||
final Service s4 = Service.Builder.newInstance("s4").setServiceTime(10.).setLocationId("5,0").setTimeWindow(TimeWindow.newInstance(3.,3.)).build();
|
final Service s4 = Service.Builder.newInstance("s4").setServiceTime(10.).setLocation(Location.newInstance("5,0")).setTimeWindow(TimeWindow.newInstance(3.,3.)).build();
|
||||||
// PickupActivity pickupService = new PickupService(s4);
|
// PickupActivity pickupService = new PickupService(s4);
|
||||||
VehicleRoute emptyroute = VehicleRoute.emptyRoute();
|
VehicleRoute emptyroute = VehicleRoute.emptyRoute();
|
||||||
RouteLevelActivityInsertionCostsEstimator estimator = new RouteLevelActivityInsertionCostsEstimator(routingCosts,activityCosts,stateManager);
|
RouteLevelActivityInsertionCostsEstimator estimator = new RouteLevelActivityInsertionCostsEstimator(routingCosts,activityCosts,stateManager);
|
||||||
|
|
|
||||||
|
|
@ -20,10 +20,10 @@ package jsprit.core.algorithm.ruin;
|
||||||
|
|
||||||
import jsprit.core.algorithm.ruin.distance.EuclideanServiceDistance;
|
import jsprit.core.algorithm.ruin.distance.EuclideanServiceDistance;
|
||||||
import jsprit.core.algorithm.ruin.distance.JobDistance;
|
import jsprit.core.algorithm.ruin.distance.JobDistance;
|
||||||
|
import jsprit.core.problem.Location;
|
||||||
import jsprit.core.problem.VehicleRoutingProblem;
|
import jsprit.core.problem.VehicleRoutingProblem;
|
||||||
import jsprit.core.problem.job.Job;
|
import jsprit.core.problem.job.Job;
|
||||||
import jsprit.core.problem.job.Service;
|
import jsprit.core.problem.job.Service;
|
||||||
import jsprit.core.util.Coordinate;
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
|
|
@ -52,14 +52,14 @@ public class JobNeighborhoodsImplTest {
|
||||||
@Before
|
@Before
|
||||||
public void doBefore(){
|
public void doBefore(){
|
||||||
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
target = Service.Builder.newInstance("s1").addSizeDimension(0, 1).setCoord(Coordinate.newInstance(0, 5)).build();
|
target = Service.Builder.newInstance("s1").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 5)).build();
|
||||||
s2 = Service.Builder.newInstance("s2").addSizeDimension(0, 1).setCoord(Coordinate.newInstance(0, 4)).build();
|
s2 = Service.Builder.newInstance("s2").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 4)).build();
|
||||||
s3 = Service.Builder.newInstance("s3").addSizeDimension(0, 1).setCoord(Coordinate.newInstance(0, 3)).build();
|
s3 = Service.Builder.newInstance("s3").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 3)).build();
|
||||||
s4 = Service.Builder.newInstance("s4").addSizeDimension(0, 1).setCoord(Coordinate.newInstance(0, 2)).build();
|
s4 = Service.Builder.newInstance("s4").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 2)).build();
|
||||||
|
|
||||||
s5 = Service.Builder.newInstance("s5").addSizeDimension(0, 1).setCoord(Coordinate.newInstance(0, 6)).build();
|
s5 = Service.Builder.newInstance("s5").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 6)).build();
|
||||||
s6 = Service.Builder.newInstance("s6").addSizeDimension(0, 1).setCoord(Coordinate.newInstance(0, 7)).build();
|
s6 = Service.Builder.newInstance("s6").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 7)).build();
|
||||||
s7 = Service.Builder.newInstance("s7").addSizeDimension(0, 1).setCoord(Coordinate.newInstance(0, 8)).build();
|
s7 = Service.Builder.newInstance("s7").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 8)).build();
|
||||||
|
|
||||||
vrp = builder.addJob(target).addJob(s2).addJob(s3).addJob(s4).addJob(s5).addJob(s6).addJob(s7).build();
|
vrp = builder.addJob(target).addJob(s2).addJob(s3).addJob(s4).addJob(s5).addJob(s6).addJob(s7).build();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -20,10 +20,10 @@ package jsprit.core.algorithm.ruin;
|
||||||
|
|
||||||
import jsprit.core.algorithm.ruin.distance.EuclideanServiceDistance;
|
import jsprit.core.algorithm.ruin.distance.EuclideanServiceDistance;
|
||||||
import jsprit.core.algorithm.ruin.distance.JobDistance;
|
import jsprit.core.algorithm.ruin.distance.JobDistance;
|
||||||
|
import jsprit.core.problem.Location;
|
||||||
import jsprit.core.problem.VehicleRoutingProblem;
|
import jsprit.core.problem.VehicleRoutingProblem;
|
||||||
import jsprit.core.problem.job.Job;
|
import jsprit.core.problem.job.Job;
|
||||||
import jsprit.core.problem.job.Service;
|
import jsprit.core.problem.job.Service;
|
||||||
import jsprit.core.util.Coordinate;
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
|
|
@ -52,14 +52,14 @@ public class JobNeighborhoodsWithCapRestrictionImplTest {
|
||||||
@Before
|
@Before
|
||||||
public void doBefore(){
|
public void doBefore(){
|
||||||
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
target = Service.Builder.newInstance("s1").addSizeDimension(0, 1).setCoord(Coordinate.newInstance(0, 5)).build();
|
target = Service.Builder.newInstance("s1").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 5)).build();
|
||||||
s2 = Service.Builder.newInstance("s2").addSizeDimension(0, 1).setCoord(Coordinate.newInstance(0, 4)).build();
|
s2 = Service.Builder.newInstance("s2").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 4)).build();
|
||||||
s3 = Service.Builder.newInstance("s3").addSizeDimension(0, 1).setCoord(Coordinate.newInstance(0, 3)).build();
|
s3 = Service.Builder.newInstance("s3").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 3)).build();
|
||||||
s4 = Service.Builder.newInstance("s4").addSizeDimension(0, 1).setCoord(Coordinate.newInstance(0, 2)).build();
|
s4 = Service.Builder.newInstance("s4").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 2)).build();
|
||||||
|
|
||||||
s5 = Service.Builder.newInstance("s5").addSizeDimension(0, 1).setCoord(Coordinate.newInstance(0, 6)).build();
|
s5 = Service.Builder.newInstance("s5").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 6)).build();
|
||||||
s6 = Service.Builder.newInstance("s6").addSizeDimension(0, 1).setCoord(Coordinate.newInstance(0, 7)).build();
|
s6 = Service.Builder.newInstance("s6").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 7)).build();
|
||||||
s7 = Service.Builder.newInstance("s7").addSizeDimension(0, 1).setCoord(Coordinate.newInstance(0, 8)).build();
|
s7 = Service.Builder.newInstance("s7").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 8)).build();
|
||||||
|
|
||||||
vrp = builder.addJob(target).addJob(s2).addJob(s3).addJob(s4).addJob(s5).addJob(s6).addJob(s7).build();
|
vrp = builder.addJob(target).addJob(s2).addJob(s3).addJob(s4).addJob(s5).addJob(s6).addJob(s7).build();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -53,15 +53,15 @@ public class AverageJobDistanceTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void distanceOfTwoEqualShipmentsShouldBeSmallerThanAnyOtherDistance(){
|
public void distanceOfTwoEqualShipmentsShouldBeSmallerThanAnyOtherDistance(){
|
||||||
Shipment s1 = Shipment.Builder.newInstance("s1").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("0,0").build()).setDeliveryLocationId("10,10").build();
|
Shipment s1 = Shipment.Builder.newInstance("s1").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("0,0").build()).setDeliveryLocation(Location.newInstance("10,10")).build();
|
||||||
Shipment s2 = Shipment.Builder.newInstance("s2").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("0,0").build()).setDeliveryLocationId("10,10").build();
|
Shipment s2 = Shipment.Builder.newInstance("s2").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("0,0").build()).setDeliveryLocation(Location.newInstance("10,10")).build();
|
||||||
|
|
||||||
double dist = new AvgServiceAndShipmentDistance(routingCosts).getDistance(s1, s2);
|
double dist = new AvgServiceAndShipmentDistance(routingCosts).getDistance(s1, s2);
|
||||||
|
|
||||||
for(int i=0;i<10;i++){
|
for(int i=0;i<10;i++){
|
||||||
for(int j=0;j<10;j++){
|
for(int j=0;j<10;j++){
|
||||||
Shipment other1 = Shipment.Builder.newInstance("s1").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("0,0").build()).setDeliveryLocationId(i + "," + j).build();
|
Shipment other1 = Shipment.Builder.newInstance("s1").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("0,0").build()).setDeliveryLocation(Location.newInstance(i + "," + j)).build();
|
||||||
Shipment other2 = Shipment.Builder.newInstance("s2").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("0,0").build()).setDeliveryLocationId("10,10").build();
|
Shipment other2 = Shipment.Builder.newInstance("s2").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("0,0").build()).setDeliveryLocation(Location.newInstance("10,10")).build();
|
||||||
double dist2 = new AvgServiceAndShipmentDistance(routingCosts).getDistance(other1, other2);
|
double dist2 = new AvgServiceAndShipmentDistance(routingCosts).getDistance(other1, other2);
|
||||||
System.out.println("("+i+","+j+"), dist=" + dist + ", dist2=" + dist2);
|
System.out.println("("+i+","+j+"), dist=" + dist + ", dist2=" + dist2);
|
||||||
assertTrue(dist<=dist2+dist2*0.001);
|
assertTrue(dist<=dist2+dist2*0.001);
|
||||||
|
|
@ -73,8 +73,8 @@ public class AverageJobDistanceTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenServicesHaveSameLocation_distanceShouldBeZero(){
|
public void whenServicesHaveSameLocation_distanceShouldBeZero(){
|
||||||
Service s1 = Service.Builder.newInstance("s1").addSizeDimension(0, 1).setLocationId("10,0").build();
|
Service s1 = Service.Builder.newInstance("s1").addSizeDimension(0, 1).setLocation(Location.newInstance("10,0")).build();
|
||||||
Service s2 = Service.Builder.newInstance("s2").addSizeDimension(0, 1).setLocationId("10,0").build();
|
Service s2 = Service.Builder.newInstance("s2").addSizeDimension(0, 1).setLocation(Location.newInstance("10,0")).build();
|
||||||
|
|
||||||
double dist = new AvgServiceAndShipmentDistance(routingCosts).getDistance(s1, s2);
|
double dist = new AvgServiceAndShipmentDistance(routingCosts).getDistance(s1, s2);
|
||||||
assertEquals(0.0,dist,0.01);
|
assertEquals(0.0,dist,0.01);
|
||||||
|
|
|
||||||
|
|
@ -58,7 +58,7 @@ public class TestJobDistanceAvgCosts {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
AvgServiceDistance c = new AvgServiceDistance(costs);
|
AvgServiceDistance c = new AvgServiceDistance(costs);
|
||||||
c.getDistance(Service.Builder.newInstance("1").addSizeDimension(0, 1).setLocationId("foo").build(), Service.Builder.newInstance("2").addSizeDimension(0, 2).setLocationId("foo").build());
|
c.getDistance(Service.Builder.newInstance("1").addSizeDimension(0, 1).setLocation(Location.newInstance("foo")).build(), Service.Builder.newInstance("2").addSizeDimension(0, 2).setLocation(Location.newInstance("foo")).build());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expected=NullPointerException.class)
|
@Test(expected=NullPointerException.class)
|
||||||
|
|
@ -95,7 +95,7 @@ public class TestJobDistanceAvgCosts {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
AvgServiceDistance c = new AvgServiceDistance(costs);
|
AvgServiceDistance c = new AvgServiceDistance(costs);
|
||||||
c.getDistance(Service.Builder.newInstance("1").addSizeDimension(0, 1).setLocationId("loc").build(), Service.Builder.newInstance("2").addSizeDimension(0, 2).setLocationId("loc").build());
|
c.getDistance(Service.Builder.newInstance("1").addSizeDimension(0, 1).setLocation(Location.newInstance("loc")).build(), Service.Builder.newInstance("2").addSizeDimension(0, 2).setLocation(Location.newInstance("loc")).build());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,6 @@ import jsprit.core.problem.misc.JobInsertionContext;
|
||||||
import jsprit.core.problem.solution.route.activity.DeliverShipment;
|
import jsprit.core.problem.solution.route.activity.DeliverShipment;
|
||||||
import jsprit.core.problem.solution.route.activity.PickupService;
|
import jsprit.core.problem.solution.route.activity.PickupService;
|
||||||
import jsprit.core.problem.solution.route.activity.PickupShipment;
|
import jsprit.core.problem.solution.route.activity.PickupShipment;
|
||||||
import jsprit.core.problem.vehicle.Vehicle;
|
|
||||||
import jsprit.core.problem.vehicle.VehicleImpl;
|
import jsprit.core.problem.vehicle.VehicleImpl;
|
||||||
import jsprit.core.problem.vehicle.VehicleType;
|
import jsprit.core.problem.vehicle.VehicleType;
|
||||||
import jsprit.core.problem.vehicle.VehicleTypeImpl;
|
import jsprit.core.problem.vehicle.VehicleTypeImpl;
|
||||||
|
|
@ -39,7 +38,7 @@ import static org.junit.Assert.assertEquals;
|
||||||
|
|
||||||
public class HardPickupAndDeliveryShipmentActivityConstraintTest {
|
public class HardPickupAndDeliveryShipmentActivityConstraintTest {
|
||||||
|
|
||||||
Vehicle vehicle;
|
VehicleImpl vehicle;
|
||||||
|
|
||||||
StateManager stateManager;
|
StateManager stateManager;
|
||||||
|
|
||||||
|
|
@ -57,14 +56,14 @@ public class HardPickupAndDeliveryShipmentActivityConstraintTest {
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void doBefore(){
|
public void doBefore(){
|
||||||
s1 = Service.Builder.newInstance("s1").setLocationId("loc").build();
|
s1 = Service.Builder.newInstance("s1").setLocation(Location.newInstance("loc")).build();
|
||||||
s2 = Service.Builder.newInstance("s2").setLocationId("loc").build();
|
s2 = Service.Builder.newInstance("s2").setLocation(Location.newInstance("loc")).build();
|
||||||
shipment = Shipment.Builder.newInstance("shipment").setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).setDeliveryLocationId("delLoc").addSizeDimension(0, 1).build();
|
shipment = Shipment.Builder.newInstance("shipment").setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).setDeliveryLocation(Location.newInstance("delLoc")).addSizeDimension(0, 1).build();
|
||||||
|
|
||||||
|
|
||||||
// when(vehicle.getCapacity()).thenReturn(2);
|
// when(vehicle.getCapacity()).thenReturn(2);
|
||||||
VehicleType type = VehicleTypeImpl.Builder.newInstance("t").addCapacityDimension(0,2).build();
|
VehicleType type = VehicleTypeImpl.Builder.newInstance("t").addCapacityDimension(0,2).build();
|
||||||
vehicle = VehicleImpl.Builder.newInstance("v").setType(type).setStartLocationId("start").build();
|
vehicle = VehicleImpl.Builder.newInstance("v").setType(type).setStartLocation(Location.newInstance("start")).build();
|
||||||
|
|
||||||
vrp = VehicleRoutingProblem.Builder.newInstance().addJob(s1).addJob(s2).addJob(shipment).addVehicle(vehicle).build();
|
vrp = VehicleRoutingProblem.Builder.newInstance().addJob(s1).addJob(s2).addJob(shipment).addVehicle(vehicle).build();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -54,20 +54,20 @@ public class LoadStateTest {
|
||||||
when(vehicle.getType()).thenReturn(type);
|
when(vehicle.getType()).thenReturn(type);
|
||||||
|
|
||||||
VehicleRoutingProblem.Builder serviceProblemBuilder = VehicleRoutingProblem.Builder.newInstance();
|
VehicleRoutingProblem.Builder serviceProblemBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
Service s1 = Service.Builder.newInstance("s").addSizeDimension(0,10).setLocationId("loc").build();
|
Service s1 = Service.Builder.newInstance("s").addSizeDimension(0,10).setLocation(Location.newInstance("loc")).build();
|
||||||
Service s2 = Service.Builder.newInstance("s2").addSizeDimension(0,5).setLocationId("loc").build();
|
Service s2 = Service.Builder.newInstance("s2").addSizeDimension(0,5).setLocation(Location.newInstance("loc")).build();
|
||||||
serviceProblemBuilder.addJob(s1).addJob(s2);
|
serviceProblemBuilder.addJob(s1).addJob(s2);
|
||||||
final VehicleRoutingProblem serviceProblem = serviceProblemBuilder.build();
|
final VehicleRoutingProblem serviceProblem = serviceProblemBuilder.build();
|
||||||
|
|
||||||
final VehicleRoutingProblem.Builder pdProblemBuilder = VehicleRoutingProblem.Builder.newInstance();
|
final VehicleRoutingProblem.Builder pdProblemBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
Pickup pickup = (Pickup) Pickup.Builder.newInstance("pick").addSizeDimension(0,10).setLocationId("loc").build();
|
Pickup pickup = (Pickup) Pickup.Builder.newInstance("pick").addSizeDimension(0,10).setLocation(Location.newInstance("loc")).build();
|
||||||
Delivery delivery = (Delivery) Delivery.Builder.newInstance("del").addSizeDimension(0,5).setLocationId("loc").build();
|
Delivery delivery = (Delivery) Delivery.Builder.newInstance("del").addSizeDimension(0,5).setLocation(Location.newInstance("loc")).build();
|
||||||
pdProblemBuilder.addJob(pickup).addJob(delivery);
|
pdProblemBuilder.addJob(pickup).addJob(delivery);
|
||||||
final VehicleRoutingProblem pdProblem = pdProblemBuilder.build();
|
final VehicleRoutingProblem pdProblem = pdProblemBuilder.build();
|
||||||
|
|
||||||
final VehicleRoutingProblem.Builder shipmentProblemBuilder = VehicleRoutingProblem.Builder.newInstance();
|
final VehicleRoutingProblem.Builder shipmentProblemBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
Shipment shipment1 = Shipment.Builder.newInstance("s1").addSizeDimension(0, 10).setPickupLocation(Location.Builder.newInstance().setId("pick").build()).setDeliveryLocationId("del").build();
|
Shipment shipment1 = Shipment.Builder.newInstance("s1").addSizeDimension(0, 10).setPickupLocation(Location.Builder.newInstance().setId("pick").build()).setDeliveryLocation(Location.newInstance("del")).build();
|
||||||
Shipment shipment2 = Shipment.Builder.newInstance("s2").addSizeDimension(0, 5).setPickupLocation(Location.Builder.newInstance().setId("pick").build()).setDeliveryLocationId("del").build();
|
Shipment shipment2 = Shipment.Builder.newInstance("s2").addSizeDimension(0, 5).setPickupLocation(Location.Builder.newInstance().setId("pick").build()).setDeliveryLocation(Location.newInstance("del")).build();
|
||||||
shipmentProblemBuilder.addJob(shipment1).addJob(shipment2).build();
|
shipmentProblemBuilder.addJob(shipment1).addJob(shipment2).build();
|
||||||
final VehicleRoutingProblem shipmentProblem = shipmentProblemBuilder.build();
|
final VehicleRoutingProblem shipmentProblem = shipmentProblemBuilder.build();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,7 @@ import jsprit.core.problem.vehicle.Vehicle;
|
||||||
import jsprit.core.problem.vehicle.VehicleImpl;
|
import jsprit.core.problem.vehicle.VehicleImpl;
|
||||||
import jsprit.core.problem.vehicle.VehicleType;
|
import jsprit.core.problem.vehicle.VehicleType;
|
||||||
import jsprit.core.util.Solutions;
|
import jsprit.core.util.Solutions;
|
||||||
|
import jsprit.core.util.TestUtils;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
|
@ -56,11 +57,11 @@ public class SolomonSkills_IT {
|
||||||
VehicleRoutingProblem.Builder skillProblemBuilder = VehicleRoutingProblem.Builder.newInstance();
|
VehicleRoutingProblem.Builder skillProblemBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
for(int i=0;i<6;i++) {
|
for(int i=0;i<6;i++) {
|
||||||
VehicleImpl skill1Vehicle = VehicleImpl.Builder.newInstance("skill1_vehicle_"+i).addSkill("skill1")
|
VehicleImpl skill1Vehicle = VehicleImpl.Builder.newInstance("skill1_vehicle_"+i).addSkill("skill1")
|
||||||
.setStartLocationCoordinate(solomonVehicle.getStartLocationCoordinate()).setStartLocationId(solomonVehicle.getStartLocationId())
|
.setStartLocation(TestUtils.loc(solomonVehicle.getStartLocation().getId(), solomonVehicle.getStartLocation().getCoordinate()))
|
||||||
.setEarliestStart(solomonVehicle.getEarliestDeparture())
|
.setEarliestStart(solomonVehicle.getEarliestDeparture())
|
||||||
.setType(newType).build();
|
.setType(newType).build();
|
||||||
VehicleImpl skill2Vehicle = VehicleImpl.Builder.newInstance("skill2_vehicle_"+i).addSkill("skill2")
|
VehicleImpl skill2Vehicle = VehicleImpl.Builder.newInstance("skill2_vehicle_"+i).addSkill("skill2")
|
||||||
.setStartLocationCoordinate(solomonVehicle.getStartLocationCoordinate()).setStartLocationId(solomonVehicle.getStartLocationId())
|
.setStartLocation(TestUtils.loc(solomonVehicle.getStartLocation().getId(), solomonVehicle.getStartLocation().getCoordinate()))
|
||||||
.setEarliestStart(solomonVehicle.getEarliestDeparture())
|
.setEarliestStart(solomonVehicle.getEarliestDeparture())
|
||||||
.setType(newType).build();
|
.setType(newType).build();
|
||||||
skillProblemBuilder.addVehicle(skill1Vehicle).addVehicle(skill2Vehicle);
|
skillProblemBuilder.addVehicle(skill1Vehicle).addVehicle(skill2Vehicle);
|
||||||
|
|
@ -68,8 +69,8 @@ public class SolomonSkills_IT {
|
||||||
for(Job job : vrp.getJobs().values()){
|
for(Job job : vrp.getJobs().values()){
|
||||||
Service service = (Service) job;
|
Service service = (Service) job;
|
||||||
Service.Builder skillServiceBuilder = Service.Builder.newInstance(service.getId()).setServiceTime(service.getServiceDuration())
|
Service.Builder skillServiceBuilder = Service.Builder.newInstance(service.getId()).setServiceTime(service.getServiceDuration())
|
||||||
.setCoord(service.getLocation().getCoordinate()).setLocationId(service.getLocation().getId()).setTimeWindow(service.getTimeWindow())
|
.setLocation(TestUtils.loc(service.getLocation().getId(), service.getLocation().getCoordinate())).setTimeWindow(service.getTimeWindow())
|
||||||
.addSizeDimension(0,service.getSize().get(0));
|
.addSizeDimension(0, service.getSize().get(0));
|
||||||
if(service.getLocation().getCoordinate().getY()<50) skillServiceBuilder.addRequiredSkill("skill2");
|
if(service.getLocation().getCoordinate().getY()<50) skillServiceBuilder.addRequiredSkill("skill2");
|
||||||
else skillServiceBuilder.addRequiredSkill("skill1");
|
else skillServiceBuilder.addRequiredSkill("skill1");
|
||||||
skillProblemBuilder.addJob(skillServiceBuilder.build());
|
skillProblemBuilder.addJob(skillServiceBuilder.build());
|
||||||
|
|
|
||||||
|
|
@ -16,10 +16,7 @@
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
package jsprit.core.algorithm.state;
|
package jsprit.core.algorithm.state;
|
||||||
|
|
||||||
import jsprit.core.problem.AbstractActivity;
|
import jsprit.core.problem.*;
|
||||||
import jsprit.core.problem.Capacity;
|
|
||||||
import jsprit.core.problem.JobActivityFactory;
|
|
||||||
import jsprit.core.problem.VehicleRoutingProblem;
|
|
||||||
import jsprit.core.problem.job.Job;
|
import jsprit.core.problem.job.Job;
|
||||||
import jsprit.core.problem.job.Service;
|
import jsprit.core.problem.job.Service;
|
||||||
import jsprit.core.problem.solution.route.VehicleRoute;
|
import jsprit.core.problem.solution.route.VehicleRoute;
|
||||||
|
|
@ -53,7 +50,7 @@ public class StateManagerTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
private VehicleRoute getRoute(Vehicle vehicle) {
|
private VehicleRoute getRoute(Vehicle vehicle) {
|
||||||
return VehicleRoute.Builder.newInstance(vehicle).setJobActivityFactory(new ActFac()).addService(Service.Builder.newInstance("s").setLocationId("loc").build()).build();
|
return VehicleRoute.Builder.newInstance(vehicle).setJobActivityFactory(new ActFac()).addService(Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")).build()).build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@ package jsprit.core.algorithm.state;
|
||||||
|
|
||||||
import jsprit.core.problem.AbstractActivity;
|
import jsprit.core.problem.AbstractActivity;
|
||||||
import jsprit.core.problem.JobActivityFactory;
|
import jsprit.core.problem.JobActivityFactory;
|
||||||
|
import jsprit.core.problem.Location;
|
||||||
import jsprit.core.problem.VehicleRoutingProblem;
|
import jsprit.core.problem.VehicleRoutingProblem;
|
||||||
import jsprit.core.problem.cost.VehicleRoutingTransportCosts;
|
import jsprit.core.problem.cost.VehicleRoutingTransportCosts;
|
||||||
import jsprit.core.problem.driver.Driver;
|
import jsprit.core.problem.driver.Driver;
|
||||||
|
|
@ -61,11 +62,11 @@ public class UpdatePracticalTimeWindowTest {
|
||||||
reverseActivityVisitor = new ReverseRouteActivityVisitor();
|
reverseActivityVisitor = new ReverseRouteActivityVisitor();
|
||||||
reverseActivityVisitor.addActivityVisitor(new UpdatePracticalTimeWindows(stateManager, routingCosts));
|
reverseActivityVisitor.addActivityVisitor(new UpdatePracticalTimeWindows(stateManager, routingCosts));
|
||||||
|
|
||||||
Pickup pickup = (Pickup) Pickup.Builder.newInstance("pick").setLocationId("0,20").setTimeWindow(TimeWindow.newInstance(0, 30)).build();
|
Pickup pickup = (Pickup) Pickup.Builder.newInstance("pick").setLocation(Location.newInstance("0,20")).setTimeWindow(TimeWindow.newInstance(0, 30)).build();
|
||||||
Delivery delivery = (Delivery) Delivery.Builder.newInstance("del").setLocationId("20,20").setTimeWindow(TimeWindow.newInstance(10, 40)).build();
|
Delivery delivery = (Delivery) Delivery.Builder.newInstance("del").setLocation(Location.newInstance("20,20")).setTimeWindow(TimeWindow.newInstance(10, 40)).build();
|
||||||
Pickup pickup2 = (Pickup) Pickup.Builder.newInstance("pick2").setLocationId("20,0").setTimeWindow(TimeWindow.newInstance(20, 50)).build();
|
Pickup pickup2 = (Pickup) Pickup.Builder.newInstance("pick2").setLocation(Location.newInstance("20,0")).setTimeWindow(TimeWindow.newInstance(20, 50)).build();
|
||||||
|
|
||||||
Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setStartLocationId("0,0").setType(mock(VehicleType.class)).build();
|
Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("0,0")).setType(mock(VehicleType.class)).build();
|
||||||
|
|
||||||
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
final VehicleRoutingProblem vrp = vrpBuilder.addJob(pickup).addJob(pickup2).addJob(delivery).build();
|
final VehicleRoutingProblem vrp = vrpBuilder.addJob(pickup).addJob(pickup2).addJob(delivery).build();
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package jsprit.core.algorithm.state;
|
package jsprit.core.algorithm.state;
|
||||||
|
|
||||||
|
import jsprit.core.problem.Location;
|
||||||
import jsprit.core.problem.Skills;
|
import jsprit.core.problem.Skills;
|
||||||
import jsprit.core.problem.VehicleRoutingProblem;
|
import jsprit.core.problem.VehicleRoutingProblem;
|
||||||
import jsprit.core.problem.job.Service;
|
import jsprit.core.problem.job.Service;
|
||||||
|
|
@ -28,10 +29,10 @@ public class UpdateRequiredSkillsTest {
|
||||||
@Before
|
@Before
|
||||||
public void doBefore(){
|
public void doBefore(){
|
||||||
VehicleType type = VehicleTypeImpl.Builder.newInstance("t").build();
|
VehicleType type = VehicleTypeImpl.Builder.newInstance("t").build();
|
||||||
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocationId("start").setType(type).build();
|
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("start")).setType(type).build();
|
||||||
Service service = Service.Builder.newInstance("s").setLocationId("loc").addRequiredSkill("skill1").build();
|
Service service = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")).addRequiredSkill("skill1").build();
|
||||||
Service service2 = Service.Builder.newInstance("s2").setLocationId("loc").addRequiredSkill("skill1").addRequiredSkill("skill2").addRequiredSkill("skill3").build();
|
Service service2 = Service.Builder.newInstance("s2").setLocation(Location.newInstance("loc")).addRequiredSkill("skill1").addRequiredSkill("skill2").addRequiredSkill("skill3").build();
|
||||||
Service service3 = Service.Builder.newInstance("s3").setLocationId("loc").addRequiredSkill("skill4").addRequiredSkill("skill5").build();
|
Service service3 = Service.Builder.newInstance("s3").setLocation(Location.newInstance("loc")).addRequiredSkill("skill4").addRequiredSkill("skill5").build();
|
||||||
VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addVehicle(vehicle).addJob(service)
|
VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addVehicle(vehicle).addJob(service)
|
||||||
.addJob(service2).addJob(service3).build();
|
.addJob(service2).addJob(service3).build();
|
||||||
route = VehicleRoute.Builder.newInstance(vehicle).setJobActivityFactory(vrp.getJobActivityFactory()).addService(service).addService(service2).addService(service3).build();
|
route = VehicleRoute.Builder.newInstance(vehicle).setJobActivityFactory(vrp.getJobActivityFactory()).addService(service).addService(service2).addService(service3).build();
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ package jsprit.core.algorithm.state;
|
||||||
|
|
||||||
import jsprit.core.problem.AbstractActivity;
|
import jsprit.core.problem.AbstractActivity;
|
||||||
import jsprit.core.problem.JobActivityFactory;
|
import jsprit.core.problem.JobActivityFactory;
|
||||||
|
import jsprit.core.problem.Location;
|
||||||
import jsprit.core.problem.VehicleRoutingProblem;
|
import jsprit.core.problem.VehicleRoutingProblem;
|
||||||
import jsprit.core.problem.cost.VehicleRoutingTransportCosts;
|
import jsprit.core.problem.cost.VehicleRoutingTransportCosts;
|
||||||
import jsprit.core.problem.job.Job;
|
import jsprit.core.problem.job.Job;
|
||||||
|
|
@ -49,13 +50,13 @@ public class UpdateVehicleDependentTimeWindowTest {
|
||||||
routingCosts = CostFactory.createEuclideanCosts();
|
routingCosts = CostFactory.createEuclideanCosts();
|
||||||
vrpBuilder.setRoutingCost(routingCosts);
|
vrpBuilder.setRoutingCost(routingCosts);
|
||||||
|
|
||||||
vehicle = VehicleImpl.Builder.newInstance("v").setStartLocationId("0,0").setEarliestStart(0.).setLatestArrival(100.).build();
|
vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("0,0")).setEarliestStart(0.).setLatestArrival(100.).build();
|
||||||
|
|
||||||
vehicle2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("0,0").setEarliestStart(0.).setLatestArrival(60.).build();
|
vehicle2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(Location.newInstance("0,0")).setEarliestStart(0.).setLatestArrival(60.).build();
|
||||||
|
|
||||||
vehicle3 = VehicleImpl.Builder.newInstance("v3").setStartLocationId("40,0").setEarliestStart(0.).setLatestArrival(100.).build();
|
vehicle3 = VehicleImpl.Builder.newInstance("v3").setStartLocation(Location.newInstance("40,0")).setEarliestStart(0.).setLatestArrival(100.).build();
|
||||||
|
|
||||||
equivalentOf3 = VehicleImpl.Builder.newInstance("v4").setStartLocationId("40,0").setEarliestStart(0.).setLatestArrival(100.).build();
|
equivalentOf3 = VehicleImpl.Builder.newInstance("v4").setStartLocation(Location.newInstance("40,0")).setEarliestStart(0.).setLatestArrival(100.).build();
|
||||||
|
|
||||||
vrpBuilder.addVehicle(vehicle).addVehicle(vehicle2).addVehicle(vehicle3).addVehicle(equivalentOf3);
|
vrpBuilder.addVehicle(vehicle).addVehicle(vehicle2).addVehicle(vehicle3).addVehicle(equivalentOf3);
|
||||||
|
|
||||||
|
|
@ -67,9 +68,9 @@ public class UpdateVehicleDependentTimeWindowTest {
|
||||||
|
|
||||||
fleetManager = new FiniteFleetManagerFactory(vehicles).createFleetManager();
|
fleetManager = new FiniteFleetManagerFactory(vehicles).createFleetManager();
|
||||||
|
|
||||||
Service service = Service.Builder.newInstance("s1").setLocationId("10,0").build();
|
Service service = Service.Builder.newInstance("s1").setLocation(Location.newInstance("10,0")).build();
|
||||||
Service service2 = Service.Builder.newInstance("s2").setLocationId("20,0").build();
|
Service service2 = Service.Builder.newInstance("s2").setLocation(Location.newInstance("20,0")).build();
|
||||||
Service service3 = Service.Builder.newInstance("s3").setLocationId("30,0").build();
|
Service service3 = Service.Builder.newInstance("s3").setLocation(Location.newInstance("30,0")).build();
|
||||||
|
|
||||||
vrpBuilder.addJob(service).addJob(service2).addJob(service3);
|
vrpBuilder.addJob(service).addJob(service2).addJob(service3);
|
||||||
vrp = vrpBuilder.build();
|
vrp = vrpBuilder.build();
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -32,6 +32,7 @@ import jsprit.core.problem.vehicle.VehicleImpl;
|
||||||
import jsprit.core.problem.vehicle.VehicleType;
|
import jsprit.core.problem.vehicle.VehicleType;
|
||||||
import jsprit.core.problem.vehicle.VehicleTypeImpl;
|
import jsprit.core.problem.vehicle.VehicleTypeImpl;
|
||||||
import jsprit.core.util.Coordinate;
|
import jsprit.core.util.Coordinate;
|
||||||
|
import jsprit.core.util.TestUtils;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
@ -65,10 +66,10 @@ public class VehicleRoutingProblemTest {
|
||||||
public void whenBuildingWithFourVehicles_vrpShouldContainTheCorrectNuOfVehicles(){
|
public void whenBuildingWithFourVehicles_vrpShouldContainTheCorrectNuOfVehicles(){
|
||||||
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
|
||||||
VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocationId("start").build();
|
VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocation(Location.newInstance("start")).build();
|
||||||
VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("start").build();
|
VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(Location.newInstance("start")).build();
|
||||||
VehicleImpl v3 = VehicleImpl.Builder.newInstance("v3").setStartLocationId("start").build();
|
VehicleImpl v3 = VehicleImpl.Builder.newInstance("v3").setStartLocation(Location.newInstance("start")).build();
|
||||||
VehicleImpl v4 = VehicleImpl.Builder.newInstance("v4").setStartLocationId("start").build();
|
VehicleImpl v4 = VehicleImpl.Builder.newInstance("v4").setStartLocation(Location.newInstance("start")).build();
|
||||||
|
|
||||||
builder.addVehicle(v1).addVehicle(v2).addVehicle(v3).addVehicle(v4);
|
builder.addVehicle(v1).addVehicle(v2).addVehicle(v3).addVehicle(v4);
|
||||||
|
|
||||||
|
|
@ -81,10 +82,10 @@ public class VehicleRoutingProblemTest {
|
||||||
public void whenAddingFourVehiclesAllAtOnce_vrpShouldContainTheCorrectNuOfVehicles(){
|
public void whenAddingFourVehiclesAllAtOnce_vrpShouldContainTheCorrectNuOfVehicles(){
|
||||||
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
|
||||||
VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocationId("start").build();
|
VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocation(Location.newInstance("start")).build();
|
||||||
VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("start").build();
|
VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(Location.newInstance("start")).build();
|
||||||
VehicleImpl v3 = VehicleImpl.Builder.newInstance("v3").setStartLocationId("start").build();
|
VehicleImpl v3 = VehicleImpl.Builder.newInstance("v3").setStartLocation(Location.newInstance("start")).build();
|
||||||
VehicleImpl v4 = VehicleImpl.Builder.newInstance("v4").setStartLocationId("start").build();
|
VehicleImpl v4 = VehicleImpl.Builder.newInstance("v4").setStartLocation(Location.newInstance("start")).build();
|
||||||
|
|
||||||
builder.addAllVehicles(Arrays.asList(v1,v2,v3,v4));
|
builder.addAllVehicles(Arrays.asList(v1,v2,v3,v4));
|
||||||
|
|
||||||
|
|
@ -100,10 +101,10 @@ public class VehicleRoutingProblemTest {
|
||||||
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("type1").build();
|
VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("type1").build();
|
||||||
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("type2").build();
|
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("type2").build();
|
||||||
|
|
||||||
VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocationId("yo").setType(type1).build();
|
VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocation(Location.newInstance("yo")).setType(type1).build();
|
||||||
VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("yo").setType(type1).build();
|
VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(Location.newInstance("yo")).setType(type1).build();
|
||||||
VehicleImpl v3 = VehicleImpl.Builder.newInstance("v3").setStartLocationId("yo").setType(type2).build();
|
VehicleImpl v3 = VehicleImpl.Builder.newInstance("v3").setStartLocation(Location.newInstance("yo")).setType(type2).build();
|
||||||
VehicleImpl v4 = VehicleImpl.Builder.newInstance("v4").setStartLocationId("yo").setType(type2).build();
|
VehicleImpl v4 = VehicleImpl.Builder.newInstance("v4").setStartLocation(Location.newInstance("yo")).setType(type2).build();
|
||||||
|
|
||||||
builder.addVehicle(v1).addVehicle(v2).addVehicle(v3).addVehicle(v4);
|
builder.addVehicle(v1).addVehicle(v2).addVehicle(v3).addVehicle(v4);
|
||||||
|
|
||||||
|
|
@ -114,8 +115,8 @@ public class VehicleRoutingProblemTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenShipmentsAreAdded_vrpShouldContainThem(){
|
public void whenShipmentsAreAdded_vrpShouldContainThem(){
|
||||||
Shipment s = Shipment.Builder.newInstance("s").addSizeDimension(0, 10).setPickupLocation(Location.Builder.newInstance().setId("foofoo").build()).setDeliveryLocationId("foo").build();
|
Shipment s = Shipment.Builder.newInstance("s").addSizeDimension(0, 10).setPickupLocation(Location.Builder.newInstance().setId("foofoo").build()).setDeliveryLocation(Location.newInstance("foo")).build();
|
||||||
Shipment s2 = Shipment.Builder.newInstance("s2").addSizeDimension(0, 100).setPickupLocation(Location.Builder.newInstance().setId("foofoo").build()).setDeliveryLocationId("foo").build();
|
Shipment s2 = Shipment.Builder.newInstance("s2").addSizeDimension(0, 100).setPickupLocation(Location.Builder.newInstance().setId("foofoo").build()).setDeliveryLocation(Location.newInstance("foo")).build();
|
||||||
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
vrpBuilder.addJob(s);
|
vrpBuilder.addJob(s);
|
||||||
vrpBuilder.addJob(s2);
|
vrpBuilder.addJob(s2);
|
||||||
|
|
@ -298,7 +299,7 @@ public class VehicleRoutingProblemTest {
|
||||||
public void whenAddingAVehicle_getAddedVehicleTypesShouldReturnItsType(){
|
public void whenAddingAVehicle_getAddedVehicleTypesShouldReturnItsType(){
|
||||||
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
VehicleType type = VehicleTypeImpl.Builder.newInstance("type").build();
|
VehicleType type = VehicleTypeImpl.Builder.newInstance("type").build();
|
||||||
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocationId("loc").setType(type).build();
|
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("loc")).setType(type).build();
|
||||||
builder.addVehicle(vehicle);
|
builder.addVehicle(vehicle);
|
||||||
|
|
||||||
assertEquals(1,builder.getAddedVehicleTypes().size());
|
assertEquals(1,builder.getAddedVehicleTypes().size());
|
||||||
|
|
@ -310,8 +311,8 @@ public class VehicleRoutingProblemTest {
|
||||||
public void whenAddingTwoVehicleWithSameType_getAddedVehicleTypesShouldReturnOnlyOneType(){
|
public void whenAddingTwoVehicleWithSameType_getAddedVehicleTypesShouldReturnOnlyOneType(){
|
||||||
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
VehicleType type = VehicleTypeImpl.Builder.newInstance("type").build();
|
VehicleType type = VehicleTypeImpl.Builder.newInstance("type").build();
|
||||||
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocationId("loc").setType(type).build();
|
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("loc")).setType(type).build();
|
||||||
VehicleImpl vehicle2 = VehicleImpl.Builder.newInstance("v").setStartLocationId("loc").setType(type).build();
|
VehicleImpl vehicle2 = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("loc")).setType(type).build();
|
||||||
|
|
||||||
builder.addVehicle(vehicle);
|
builder.addVehicle(vehicle);
|
||||||
builder.addVehicle(vehicle2);
|
builder.addVehicle(vehicle2);
|
||||||
|
|
@ -326,8 +327,8 @@ public class VehicleRoutingProblemTest {
|
||||||
VehicleType type = VehicleTypeImpl.Builder.newInstance("type").build();
|
VehicleType type = VehicleTypeImpl.Builder.newInstance("type").build();
|
||||||
VehicleType type2 = VehicleTypeImpl.Builder.newInstance("type2").build();
|
VehicleType type2 = VehicleTypeImpl.Builder.newInstance("type2").build();
|
||||||
|
|
||||||
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocationId("loc").setType(type).build();
|
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("loc")).setType(type).build();
|
||||||
VehicleImpl vehicle2 = VehicleImpl.Builder.newInstance("v").setStartLocationId("loc").setType(type2).build();
|
VehicleImpl vehicle2 = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("loc")).setType(type2).build();
|
||||||
|
|
||||||
builder.addVehicle(vehicle);
|
builder.addVehicle(vehicle);
|
||||||
builder.addVehicle(vehicle2);
|
builder.addVehicle(vehicle2);
|
||||||
|
|
@ -339,7 +340,8 @@ public class VehicleRoutingProblemTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenAddingVehicleWithDiffStartAndEnd_startLocationMustBeRegisteredInLocationMap(){
|
public void whenAddingVehicleWithDiffStartAndEnd_startLocationMustBeRegisteredInLocationMap(){
|
||||||
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocationId("start").setEndLocationId("end").build();
|
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("start"))
|
||||||
|
.setEndLocation(Location.newInstance("end")).build();
|
||||||
|
|
||||||
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
vrpBuilder.addVehicle(vehicle);
|
vrpBuilder.addVehicle(vehicle);
|
||||||
|
|
@ -348,7 +350,8 @@ public class VehicleRoutingProblemTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenAddingVehicleWithDiffStartAndEnd_endLocationMustBeRegisteredInLocationMap(){
|
public void whenAddingVehicleWithDiffStartAndEnd_endLocationMustBeRegisteredInLocationMap(){
|
||||||
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocationId("start").setEndLocationId("end").build();
|
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("start"))
|
||||||
|
.setEndLocation(Location.newInstance("end")).build();
|
||||||
|
|
||||||
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
vrpBuilder.addVehicle(vehicle);
|
vrpBuilder.addVehicle(vehicle);
|
||||||
|
|
@ -357,7 +360,8 @@ public class VehicleRoutingProblemTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenAddingInitialRoute_itShouldBeAddedCorrectly(){
|
public void whenAddingInitialRoute_itShouldBeAddedCorrectly(){
|
||||||
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocationId("start").setEndLocationId("end").build();
|
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v")
|
||||||
|
.setStartLocation(Location.newInstance("start")).setEndLocation(Location.newInstance("end")).build();
|
||||||
VehicleRoute route = VehicleRoute.Builder.newInstance(vehicle, DriverImpl.noDriver()).build();
|
VehicleRoute route = VehicleRoute.Builder.newInstance(vehicle, DriverImpl.noDriver()).build();
|
||||||
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
vrpBuilder.addInitialVehicleRoute(route);
|
vrpBuilder.addInitialVehicleRoute(route);
|
||||||
|
|
@ -367,10 +371,12 @@ public class VehicleRoutingProblemTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenAddingInitialRoutes_theyShouldBeAddedCorrectly(){
|
public void whenAddingInitialRoutes_theyShouldBeAddedCorrectly(){
|
||||||
VehicleImpl vehicle1 = VehicleImpl.Builder.newInstance("v").setStartLocationId("start").setEndLocationId("end").build();
|
VehicleImpl vehicle1 = VehicleImpl.Builder.newInstance("v")
|
||||||
|
.setStartLocation(Location.newInstance("start")).setEndLocation(Location.newInstance("end")).build();
|
||||||
VehicleRoute route1 = VehicleRoute.Builder.newInstance(vehicle1, DriverImpl.noDriver()).build();
|
VehicleRoute route1 = VehicleRoute.Builder.newInstance(vehicle1, DriverImpl.noDriver()).build();
|
||||||
|
|
||||||
VehicleImpl vehicle2 = VehicleImpl.Builder.newInstance("v").setStartLocationId("start").setEndLocationId("end").build();
|
VehicleImpl vehicle2 = VehicleImpl.Builder.newInstance("v")
|
||||||
|
.setStartLocation(Location.newInstance("start")).setEndLocation(Location.newInstance("end")).build();
|
||||||
VehicleRoute route2 = VehicleRoute.Builder.newInstance(vehicle2, DriverImpl.noDriver()).build();
|
VehicleRoute route2 = VehicleRoute.Builder.newInstance(vehicle2, DriverImpl.noDriver()).build();
|
||||||
|
|
||||||
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
|
@ -382,7 +388,9 @@ public class VehicleRoutingProblemTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenAddingInitialRoute_locationOfVehicleMustBeMemorized(){
|
public void whenAddingInitialRoute_locationOfVehicleMustBeMemorized(){
|
||||||
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocationId("start").setStartLocationCoordinate(Coordinate.newInstance(0, 1)).setEndLocationId("end").build();
|
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v")
|
||||||
|
.setStartLocation(TestUtils.loc("start", Coordinate.newInstance(0, 1)))
|
||||||
|
.setEndLocation(Location.newInstance("end")).build();
|
||||||
VehicleRoute route = VehicleRoute.Builder.newInstance(vehicle, DriverImpl.noDriver()).build();
|
VehicleRoute route = VehicleRoute.Builder.newInstance(vehicle, DriverImpl.noDriver()).build();
|
||||||
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
vrpBuilder.addInitialVehicleRoute(route);
|
vrpBuilder.addInitialVehicleRoute(route);
|
||||||
|
|
@ -393,10 +401,12 @@ public class VehicleRoutingProblemTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenAddingJobAndInitialRouteWithThatJobAfterwards_thisJobShouldNotBeInFinalJobMap(){
|
public void whenAddingJobAndInitialRouteWithThatJobAfterwards_thisJobShouldNotBeInFinalJobMap(){
|
||||||
Service service = Service.Builder.newInstance("myService").setLocationId("loc").build();
|
Service service = Service.Builder.newInstance("myService").setLocation(Location.newInstance("loc")).build();
|
||||||
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
vrpBuilder.addJob(service);
|
vrpBuilder.addJob(service);
|
||||||
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocationId("start").setStartLocationCoordinate(Coordinate.newInstance(0, 1)).setEndLocationId("end").build();
|
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v")
|
||||||
|
.setStartLocation(TestUtils.loc("start", Coordinate.newInstance(0, 1)))
|
||||||
|
.setEndLocation(Location.newInstance("end")).build();
|
||||||
VehicleRoute initialRoute = VehicleRoute.Builder.newInstance(vehicle).addService(service).build();
|
VehicleRoute initialRoute = VehicleRoute.Builder.newInstance(vehicle).addService(service).build();
|
||||||
vrpBuilder.addInitialVehicleRoute(initialRoute);
|
vrpBuilder.addInitialVehicleRoute(initialRoute);
|
||||||
VehicleRoutingProblem vrp = vrpBuilder.build();
|
VehicleRoutingProblem vrp = vrpBuilder.build();
|
||||||
|
|
@ -405,8 +415,9 @@ public class VehicleRoutingProblemTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenAddingTwoJobs_theyShouldHaveProperIndeces(){
|
public void whenAddingTwoJobs_theyShouldHaveProperIndeces(){
|
||||||
Service service = Service.Builder.newInstance("myService").setLocationId("loc").build();
|
Service service = Service.Builder.newInstance("myService").setLocation(Location.newInstance("loc")).build();
|
||||||
Shipment shipment = Shipment.Builder.newInstance("shipment").setPickupLocation(Location.Builder.newInstance().setId("pick").build()).setDeliveryLocationId("del").build();
|
Shipment shipment = Shipment.Builder.newInstance("shipment").setPickupLocation(Location.Builder.newInstance().setId("pick").build())
|
||||||
|
.setDeliveryLocation(Location.newInstance("del")).build();
|
||||||
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
vrpBuilder.addJob(service);
|
vrpBuilder.addJob(service);
|
||||||
vrpBuilder.addJob(shipment);
|
vrpBuilder.addJob(shipment);
|
||||||
|
|
@ -419,8 +430,10 @@ public class VehicleRoutingProblemTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenAddingTwoVehicles_theyShouldHaveProperIndices(){
|
public void whenAddingTwoVehicles_theyShouldHaveProperIndices(){
|
||||||
VehicleImpl veh1 = VehicleImpl.Builder.newInstance("v1").setStartLocationId("start").setStartLocationCoordinate(Coordinate.newInstance(0, 1)).setEndLocationId("end").build();
|
VehicleImpl veh1 = VehicleImpl.Builder.newInstance("v1").setStartLocation(TestUtils.loc("start", Coordinate.newInstance(0, 1)))
|
||||||
VehicleImpl veh2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("start").setStartLocationCoordinate(Coordinate.newInstance(0, 1)).setEndLocationId("end").build();
|
.setEndLocation(Location.newInstance("end")).build();
|
||||||
|
VehicleImpl veh2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(TestUtils.loc("start", Coordinate.newInstance(0, 1)))
|
||||||
|
.setEndLocation(Location.newInstance("end")).build();
|
||||||
|
|
||||||
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
vrpBuilder.addVehicle(veh1);
|
vrpBuilder.addVehicle(veh1);
|
||||||
|
|
@ -434,8 +447,12 @@ public class VehicleRoutingProblemTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenAddingTwoVehiclesWithSameTypeIdentifier_typeIdentifiersShouldHaveSameIndices(){
|
public void whenAddingTwoVehiclesWithSameTypeIdentifier_typeIdentifiersShouldHaveSameIndices(){
|
||||||
VehicleImpl veh1 = VehicleImpl.Builder.newInstance("v1").setStartLocationId("start").setStartLocationCoordinate(Coordinate.newInstance(0, 1)).setEndLocationId("end").build();
|
VehicleImpl veh1 = VehicleImpl.Builder.newInstance("v1")
|
||||||
VehicleImpl veh2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("start").setStartLocationCoordinate(Coordinate.newInstance(0, 1)).setEndLocationId("end").build();
|
.setStartLocation(TestUtils.loc("start", Coordinate.newInstance(0, 1)))
|
||||||
|
.setEndLocation(Location.newInstance("end")).build();
|
||||||
|
VehicleImpl veh2 = VehicleImpl.Builder.newInstance("v2")
|
||||||
|
.setStartLocation(TestUtils.loc("start", Coordinate.newInstance(0, 1)))
|
||||||
|
.setEndLocation(Location.newInstance("end")).build();
|
||||||
|
|
||||||
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
vrpBuilder.addVehicle(veh1);
|
vrpBuilder.addVehicle(veh1);
|
||||||
|
|
@ -449,8 +466,12 @@ public class VehicleRoutingProblemTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenAddingTwoVehiclesDifferentTypeIdentifier_typeIdentifiersShouldHaveDifferentIndices(){
|
public void whenAddingTwoVehiclesDifferentTypeIdentifier_typeIdentifiersShouldHaveDifferentIndices(){
|
||||||
VehicleImpl veh1 = VehicleImpl.Builder.newInstance("v1").setStartLocationId("start").setStartLocationCoordinate(Coordinate.newInstance(0, 1)).setEndLocationId("end").build();
|
VehicleImpl veh1 = VehicleImpl.Builder.newInstance("v1")
|
||||||
VehicleImpl veh2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("startLoc").setStartLocationCoordinate(Coordinate.newInstance(0, 1)).setEndLocationId("end").build();
|
.setStartLocation(TestUtils.loc("start", Coordinate.newInstance(0, 1)))
|
||||||
|
.setEndLocation(Location.newInstance("end")).build();
|
||||||
|
VehicleImpl veh2 = VehicleImpl.Builder.newInstance("v2")
|
||||||
|
.setStartLocation(TestUtils.loc("startLoc",Coordinate.newInstance(0, 1)))
|
||||||
|
.setEndLocation(Location.newInstance("end")).build();
|
||||||
|
|
||||||
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
vrpBuilder.addVehicle(veh1);
|
vrpBuilder.addVehicle(veh1);
|
||||||
|
|
|
||||||
|
|
@ -57,20 +57,20 @@ public class LoadConstraintTest {
|
||||||
when(vehicle.getType()).thenReturn(type);
|
when(vehicle.getType()).thenReturn(type);
|
||||||
|
|
||||||
VehicleRoutingProblem.Builder serviceProblemBuilder = VehicleRoutingProblem.Builder.newInstance();
|
VehicleRoutingProblem.Builder serviceProblemBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
Service s1 = Service.Builder.newInstance("s").addSizeDimension(0,10).setLocationId("loc").build();
|
Service s1 = Service.Builder.newInstance("s").addSizeDimension(0, 10).setLocation(Location.newInstance("loc")).build();
|
||||||
Service s2 = Service.Builder.newInstance("s2").addSizeDimension(0,5).setLocationId("loc").build();
|
Service s2 = Service.Builder.newInstance("s2").addSizeDimension(0,5).setLocation(Location.newInstance("loc")).build();
|
||||||
serviceProblemBuilder.addJob(s1).addJob(s2);
|
serviceProblemBuilder.addJob(s1).addJob(s2);
|
||||||
final VehicleRoutingProblem serviceProblem = serviceProblemBuilder.build();
|
final VehicleRoutingProblem serviceProblem = serviceProblemBuilder.build();
|
||||||
|
|
||||||
final VehicleRoutingProblem.Builder pdProblemBuilder = VehicleRoutingProblem.Builder.newInstance();
|
final VehicleRoutingProblem.Builder pdProblemBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
Pickup pickup = (Pickup) Pickup.Builder.newInstance("pick").addSizeDimension(0,10).setLocationId("loc").build();
|
Pickup pickup = (Pickup) Pickup.Builder.newInstance("pick").addSizeDimension(0,10).setLocation(Location.newInstance("loc")).build();
|
||||||
Delivery delivery = (Delivery) Delivery.Builder.newInstance("del").addSizeDimension(0,5).setLocationId("loc").build();
|
Delivery delivery = (Delivery) Delivery.Builder.newInstance("del").addSizeDimension(0,5).setLocation(Location.newInstance("loc")).build();
|
||||||
pdProblemBuilder.addJob(pickup).addJob(delivery);
|
pdProblemBuilder.addJob(pickup).addJob(delivery);
|
||||||
final VehicleRoutingProblem pdProblem = pdProblemBuilder.build();
|
final VehicleRoutingProblem pdProblem = pdProblemBuilder.build();
|
||||||
|
|
||||||
final VehicleRoutingProblem.Builder shipmentProblemBuilder = VehicleRoutingProblem.Builder.newInstance();
|
final VehicleRoutingProblem.Builder shipmentProblemBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
Shipment shipment1 = Shipment.Builder.newInstance("s1").addSizeDimension(0, 10).setPickupLocation(Location.Builder.newInstance().setId("pick").build()).setDeliveryLocationId("del").build();
|
Shipment shipment1 = Shipment.Builder.newInstance("s1").addSizeDimension(0, 10).setPickupLocation(Location.Builder.newInstance().setId("pick").build()).setDeliveryLocation(Location.newInstance("del")).build();
|
||||||
Shipment shipment2 = Shipment.Builder.newInstance("s2").addSizeDimension(0, 5).setPickupLocation(Location.Builder.newInstance().setId("pick").build()).setDeliveryLocationId("del").build();
|
Shipment shipment2 = Shipment.Builder.newInstance("s2").addSizeDimension(0, 5).setPickupLocation(Location.Builder.newInstance().setId("pick").build()).setDeliveryLocation(Location.newInstance("del")).build();
|
||||||
shipmentProblemBuilder.addJob(shipment1).addJob(shipment2).build();
|
shipmentProblemBuilder.addJob(shipment1).addJob(shipment2).build();
|
||||||
final VehicleRoutingProblem shipmentProblem = shipmentProblemBuilder.build();
|
final VehicleRoutingProblem shipmentProblem = shipmentProblemBuilder.build();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -21,9 +21,6 @@ import jsprit.core.algorithm.state.StateManager;
|
||||||
import jsprit.core.problem.Capacity;
|
import jsprit.core.problem.Capacity;
|
||||||
import jsprit.core.problem.Location;
|
import jsprit.core.problem.Location;
|
||||||
import jsprit.core.problem.VehicleRoutingProblem;
|
import jsprit.core.problem.VehicleRoutingProblem;
|
||||||
import jsprit.core.problem.cost.AbstractForwardVehicleRoutingTransportCosts;
|
|
||||||
import jsprit.core.problem.cost.VehicleRoutingTransportCosts;
|
|
||||||
import jsprit.core.problem.driver.Driver;
|
|
||||||
import jsprit.core.problem.job.Delivery;
|
import jsprit.core.problem.job.Delivery;
|
||||||
import jsprit.core.problem.job.Pickup;
|
import jsprit.core.problem.job.Pickup;
|
||||||
import jsprit.core.problem.job.Service;
|
import jsprit.core.problem.job.Service;
|
||||||
|
|
@ -51,24 +48,9 @@ public class ServiceLoadRouteLevelConstraintTest {
|
||||||
private VehicleRoute route;
|
private VehicleRoute route;
|
||||||
|
|
||||||
RouteAndActivityStateGetter stateGetter;
|
RouteAndActivityStateGetter stateGetter;
|
||||||
|
|
||||||
JobInsertionContext iContext;
|
|
||||||
|
|
||||||
ServiceLoadRouteLevelConstraint constraint;
|
ServiceLoadRouteLevelConstraint constraint;
|
||||||
|
|
||||||
VehicleRoutingTransportCosts routingCosts = new AbstractForwardVehicleRoutingTransportCosts() {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public double getTransportTime(Location from, Location to,double departureTime, Driver driver, Vehicle vehicle) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public double getTransportCost(Location from, Location to,double departureTime, Driver driver, Vehicle vehicle) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
StateManager stateManager;
|
StateManager stateManager;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
|
|
@ -338,7 +320,7 @@ public class ServiceLoadRouteLevelConstraintTest {
|
||||||
final Service pickup2 = createPickup("pick2",3);
|
final Service pickup2 = createPickup("pick2",3);
|
||||||
|
|
||||||
VehicleType type = VehicleTypeImpl.Builder.newInstance("type").addCapacityDimension(0,3).build();
|
VehicleType type = VehicleTypeImpl.Builder.newInstance("type").addCapacityDimension(0,3).build();
|
||||||
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setType(type).setStartLocationId("loc").build();
|
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setType(type).setStartLocation(Location.newInstance("loc")).build();
|
||||||
|
|
||||||
VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addVehicle(vehicle).addJob(pickup).addJob(pickup2).build();
|
VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addVehicle(vehicle).addJob(pickup).addJob(pickup2).build();
|
||||||
|
|
||||||
|
|
@ -354,7 +336,7 @@ public class ServiceLoadRouteLevelConstraintTest {
|
||||||
Pickup service = (Pickup) createPickup("pick",2);
|
Pickup service = (Pickup) createPickup("pick",2);
|
||||||
Service serviceInRoute = createPickup("pick1",3);
|
Service serviceInRoute = createPickup("pick1",3);
|
||||||
VehicleType type = VehicleTypeImpl.Builder.newInstance("type").addCapacityDimension(0,3).build();
|
VehicleType type = VehicleTypeImpl.Builder.newInstance("type").addCapacityDimension(0,3).build();
|
||||||
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setType(type).setStartLocationId("loc").build();
|
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setType(type).setStartLocation(Location.newInstance("loc")).build();
|
||||||
VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addVehicle(vehicle).addJob(service).addJob(serviceInRoute).build();
|
VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addVehicle(vehicle).addJob(service).addJob(serviceInRoute).build();
|
||||||
VehicleRoute route = VehicleRoute.Builder.newInstance(vehicle).setJobActivityFactory(vrp.getJobActivityFactory()).addService(serviceInRoute).build();
|
VehicleRoute route = VehicleRoute.Builder.newInstance(vehicle).setJobActivityFactory(vrp.getJobActivityFactory()).addService(serviceInRoute).build();
|
||||||
stateManager.informInsertionStarts(Arrays.asList(route), null);
|
stateManager.informInsertionStarts(Arrays.asList(route), null);
|
||||||
|
|
@ -366,12 +348,8 @@ public class ServiceLoadRouteLevelConstraintTest {
|
||||||
|
|
||||||
|
|
||||||
private Service createPickup(String string, int i) {
|
private Service createPickup(String string, int i) {
|
||||||
return Pickup.Builder.newInstance(string).addSizeDimension(0, i).setLocationId("loc").build();
|
return Pickup.Builder.newInstance(string).addSizeDimension(0, i).setLocation(Location.newInstance("loc")).build();
|
||||||
}
|
}
|
||||||
|
|
||||||
private Service createDelivery(String string, int i) {
|
|
||||||
return Delivery.Builder.newInstance(string).addSizeDimension(0, i).setLocationId("loc").build();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,7 @@
|
||||||
package jsprit.core.problem.constraint;
|
package jsprit.core.problem.constraint;
|
||||||
|
|
||||||
import jsprit.core.algorithm.state.StateManager;
|
import jsprit.core.algorithm.state.StateManager;
|
||||||
|
import jsprit.core.problem.Location;
|
||||||
import jsprit.core.problem.VehicleRoutingProblem;
|
import jsprit.core.problem.VehicleRoutingProblem;
|
||||||
import jsprit.core.problem.job.Service;
|
import jsprit.core.problem.job.Service;
|
||||||
import jsprit.core.problem.misc.JobInsertionContext;
|
import jsprit.core.problem.misc.JobInsertionContext;
|
||||||
|
|
@ -49,14 +50,14 @@ public class SkillConstraintTest {
|
||||||
@Before
|
@Before
|
||||||
public void doBefore(){
|
public void doBefore(){
|
||||||
VehicleType type = VehicleTypeImpl.Builder.newInstance("t").build();
|
VehicleType type = VehicleTypeImpl.Builder.newInstance("t").build();
|
||||||
vehicle = VehicleImpl.Builder.newInstance("v").addSkill("skill1").addSkill("skill2").addSkill("skill3").addSkill("skill4").setStartLocationId("start").setType(type).build();
|
vehicle = VehicleImpl.Builder.newInstance("v").addSkill("skill1").addSkill("skill2").addSkill("skill3").addSkill("skill4").setStartLocation(Location.newInstance("start")).setType(type).build();
|
||||||
vehicle2 = VehicleImpl.Builder.newInstance("v").addSkill("skill4").addSkill("skill5").setStartLocationId("start").setType(type).build();
|
vehicle2 = VehicleImpl.Builder.newInstance("v").addSkill("skill4").addSkill("skill5").setStartLocation(Location.newInstance("start")).setType(type).build();
|
||||||
|
|
||||||
Service service = Service.Builder.newInstance("s").setLocationId("loc").addRequiredSkill("skill1").build();
|
Service service = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")).addRequiredSkill("skill1").build();
|
||||||
Service service2 = Service.Builder.newInstance("s2").setLocationId("loc").addRequiredSkill("skill1").addRequiredSkill("skill2").addRequiredSkill("skill3").build();
|
Service service2 = Service.Builder.newInstance("s2").setLocation(Location.newInstance("loc")).addRequiredSkill("skill1").addRequiredSkill("skill2").addRequiredSkill("skill3").build();
|
||||||
|
|
||||||
Service service3 = Service.Builder.newInstance("s3").setLocationId("loc").addRequiredSkill("skill4").addRequiredSkill("skill5").build();
|
Service service3 = Service.Builder.newInstance("s3").setLocation(Location.newInstance("loc")).addRequiredSkill("skill4").addRequiredSkill("skill5").build();
|
||||||
Service service4 = Service.Builder.newInstance("s4").setLocationId("loc").addRequiredSkill("skill1").build();
|
Service service4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance("loc")).addRequiredSkill("skill1").build();
|
||||||
|
|
||||||
vrp = VehicleRoutingProblem.Builder.newInstance().addVehicle(vehicle).addVehicle(vehicle2).addJob(service)
|
vrp = VehicleRoutingProblem.Builder.newInstance().addVehicle(vehicle).addVehicle(vehicle2).addJob(service)
|
||||||
.addJob(service2).addJob(service3).addJob(service4).build();
|
.addJob(service2).addJob(service3).addJob(service4).build();
|
||||||
|
|
|
||||||
|
|
@ -21,10 +21,7 @@ import jsprit.core.algorithm.state.InternalStates;
|
||||||
import jsprit.core.algorithm.state.StateManager;
|
import jsprit.core.algorithm.state.StateManager;
|
||||||
import jsprit.core.algorithm.state.UpdateActivityTimes;
|
import jsprit.core.algorithm.state.UpdateActivityTimes;
|
||||||
import jsprit.core.algorithm.state.UpdateVehicleDependentPracticalTimeWindows;
|
import jsprit.core.algorithm.state.UpdateVehicleDependentPracticalTimeWindows;
|
||||||
import jsprit.core.problem.AbstractActivity;
|
import jsprit.core.problem.*;
|
||||||
import jsprit.core.problem.AbstractVehicle;
|
|
||||||
import jsprit.core.problem.JobActivityFactory;
|
|
||||||
import jsprit.core.problem.VehicleRoutingProblem;
|
|
||||||
import jsprit.core.problem.cost.VehicleRoutingTransportCosts;
|
import jsprit.core.problem.cost.VehicleRoutingTransportCosts;
|
||||||
import jsprit.core.problem.job.Job;
|
import jsprit.core.problem.job.Job;
|
||||||
import jsprit.core.problem.job.Service;
|
import jsprit.core.problem.job.Service;
|
||||||
|
|
@ -55,8 +52,6 @@ public class VehicleDependentTimeWindowTest {
|
||||||
|
|
||||||
private VehicleRoutingTransportCosts routingCosts;
|
private VehicleRoutingTransportCosts routingCosts;
|
||||||
|
|
||||||
private VehicleRoutingProblem vrp;
|
|
||||||
|
|
||||||
private VehicleImpl v3;
|
private VehicleImpl v3;
|
||||||
private VehicleImpl v4;
|
private VehicleImpl v4;
|
||||||
private VehicleImpl v5;
|
private VehicleImpl v5;
|
||||||
|
|
@ -69,29 +64,29 @@ public class VehicleDependentTimeWindowTest {
|
||||||
vrpBuilder.setRoutingCost(routingCosts);
|
vrpBuilder.setRoutingCost(routingCosts);
|
||||||
|
|
||||||
VehicleType type = VehicleTypeImpl.Builder.newInstance("type").build();
|
VehicleType type = VehicleTypeImpl.Builder.newInstance("type").build();
|
||||||
vehicle = VehicleImpl.Builder.newInstance("v").setType(type).setStartLocationId("0,0")
|
vehicle = VehicleImpl.Builder.newInstance("v").setType(type).setStartLocation(Location.newInstance("0,0"))
|
||||||
.setEarliestStart(0.).setLatestArrival(100.).build();
|
.setEarliestStart(0.).setLatestArrival(100.).build();
|
||||||
|
|
||||||
v2 = VehicleImpl.Builder.newInstance("v2").setType(type).setStartLocationId("0,0")
|
v2 = VehicleImpl.Builder.newInstance("v2").setType(type).setStartLocation(Location.newInstance("0,0"))
|
||||||
.setEarliestStart(0.).setLatestArrival(60.).build();
|
.setEarliestStart(0.).setLatestArrival(60.).build();
|
||||||
|
|
||||||
v3 = VehicleImpl.Builder.newInstance("v3").setType(type).setStartLocationId("0,0")
|
v3 = VehicleImpl.Builder.newInstance("v3").setType(type).setStartLocation(Location.newInstance("0,0"))
|
||||||
.setEarliestStart(0.).setLatestArrival(50.).build();
|
.setEarliestStart(0.).setLatestArrival(50.).build();
|
||||||
|
|
||||||
v4 = VehicleImpl.Builder.newInstance("v4").setType(type).setStartLocationId("0,0")
|
v4 = VehicleImpl.Builder.newInstance("v4").setType(type).setStartLocation(Location.newInstance("0,0"))
|
||||||
.setEarliestStart(0.).setLatestArrival(10.).build();
|
.setEarliestStart(0.).setLatestArrival(10.).build();
|
||||||
|
|
||||||
v5 = VehicleImpl.Builder.newInstance("v5").setType(type).setStartLocationId("0,0")
|
v5 = VehicleImpl.Builder.newInstance("v5").setType(type).setStartLocation(Location.newInstance("0,0"))
|
||||||
.setEarliestStart(60.).setLatestArrival(100.).build();
|
.setEarliestStart(60.).setLatestArrival(100.).build();
|
||||||
|
|
||||||
v6 = VehicleImpl.Builder.newInstance("v6").setType(type).setStartLocationId("0,0")
|
v6 = VehicleImpl.Builder.newInstance("v6").setType(type).setStartLocation(Location.newInstance("0,0"))
|
||||||
.setEndLocationId("40,0").setEarliestStart(0.).setLatestArrival(40.).build();
|
.setEndLocation(Location.newInstance("40,0")).setEarliestStart(0.).setLatestArrival(40.).build();
|
||||||
|
|
||||||
vrpBuilder.addVehicle(vehicle).addVehicle(v2).addVehicle(v3).addVehicle(v4).addVehicle(v5).addVehicle(v6);
|
vrpBuilder.addVehicle(vehicle).addVehicle(v2).addVehicle(v3).addVehicle(v4).addVehicle(v5).addVehicle(v6);
|
||||||
|
|
||||||
Service service = Service.Builder.newInstance("s1").setLocationId("10,0").build();
|
Service service = Service.Builder.newInstance("s1").setLocation(Location.newInstance("10,0")).build();
|
||||||
Service service2 = Service.Builder.newInstance("s2").setLocationId("20,0").build();
|
Service service2 = Service.Builder.newInstance("s2").setLocation(Location.newInstance("20,0")).build();
|
||||||
Service service3 = Service.Builder.newInstance("s3").setLocationId("30,0").build();
|
Service service3 = Service.Builder.newInstance("s3").setLocation(Location.newInstance("30,0")).build();
|
||||||
|
|
||||||
vrpBuilder.addJob(service).addJob(service2).addJob(service3);
|
vrpBuilder.addJob(service).addJob(service2).addJob(service3);
|
||||||
final VehicleRoutingProblem vrp = vrpBuilder.build();
|
final VehicleRoutingProblem vrp = vrpBuilder.build();
|
||||||
|
|
@ -116,7 +111,7 @@ public class VehicleDependentTimeWindowTest {
|
||||||
vehicles.add(v6);
|
vehicles.add(v6);
|
||||||
|
|
||||||
final VehicleFleetManager fleetManager = new FiniteFleetManagerFactory(vehicles).createFleetManager();
|
final VehicleFleetManager fleetManager = new FiniteFleetManagerFactory(vehicles).createFleetManager();
|
||||||
// stateManager.updateTimeWindowStates();
|
|
||||||
UpdateVehicleDependentPracticalTimeWindows timeWindow_updater = new UpdateVehicleDependentPracticalTimeWindows(stateManager, routingCosts);
|
UpdateVehicleDependentPracticalTimeWindows timeWindow_updater = new UpdateVehicleDependentPracticalTimeWindows(stateManager, routingCosts);
|
||||||
timeWindow_updater.setVehiclesToUpdate(new UpdateVehicleDependentPracticalTimeWindows.VehiclesToUpdate() {
|
timeWindow_updater.setVehiclesToUpdate(new UpdateVehicleDependentPracticalTimeWindows.VehiclesToUpdate() {
|
||||||
|
|
||||||
|
|
@ -155,7 +150,7 @@ public class VehicleDependentTimeWindowTest {
|
||||||
@Test
|
@Test
|
||||||
public void whenNewJobIsInsertedWithOldVeh_itJustShouldReturnTrue(){
|
public void whenNewJobIsInsertedWithOldVeh_itJustShouldReturnTrue(){
|
||||||
|
|
||||||
Service s4 = Service.Builder.newInstance("s4").setLocationId("50,0").build();
|
Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance("50,0")).build();
|
||||||
PickupService serviceAct = new PickupService(s4);
|
PickupService serviceAct = new PickupService(s4);
|
||||||
|
|
||||||
JobInsertionContext insertionContext = new JobInsertionContext(route,s4,vehicle,route.getDriver(),0.);
|
JobInsertionContext insertionContext = new JobInsertionContext(route,s4,vehicle,route.getDriver(),0.);
|
||||||
|
|
@ -170,7 +165,7 @@ public class VehicleDependentTimeWindowTest {
|
||||||
@Test
|
@Test
|
||||||
public void whenNewJobIsInsertedWithOldVeh_itJustShouldReturnFalse(){
|
public void whenNewJobIsInsertedWithOldVeh_itJustShouldReturnFalse(){
|
||||||
|
|
||||||
Service s4 = Service.Builder.newInstance("s4").setLocationId("1000,0").build();
|
Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance("1000,0")).build();
|
||||||
PickupService serviceAct = new PickupService(s4);
|
PickupService serviceAct = new PickupService(s4);
|
||||||
|
|
||||||
JobInsertionContext insertionContext = new JobInsertionContext(route,s4,vehicle,route.getDriver(),0.);
|
JobInsertionContext insertionContext = new JobInsertionContext(route,s4,vehicle,route.getDriver(),0.);
|
||||||
|
|
@ -185,7 +180,7 @@ public class VehicleDependentTimeWindowTest {
|
||||||
@Test
|
@Test
|
||||||
public void whenNewJobIsInsertedInBetweenAct1And2WithOldVeh_itJustShouldReturnTrue(){
|
public void whenNewJobIsInsertedInBetweenAct1And2WithOldVeh_itJustShouldReturnTrue(){
|
||||||
|
|
||||||
Service s4 = Service.Builder.newInstance("s4").setLocationId("50,0").build();
|
Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance("50,0")).build();
|
||||||
PickupService serviceAct = new PickupService(s4);
|
PickupService serviceAct = new PickupService(s4);
|
||||||
|
|
||||||
JobInsertionContext insertionContext = new JobInsertionContext(route,s4,vehicle,route.getDriver(),0.);
|
JobInsertionContext insertionContext = new JobInsertionContext(route,s4,vehicle,route.getDriver(),0.);
|
||||||
|
|
@ -203,7 +198,7 @@ public class VehicleDependentTimeWindowTest {
|
||||||
@Test
|
@Test
|
||||||
public void whenNewJobIsInsertedInBetweenAct1And2WithOldVeh_itJustShouldReturnFalse(){
|
public void whenNewJobIsInsertedInBetweenAct1And2WithOldVeh_itJustShouldReturnFalse(){
|
||||||
|
|
||||||
Service s4 = Service.Builder.newInstance("s4").setLocationId("51,0").build();
|
Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance("51,0")).build();
|
||||||
PickupService serviceAct = new PickupService(s4);
|
PickupService serviceAct = new PickupService(s4);
|
||||||
|
|
||||||
JobInsertionContext insertionContext = new JobInsertionContext(route,s4,vehicle,route.getDriver(),0.);
|
JobInsertionContext insertionContext = new JobInsertionContext(route,s4,vehicle,route.getDriver(),0.);
|
||||||
|
|
@ -225,7 +220,7 @@ public class VehicleDependentTimeWindowTest {
|
||||||
System.out.println("actualEndTime " + route.getEnd().getArrTime());
|
System.out.println("actualEndTime " + route.getEnd().getArrTime());
|
||||||
assertEquals(60.,route.getEnd().getArrTime(),0.01);
|
assertEquals(60.,route.getEnd().getArrTime(),0.01);
|
||||||
|
|
||||||
Service s4 = Service.Builder.newInstance("s4").setLocationId("40,0").build();
|
Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance("40,0")).build();
|
||||||
PickupService serviceAct = new PickupService(s4);
|
PickupService serviceAct = new PickupService(s4);
|
||||||
|
|
||||||
JobInsertionContext insertionContext = new JobInsertionContext(route,s4,v2,route.getDriver(),0.);
|
JobInsertionContext insertionContext = new JobInsertionContext(route,s4,v2,route.getDriver(),0.);
|
||||||
|
|
@ -244,7 +239,7 @@ public class VehicleDependentTimeWindowTest {
|
||||||
System.out.println("actualEndTime " + route.getEnd().getArrTime());
|
System.out.println("actualEndTime " + route.getEnd().getArrTime());
|
||||||
assertEquals(60.,route.getEnd().getArrTime(),0.01);
|
assertEquals(60.,route.getEnd().getArrTime(),0.01);
|
||||||
|
|
||||||
Service s4 = Service.Builder.newInstance("s4").setLocationId("40,0").build();
|
Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance("40,0")).build();
|
||||||
PickupService serviceAct = new PickupService(s4);
|
PickupService serviceAct = new PickupService(s4);
|
||||||
|
|
||||||
JobInsertionContext insertionContext = new JobInsertionContext(route,s4,v3,route.getDriver(),0.);
|
JobInsertionContext insertionContext = new JobInsertionContext(route,s4,v3,route.getDriver(),0.);
|
||||||
|
|
@ -262,7 +257,7 @@ public class VehicleDependentTimeWindowTest {
|
||||||
System.out.println("actualEndTime " + route.getEnd().getArrTime());
|
System.out.println("actualEndTime " + route.getEnd().getArrTime());
|
||||||
assertEquals(60.,route.getEnd().getArrTime(),0.01);
|
assertEquals(60.,route.getEnd().getArrTime(),0.01);
|
||||||
|
|
||||||
Service s4 = Service.Builder.newInstance("s4").setLocationId("40,0").build();
|
Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance("40,0")).build();
|
||||||
PickupService serviceAct = new PickupService(s4);
|
PickupService serviceAct = new PickupService(s4);
|
||||||
|
|
||||||
JobInsertionContext insertionContext = new JobInsertionContext(route,s4,v4,route.getDriver(),0.);
|
JobInsertionContext insertionContext = new JobInsertionContext(route,s4,v4,route.getDriver(),0.);
|
||||||
|
|
@ -280,7 +275,7 @@ public class VehicleDependentTimeWindowTest {
|
||||||
System.out.println("actualEndTime " + route.getEnd().getArrTime());
|
System.out.println("actualEndTime " + route.getEnd().getArrTime());
|
||||||
assertEquals(60.,route.getEnd().getArrTime(),0.01);
|
assertEquals(60.,route.getEnd().getArrTime(),0.01);
|
||||||
|
|
||||||
Service s4 = Service.Builder.newInstance("s4").setLocationId("40,0").build();
|
Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance("40,0")).build();
|
||||||
PickupService serviceAct = new PickupService(s4);
|
PickupService serviceAct = new PickupService(s4);
|
||||||
|
|
||||||
JobInsertionContext insertionContext = new JobInsertionContext(route,s4,v6,route.getDriver(),0.);
|
JobInsertionContext insertionContext = new JobInsertionContext(route,s4,v6,route.getDriver(),0.);
|
||||||
|
|
@ -298,7 +293,7 @@ public class VehicleDependentTimeWindowTest {
|
||||||
System.out.println("actualEndTime " + route.getEnd().getArrTime());
|
System.out.println("actualEndTime " + route.getEnd().getArrTime());
|
||||||
assertEquals(60.,route.getEnd().getArrTime(),0.01);
|
assertEquals(60.,route.getEnd().getArrTime(),0.01);
|
||||||
|
|
||||||
Service s4 = Service.Builder.newInstance("s4").setLocationId("40,0").build();
|
Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance("40,0")).build();
|
||||||
PickupService serviceAct = new PickupService(s4);
|
PickupService serviceAct = new PickupService(s4);
|
||||||
|
|
||||||
JobInsertionContext insertionContext = new JobInsertionContext(route,s4,v6,route.getDriver(),0.);
|
JobInsertionContext insertionContext = new JobInsertionContext(route,s4,v6,route.getDriver(),0.);
|
||||||
|
|
@ -316,7 +311,7 @@ public class VehicleDependentTimeWindowTest {
|
||||||
System.out.println("actualEndTime " + route.getEnd().getArrTime());
|
System.out.println("actualEndTime " + route.getEnd().getArrTime());
|
||||||
assertEquals(60.,route.getEnd().getArrTime(),0.01);
|
assertEquals(60.,route.getEnd().getArrTime(),0.01);
|
||||||
|
|
||||||
Service s4 = Service.Builder.newInstance("s4").setLocationId("40,0").build();
|
Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance("40,0")).build();
|
||||||
PickupService serviceAct = new PickupService(s4);
|
PickupService serviceAct = new PickupService(s4);
|
||||||
|
|
||||||
JobInsertionContext insertionContext = new JobInsertionContext(route,s4,v6,route.getDriver(),0.);
|
JobInsertionContext insertionContext = new JobInsertionContext(route,s4,v6,route.getDriver(),0.);
|
||||||
|
|
@ -332,7 +327,7 @@ public class VehicleDependentTimeWindowTest {
|
||||||
System.out.println("actualEndTime " + route.getEnd().getArrTime());
|
System.out.println("actualEndTime " + route.getEnd().getArrTime());
|
||||||
assertEquals(60.,route.getEnd().getArrTime(),0.01);
|
assertEquals(60.,route.getEnd().getArrTime(),0.01);
|
||||||
|
|
||||||
Service s4 = Service.Builder.newInstance("s4").setLocationId("40,0").build();
|
Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance("40,0")).build();
|
||||||
PickupService serviceAct = new PickupService(s4);
|
PickupService serviceAct = new PickupService(s4);
|
||||||
|
|
||||||
JobInsertionContext insertionContext = new JobInsertionContext(route,s4,v5,route.getDriver(),60.);
|
JobInsertionContext insertionContext = new JobInsertionContext(route,s4,v5,route.getDriver(),60.);
|
||||||
|
|
|
||||||
|
|
@ -21,10 +21,7 @@ import jsprit.core.algorithm.state.InternalStates;
|
||||||
import jsprit.core.algorithm.state.StateManager;
|
import jsprit.core.algorithm.state.StateManager;
|
||||||
import jsprit.core.algorithm.state.UpdateActivityTimes;
|
import jsprit.core.algorithm.state.UpdateActivityTimes;
|
||||||
import jsprit.core.algorithm.state.UpdateVehicleDependentPracticalTimeWindows;
|
import jsprit.core.algorithm.state.UpdateVehicleDependentPracticalTimeWindows;
|
||||||
import jsprit.core.problem.AbstractActivity;
|
import jsprit.core.problem.*;
|
||||||
import jsprit.core.problem.AbstractVehicle;
|
|
||||||
import jsprit.core.problem.JobActivityFactory;
|
|
||||||
import jsprit.core.problem.VehicleRoutingProblem;
|
|
||||||
import jsprit.core.problem.cost.VehicleRoutingTransportCosts;
|
import jsprit.core.problem.cost.VehicleRoutingTransportCosts;
|
||||||
import jsprit.core.problem.job.Job;
|
import jsprit.core.problem.job.Job;
|
||||||
import jsprit.core.problem.job.Service;
|
import jsprit.core.problem.job.Service;
|
||||||
|
|
@ -55,8 +52,6 @@ public class VehicleDependentTimeWindowWithStartTimeAndMaxOperationTimeTest {
|
||||||
|
|
||||||
private VehicleRoutingTransportCosts routingCosts;
|
private VehicleRoutingTransportCosts routingCosts;
|
||||||
|
|
||||||
private VehicleRoutingProblem vrp;
|
|
||||||
|
|
||||||
private VehicleImpl v3;
|
private VehicleImpl v3;
|
||||||
private VehicleImpl v4;
|
private VehicleImpl v4;
|
||||||
private VehicleImpl v5;
|
private VehicleImpl v5;
|
||||||
|
|
@ -69,29 +64,29 @@ public class VehicleDependentTimeWindowWithStartTimeAndMaxOperationTimeTest {
|
||||||
vrpBuilder.setRoutingCost(routingCosts);
|
vrpBuilder.setRoutingCost(routingCosts);
|
||||||
|
|
||||||
VehicleType type = VehicleTypeImpl.Builder.newInstance("type").build();
|
VehicleType type = VehicleTypeImpl.Builder.newInstance("type").build();
|
||||||
vehicle = VehicleImpl.Builder.newInstance("v").setType(type).setStartLocationId("0,0")
|
vehicle = VehicleImpl.Builder.newInstance("v").setType(type).setStartLocation(Location.newInstance("0,0"))
|
||||||
.setEarliestStart(0.).setLatestArrival(100.).build();
|
.setEarliestStart(0.).setLatestArrival(100.).build();
|
||||||
|
|
||||||
v2 = VehicleImpl.Builder.newInstance("v2").setType(type).setStartLocationId("0,0")
|
v2 = VehicleImpl.Builder.newInstance("v2").setType(type).setStartLocation(Location.newInstance("0,0"))
|
||||||
.setEarliestStart(0.).setLatestArrival(60.).build();
|
.setEarliestStart(0.).setLatestArrival(60.).build();
|
||||||
|
|
||||||
v3 = VehicleImpl.Builder.newInstance("v3").setType(type).setStartLocationId("0,0")
|
v3 = VehicleImpl.Builder.newInstance("v3").setType(type).setStartLocation(Location.newInstance("0,0"))
|
||||||
.setEarliestStart(0.).setLatestArrival(50.).build();
|
.setEarliestStart(0.).setLatestArrival(50.).build();
|
||||||
|
|
||||||
v4 = VehicleImpl.Builder.newInstance("v4").setType(type).setStartLocationId("0,0")
|
v4 = VehicleImpl.Builder.newInstance("v4").setType(type).setStartLocation(Location.newInstance("0,0"))
|
||||||
.setEarliestStart(0.).setLatestArrival(10.).build();
|
.setEarliestStart(0.).setLatestArrival(10.).build();
|
||||||
|
|
||||||
v5 = VehicleImpl.Builder.newInstance("v5").setType(type).setStartLocationId("0,0")
|
v5 = VehicleImpl.Builder.newInstance("v5").setType(type).setStartLocation(Location.newInstance("0,0"))
|
||||||
.setEarliestStart(60.).setLatestArrival(100.).build();
|
.setEarliestStart(60.).setLatestArrival(100.).build();
|
||||||
|
|
||||||
v6 = VehicleImpl.Builder.newInstance("v6").setType(type).setStartLocationId("0,0")
|
v6 = VehicleImpl.Builder.newInstance("v6").setType(type).setStartLocation(Location.newInstance("0,0"))
|
||||||
.setEndLocationId("40,0").setEarliestStart(0.).setLatestArrival(40.).build();
|
.setEndLocation(Location.newInstance("40,0")).setEarliestStart(0.).setLatestArrival(40.).build();
|
||||||
|
|
||||||
vrpBuilder.addVehicle(vehicle).addVehicle(v2).addVehicle(v3).addVehicle(v4).addVehicle(v5).addVehicle(v6);
|
vrpBuilder.addVehicle(vehicle).addVehicle(v2).addVehicle(v3).addVehicle(v4).addVehicle(v5).addVehicle(v6);
|
||||||
|
|
||||||
Service service = Service.Builder.newInstance("s1").setLocationId("10,0").build();
|
Service service = Service.Builder.newInstance("s1").setLocation(Location.newInstance("10,0")).build();
|
||||||
Service service2 = Service.Builder.newInstance("s2").setLocationId("20,0").build();
|
Service service2 = Service.Builder.newInstance("s2").setLocation(Location.newInstance("20,0")).build();
|
||||||
Service service3 = Service.Builder.newInstance("s3").setLocationId("30,0").build();
|
Service service3 = Service.Builder.newInstance("s3").setLocation(Location.newInstance("30,0")).build();
|
||||||
|
|
||||||
vrpBuilder.addJob(service).addJob(service2).addJob(service3);
|
vrpBuilder.addJob(service).addJob(service2).addJob(service3);
|
||||||
final VehicleRoutingProblem vrp = vrpBuilder.build();
|
final VehicleRoutingProblem vrp = vrpBuilder.build();
|
||||||
|
|
@ -155,7 +150,7 @@ public class VehicleDependentTimeWindowWithStartTimeAndMaxOperationTimeTest {
|
||||||
@Test
|
@Test
|
||||||
public void whenNewJobIsInsertedWithOldVeh_itJustShouldReturnTrue(){
|
public void whenNewJobIsInsertedWithOldVeh_itJustShouldReturnTrue(){
|
||||||
|
|
||||||
Service s4 = Service.Builder.newInstance("s4").setLocationId("50,0").build();
|
Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance("50,0")).build();
|
||||||
PickupService serviceAct = new PickupService(s4);
|
PickupService serviceAct = new PickupService(s4);
|
||||||
|
|
||||||
JobInsertionContext insertionContext = new JobInsertionContext(route,s4,vehicle,route.getDriver(),0.);
|
JobInsertionContext insertionContext = new JobInsertionContext(route,s4,vehicle,route.getDriver(),0.);
|
||||||
|
|
@ -170,7 +165,7 @@ public class VehicleDependentTimeWindowWithStartTimeAndMaxOperationTimeTest {
|
||||||
@Test
|
@Test
|
||||||
public void whenNewJobIsInsertedWithOldVeh_itJustShouldReturnFalse(){
|
public void whenNewJobIsInsertedWithOldVeh_itJustShouldReturnFalse(){
|
||||||
|
|
||||||
Service s4 = Service.Builder.newInstance("s4").setLocationId("1000,0").build();
|
Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance("1000,0")).build();
|
||||||
PickupService serviceAct = new PickupService(s4);
|
PickupService serviceAct = new PickupService(s4);
|
||||||
|
|
||||||
JobInsertionContext insertionContext = new JobInsertionContext(route,s4,vehicle,route.getDriver(),0.);
|
JobInsertionContext insertionContext = new JobInsertionContext(route,s4,vehicle,route.getDriver(),0.);
|
||||||
|
|
@ -185,7 +180,7 @@ public class VehicleDependentTimeWindowWithStartTimeAndMaxOperationTimeTest {
|
||||||
@Test
|
@Test
|
||||||
public void whenNewJobIsInsertedInBetweenAct1And2WithOldVeh_itJustShouldReturnTrue(){
|
public void whenNewJobIsInsertedInBetweenAct1And2WithOldVeh_itJustShouldReturnTrue(){
|
||||||
|
|
||||||
Service s4 = Service.Builder.newInstance("s4").setLocationId("50,0").build();
|
Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance("50,0")).build();
|
||||||
PickupService serviceAct = new PickupService(s4);
|
PickupService serviceAct = new PickupService(s4);
|
||||||
|
|
||||||
JobInsertionContext insertionContext = new JobInsertionContext(route,s4,vehicle,route.getDriver(),0.);
|
JobInsertionContext insertionContext = new JobInsertionContext(route,s4,vehicle,route.getDriver(),0.);
|
||||||
|
|
@ -203,7 +198,7 @@ public class VehicleDependentTimeWindowWithStartTimeAndMaxOperationTimeTest {
|
||||||
@Test
|
@Test
|
||||||
public void whenNewJobIsInsertedInBetweenAct1And2WithOldVeh_itJustShouldReturnFalse(){
|
public void whenNewJobIsInsertedInBetweenAct1And2WithOldVeh_itJustShouldReturnFalse(){
|
||||||
|
|
||||||
Service s4 = Service.Builder.newInstance("s4").setLocationId("51,0").build();
|
Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance("51,0")).build();
|
||||||
PickupService serviceAct = new PickupService(s4);
|
PickupService serviceAct = new PickupService(s4);
|
||||||
|
|
||||||
JobInsertionContext insertionContext = new JobInsertionContext(route,s4,vehicle,route.getDriver(),0.);
|
JobInsertionContext insertionContext = new JobInsertionContext(route,s4,vehicle,route.getDriver(),0.);
|
||||||
|
|
@ -225,7 +220,7 @@ public class VehicleDependentTimeWindowWithStartTimeAndMaxOperationTimeTest {
|
||||||
System.out.println("actualEndTime " + route.getEnd().getArrTime());
|
System.out.println("actualEndTime " + route.getEnd().getArrTime());
|
||||||
assertEquals(60.,route.getEnd().getArrTime(),0.01);
|
assertEquals(60.,route.getEnd().getArrTime(),0.01);
|
||||||
|
|
||||||
Service s4 = Service.Builder.newInstance("s4").setLocationId("40,0").build();
|
Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance("40,0")).build();
|
||||||
PickupService serviceAct = new PickupService(s4);
|
PickupService serviceAct = new PickupService(s4);
|
||||||
|
|
||||||
JobInsertionContext insertionContext = new JobInsertionContext(route,s4,v2,route.getDriver(),0.);
|
JobInsertionContext insertionContext = new JobInsertionContext(route,s4,v2,route.getDriver(),0.);
|
||||||
|
|
@ -244,7 +239,7 @@ public class VehicleDependentTimeWindowWithStartTimeAndMaxOperationTimeTest {
|
||||||
System.out.println("actualEndTime " + route.getEnd().getArrTime());
|
System.out.println("actualEndTime " + route.getEnd().getArrTime());
|
||||||
assertEquals(60.,route.getEnd().getArrTime(),0.01);
|
assertEquals(60.,route.getEnd().getArrTime(),0.01);
|
||||||
|
|
||||||
Service s4 = Service.Builder.newInstance("s4").setLocationId("40,0").build();
|
Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance("40,0")).build();
|
||||||
PickupService serviceAct = new PickupService(s4);
|
PickupService serviceAct = new PickupService(s4);
|
||||||
|
|
||||||
JobInsertionContext insertionContext = new JobInsertionContext(route,s4,v3,route.getDriver(),0.);
|
JobInsertionContext insertionContext = new JobInsertionContext(route,s4,v3,route.getDriver(),0.);
|
||||||
|
|
@ -262,7 +257,7 @@ public class VehicleDependentTimeWindowWithStartTimeAndMaxOperationTimeTest {
|
||||||
System.out.println("actualEndTime " + route.getEnd().getArrTime());
|
System.out.println("actualEndTime " + route.getEnd().getArrTime());
|
||||||
assertEquals(60.,route.getEnd().getArrTime(),0.01);
|
assertEquals(60.,route.getEnd().getArrTime(),0.01);
|
||||||
|
|
||||||
Service s4 = Service.Builder.newInstance("s4").setLocationId("40,0").build();
|
Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance("40,0")).build();
|
||||||
PickupService serviceAct = new PickupService(s4);
|
PickupService serviceAct = new PickupService(s4);
|
||||||
|
|
||||||
JobInsertionContext insertionContext = new JobInsertionContext(route,s4,v4,route.getDriver(),0.);
|
JobInsertionContext insertionContext = new JobInsertionContext(route,s4,v4,route.getDriver(),0.);
|
||||||
|
|
@ -280,7 +275,7 @@ public class VehicleDependentTimeWindowWithStartTimeAndMaxOperationTimeTest {
|
||||||
System.out.println("actualEndTime " + route.getEnd().getArrTime());
|
System.out.println("actualEndTime " + route.getEnd().getArrTime());
|
||||||
assertEquals(60.,route.getEnd().getArrTime(),0.01);
|
assertEquals(60.,route.getEnd().getArrTime(),0.01);
|
||||||
|
|
||||||
Service s4 = Service.Builder.newInstance("s4").setLocationId("40,0").build();
|
Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance("40,0")).build();
|
||||||
PickupService serviceAct = new PickupService(s4);
|
PickupService serviceAct = new PickupService(s4);
|
||||||
|
|
||||||
JobInsertionContext insertionContext = new JobInsertionContext(route,s4,v6,route.getDriver(),0.);
|
JobInsertionContext insertionContext = new JobInsertionContext(route,s4,v6,route.getDriver(),0.);
|
||||||
|
|
@ -298,7 +293,7 @@ public class VehicleDependentTimeWindowWithStartTimeAndMaxOperationTimeTest {
|
||||||
System.out.println("actualEndTime " + route.getEnd().getArrTime());
|
System.out.println("actualEndTime " + route.getEnd().getArrTime());
|
||||||
assertEquals(60.,route.getEnd().getArrTime(),0.01);
|
assertEquals(60.,route.getEnd().getArrTime(),0.01);
|
||||||
|
|
||||||
Service s4 = Service.Builder.newInstance("s4").setLocationId("40,0").build();
|
Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance("40,0")).build();
|
||||||
PickupService serviceAct = new PickupService(s4);
|
PickupService serviceAct = new PickupService(s4);
|
||||||
|
|
||||||
JobInsertionContext insertionContext = new JobInsertionContext(route,s4,v6,route.getDriver(),0.);
|
JobInsertionContext insertionContext = new JobInsertionContext(route,s4,v6,route.getDriver(),0.);
|
||||||
|
|
@ -316,7 +311,7 @@ public class VehicleDependentTimeWindowWithStartTimeAndMaxOperationTimeTest {
|
||||||
System.out.println("actualEndTime " + route.getEnd().getArrTime());
|
System.out.println("actualEndTime " + route.getEnd().getArrTime());
|
||||||
assertEquals(60.,route.getEnd().getArrTime(),0.01);
|
assertEquals(60.,route.getEnd().getArrTime(),0.01);
|
||||||
|
|
||||||
Service s4 = Service.Builder.newInstance("s4").setLocationId("40,0").build();
|
Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance("40,0")).build();
|
||||||
PickupService serviceAct = new PickupService(s4);
|
PickupService serviceAct = new PickupService(s4);
|
||||||
|
|
||||||
JobInsertionContext insertionContext = new JobInsertionContext(route,s4,v6,route.getDriver(),0.);
|
JobInsertionContext insertionContext = new JobInsertionContext(route,s4,v6,route.getDriver(),0.);
|
||||||
|
|
@ -332,7 +327,7 @@ public class VehicleDependentTimeWindowWithStartTimeAndMaxOperationTimeTest {
|
||||||
System.out.println("actualEndTime " + route.getEnd().getArrTime());
|
System.out.println("actualEndTime " + route.getEnd().getArrTime());
|
||||||
assertEquals(60.,route.getEnd().getArrTime(),0.01);
|
assertEquals(60.,route.getEnd().getArrTime(),0.01);
|
||||||
|
|
||||||
Service s4 = Service.Builder.newInstance("s4").setLocationId("40,0").build();
|
Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance("40,0")).build();
|
||||||
PickupService serviceAct = new PickupService(s4);
|
PickupService serviceAct = new PickupService(s4);
|
||||||
|
|
||||||
JobInsertionContext insertionContext = new JobInsertionContext(route,s4,v5,route.getDriver(),60.);
|
JobInsertionContext insertionContext = new JobInsertionContext(route,s4,v5,route.getDriver(),60.);
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
package jsprit.core.problem.job;
|
package jsprit.core.problem.job;
|
||||||
|
|
||||||
|
import jsprit.core.problem.Location;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.Assert.*;
|
||||||
|
|
@ -29,9 +30,9 @@ public class DeliveryTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenAddingTwoCapDimension_nuOfDimsShouldBeTwo(){
|
public void whenAddingTwoCapDimension_nuOfDimsShouldBeTwo(){
|
||||||
Delivery one = (Delivery)Delivery.Builder.newInstance("s").setLocationId("foofoo")
|
Delivery one = (Delivery)Delivery.Builder.newInstance("s").setLocation(Location.newInstance("foofoo"))
|
||||||
.addSizeDimension(0,2)
|
.addSizeDimension(0, 2)
|
||||||
.addSizeDimension(1,4)
|
.addSizeDimension(1, 4)
|
||||||
.build();
|
.build();
|
||||||
assertEquals(2,one.getSize().getNuOfDimensions());
|
assertEquals(2,one.getSize().getNuOfDimensions());
|
||||||
assertEquals(2,one.getSize().get(0));
|
assertEquals(2,one.getSize().get(0));
|
||||||
|
|
@ -41,7 +42,7 @@ public class DeliveryTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenPickupIsBuiltWithoutSpecifyingCapacity_itShouldHvCapWithOneDimAndDimValOfZero(){
|
public void whenPickupIsBuiltWithoutSpecifyingCapacity_itShouldHvCapWithOneDimAndDimValOfZero(){
|
||||||
Delivery one = (Delivery)Delivery.Builder.newInstance("s").setLocationId("foofoo")
|
Delivery one = (Delivery)Delivery.Builder.newInstance("s").setLocation(Location.newInstance("foofoo"))
|
||||||
.build();
|
.build();
|
||||||
assertEquals(1,one.getSize().getNuOfDimensions());
|
assertEquals(1,one.getSize().getNuOfDimensions());
|
||||||
assertEquals(0,one.getSize().get(0));
|
assertEquals(0,one.getSize().get(0));
|
||||||
|
|
@ -49,7 +50,7 @@ public class DeliveryTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenPickupIsBuiltWithConstructorWhereSizeIsSpecified_capacityShouldBeSetCorrectly(){
|
public void whenPickupIsBuiltWithConstructorWhereSizeIsSpecified_capacityShouldBeSetCorrectly(){
|
||||||
Delivery one = (Delivery)Delivery.Builder.newInstance("s").addSizeDimension(0, 1).setLocationId("foofoo")
|
Delivery one = (Delivery)Delivery.Builder.newInstance("s").addSizeDimension(0, 1).setLocation(Location.newInstance("foofoo"))
|
||||||
.build();
|
.build();
|
||||||
assertEquals(1,one.getSize().getNuOfDimensions());
|
assertEquals(1,one.getSize().getNuOfDimensions());
|
||||||
assertEquals(1,one.getSize().get(0));
|
assertEquals(1,one.getSize().get(0));
|
||||||
|
|
@ -57,7 +58,7 @@ public class DeliveryTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenAddingSkills_theyShouldBeAddedCorrectly(){
|
public void whenAddingSkills_theyShouldBeAddedCorrectly(){
|
||||||
Delivery s = (Delivery) Delivery.Builder.newInstance("s").setLocationId("loc")
|
Delivery s = (Delivery) Delivery.Builder.newInstance("s").setLocation(Location.newInstance("loc"))
|
||||||
.addRequiredSkill("drill").addRequiredSkill("screwdriver").build();
|
.addRequiredSkill("drill").addRequiredSkill("screwdriver").build();
|
||||||
assertTrue(s.getRequiredSkills().containsSkill("drill"));
|
assertTrue(s.getRequiredSkills().containsSkill("drill"));
|
||||||
assertTrue(s.getRequiredSkills().containsSkill("ScrewDriver"));
|
assertTrue(s.getRequiredSkills().containsSkill("ScrewDriver"));
|
||||||
|
|
@ -65,7 +66,7 @@ public class DeliveryTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenAddingSkillsCaseSens_theyShouldBeAddedCorrectly(){
|
public void whenAddingSkillsCaseSens_theyShouldBeAddedCorrectly(){
|
||||||
Delivery s = (Delivery) Delivery.Builder.newInstance("s").setLocationId("loc")
|
Delivery s = (Delivery) Delivery.Builder.newInstance("s").setLocation(Location.newInstance("loc"))
|
||||||
.addRequiredSkill("DriLl").addRequiredSkill("screwDriver").build();
|
.addRequiredSkill("DriLl").addRequiredSkill("screwDriver").build();
|
||||||
assertTrue(s.getRequiredSkills().containsSkill("drill"));
|
assertTrue(s.getRequiredSkills().containsSkill("drill"));
|
||||||
assertTrue(s.getRequiredSkills().containsSkill("drilL"));
|
assertTrue(s.getRequiredSkills().containsSkill("drilL"));
|
||||||
|
|
@ -73,7 +74,7 @@ public class DeliveryTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenAddingSkillsCaseSensV2_theyShouldBeAddedCorrectly(){
|
public void whenAddingSkillsCaseSensV2_theyShouldBeAddedCorrectly(){
|
||||||
Delivery s = (Delivery) Delivery.Builder.newInstance("s").setLocationId("loc")
|
Delivery s = (Delivery) Delivery.Builder.newInstance("s").setLocation(Location.newInstance("loc"))
|
||||||
.addRequiredSkill("screwDriver").build();
|
.addRequiredSkill("screwDriver").build();
|
||||||
assertFalse(s.getRequiredSkills().containsSkill("drill"));
|
assertFalse(s.getRequiredSkills().containsSkill("drill"));
|
||||||
assertFalse(s.getRequiredSkills().containsSkill("drilL"));
|
assertFalse(s.getRequiredSkills().containsSkill("drilL"));
|
||||||
|
|
@ -81,7 +82,7 @@ public class DeliveryTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void nameShouldBeAssigned(){
|
public void nameShouldBeAssigned(){
|
||||||
Delivery s = (Delivery) Delivery.Builder.newInstance("s").setLocationId("loc")
|
Delivery s = (Delivery) Delivery.Builder.newInstance("s").setLocation(Location.newInstance("loc"))
|
||||||
.setName("name").build();
|
.setName("name").build();
|
||||||
assertEquals("name", s.getName());
|
assertEquals("name", s.getName());
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
package jsprit.core.problem.job;
|
package jsprit.core.problem.job;
|
||||||
|
|
||||||
|
import jsprit.core.problem.Location;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.Assert.*;
|
||||||
|
|
@ -29,9 +30,9 @@ public class PickupTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenAddingTwoCapDimension_nuOfDimsShouldBeTwo(){
|
public void whenAddingTwoCapDimension_nuOfDimsShouldBeTwo(){
|
||||||
Pickup one = (Pickup)Pickup.Builder.newInstance("s").setLocationId("foofoo")
|
Pickup one = (Pickup)Pickup.Builder.newInstance("s").setLocation(Location.newInstance("foofoo"))
|
||||||
.addSizeDimension(0,2)
|
.addSizeDimension(0, 2)
|
||||||
.addSizeDimension(1,4)
|
.addSizeDimension(1, 4)
|
||||||
.build();
|
.build();
|
||||||
assertEquals(2,one.getSize().getNuOfDimensions());
|
assertEquals(2,one.getSize().getNuOfDimensions());
|
||||||
assertEquals(2,one.getSize().get(0));
|
assertEquals(2,one.getSize().get(0));
|
||||||
|
|
@ -41,7 +42,7 @@ public class PickupTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenPickupIsBuiltWithoutSpecifyingCapacity_itShouldHvCapWithOneDimAndDimValOfZero(){
|
public void whenPickupIsBuiltWithoutSpecifyingCapacity_itShouldHvCapWithOneDimAndDimValOfZero(){
|
||||||
Pickup one = (Pickup)Pickup.Builder.newInstance("s").setLocationId("foofoo")
|
Pickup one = (Pickup)Pickup.Builder.newInstance("s").setLocation(Location.newInstance("foofoo"))
|
||||||
.build();
|
.build();
|
||||||
assertEquals(1,one.getSize().getNuOfDimensions());
|
assertEquals(1,one.getSize().getNuOfDimensions());
|
||||||
assertEquals(0,one.getSize().get(0));
|
assertEquals(0,one.getSize().get(0));
|
||||||
|
|
@ -49,7 +50,7 @@ public class PickupTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenPickupIsBuiltWithConstructorWhereSizeIsSpecified_capacityShouldBeSetCorrectly(){
|
public void whenPickupIsBuiltWithConstructorWhereSizeIsSpecified_capacityShouldBeSetCorrectly(){
|
||||||
Pickup one = (Pickup)Pickup.Builder.newInstance("s").addSizeDimension(0, 1).setLocationId("foofoo")
|
Pickup one = (Pickup)Pickup.Builder.newInstance("s").addSizeDimension(0, 1).setLocation(Location.newInstance("foofoo"))
|
||||||
.build();
|
.build();
|
||||||
assertEquals(1,one.getSize().getNuOfDimensions());
|
assertEquals(1,one.getSize().getNuOfDimensions());
|
||||||
assertEquals(1,one.getSize().get(0));
|
assertEquals(1,one.getSize().get(0));
|
||||||
|
|
@ -57,7 +58,7 @@ public class PickupTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenAddingSkills_theyShouldBeAddedCorrectly(){
|
public void whenAddingSkills_theyShouldBeAddedCorrectly(){
|
||||||
Pickup s = (Pickup) Pickup.Builder.newInstance("s").setLocationId("loc")
|
Pickup s = (Pickup) Pickup.Builder.newInstance("s").setLocation(Location.newInstance("loc"))
|
||||||
.addRequiredSkill("drill").addRequiredSkill("screwdriver").build();
|
.addRequiredSkill("drill").addRequiredSkill("screwdriver").build();
|
||||||
assertTrue(s.getRequiredSkills().containsSkill("drill"));
|
assertTrue(s.getRequiredSkills().containsSkill("drill"));
|
||||||
assertTrue(s.getRequiredSkills().containsSkill("drill"));
|
assertTrue(s.getRequiredSkills().containsSkill("drill"));
|
||||||
|
|
@ -66,7 +67,7 @@ public class PickupTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenAddingSkillsCaseSens_theyShouldBeAddedCorrectly(){
|
public void whenAddingSkillsCaseSens_theyShouldBeAddedCorrectly(){
|
||||||
Pickup s = (Pickup) Pickup.Builder.newInstance("s").setLocationId("loc")
|
Pickup s = (Pickup) Pickup.Builder.newInstance("s").setLocation(Location.newInstance("loc"))
|
||||||
.addRequiredSkill("DriLl").addRequiredSkill("screwDriver").build();
|
.addRequiredSkill("DriLl").addRequiredSkill("screwDriver").build();
|
||||||
assertTrue(s.getRequiredSkills().containsSkill("drill"));
|
assertTrue(s.getRequiredSkills().containsSkill("drill"));
|
||||||
assertTrue(s.getRequiredSkills().containsSkill("drilL"));
|
assertTrue(s.getRequiredSkills().containsSkill("drilL"));
|
||||||
|
|
@ -74,7 +75,7 @@ public class PickupTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenAddingSkillsCaseSensV2_theyShouldBeAddedCorrectly(){
|
public void whenAddingSkillsCaseSensV2_theyShouldBeAddedCorrectly(){
|
||||||
Pickup s = (Pickup) Pickup.Builder.newInstance("s").setLocationId("loc")
|
Pickup s = (Pickup) Pickup.Builder.newInstance("s").setLocation(Location.newInstance("loc"))
|
||||||
.addRequiredSkill("screwDriver").build();
|
.addRequiredSkill("screwDriver").build();
|
||||||
assertFalse(s.getRequiredSkills().containsSkill("drill"));
|
assertFalse(s.getRequiredSkills().containsSkill("drill"));
|
||||||
assertFalse(s.getRequiredSkills().containsSkill("drilL"));
|
assertFalse(s.getRequiredSkills().containsSkill("drilL"));
|
||||||
|
|
@ -82,7 +83,7 @@ public class PickupTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void nameShouldBeAssigned(){
|
public void nameShouldBeAssigned(){
|
||||||
Pickup s = (Pickup) Pickup.Builder.newInstance("s").setLocationId("loc")
|
Pickup s = (Pickup) Pickup.Builder.newInstance("s").setLocation(Location.newInstance("loc"))
|
||||||
.setName("name").build();
|
.setName("name").build();
|
||||||
assertEquals("name",s.getName());
|
assertEquals("name",s.getName());
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,6 @@ package jsprit.core.problem.job;
|
||||||
|
|
||||||
import jsprit.core.problem.Location;
|
import jsprit.core.problem.Location;
|
||||||
import jsprit.core.problem.solution.route.activity.TimeWindow;
|
import jsprit.core.problem.solution.route.activity.TimeWindow;
|
||||||
import jsprit.core.util.Coordinate;
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
|
@ -30,16 +29,16 @@ public class ServiceTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenTwoServicesHaveTheSameId_theirReferencesShouldBeUnEqual(){
|
public void whenTwoServicesHaveTheSameId_theirReferencesShouldBeUnEqual(){
|
||||||
Service one = Service.Builder.newInstance("service").addSizeDimension(0, 10).setLocationId("foo").build();
|
Service one = Service.Builder.newInstance("service").addSizeDimension(0, 10).setLocation(Location.newInstance("foo")).build();
|
||||||
Service two = Service.Builder.newInstance("service").addSizeDimension(0, 10).setLocationId("fo").build();
|
Service two = Service.Builder.newInstance("service").addSizeDimension(0, 10).setLocation(Location.newInstance("fo")).build();
|
||||||
|
|
||||||
assertTrue(one != two);
|
assertTrue(one != two);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenTwoServicesHaveTheSameId_theyShouldBeEqual(){
|
public void whenTwoServicesHaveTheSameId_theyShouldBeEqual(){
|
||||||
Service one = Service.Builder.newInstance("service").addSizeDimension(0, 10).setLocationId("foo").build();
|
Service one = Service.Builder.newInstance("service").addSizeDimension(0, 10).setLocation(Location.newInstance("foo")).build();
|
||||||
Service two = Service.Builder.newInstance("service").addSizeDimension(0, 10).setLocationId("fo").build();
|
Service two = Service.Builder.newInstance("service").addSizeDimension(0, 10).setLocation(Location.newInstance("fo")).build();
|
||||||
|
|
||||||
assertTrue(one.equals(two));
|
assertTrue(one.equals(two));
|
||||||
}
|
}
|
||||||
|
|
@ -47,8 +46,8 @@ public class ServiceTest {
|
||||||
@Test
|
@Test
|
||||||
public void noName(){
|
public void noName(){
|
||||||
Set<Service> serviceSet = new HashSet<Service>();
|
Set<Service> serviceSet = new HashSet<Service>();
|
||||||
Service one = Service.Builder.newInstance("service").addSizeDimension(0, 10).setLocationId("foo").build();
|
Service one = Service.Builder.newInstance("service").addSizeDimension(0, 10).setLocation(Location.newInstance("foo")).build();
|
||||||
Service two = Service.Builder.newInstance("service").addSizeDimension(0, 10).setLocationId("fo").build();
|
Service two = Service.Builder.newInstance("service").addSizeDimension(0, 10).setLocation(Location.newInstance("fo")).build();
|
||||||
serviceSet.add(one);
|
serviceSet.add(one);
|
||||||
// assertTrue(serviceSet.contains(two));
|
// assertTrue(serviceSet.contains(two));
|
||||||
serviceSet.remove(two);
|
serviceSet.remove(two);
|
||||||
|
|
@ -58,12 +57,12 @@ public class ServiceTest {
|
||||||
@Test(expected=IllegalArgumentException.class)
|
@Test(expected=IllegalArgumentException.class)
|
||||||
public void whenCapacityDimValueIsNegative_throwIllegalStateExpception(){
|
public void whenCapacityDimValueIsNegative_throwIllegalStateExpception(){
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
Service s = Service.Builder.newInstance("s").setLocationId("foo").addSizeDimension(0, -10).build();
|
Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance("foo")).addSizeDimension(0, -10).build();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenAddingTwoCapDimension_nuOfDimsShouldBeTwo(){
|
public void whenAddingTwoCapDimension_nuOfDimsShouldBeTwo(){
|
||||||
Service one = Service.Builder.newInstance("s").setLocationId("foofoo")
|
Service one = Service.Builder.newInstance("s").setLocation(Location.newInstance("foofoo"))
|
||||||
.addSizeDimension(0,2)
|
.addSizeDimension(0,2)
|
||||||
.addSizeDimension(1,4)
|
.addSizeDimension(1,4)
|
||||||
.build();
|
.build();
|
||||||
|
|
@ -72,7 +71,7 @@ public class ServiceTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenShipmentIsBuiltWithoutSpecifyingCapacity_itShouldHvCapWithOneDimAndDimValOfZero(){
|
public void whenShipmentIsBuiltWithoutSpecifyingCapacity_itShouldHvCapWithOneDimAndDimValOfZero(){
|
||||||
Service one = Service.Builder.newInstance("s").setLocationId("foofoo")
|
Service one = Service.Builder.newInstance("s").setLocation(Location.newInstance("foofoo"))
|
||||||
.build();
|
.build();
|
||||||
assertEquals(1,one.getSize().getNuOfDimensions());
|
assertEquals(1,one.getSize().getNuOfDimensions());
|
||||||
assertEquals(0,one.getSize().get(0));
|
assertEquals(0,one.getSize().get(0));
|
||||||
|
|
@ -80,7 +79,7 @@ public class ServiceTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenShipmentIsBuiltWithConstructorWhereSizeIsSpecified_capacityShouldBeSetCorrectly(){
|
public void whenShipmentIsBuiltWithConstructorWhereSizeIsSpecified_capacityShouldBeSetCorrectly(){
|
||||||
Service one = Service.Builder.newInstance("s").addSizeDimension(0, 1).setLocationId("foofoo")
|
Service one = Service.Builder.newInstance("s").addSizeDimension(0, 1).setLocation(Location.newInstance("foofoo"))
|
||||||
.build();
|
.build();
|
||||||
assertEquals(1,one.getSize().getNuOfDimensions());
|
assertEquals(1,one.getSize().getNuOfDimensions());
|
||||||
assertEquals(1,one.getSize().get(0));
|
assertEquals(1,one.getSize().get(0));
|
||||||
|
|
@ -90,18 +89,17 @@ public class ServiceTest {
|
||||||
public void whenCallingForNewInstanceOfBuilder_itShouldReturnBuilderCorrectly(){
|
public void whenCallingForNewInstanceOfBuilder_itShouldReturnBuilderCorrectly(){
|
||||||
Service.Builder builder = Service.Builder.newInstance("s");
|
Service.Builder builder = Service.Builder.newInstance("s");
|
||||||
assertNotNull(builder);
|
assertNotNull(builder);
|
||||||
assertTrue(builder instanceof Service.Builder);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenSettingNoType_itShouldReturn_service(){
|
public void whenSettingNoType_itShouldReturn_service(){
|
||||||
Service s = Service.Builder.newInstance("s").setLocationId("loc").build();
|
Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")).build();
|
||||||
assertEquals("service",s.getType());
|
assertEquals("service",s.getType());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenSettingLocation_itShouldBeSetCorrectly(){
|
public void whenSettingLocation_itShouldBeSetCorrectly(){
|
||||||
Service s = Service.Builder.newInstance("s").setLocationId("loc").build();
|
Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")).build();
|
||||||
assertEquals("loc",s.getLocation().getId());
|
assertEquals("loc",s.getLocation().getId());
|
||||||
assertEquals("loc",s.getLocation().getId());
|
assertEquals("loc",s.getLocation().getId());
|
||||||
}
|
}
|
||||||
|
|
@ -116,7 +114,7 @@ public class ServiceTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenSettingLocationCoord_itShouldBeSetCorrectly(){
|
public void whenSettingLocationCoord_itShouldBeSetCorrectly(){
|
||||||
Service s = Service.Builder.newInstance("s").setCoord(Coordinate.newInstance(1, 2)).build();
|
Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance(1, 2)).build();
|
||||||
assertEquals(1.0,s.getLocation().getCoordinate().getX(),0.01);
|
assertEquals(1.0,s.getLocation().getCoordinate().getX(),0.01);
|
||||||
assertEquals(2.0,s.getLocation().getCoordinate().getY(),0.01);
|
assertEquals(2.0,s.getLocation().getCoordinate().getY(),0.01);
|
||||||
assertEquals(1.0,s.getLocation().getCoordinate().getX(),0.01);
|
assertEquals(1.0,s.getLocation().getCoordinate().getX(),0.01);
|
||||||
|
|
@ -132,31 +130,31 @@ public class ServiceTest {
|
||||||
@Test(expected=IllegalArgumentException.class)
|
@Test(expected=IllegalArgumentException.class)
|
||||||
public void whenServiceTimeSmallerZero_throwIllegalStateException(){
|
public void whenServiceTimeSmallerZero_throwIllegalStateException(){
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
Service s = Service.Builder.newInstance("s").setLocationId("loc").setServiceTime(-1).build();
|
Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")).setServiceTime(-1).build();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenSettingServiceTime_itShouldBeSetCorrectly(){
|
public void whenSettingServiceTime_itShouldBeSetCorrectly(){
|
||||||
Service s = Service.Builder.newInstance("s").setLocationId("loc").setServiceTime(1).build();
|
Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")).setServiceTime(1).build();
|
||||||
assertEquals(1.0,s.getServiceDuration(),0.01);
|
assertEquals(1.0,s.getServiceDuration(),0.01);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expected=IllegalArgumentException.class)
|
@Test(expected=IllegalArgumentException.class)
|
||||||
public void whenTimeWindowIsNull_throwException(){
|
public void whenTimeWindowIsNull_throwException(){
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
Service s = Service.Builder.newInstance("s").setLocationId("loc").setTimeWindow(null).build();
|
Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")).setTimeWindow(null).build();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenSettingTimeWindow_itShouldBeSetCorrectly(){
|
public void whenSettingTimeWindow_itShouldBeSetCorrectly(){
|
||||||
Service s = Service.Builder.newInstance("s").setLocationId("loc").setTimeWindow(TimeWindow.newInstance(1.0, 2.0)).build();
|
Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")).setTimeWindow(TimeWindow.newInstance(1.0, 2.0)).build();
|
||||||
assertEquals(1.0,s.getTimeWindow().getStart(),0.01);
|
assertEquals(1.0,s.getTimeWindow().getStart(),0.01);
|
||||||
assertEquals(2.0,s.getTimeWindow().getEnd(),0.01);
|
assertEquals(2.0,s.getTimeWindow().getEnd(),0.01);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenAddingSkills_theyShouldBeAddedCorrectly(){
|
public void whenAddingSkills_theyShouldBeAddedCorrectly(){
|
||||||
Service s = Service.Builder.newInstance("s").setLocationId("loc")
|
Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc"))
|
||||||
.addRequiredSkill("drill").addRequiredSkill("screwdriver").build();
|
.addRequiredSkill("drill").addRequiredSkill("screwdriver").build();
|
||||||
assertTrue(s.getRequiredSkills().containsSkill("drill"));
|
assertTrue(s.getRequiredSkills().containsSkill("drill"));
|
||||||
assertTrue(s.getRequiredSkills().containsSkill("drill"));
|
assertTrue(s.getRequiredSkills().containsSkill("drill"));
|
||||||
|
|
@ -165,7 +163,7 @@ public class ServiceTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenAddingSkillsCaseSens_theyShouldBeAddedCorrectly(){
|
public void whenAddingSkillsCaseSens_theyShouldBeAddedCorrectly(){
|
||||||
Service s = Service.Builder.newInstance("s").setLocationId("loc")
|
Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc"))
|
||||||
.addRequiredSkill("DriLl").addRequiredSkill("screwDriver").build();
|
.addRequiredSkill("DriLl").addRequiredSkill("screwDriver").build();
|
||||||
assertTrue(s.getRequiredSkills().containsSkill("drill"));
|
assertTrue(s.getRequiredSkills().containsSkill("drill"));
|
||||||
assertTrue(s.getRequiredSkills().containsSkill("drilL"));
|
assertTrue(s.getRequiredSkills().containsSkill("drilL"));
|
||||||
|
|
@ -173,7 +171,7 @@ public class ServiceTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenAddingSkillsCaseSensV2_theyShouldBeAddedCorrectly(){
|
public void whenAddingSkillsCaseSensV2_theyShouldBeAddedCorrectly(){
|
||||||
Service s = Service.Builder.newInstance("s").setLocationId("loc")
|
Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc"))
|
||||||
.addRequiredSkill("screwDriver").build();
|
.addRequiredSkill("screwDriver").build();
|
||||||
assertFalse(s.getRequiredSkills().containsSkill("drill"));
|
assertFalse(s.getRequiredSkills().containsSkill("drill"));
|
||||||
assertFalse(s.getRequiredSkills().containsSkill("drilL"));
|
assertFalse(s.getRequiredSkills().containsSkill("drilL"));
|
||||||
|
|
@ -181,7 +179,7 @@ public class ServiceTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void nameShouldBeAssigned(){
|
public void nameShouldBeAssigned(){
|
||||||
Service s = (Service) Service.Builder.newInstance("s").setLocationId("loc")
|
Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc"))
|
||||||
.setName("name").build();
|
.setName("name").build();
|
||||||
assertEquals("name",s.getName());
|
assertEquals("name",s.getName());
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
package jsprit.core.problem.solution.route;
|
package jsprit.core.problem.solution.route;
|
||||||
|
|
||||||
|
import jsprit.core.problem.Location;
|
||||||
import jsprit.core.problem.driver.DriverImpl;
|
import jsprit.core.problem.driver.DriverImpl;
|
||||||
import jsprit.core.problem.driver.DriverImpl.NoDriver;
|
import jsprit.core.problem.driver.DriverImpl.NoDriver;
|
||||||
import jsprit.core.problem.job.Delivery;
|
import jsprit.core.problem.job.Delivery;
|
||||||
|
|
@ -44,7 +45,7 @@ public class TestVehicleRoute {
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void doBefore(){
|
public void doBefore(){
|
||||||
vehicle = VehicleImpl.Builder.newInstance("v").setStartLocationId("loc").setType(VehicleTypeImpl.Builder.newInstance("yo").build()).build();
|
vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("loc")).setType(VehicleTypeImpl.Builder.newInstance("yo").build()).build();
|
||||||
driver = DriverImpl.noDriver();
|
driver = DriverImpl.noDriver();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -81,7 +82,7 @@ public class TestVehicleRoute {
|
||||||
@Test
|
@Test
|
||||||
public void whenBuildingANonEmptyTour2Times_tourIterIteratesOverActivitiesCorrectly(){
|
public void whenBuildingANonEmptyTour2Times_tourIterIteratesOverActivitiesCorrectly(){
|
||||||
VehicleRoute.Builder routeBuilder = VehicleRoute.Builder.newInstance(vehicle, driver);
|
VehicleRoute.Builder routeBuilder = VehicleRoute.Builder.newInstance(vehicle, driver);
|
||||||
routeBuilder.addService(Service.Builder.newInstance("2").addSizeDimension(0, 30).setLocationId("1").build());
|
routeBuilder.addService(Service.Builder.newInstance("2").addSizeDimension(0, 30).setLocation(Location.newInstance("1")).build());
|
||||||
VehicleRoute route = routeBuilder.build();
|
VehicleRoute route = routeBuilder.build();
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
@ -95,7 +96,7 @@ public class TestVehicleRoute {
|
||||||
assertEquals(1,count);
|
assertEquals(1,count);
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
route.getTourActivities().addActivity(ServiceActivity.newInstance(Service.Builder.newInstance("3").addSizeDimension(0, 30).setLocationId("1").build()));
|
route.getTourActivities().addActivity(ServiceActivity.newInstance(Service.Builder.newInstance("3").addSizeDimension(0, 30).setLocation(Location.newInstance("1")).build()));
|
||||||
Iterator<TourActivity> iter = route.getTourActivities().iterator();
|
Iterator<TourActivity> iter = route.getTourActivities().iterator();
|
||||||
int count = 0;
|
int count = 0;
|
||||||
while(iter.hasNext()){
|
while(iter.hasNext()){
|
||||||
|
|
@ -123,7 +124,7 @@ public class TestVehicleRoute {
|
||||||
@Test
|
@Test
|
||||||
public void whenBuildingANonEmptyTourV2_tourReverseIterIteratesOverActivitiesCorrectly(){
|
public void whenBuildingANonEmptyTourV2_tourReverseIterIteratesOverActivitiesCorrectly(){
|
||||||
VehicleRoute.Builder routeBuilder = VehicleRoute.Builder.newInstance(vehicle, driver);
|
VehicleRoute.Builder routeBuilder = VehicleRoute.Builder.newInstance(vehicle, driver);
|
||||||
routeBuilder.addService(Service.Builder.newInstance("2").addSizeDimension(0, 30).setLocationId("1").build());
|
routeBuilder.addService(Service.Builder.newInstance("2").addSizeDimension(0, 30).setLocation(Location.newInstance("1")).build());
|
||||||
VehicleRoute route = routeBuilder.build();
|
VehicleRoute route = routeBuilder.build();
|
||||||
Iterator<TourActivity> iter = route.getTourActivities().reverseActivityIterator();
|
Iterator<TourActivity> iter = route.getTourActivities().reverseActivityIterator();
|
||||||
int count = 0;
|
int count = 0;
|
||||||
|
|
@ -138,8 +139,8 @@ public class TestVehicleRoute {
|
||||||
@Test
|
@Test
|
||||||
public void whenBuildingANonEmptyTour2Times_tourReverseIterIteratesOverActivitiesCorrectly(){
|
public void whenBuildingANonEmptyTour2Times_tourReverseIterIteratesOverActivitiesCorrectly(){
|
||||||
VehicleRoute.Builder routeBuilder = VehicleRoute.Builder.newInstance(vehicle, driver);
|
VehicleRoute.Builder routeBuilder = VehicleRoute.Builder.newInstance(vehicle, driver);
|
||||||
routeBuilder.addService(Service.Builder.newInstance("2").addSizeDimension(0, 30).setLocationId("1").build());
|
routeBuilder.addService(Service.Builder.newInstance("2").addSizeDimension(0, 30).setLocation(Location.newInstance("1")).build());
|
||||||
routeBuilder.addService(Service.Builder.newInstance("3").addSizeDimension(0, 30).setLocationId("2").build());
|
routeBuilder.addService(Service.Builder.newInstance("3").addSizeDimension(0, 30).setLocation(Location.newInstance("2")).build());
|
||||||
VehicleRoute route = routeBuilder.build();
|
VehicleRoute route = routeBuilder.build();
|
||||||
{
|
{
|
||||||
Iterator<TourActivity> iter = route.getTourActivities().reverseActivityIterator();
|
Iterator<TourActivity> iter = route.getTourActivities().reverseActivityIterator();
|
||||||
|
|
@ -169,49 +170,49 @@ public class TestVehicleRoute {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenBuildingRouteWithVehicleThatHasDifferentStartAndEndLocation_routeMustHaveCorrectStartLocation(){
|
public void whenBuildingRouteWithVehicleThatHasDifferentStartAndEndLocation_routeMustHaveCorrectStartLocation(){
|
||||||
Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setStartLocationId("start").setEndLocationId("end").build();
|
Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("start")).setEndLocation(Location.newInstance("end")).build();
|
||||||
VehicleRoute vRoute = VehicleRoute.Builder.newInstance(vehicle, DriverImpl.noDriver()).build();
|
VehicleRoute vRoute = VehicleRoute.Builder.newInstance(vehicle, DriverImpl.noDriver()).build();
|
||||||
assertTrue(vRoute.getStart().getLocation().getId().equals("start"));
|
assertTrue(vRoute.getStart().getLocation().getId().equals("start"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenBuildingRouteWithVehicleThatHasDifferentStartAndEndLocation_routeMustHaveCorrectEndLocation(){
|
public void whenBuildingRouteWithVehicleThatHasDifferentStartAndEndLocation_routeMustHaveCorrectEndLocation(){
|
||||||
Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setStartLocationId("start").setEndLocationId("end").build();
|
Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("start")).setEndLocation(Location.newInstance("end")).build();
|
||||||
VehicleRoute vRoute = VehicleRoute.Builder.newInstance(vehicle, DriverImpl.noDriver()).build();
|
VehicleRoute vRoute = VehicleRoute.Builder.newInstance(vehicle, DriverImpl.noDriver()).build();
|
||||||
assertTrue(vRoute.getEnd().getLocation().getId().equals("end"));
|
assertTrue(vRoute.getEnd().getLocation().getId().equals("end"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenBuildingRouteWithVehicleThatHasSameStartAndEndLocation_routeMustHaveCorrectStartLocation(){
|
public void whenBuildingRouteWithVehicleThatHasSameStartAndEndLocation_routeMustHaveCorrectStartLocation(){
|
||||||
Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setStartLocationId("start").setEndLocationId("start").build();
|
Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("start")).setEndLocation(Location.newInstance("end")).build();
|
||||||
VehicleRoute vRoute = VehicleRoute.Builder.newInstance(vehicle, DriverImpl.noDriver()).build();
|
VehicleRoute vRoute = VehicleRoute.Builder.newInstance(vehicle, DriverImpl.noDriver()).build();
|
||||||
assertTrue(vRoute.getStart().getLocation().getId().equals("start"));
|
assertTrue(vRoute.getStart().getLocation().getId().equals("start"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenBuildingRouteWithVehicleThatHasSameStartAndEndLocation_routeMustHaveCorrectEndLocation(){
|
public void whenBuildingRouteWithVehicleThatHasSameStartAndEndLocation_routeMustHaveCorrectEndLocation(){
|
||||||
Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setStartLocationId("start").setEndLocationId("start").build();
|
Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("start")).setEndLocation(Location.newInstance("start")).build();
|
||||||
VehicleRoute vRoute = VehicleRoute.Builder.newInstance(vehicle, DriverImpl.noDriver()).build();
|
VehicleRoute vRoute = VehicleRoute.Builder.newInstance(vehicle, DriverImpl.noDriver()).build();
|
||||||
assertTrue(vRoute.getEnd().getLocation().getId().equals("start"));
|
assertTrue(vRoute.getEnd().getLocation().getId().equals("start"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenBuildingRouteWithVehicleThatHasSameStartAndEndLocation_routeMustHaveCorrectStartLocationV2(){
|
public void whenBuildingRouteWithVehicleThatHasSameStartAndEndLocation_routeMustHaveCorrectStartLocationV2(){
|
||||||
Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setStartLocationId("start").setEndLocationId("start").build();
|
Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("start")).setEndLocation(Location.newInstance("end")).build();
|
||||||
VehicleRoute vRoute = VehicleRoute.Builder.newInstance(vehicle, DriverImpl.noDriver()).build();
|
VehicleRoute vRoute = VehicleRoute.Builder.newInstance(vehicle, DriverImpl.noDriver()).build();
|
||||||
assertTrue(vRoute.getStart().getLocation().getId().equals("start"));
|
assertTrue(vRoute.getStart().getLocation().getId().equals("start"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenBuildingRouteWithVehicleThatHasSameStartAndEndLocation_routeMustHaveCorrectEndLocationV2(){
|
public void whenBuildingRouteWithVehicleThatHasSameStartAndEndLocation_routeMustHaveCorrectEndLocationV2(){
|
||||||
Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setStartLocationId("start").setEndLocationId("start").build();
|
Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("start")).setEndLocation(Location.newInstance("start")).build();
|
||||||
VehicleRoute vRoute = VehicleRoute.Builder.newInstance(vehicle, DriverImpl.noDriver()).build();
|
VehicleRoute vRoute = VehicleRoute.Builder.newInstance(vehicle, DriverImpl.noDriver()).build();
|
||||||
assertTrue(vRoute.getEnd().getLocation().getId().equals("start"));
|
assertTrue(vRoute.getEnd().getLocation().getId().equals("start"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenBuildingRouteWithVehicleThatHasDifferentStartAndEndLocation_routeMustHaveCorrectDepartureTime(){
|
public void whenBuildingRouteWithVehicleThatHasDifferentStartAndEndLocation_routeMustHaveCorrectDepartureTime(){
|
||||||
Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setEarliestStart(100).setStartLocationId("start").setEndLocationId("end").build();
|
Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setEarliestStart(100).setStartLocation(Location.newInstance("start")).setEndLocation(Location.newInstance("end")).build();
|
||||||
VehicleRoute vRoute = VehicleRoute.Builder.newInstance(vehicle, DriverImpl.noDriver()).build();
|
VehicleRoute vRoute = VehicleRoute.Builder.newInstance(vehicle, DriverImpl.noDriver()).build();
|
||||||
assertEquals(vRoute.getDepartureTime(),100.0,0.01);
|
assertEquals(vRoute.getDepartureTime(),100.0,0.01);
|
||||||
assertEquals(vRoute.getStart().getEndTime(),100.0,0.01);
|
assertEquals(vRoute.getStart().getEndTime(),100.0,0.01);
|
||||||
|
|
@ -219,14 +220,14 @@ public class TestVehicleRoute {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenBuildingRouteWithVehicleThatHasDifferentStartAndEndLocation_routeMustHaveCorrectEndTime(){
|
public void whenBuildingRouteWithVehicleThatHasDifferentStartAndEndLocation_routeMustHaveCorrectEndTime(){
|
||||||
Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setEarliestStart(100).setLatestArrival(200).setStartLocationId("start").setEndLocationId("end").build();
|
Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setEarliestStart(100).setLatestArrival(200).setStartLocation(Location.newInstance("start")).setEndLocation(Location.newInstance("end")).build();
|
||||||
VehicleRoute vRoute = VehicleRoute.Builder.newInstance(vehicle, DriverImpl.noDriver()).build();
|
VehicleRoute vRoute = VehicleRoute.Builder.newInstance(vehicle, DriverImpl.noDriver()).build();
|
||||||
assertEquals(200.0,vRoute.getEnd().getTheoreticalLatestOperationStartTime(),0.01);
|
assertEquals(200.0,vRoute.getEnd().getTheoreticalLatestOperationStartTime(),0.01);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenSettingDepartureTimeInBetweenEarliestStartAndLatestArr_routeMustHaveCorrectDepartureTime(){
|
public void whenSettingDepartureTimeInBetweenEarliestStartAndLatestArr_routeMustHaveCorrectDepartureTime(){
|
||||||
Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setEarliestStart(100).setLatestArrival(200).setStartLocationId("start").setEndLocationId("end").build();
|
Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setEarliestStart(100).setLatestArrival(200).setStartLocation(Location.newInstance("start")).setEndLocation(Location.newInstance("end")).build();
|
||||||
VehicleRoute vRoute = VehicleRoute.Builder.newInstance(vehicle, DriverImpl.noDriver()).build();
|
VehicleRoute vRoute = VehicleRoute.Builder.newInstance(vehicle, DriverImpl.noDriver()).build();
|
||||||
vRoute.setVehicleAndDepartureTime(vehicle, 150.0);
|
vRoute.setVehicleAndDepartureTime(vehicle, 150.0);
|
||||||
assertEquals(vRoute.getStart().getEndTime(),150.0,0.01);
|
assertEquals(vRoute.getStart().getEndTime(),150.0,0.01);
|
||||||
|
|
@ -235,7 +236,7 @@ public class TestVehicleRoute {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenSettingDepartureEarlierThanEarliestStart_routeMustHaveEarliestDepTimeAsDepTime(){
|
public void whenSettingDepartureEarlierThanEarliestStart_routeMustHaveEarliestDepTimeAsDepTime(){
|
||||||
Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setEarliestStart(100).setLatestArrival(200).setStartLocationId("start").setEndLocationId("end").build();
|
Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setEarliestStart(100).setLatestArrival(200).setStartLocation(Location.newInstance("start")).setEndLocation(Location.newInstance("end")).build();
|
||||||
VehicleRoute vRoute = VehicleRoute.Builder.newInstance(vehicle, DriverImpl.noDriver()).build();
|
VehicleRoute vRoute = VehicleRoute.Builder.newInstance(vehicle, DriverImpl.noDriver()).build();
|
||||||
vRoute.setVehicleAndDepartureTime(vehicle, 50.0);
|
vRoute.setVehicleAndDepartureTime(vehicle, 50.0);
|
||||||
assertEquals(vRoute.getStart().getEndTime(),100.0,0.01);
|
assertEquals(vRoute.getStart().getEndTime(),100.0,0.01);
|
||||||
|
|
@ -244,7 +245,7 @@ public class TestVehicleRoute {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenSettingDepartureTimeLaterThanLatestArrival_routeMustHaveThisDepTime(){
|
public void whenSettingDepartureTimeLaterThanLatestArrival_routeMustHaveThisDepTime(){
|
||||||
Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setEarliestStart(100).setLatestArrival(200).setStartLocationId("start").setEndLocationId("end").build();
|
Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setEarliestStart(100).setLatestArrival(200).setStartLocation(Location.newInstance("start")).setEndLocation(Location.newInstance("end")).build();
|
||||||
VehicleRoute vRoute = VehicleRoute.Builder.newInstance(vehicle, DriverImpl.noDriver()).build();
|
VehicleRoute vRoute = VehicleRoute.Builder.newInstance(vehicle, DriverImpl.noDriver()).build();
|
||||||
vRoute.setVehicleAndDepartureTime(vehicle, 50.0);
|
vRoute.setVehicleAndDepartureTime(vehicle, 50.0);
|
||||||
assertEquals(vRoute.getStart().getEndTime(),100.0,0.01);
|
assertEquals(vRoute.getStart().getEndTime(),100.0,0.01);
|
||||||
|
|
@ -260,8 +261,8 @@ public class TestVehicleRoute {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenIniRouteWithNewVehicle_startLocationMustBeCorrect(){
|
public void whenIniRouteWithNewVehicle_startLocationMustBeCorrect(){
|
||||||
Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setEarliestStart(100).setLatestArrival(200).setStartLocationId("start").setEndLocationId("end").build();
|
Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setEarliestStart(100).setLatestArrival(200).setStartLocation(Location.newInstance("start")).setEndLocation(Location.newInstance("end")).build();
|
||||||
Vehicle new_vehicle = VehicleImpl.Builder.newInstance("new_v").setEarliestStart(1000).setLatestArrival(2000).setStartLocationId("new_start").setEndLocationId("new_end").build();
|
Vehicle new_vehicle = VehicleImpl.Builder.newInstance("new_v").setEarliestStart(1000).setLatestArrival(2000).setStartLocation(Location.newInstance("new_start")).setEndLocation(Location.newInstance("new_end")).build();
|
||||||
VehicleRoute vRoute = VehicleRoute.Builder.newInstance(vehicle, DriverImpl.noDriver()).build();
|
VehicleRoute vRoute = VehicleRoute.Builder.newInstance(vehicle, DriverImpl.noDriver()).build();
|
||||||
vRoute.setVehicleAndDepartureTime(new_vehicle, 50.0);
|
vRoute.setVehicleAndDepartureTime(new_vehicle, 50.0);
|
||||||
assertEquals("new_start",vRoute.getStart().getLocation().getId());
|
assertEquals("new_start",vRoute.getStart().getLocation().getId());
|
||||||
|
|
@ -269,8 +270,8 @@ public class TestVehicleRoute {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenIniRouteWithNewVehicle_endLocationMustBeCorrect(){
|
public void whenIniRouteWithNewVehicle_endLocationMustBeCorrect(){
|
||||||
Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setEarliestStart(100).setLatestArrival(200).setStartLocationId("start").setEndLocationId("end").build();
|
Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setEarliestStart(100).setLatestArrival(200).setStartLocation(Location.newInstance("start")).setEndLocation(Location.newInstance("end")).build();
|
||||||
Vehicle new_vehicle = VehicleImpl.Builder.newInstance("new_v").setEarliestStart(1000).setLatestArrival(2000).setStartLocationId("new_start").setEndLocationId("new_end").build();
|
Vehicle new_vehicle = VehicleImpl.Builder.newInstance("new_v").setEarliestStart(1000).setLatestArrival(2000).setStartLocation(Location.newInstance("new_start")).setEndLocation(Location.newInstance("new_end")).build();
|
||||||
VehicleRoute vRoute = VehicleRoute.Builder.newInstance(vehicle, DriverImpl.noDriver()).build();
|
VehicleRoute vRoute = VehicleRoute.Builder.newInstance(vehicle, DriverImpl.noDriver()).build();
|
||||||
vRoute.setVehicleAndDepartureTime(new_vehicle, 50.0);
|
vRoute.setVehicleAndDepartureTime(new_vehicle, 50.0);
|
||||||
assertEquals("new_end",vRoute.getEnd().getLocation().getId());
|
assertEquals("new_end",vRoute.getEnd().getLocation().getId());
|
||||||
|
|
@ -278,8 +279,8 @@ public class TestVehicleRoute {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenIniRouteWithNewVehicle_depTimeMustBeEarliestDepTimeOfNewVehicle(){
|
public void whenIniRouteWithNewVehicle_depTimeMustBeEarliestDepTimeOfNewVehicle(){
|
||||||
Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setEarliestStart(100).setLatestArrival(200).setStartLocationId("start").setEndLocationId("end").build();
|
Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setEarliestStart(100).setLatestArrival(200).setStartLocation(Location.newInstance("start")).setEndLocation(Location.newInstance("end")).build();
|
||||||
Vehicle new_vehicle = VehicleImpl.Builder.newInstance("new_v").setEarliestStart(1000).setLatestArrival(2000).setStartLocationId("new_start").setEndLocationId("new_end").build();
|
Vehicle new_vehicle = VehicleImpl.Builder.newInstance("new_v").setEarliestStart(1000).setLatestArrival(2000).setStartLocation(Location.newInstance("new_start")).setEndLocation(Location.newInstance("new_end")).build();
|
||||||
VehicleRoute vRoute = VehicleRoute.Builder.newInstance(vehicle, DriverImpl.noDriver()).build();
|
VehicleRoute vRoute = VehicleRoute.Builder.newInstance(vehicle, DriverImpl.noDriver()).build();
|
||||||
vRoute.setVehicleAndDepartureTime(new_vehicle, 50.0);
|
vRoute.setVehicleAndDepartureTime(new_vehicle, 50.0);
|
||||||
assertEquals(1000.0,vRoute.getDepartureTime(),0.01);
|
assertEquals(1000.0,vRoute.getDepartureTime(),0.01);
|
||||||
|
|
@ -287,8 +288,8 @@ public class TestVehicleRoute {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenIniRouteWithNewVehicle_depTimeMustBeSetDepTime(){
|
public void whenIniRouteWithNewVehicle_depTimeMustBeSetDepTime(){
|
||||||
Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setEarliestStart(100).setLatestArrival(200).setStartLocationId("start").setEndLocationId("end").build();
|
Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setEarliestStart(100).setLatestArrival(200).setStartLocation(Location.newInstance("start")).setEndLocation(Location.newInstance("end")).build();
|
||||||
Vehicle new_vehicle = VehicleImpl.Builder.newInstance("new_v").setEarliestStart(1000).setLatestArrival(2000).setStartLocationId("new_start").setEndLocationId("new_end").build();
|
Vehicle new_vehicle = VehicleImpl.Builder.newInstance("new_v").setEarliestStart(1000).setLatestArrival(2000).setStartLocation(Location.newInstance("new_start")).setEndLocation(Location.newInstance("new_end")).build();
|
||||||
VehicleRoute vRoute = VehicleRoute.Builder.newInstance(vehicle, DriverImpl.noDriver()).build();
|
VehicleRoute vRoute = VehicleRoute.Builder.newInstance(vehicle, DriverImpl.noDriver()).build();
|
||||||
vRoute.setVehicleAndDepartureTime(new_vehicle, 1500.0);
|
vRoute.setVehicleAndDepartureTime(new_vehicle, 1500.0);
|
||||||
assertEquals(1500.0,vRoute.getDepartureTime(),0.01);
|
assertEquals(1500.0,vRoute.getDepartureTime(),0.01);
|
||||||
|
|
@ -297,8 +298,8 @@ public class TestVehicleRoute {
|
||||||
@Test
|
@Test
|
||||||
public void whenAddingPickup_itShouldBeTreatedAsPickup(){
|
public void whenAddingPickup_itShouldBeTreatedAsPickup(){
|
||||||
|
|
||||||
Pickup pickup = (Pickup) Pickup.Builder.newInstance("pick").setLocationId("pickLoc").build();
|
Pickup pickup = (Pickup) Pickup.Builder.newInstance("pick").setLocation(Location.newInstance("pickLoc")).build();
|
||||||
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("vehicle").setStartLocationId("startLoc").build();
|
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("vehicle").setStartLocation(Location.newInstance("startLoc")).build();
|
||||||
VehicleRoute route = VehicleRoute.Builder.newInstance(vehicle).addService(pickup).build();
|
VehicleRoute route = VehicleRoute.Builder.newInstance(vehicle).addService(pickup).build();
|
||||||
|
|
||||||
TourActivity act = route.getActivities().get(0);
|
TourActivity act = route.getActivities().get(0);
|
||||||
|
|
@ -311,8 +312,8 @@ public class TestVehicleRoute {
|
||||||
@Test
|
@Test
|
||||||
public void whenAddingPickup_itShouldBeAdded(){
|
public void whenAddingPickup_itShouldBeAdded(){
|
||||||
|
|
||||||
Pickup pickup = (Pickup) Pickup.Builder.newInstance("pick").setLocationId("pickLoc").build();
|
Pickup pickup = (Pickup) Pickup.Builder.newInstance("pick").setLocation(Location.newInstance("pickLoc")).build();
|
||||||
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("vehicle").setStartLocationId("startLoc").build();
|
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("vehicle").setStartLocation(Location.newInstance("startLoc")).build();
|
||||||
VehicleRoute route = VehicleRoute.Builder.newInstance(vehicle).addPickup(pickup).build();
|
VehicleRoute route = VehicleRoute.Builder.newInstance(vehicle).addPickup(pickup).build();
|
||||||
|
|
||||||
TourActivity act = route.getActivities().get(0);
|
TourActivity act = route.getActivities().get(0);
|
||||||
|
|
@ -325,8 +326,8 @@ public class TestVehicleRoute {
|
||||||
@Test
|
@Test
|
||||||
public void whenAddingDelivery_itShouldBeTreatedAsDelivery(){
|
public void whenAddingDelivery_itShouldBeTreatedAsDelivery(){
|
||||||
|
|
||||||
Delivery delivery = (Delivery) Delivery.Builder.newInstance("delivery").setLocationId("deliveryLoc").build();
|
Delivery delivery = (Delivery) Delivery.Builder.newInstance("delivery").setLocation(Location.newInstance("deliveryLoc")).build();
|
||||||
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("vehicle").setStartLocationId("startLoc").build();
|
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("vehicle").setStartLocation(Location.newInstance("startLoc")).build();
|
||||||
VehicleRoute route = VehicleRoute.Builder.newInstance(vehicle).addService(delivery).build();
|
VehicleRoute route = VehicleRoute.Builder.newInstance(vehicle).addService(delivery).build();
|
||||||
|
|
||||||
TourActivity act = route.getActivities().get(0);
|
TourActivity act = route.getActivities().get(0);
|
||||||
|
|
@ -339,8 +340,8 @@ public class TestVehicleRoute {
|
||||||
@Test
|
@Test
|
||||||
public void whenAddingDelivery_itShouldBeAdded(){
|
public void whenAddingDelivery_itShouldBeAdded(){
|
||||||
|
|
||||||
Delivery delivery = (Delivery) Delivery.Builder.newInstance("delivery").setLocationId("deliveryLoc").build();
|
Delivery delivery = (Delivery) Delivery.Builder.newInstance("delivery").setLocation(Location.newInstance("deliveryLoc")).build();
|
||||||
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("vehicle").setStartLocationId("startLoc").build();
|
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("vehicle").setStartLocation(Location.newInstance("startLoc")).build();
|
||||||
VehicleRoute route = VehicleRoute.Builder.newInstance(vehicle).addDelivery(delivery).build();
|
VehicleRoute route = VehicleRoute.Builder.newInstance(vehicle).addDelivery(delivery).build();
|
||||||
|
|
||||||
TourActivity act = route.getActivities().get(0);
|
TourActivity act = route.getActivities().get(0);
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,7 @@
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
package jsprit.core.problem.solution.route.activity;
|
package jsprit.core.problem.solution.route.activity;
|
||||||
|
|
||||||
|
import jsprit.core.problem.Location;
|
||||||
import jsprit.core.problem.job.Delivery;
|
import jsprit.core.problem.job.Delivery;
|
||||||
import jsprit.core.problem.job.Pickup;
|
import jsprit.core.problem.job.Pickup;
|
||||||
import jsprit.core.problem.job.Service;
|
import jsprit.core.problem.job.Service;
|
||||||
|
|
@ -31,7 +32,7 @@ public class DefaultTourActivityFactoryTest {
|
||||||
@Test
|
@Test
|
||||||
public void whenCreatingActivityWithService_itShouldReturnPickupService(){
|
public void whenCreatingActivityWithService_itShouldReturnPickupService(){
|
||||||
DefaultTourActivityFactory factory = new DefaultTourActivityFactory();
|
DefaultTourActivityFactory factory = new DefaultTourActivityFactory();
|
||||||
Service service = Service.Builder.newInstance("service").setLocationId("loc").build();
|
Service service = Service.Builder.newInstance("service").setLocation(Location.newInstance("loc")).build();
|
||||||
TourActivity act = factory.createActivity(service);
|
TourActivity act = factory.createActivity(service);
|
||||||
assertNotNull(act);
|
assertNotNull(act);
|
||||||
assertTrue(act instanceof PickupService);
|
assertTrue(act instanceof PickupService);
|
||||||
|
|
@ -40,7 +41,7 @@ public class DefaultTourActivityFactoryTest {
|
||||||
@Test
|
@Test
|
||||||
public void whenCreatingActivityWithPickup_itShouldReturnPickupService(){
|
public void whenCreatingActivityWithPickup_itShouldReturnPickupService(){
|
||||||
DefaultTourActivityFactory factory = new DefaultTourActivityFactory();
|
DefaultTourActivityFactory factory = new DefaultTourActivityFactory();
|
||||||
Pickup service = (Pickup) Pickup.Builder.newInstance("service").setLocationId("loc").build();
|
Pickup service = (Pickup) Pickup.Builder.newInstance("service").setLocation(Location.newInstance("loc")).build();
|
||||||
TourActivity act = factory.createActivity(service);
|
TourActivity act = factory.createActivity(service);
|
||||||
assertNotNull(act);
|
assertNotNull(act);
|
||||||
assertTrue(act instanceof PickupService);
|
assertTrue(act instanceof PickupService);
|
||||||
|
|
@ -49,7 +50,7 @@ public class DefaultTourActivityFactoryTest {
|
||||||
@Test
|
@Test
|
||||||
public void whenCreatingActivityWithDelivery_itShouldReturnDeliverService(){
|
public void whenCreatingActivityWithDelivery_itShouldReturnDeliverService(){
|
||||||
DefaultTourActivityFactory factory = new DefaultTourActivityFactory();
|
DefaultTourActivityFactory factory = new DefaultTourActivityFactory();
|
||||||
Delivery service = (Delivery) Delivery.Builder.newInstance("service").setLocationId("loc").build();
|
Delivery service = (Delivery) Delivery.Builder.newInstance("service").setLocation(Location.newInstance("loc")).build();
|
||||||
TourActivity act = factory.createActivity(service);
|
TourActivity act = factory.createActivity(service);
|
||||||
assertNotNull(act);
|
assertNotNull(act);
|
||||||
assertTrue(act instanceof DeliverService);
|
assertTrue(act instanceof DeliverService);
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
package jsprit.core.problem.solution.route.activity;
|
package jsprit.core.problem.solution.route.activity;
|
||||||
|
|
||||||
|
import jsprit.core.problem.Location;
|
||||||
import jsprit.core.problem.job.Delivery;
|
import jsprit.core.problem.job.Delivery;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
@ -31,7 +32,7 @@ public class DeliverServiceTest {
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void doBefore(){
|
public void doBefore(){
|
||||||
service = (Delivery) Delivery.Builder.newInstance("service").setLocationId("loc").
|
service = (Delivery) Delivery.Builder.newInstance("service").setLocation(Location.newInstance("loc")).
|
||||||
setTimeWindow(TimeWindow.newInstance(1., 2.)).
|
setTimeWindow(TimeWindow.newInstance(1., 2.)).
|
||||||
addSizeDimension(0, 10).addSizeDimension(1, 100).addSizeDimension(2, 1000).build();
|
addSizeDimension(0, 10).addSizeDimension(1, 100).addSizeDimension(2, 1000).build();
|
||||||
deliver = new DeliverService(service);
|
deliver = new DeliverService(service);
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
package jsprit.core.problem.solution.route.activity;
|
package jsprit.core.problem.solution.route.activity;
|
||||||
|
|
||||||
|
import jsprit.core.problem.Location;
|
||||||
import jsprit.core.problem.job.Service;
|
import jsprit.core.problem.job.Service;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
@ -31,7 +32,7 @@ public class PickupServiceTest {
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void doBefore(){
|
public void doBefore(){
|
||||||
service = Service.Builder.newInstance("service").setLocationId("loc").
|
service = Service.Builder.newInstance("service").setLocation(Location.newInstance("loc")).
|
||||||
setTimeWindow(TimeWindow.newInstance(1., 2.)).
|
setTimeWindow(TimeWindow.newInstance(1., 2.)).
|
||||||
addSizeDimension(0, 10).addSizeDimension(1, 100).addSizeDimension(2, 1000).build();
|
addSizeDimension(0, 10).addSizeDimension(1, 100).addSizeDimension(2, 1000).build();
|
||||||
pickup = new PickupService(service);
|
pickup = new PickupService(service);
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
package jsprit.core.problem.solution.route.activity;
|
package jsprit.core.problem.solution.route.activity;
|
||||||
|
|
||||||
|
import jsprit.core.problem.Location;
|
||||||
import jsprit.core.problem.job.Service;
|
import jsprit.core.problem.job.Service;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
@ -31,7 +32,7 @@ public class ServiceActivityTest {
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void doBefore(){
|
public void doBefore(){
|
||||||
service = Service.Builder.newInstance("service").setLocationId("loc").
|
service = Service.Builder.newInstance("service").setLocation(Location.newInstance("loc")).
|
||||||
setTimeWindow(TimeWindow.newInstance(1., 2.)).
|
setTimeWindow(TimeWindow.newInstance(1., 2.)).
|
||||||
addSizeDimension(0, 10).addSizeDimension(1, 100).addSizeDimension(2, 1000).build();
|
addSizeDimension(0, 10).addSizeDimension(1, 100).addSizeDimension(2, 1000).build();
|
||||||
serviceActivity = ServiceActivity.newInstance(service);
|
serviceActivity = ServiceActivity.newInstance(service);
|
||||||
|
|
@ -84,8 +85,8 @@ public class ServiceActivityTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenTwoDeliveriesHaveTheSameUnderlyingJob_theyAreEqual(){
|
public void whenTwoDeliveriesHaveTheSameUnderlyingJob_theyAreEqual(){
|
||||||
Service s1 = Service.Builder.newInstance("s").setLocationId("loc").build();
|
Service s1 = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")).build();
|
||||||
Service s2 = Service.Builder.newInstance("s").setLocationId("loc").build();
|
Service s2 = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")).build();
|
||||||
|
|
||||||
ServiceActivity d1 = ServiceActivity.newInstance(s1);
|
ServiceActivity d1 = ServiceActivity.newInstance(s1);
|
||||||
ServiceActivity d2 = ServiceActivity.newInstance(s2);
|
ServiceActivity d2 = ServiceActivity.newInstance(s2);
|
||||||
|
|
@ -95,8 +96,8 @@ public class ServiceActivityTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenTwoDeliveriesHaveTheDifferentUnderlyingJob_theyAreNotEqual(){
|
public void whenTwoDeliveriesHaveTheDifferentUnderlyingJob_theyAreNotEqual(){
|
||||||
Service s1 = Service.Builder.newInstance("s").setLocationId("loc").build();
|
Service s1 = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")).build();
|
||||||
Service s2 = Service.Builder.newInstance("s1").setLocationId("loc").build();
|
Service s2 = Service.Builder.newInstance("s1").setLocation(Location.newInstance("loc")).build();
|
||||||
|
|
||||||
ServiceActivity d1 = ServiceActivity.newInstance(s1);
|
ServiceActivity d1 = ServiceActivity.newInstance(s1);
|
||||||
ServiceActivity d2 = ServiceActivity.newInstance(s2);
|
ServiceActivity d2 = ServiceActivity.newInstance(s2);
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ public class TestTourActivities {
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void doBefore(){
|
public void doBefore(){
|
||||||
service = Service.Builder.newInstance("yo").addSizeDimension(0, 10).setLocationId("loc").build();
|
service = Service.Builder.newInstance("yo").addSizeDimension(0, 10).setLocation(Location.newInstance("loc")).build();
|
||||||
act = ServiceActivity.newInstance(service);
|
act = ServiceActivity.newInstance(service);
|
||||||
tour = new TourActivities();
|
tour = new TourActivities();
|
||||||
}
|
}
|
||||||
|
|
@ -67,7 +67,7 @@ public class TestTourActivities {
|
||||||
assertEquals(0, tour.getActivities().size());
|
assertEquals(0, tour.getActivities().size());
|
||||||
tour.addActivity(act);
|
tour.addActivity(act);
|
||||||
assertEquals(1, tour.getActivities().size());
|
assertEquals(1, tour.getActivities().size());
|
||||||
Service anotherServiceInstance = Service.Builder.newInstance("yo").addSizeDimension(0, 10).setLocationId("loc").build();
|
Service anotherServiceInstance = Service.Builder.newInstance("yo").addSizeDimension(0, 10).setLocation(Location.newInstance("loc")).build();
|
||||||
assertTrue(service.equals(anotherServiceInstance));
|
assertTrue(service.equals(anotherServiceInstance));
|
||||||
boolean removed = tour.removeJob(anotherServiceInstance);
|
boolean removed = tour.removeJob(anotherServiceInstance);
|
||||||
assertTrue(removed);
|
assertTrue(removed);
|
||||||
|
|
@ -76,7 +76,8 @@ public class TestTourActivities {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenAddingAShipmentActivity_tourShouldServeShipment(){
|
public void whenAddingAShipmentActivity_tourShouldServeShipment(){
|
||||||
Shipment s = Shipment.Builder.newInstance("s").addSizeDimension(0, 1).setDeliveryLocationId("delLoc").setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build();
|
Shipment s = Shipment.Builder.newInstance("s").addSizeDimension(0, 1).setDeliveryLocation(Location.newInstance("delLoc"))
|
||||||
|
.setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build();
|
||||||
TourShipmentActivityFactory fac = new DefaultShipmentActivityFactory();
|
TourShipmentActivityFactory fac = new DefaultShipmentActivityFactory();
|
||||||
TourActivity pickupShipment = fac.createPickup(s);
|
TourActivity pickupShipment = fac.createPickup(s);
|
||||||
TourActivity deliverShipment = fac.createDelivery(s);
|
TourActivity deliverShipment = fac.createDelivery(s);
|
||||||
|
|
@ -90,7 +91,7 @@ public class TestTourActivities {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenRemovingShipment_tourShouldNotServiceItAnymore(){
|
public void whenRemovingShipment_tourShouldNotServiceItAnymore(){
|
||||||
Shipment s = Shipment.Builder.newInstance("s").addSizeDimension(0, 1).setDeliveryLocationId("delLoc").setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build();
|
Shipment s = Shipment.Builder.newInstance("s").addSizeDimension(0, 1).setDeliveryLocation(Location.newInstance("delLoc")).setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build();
|
||||||
TourShipmentActivityFactory fac = new DefaultShipmentActivityFactory();
|
TourShipmentActivityFactory fac = new DefaultShipmentActivityFactory();
|
||||||
TourActivity pickupShipment = fac.createPickup(s);
|
TourActivity pickupShipment = fac.createPickup(s);
|
||||||
TourActivity deliverShipment = fac.createDelivery(s);
|
TourActivity deliverShipment = fac.createDelivery(s);
|
||||||
|
|
@ -104,7 +105,9 @@ public class TestTourActivities {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenRemovingShipment_theirCorrespondingActivitiesShouldBeRemoved(){
|
public void whenRemovingShipment_theirCorrespondingActivitiesShouldBeRemoved(){
|
||||||
Shipment s = Shipment.Builder.newInstance("s").addSizeDimension(0, 1).setDeliveryLocationId("delLoc").setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build();
|
Shipment s = Shipment.Builder.newInstance("s").addSizeDimension(0, 1)
|
||||||
|
.setDeliveryLocation(Location.newInstance("delLoc"))
|
||||||
|
.setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build();
|
||||||
TourShipmentActivityFactory fac = new DefaultShipmentActivityFactory();
|
TourShipmentActivityFactory fac = new DefaultShipmentActivityFactory();
|
||||||
TourActivity pickupShipment = fac.createPickup(s);
|
TourActivity pickupShipment = fac.createPickup(s);
|
||||||
TourActivity deliverShipment = fac.createDelivery(s);
|
TourActivity deliverShipment = fac.createDelivery(s);
|
||||||
|
|
@ -145,7 +148,9 @@ public class TestTourActivities {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void removingShipmentActivityShouldWork(){
|
public void removingShipmentActivityShouldWork(){
|
||||||
Shipment s = Shipment.Builder.newInstance("s").addSizeDimension(0, 1).setDeliveryLocationId("delLoc").setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build();
|
Shipment s = Shipment.Builder.newInstance("s").addSizeDimension(0, 1)
|
||||||
|
.setDeliveryLocation(Location.newInstance("delLoc"))
|
||||||
|
.setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build();
|
||||||
TourShipmentActivityFactory fac = new DefaultShipmentActivityFactory();
|
TourShipmentActivityFactory fac = new DefaultShipmentActivityFactory();
|
||||||
TourActivity pickupShipment = fac.createPickup(s);
|
TourActivity pickupShipment = fac.createPickup(s);
|
||||||
TourActivity deliverShipment = fac.createDelivery(s);
|
TourActivity deliverShipment = fac.createDelivery(s);
|
||||||
|
|
@ -170,7 +175,9 @@ public class TestTourActivities {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenCopyingShipmentActivitySeq_jobSizeShouldBeCorrect(){
|
public void whenCopyingShipmentActivitySeq_jobSizeShouldBeCorrect(){
|
||||||
Shipment s = Shipment.Builder.newInstance("s").addSizeDimension(0, 1).setDeliveryLocationId("delLoc").setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build();
|
Shipment s = Shipment.Builder.newInstance("s").addSizeDimension(0, 1)
|
||||||
|
.setDeliveryLocation(Location.newInstance("delLoc"))
|
||||||
|
.setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build();
|
||||||
TourShipmentActivityFactory fac = new DefaultShipmentActivityFactory();
|
TourShipmentActivityFactory fac = new DefaultShipmentActivityFactory();
|
||||||
TourActivity pickupShipment = fac.createPickup(s);
|
TourActivity pickupShipment = fac.createPickup(s);
|
||||||
TourActivity deliverShipment = fac.createDelivery(s);
|
TourActivity deliverShipment = fac.createDelivery(s);
|
||||||
|
|
@ -190,7 +197,8 @@ public class TestTourActivities {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenCopyingShipmentActivitySeq_noActivitiesShouldBeCorrect(){
|
public void whenCopyingShipmentActivitySeq_noActivitiesShouldBeCorrect(){
|
||||||
Shipment s = Shipment.Builder.newInstance("s").addSizeDimension(0, 1).setDeliveryLocationId("delLoc").setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build();
|
Shipment s = Shipment.Builder.newInstance("s").addSizeDimension(0, 1)
|
||||||
|
.setDeliveryLocation(Location.newInstance("delLoc")).setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build();
|
||||||
TourShipmentActivityFactory fac = new DefaultShipmentActivityFactory();
|
TourShipmentActivityFactory fac = new DefaultShipmentActivityFactory();
|
||||||
TourActivity pickupShipment = fac.createPickup(s);
|
TourActivity pickupShipment = fac.createPickup(s);
|
||||||
TourActivity deliverShipment = fac.createDelivery(s);
|
TourActivity deliverShipment = fac.createDelivery(s);
|
||||||
|
|
@ -210,7 +218,8 @@ public class TestTourActivities {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenCopyingShipmentActivitySeq_itShouldContaintPickupAct(){
|
public void whenCopyingShipmentActivitySeq_itShouldContaintPickupAct(){
|
||||||
Shipment s = Shipment.Builder.newInstance("s").addSizeDimension(0, 1).setDeliveryLocationId("delLoc").setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build();
|
Shipment s = Shipment.Builder.newInstance("s").addSizeDimension(0, 1)
|
||||||
|
.setDeliveryLocation(Location.newInstance("delLoc")).setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build();
|
||||||
TourShipmentActivityFactory fac = new DefaultShipmentActivityFactory();
|
TourShipmentActivityFactory fac = new DefaultShipmentActivityFactory();
|
||||||
TourActivity pickupShipment = fac.createPickup(s);
|
TourActivity pickupShipment = fac.createPickup(s);
|
||||||
TourActivity deliverShipment = fac.createDelivery(s);
|
TourActivity deliverShipment = fac.createDelivery(s);
|
||||||
|
|
|
||||||
|
|
@ -2,24 +2,9 @@
|
||||||
<problem xmlns="http://www.w3schools.com"
|
<problem xmlns="http://www.w3schools.com"
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3schools.com vrp_xml_schema.xsd">
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3schools.com vrp_xml_schema.xsd">
|
||||||
<problemType>
|
<problemType>
|
||||||
<fleetSize>FINITE</fleetSize>
|
<fleetSize>INFINITE</fleetSize>
|
||||||
</problemType>
|
</problemType>
|
||||||
<vehicles>
|
<vehicles>
|
||||||
<vehicle>
|
|
||||||
<id>v2</id>
|
|
||||||
<typeId>vehType2</typeId>
|
|
||||||
<startLocation>
|
|
||||||
<id>loc</id>
|
|
||||||
</startLocation>
|
|
||||||
<endLocation>
|
|
||||||
<id>loc</id>
|
|
||||||
</endLocation>
|
|
||||||
<timeSchedule>
|
|
||||||
<start>0.0</start>
|
|
||||||
<end>1.7976931348623157E308</end>
|
|
||||||
</timeSchedule>
|
|
||||||
<returnToDepot>true</returnToDepot>
|
|
||||||
</vehicle>
|
|
||||||
<vehicle>
|
<vehicle>
|
||||||
<id>v1</id>
|
<id>v1</id>
|
||||||
<typeId>vehType</typeId>
|
<typeId>vehType</typeId>
|
||||||
|
|
@ -48,16 +33,58 @@
|
||||||
<time>0.0</time>
|
<time>0.0</time>
|
||||||
</costs>
|
</costs>
|
||||||
</type>
|
</type>
|
||||||
<type>
|
|
||||||
<id>vehType2</id>
|
|
||||||
<capacity-dimensions>
|
|
||||||
<dimension index="0">200</dimension>
|
|
||||||
</capacity-dimensions>
|
|
||||||
<costs>
|
|
||||||
<fixed>0.0</fixed>
|
|
||||||
<distance>1.0</distance>
|
|
||||||
<time>0.0</time>
|
|
||||||
</costs>
|
|
||||||
</type>
|
|
||||||
</vehicleTypes>
|
</vehicleTypes>
|
||||||
|
<services>
|
||||||
|
<service id="1" type="service">
|
||||||
|
<location>
|
||||||
|
<id>loc</id>
|
||||||
|
</location>
|
||||||
|
<capacity-dimensions>
|
||||||
|
<dimension index="0">1</dimension>
|
||||||
|
</capacity-dimensions>
|
||||||
|
<duration>2.0</duration>
|
||||||
|
<timeWindows>
|
||||||
|
<timeWindow>
|
||||||
|
<start>0.0</start>
|
||||||
|
<end>1.7976931348623157E308</end>
|
||||||
|
</timeWindow>
|
||||||
|
</timeWindows>
|
||||||
|
</service>
|
||||||
|
<service id="2" type="service">
|
||||||
|
<location>
|
||||||
|
<id>loc2</id>
|
||||||
|
</location>
|
||||||
|
<capacity-dimensions>
|
||||||
|
<dimension index="0">1</dimension>
|
||||||
|
</capacity-dimensions>
|
||||||
|
<duration>4.0</duration>
|
||||||
|
<timeWindows>
|
||||||
|
<timeWindow>
|
||||||
|
<start>0.0</start>
|
||||||
|
<end>1.7976931348623157E308</end>
|
||||||
|
</timeWindow>
|
||||||
|
</timeWindows>
|
||||||
|
</service>
|
||||||
|
</services>
|
||||||
|
<solutions>
|
||||||
|
<solution>
|
||||||
|
<cost>10.0</cost>
|
||||||
|
<routes>
|
||||||
|
<route>
|
||||||
|
<driverId>noDriver</driverId>
|
||||||
|
<vehicleId>v1</vehicleId>
|
||||||
|
<start>0.0</start>
|
||||||
|
<act type="service">
|
||||||
|
<serviceId>1</serviceId>
|
||||||
|
<arrTime>0.0</arrTime>
|
||||||
|
<endTime>0.0</endTime>
|
||||||
|
</act>
|
||||||
|
<end>0.0</end>
|
||||||
|
</route>
|
||||||
|
</routes>
|
||||||
|
<unassignedJobs>
|
||||||
|
<job id="2"/>
|
||||||
|
</unassignedJobs>
|
||||||
|
</solution>
|
||||||
|
</solutions>
|
||||||
</problem>
|
</problem>
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@ import jsprit.analysis.toolbox.Plotter;
|
||||||
import jsprit.core.algorithm.VehicleRoutingAlgorithm;
|
import jsprit.core.algorithm.VehicleRoutingAlgorithm;
|
||||||
import jsprit.core.algorithm.io.AlgorithmConfig;
|
import jsprit.core.algorithm.io.AlgorithmConfig;
|
||||||
import jsprit.core.algorithm.io.VehicleRoutingAlgorithms;
|
import jsprit.core.algorithm.io.VehicleRoutingAlgorithms;
|
||||||
|
import jsprit.core.problem.Location;
|
||||||
import jsprit.core.problem.VehicleRoutingProblem;
|
import jsprit.core.problem.VehicleRoutingProblem;
|
||||||
import jsprit.core.problem.io.VrpXMLWriter;
|
import jsprit.core.problem.io.VrpXMLWriter;
|
||||||
import jsprit.core.problem.job.Service;
|
import jsprit.core.problem.job.Service;
|
||||||
|
|
@ -29,7 +30,6 @@ import jsprit.core.problem.vehicle.VehicleImpl.Builder;
|
||||||
import jsprit.core.problem.vehicle.VehicleType;
|
import jsprit.core.problem.vehicle.VehicleType;
|
||||||
import jsprit.core.problem.vehicle.VehicleTypeImpl;
|
import jsprit.core.problem.vehicle.VehicleTypeImpl;
|
||||||
import jsprit.core.reporting.SolutionPrinter;
|
import jsprit.core.reporting.SolutionPrinter;
|
||||||
import jsprit.core.util.Coordinate;
|
|
||||||
import jsprit.core.util.Solutions;
|
import jsprit.core.util.Solutions;
|
||||||
import jsprit.util.Examples;
|
import jsprit.util.Examples;
|
||||||
import org.apache.commons.configuration.XMLConfiguration;
|
import org.apache.commons.configuration.XMLConfiguration;
|
||||||
|
|
@ -55,18 +55,18 @@ public class ConfigureAlgorithmInCodeInsteadOfPerXml {
|
||||||
* get a vehicle-builder and build a vehicle located at (10,10) with type "vehicleType"
|
* get a vehicle-builder and build a vehicle located at (10,10) with type "vehicleType"
|
||||||
*/
|
*/
|
||||||
Builder vehicleBuilder = VehicleImpl.Builder.newInstance("vehicle");
|
Builder vehicleBuilder = VehicleImpl.Builder.newInstance("vehicle");
|
||||||
vehicleBuilder.setStartLocationCoordinate(Coordinate.newInstance(10, 10));
|
vehicleBuilder.setStartLocation(Location.newInstance(10, 10));
|
||||||
vehicleBuilder.setType(vehicleType);
|
vehicleBuilder.setType(vehicleType);
|
||||||
VehicleImpl vehicle = vehicleBuilder.build();
|
VehicleImpl vehicle = vehicleBuilder.build();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* build services at the required locations, each with a capacity-demand of 1.
|
* build services at the required locations, each with a capacity-demand of 1.
|
||||||
*/
|
*/
|
||||||
Service service1 = Service.Builder.newInstance("1").addSizeDimension(0, 1).setCoord(Coordinate.newInstance(5, 7)).build();
|
Service service1 = Service.Builder.newInstance("1").addSizeDimension(0, 1).setLocation(Location.newInstance(5, 7)).build();
|
||||||
Service service2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setCoord(Coordinate.newInstance(5, 13)).build();
|
Service service2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(Location.newInstance(5, 13)).build();
|
||||||
|
|
||||||
Service service3 = Service.Builder.newInstance("3").addSizeDimension(0, 1).setCoord(Coordinate.newInstance(15, 7)).build();
|
Service service3 = Service.Builder.newInstance("3").addSizeDimension(0, 1).setLocation(Location.newInstance(15, 7)).build();
|
||||||
Service service4 = Service.Builder.newInstance("4").addSizeDimension(0, 1).setCoord(Coordinate.newInstance(15, 13)).build();
|
Service service4 = Service.Builder.newInstance("4").addSizeDimension(0, 1).setLocation(Location.newInstance(15, 13)).build();
|
||||||
|
|
||||||
|
|
||||||
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
|
@ -104,12 +104,13 @@ public class ConfigureAlgorithmInCodeInsteadOfPerXml {
|
||||||
private static AlgorithmConfig getAlgorithmConfig() {
|
private static AlgorithmConfig getAlgorithmConfig() {
|
||||||
AlgorithmConfig config = new AlgorithmConfig();
|
AlgorithmConfig config = new AlgorithmConfig();
|
||||||
XMLConfiguration xmlConfig = config.getXMLConfiguration();
|
XMLConfiguration xmlConfig = config.getXMLConfiguration();
|
||||||
xmlConfig.setProperty("iterations", 2000);
|
xmlConfig.setProperty("iterations", "2000");
|
||||||
xmlConfig.setProperty("construction.insertion[@name]","bestInsertion");
|
xmlConfig.setProperty("construction.insertion[@name]","bestInsertion");
|
||||||
|
|
||||||
xmlConfig.setProperty("strategy.memory", 1);
|
xmlConfig.setProperty("strategy.memory", 1);
|
||||||
String searchStrategy = "strategy.searchStrategies.searchStrategy";
|
String searchStrategy = "strategy.searchStrategies.searchStrategy";
|
||||||
|
|
||||||
|
xmlConfig.setProperty(searchStrategy + "(0)[@name]","random_best");
|
||||||
xmlConfig.setProperty(searchStrategy + "(0).selector[@name]","selectBest");
|
xmlConfig.setProperty(searchStrategy + "(0).selector[@name]","selectBest");
|
||||||
xmlConfig.setProperty(searchStrategy + "(0).acceptor[@name]","acceptNewRemoveWorst");
|
xmlConfig.setProperty(searchStrategy + "(0).acceptor[@name]","acceptNewRemoveWorst");
|
||||||
xmlConfig.setProperty(searchStrategy + "(0).modules.module(0)[@name]","ruin_and_recreate");
|
xmlConfig.setProperty(searchStrategy + "(0).modules.module(0)[@name]","ruin_and_recreate");
|
||||||
|
|
@ -117,7 +118,8 @@ public class ConfigureAlgorithmInCodeInsteadOfPerXml {
|
||||||
xmlConfig.setProperty(searchStrategy + "(0).modules.module(0).ruin.share","0.3");
|
xmlConfig.setProperty(searchStrategy + "(0).modules.module(0).ruin.share","0.3");
|
||||||
xmlConfig.setProperty(searchStrategy + "(0).modules.module(0).insertion[@name]","bestInsertion");
|
xmlConfig.setProperty(searchStrategy + "(0).modules.module(0).insertion[@name]","bestInsertion");
|
||||||
xmlConfig.setProperty(searchStrategy + "(0).probability","0.5");
|
xmlConfig.setProperty(searchStrategy + "(0).probability","0.5");
|
||||||
|
|
||||||
|
xmlConfig.setProperty(searchStrategy + "(1)[@name]","radial_best");
|
||||||
xmlConfig.setProperty(searchStrategy + "(1).selector[@name]","selectBest");
|
xmlConfig.setProperty(searchStrategy + "(1).selector[@name]","selectBest");
|
||||||
xmlConfig.setProperty(searchStrategy + "(1).acceptor[@name]","acceptNewRemoveWorst");
|
xmlConfig.setProperty(searchStrategy + "(1).acceptor[@name]","acceptNewRemoveWorst");
|
||||||
xmlConfig.setProperty(searchStrategy + "(1).modules.module(0)[@name]","ruin_and_recreate");
|
xmlConfig.setProperty(searchStrategy + "(1).modules.module(0)[@name]","ruin_and_recreate");
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@ package jsprit.examples;
|
||||||
import jsprit.analysis.toolbox.Plotter;
|
import jsprit.analysis.toolbox.Plotter;
|
||||||
import jsprit.core.algorithm.VehicleRoutingAlgorithm;
|
import jsprit.core.algorithm.VehicleRoutingAlgorithm;
|
||||||
import jsprit.core.algorithm.io.VehicleRoutingAlgorithms;
|
import jsprit.core.algorithm.io.VehicleRoutingAlgorithms;
|
||||||
|
import jsprit.core.problem.Location;
|
||||||
import jsprit.core.problem.VehicleRoutingProblem;
|
import jsprit.core.problem.VehicleRoutingProblem;
|
||||||
import jsprit.core.problem.VehicleRoutingProblem.FleetSize;
|
import jsprit.core.problem.VehicleRoutingProblem.FleetSize;
|
||||||
import jsprit.core.problem.cost.VehicleRoutingTransportCosts;
|
import jsprit.core.problem.cost.VehicleRoutingTransportCosts;
|
||||||
|
|
@ -50,11 +51,12 @@ public class CostMatrixExample {
|
||||||
Examples.createOutputFolder();
|
Examples.createOutputFolder();
|
||||||
|
|
||||||
VehicleType type = VehicleTypeImpl.Builder.newInstance("type").addCapacityDimension(0, 2).setCostPerDistance(1).setCostPerTime(2).build();
|
VehicleType type = VehicleTypeImpl.Builder.newInstance("type").addCapacityDimension(0, 2).setCostPerDistance(1).setCostPerTime(2).build();
|
||||||
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("vehicle").setStartLocationId("0").setType(type).build();
|
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("vehicle")
|
||||||
|
.setStartLocation(Location.newInstance("0")).setType(type).build();
|
||||||
|
|
||||||
Service s1 = Service.Builder.newInstance("1").addSizeDimension(0, 1).setLocationId("1").build();
|
Service s1 = Service.Builder.newInstance("1").addSizeDimension(0, 1).setLocation(Location.newInstance("1")).build();
|
||||||
Service s2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setLocationId("2").build();
|
Service s2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(Location.newInstance("2")).build();
|
||||||
Service s3 = Service.Builder.newInstance("3").addSizeDimension(0, 1).setLocationId("3").build();
|
Service s3 = Service.Builder.newInstance("3").addSizeDimension(0, 1).setLocation(Location.newInstance("3")).build();
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@ package jsprit.examples;
|
||||||
import jsprit.analysis.toolbox.GraphStreamViewer;
|
import jsprit.analysis.toolbox.GraphStreamViewer;
|
||||||
import jsprit.core.algorithm.VehicleRoutingAlgorithm;
|
import jsprit.core.algorithm.VehicleRoutingAlgorithm;
|
||||||
import jsprit.core.algorithm.io.VehicleRoutingAlgorithms;
|
import jsprit.core.algorithm.io.VehicleRoutingAlgorithms;
|
||||||
|
import jsprit.core.problem.Location;
|
||||||
import jsprit.core.problem.VehicleRoutingProblem;
|
import jsprit.core.problem.VehicleRoutingProblem;
|
||||||
import jsprit.core.problem.VehicleRoutingProblem.FleetSize;
|
import jsprit.core.problem.VehicleRoutingProblem.FleetSize;
|
||||||
import jsprit.core.problem.job.Service;
|
import jsprit.core.problem.job.Service;
|
||||||
|
|
@ -27,7 +28,6 @@ import jsprit.core.problem.vehicle.VehicleImpl;
|
||||||
import jsprit.core.problem.vehicle.VehicleType;
|
import jsprit.core.problem.vehicle.VehicleType;
|
||||||
import jsprit.core.problem.vehicle.VehicleTypeImpl;
|
import jsprit.core.problem.vehicle.VehicleTypeImpl;
|
||||||
import jsprit.core.reporting.SolutionPrinter;
|
import jsprit.core.reporting.SolutionPrinter;
|
||||||
import jsprit.core.util.Coordinate;
|
|
||||||
import jsprit.core.util.Solutions;
|
import jsprit.core.util.Solutions;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
|
@ -71,42 +71,42 @@ public class HVRPExample {
|
||||||
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
|
||||||
//add customers
|
//add customers
|
||||||
vrpBuilder.addJob(Service.Builder.newInstance("1").addSizeDimension(0, 18).setCoord(Coordinate.newInstance(22, 22)).build());
|
vrpBuilder.addJob(Service.Builder.newInstance("1").addSizeDimension(0, 18).setLocation(Location.newInstance(22, 22)).build());
|
||||||
vrpBuilder.addJob(Service.Builder.newInstance("2").addSizeDimension(0, 26).setCoord(Coordinate.newInstance(36, 26)).build());
|
vrpBuilder.addJob(Service.Builder.newInstance("2").addSizeDimension(0, 26).setLocation(Location.newInstance(36, 26)).build());
|
||||||
vrpBuilder.addJob(Service.Builder.newInstance("3").addSizeDimension(0, 11).setCoord(Coordinate.newInstance(21, 45)).build());
|
vrpBuilder.addJob(Service.Builder.newInstance("3").addSizeDimension(0, 11).setLocation(Location.newInstance(21, 45)).build());
|
||||||
vrpBuilder.addJob(Service.Builder.newInstance("4").addSizeDimension(0, 30).setCoord(Coordinate.newInstance(45, 35)).build());
|
vrpBuilder.addJob(Service.Builder.newInstance("4").addSizeDimension(0, 30).setLocation(Location.newInstance(45, 35)).build());
|
||||||
vrpBuilder.addJob(Service.Builder.newInstance("5").addSizeDimension(0, 21).setCoord(Coordinate.newInstance(55, 20)).build());
|
vrpBuilder.addJob(Service.Builder.newInstance("5").addSizeDimension(0, 21).setLocation(Location.newInstance(55, 20)).build());
|
||||||
vrpBuilder.addJob(Service.Builder.newInstance("6").addSizeDimension(0, 19).setCoord(Coordinate.newInstance(33, 34)).build());
|
vrpBuilder.addJob(Service.Builder.newInstance("6").addSizeDimension(0, 19).setLocation(Location.newInstance(33, 34)).build());
|
||||||
vrpBuilder.addJob(Service.Builder.newInstance("7").addSizeDimension(0, 15).setCoord(Coordinate.newInstance(50, 50)).build());
|
vrpBuilder.addJob(Service.Builder.newInstance("7").addSizeDimension(0, 15).setLocation(Location.newInstance(50, 50)).build());
|
||||||
vrpBuilder.addJob(Service.Builder.newInstance("8").addSizeDimension(0, 16).setCoord(Coordinate.newInstance(55, 45)).build());
|
vrpBuilder.addJob(Service.Builder.newInstance("8").addSizeDimension(0, 16).setLocation(Location.newInstance(55, 45)).build());
|
||||||
vrpBuilder.addJob(Service.Builder.newInstance("9").addSizeDimension(0, 29).setCoord(Coordinate.newInstance(26, 59)).build());
|
vrpBuilder.addJob(Service.Builder.newInstance("9").addSizeDimension(0, 29).setLocation(Location.newInstance(26, 59)).build());
|
||||||
vrpBuilder.addJob(Service.Builder.newInstance("10").addSizeDimension(0, 26).setCoord(Coordinate.newInstance(40, 66)).build());
|
vrpBuilder.addJob(Service.Builder.newInstance("10").addSizeDimension(0, 26).setLocation(Location.newInstance(40, 66)).build());
|
||||||
vrpBuilder.addJob(Service.Builder.newInstance("11").addSizeDimension(0, 37).setCoord(Coordinate.newInstance(55, 56)).build());
|
vrpBuilder.addJob(Service.Builder.newInstance("11").addSizeDimension(0, 37).setLocation(Location.newInstance(55, 56)).build());
|
||||||
vrpBuilder.addJob(Service.Builder.newInstance("12").addSizeDimension(0, 16).setCoord(Coordinate.newInstance(35, 51)).build());
|
vrpBuilder.addJob(Service.Builder.newInstance("12").addSizeDimension(0, 16).setLocation(Location.newInstance(35, 51)).build());
|
||||||
vrpBuilder.addJob(Service.Builder.newInstance("13").addSizeDimension(0, 12).setCoord(Coordinate.newInstance(62, 35)).build());
|
vrpBuilder.addJob(Service.Builder.newInstance("13").addSizeDimension(0, 12).setLocation(Location.newInstance(62, 35)).build());
|
||||||
vrpBuilder.addJob(Service.Builder.newInstance("14").addSizeDimension(0, 31).setCoord(Coordinate.newInstance(62, 57)).build());
|
vrpBuilder.addJob(Service.Builder.newInstance("14").addSizeDimension(0, 31).setLocation(Location.newInstance(62, 57)).build());
|
||||||
vrpBuilder.addJob(Service.Builder.newInstance("15").addSizeDimension(0, 8).setCoord(Coordinate.newInstance(62, 24)).build());
|
vrpBuilder.addJob(Service.Builder.newInstance("15").addSizeDimension(0, 8).setLocation(Location.newInstance(62, 24)).build());
|
||||||
vrpBuilder.addJob(Service.Builder.newInstance("16").addSizeDimension(0, 19).setCoord(Coordinate.newInstance(21, 36)).build());
|
vrpBuilder.addJob(Service.Builder.newInstance("16").addSizeDimension(0, 19).setLocation(Location.newInstance(21, 36)).build());
|
||||||
vrpBuilder.addJob(Service.Builder.newInstance("17").addSizeDimension(0, 20).setCoord(Coordinate.newInstance(33, 44)).build());
|
vrpBuilder.addJob(Service.Builder.newInstance("17").addSizeDimension(0, 20).setLocation(Location.newInstance(33, 44)).build());
|
||||||
vrpBuilder.addJob(Service.Builder.newInstance("18").addSizeDimension(0, 13).setCoord(Coordinate.newInstance(9, 56)).build());
|
vrpBuilder.addJob(Service.Builder.newInstance("18").addSizeDimension(0, 13).setLocation(Location.newInstance(9, 56)).build());
|
||||||
vrpBuilder.addJob(Service.Builder.newInstance("19").addSizeDimension(0, 15).setCoord(Coordinate.newInstance(62, 48)).build());
|
vrpBuilder.addJob(Service.Builder.newInstance("19").addSizeDimension(0, 15).setLocation(Location.newInstance(62, 48)).build());
|
||||||
vrpBuilder.addJob(Service.Builder.newInstance("20").addSizeDimension(0, 22).setCoord(Coordinate.newInstance(66, 14)).build());
|
vrpBuilder.addJob(Service.Builder.newInstance("20").addSizeDimension(0, 22).setLocation(Location.newInstance(66, 14)).build());
|
||||||
|
|
||||||
|
|
||||||
//add vehicle - finite fleet
|
//add vehicle - finite fleet
|
||||||
//2xtype1
|
//2xtype1
|
||||||
VehicleType type1 = VehicleTypeImpl.Builder.newInstance("type_1").addCapacityDimension(0, 120).setCostPerDistance(1.0).build();
|
VehicleType type1 = VehicleTypeImpl.Builder.newInstance("type_1").addCapacityDimension(0, 120).setCostPerDistance(1.0).build();
|
||||||
VehicleImpl vehicle1_1 = VehicleImpl.Builder.newInstance("1_1").setStartLocationCoordinate(Coordinate.newInstance(40, 40)).setType(type1).build();
|
VehicleImpl vehicle1_1 = VehicleImpl.Builder.newInstance("1_1").setStartLocation(Location.newInstance(40, 40)).setType(type1).build();
|
||||||
vrpBuilder.addVehicle(vehicle1_1);
|
vrpBuilder.addVehicle(vehicle1_1);
|
||||||
VehicleImpl vehicle1_2 = VehicleImpl.Builder.newInstance("1_2").setStartLocationCoordinate(Coordinate.newInstance(40, 40)).setType(type1).build();
|
VehicleImpl vehicle1_2 = VehicleImpl.Builder.newInstance("1_2").setStartLocation(Location.newInstance(40, 40)).setType(type1).build();
|
||||||
vrpBuilder.addVehicle(vehicle1_2);
|
vrpBuilder.addVehicle(vehicle1_2);
|
||||||
//1xtype2
|
//1xtype2
|
||||||
VehicleType type2 = VehicleTypeImpl.Builder.newInstance("type_2").addCapacityDimension(0, 160).setCostPerDistance(1.1).build();
|
VehicleType type2 = VehicleTypeImpl.Builder.newInstance("type_2").addCapacityDimension(0, 160).setCostPerDistance(1.1).build();
|
||||||
VehicleImpl vehicle2_1 = VehicleImpl.Builder.newInstance("2_1").setStartLocationCoordinate(Coordinate.newInstance(40, 40)).setType(type2).build();
|
VehicleImpl vehicle2_1 = VehicleImpl.Builder.newInstance("2_1").setStartLocation(Location.newInstance(40, 40)).setType(type2).build();
|
||||||
vrpBuilder.addVehicle(vehicle2_1);
|
vrpBuilder.addVehicle(vehicle2_1);
|
||||||
//1xtype3
|
//1xtype3
|
||||||
VehicleType type3 = VehicleTypeImpl.Builder.newInstance("type_3").addCapacityDimension(0, 300).setCostPerDistance(1.3).build();
|
VehicleType type3 = VehicleTypeImpl.Builder.newInstance("type_3").addCapacityDimension(0, 300).setCostPerDistance(1.3).build();
|
||||||
VehicleImpl vehicle3_1 = VehicleImpl.Builder.newInstance("3_1").setStartLocationCoordinate(Coordinate.newInstance(40, 40)).setType(type3).build();
|
VehicleImpl vehicle3_1 = VehicleImpl.Builder.newInstance("3_1").setStartLocation(Location.newInstance(40, 40)).setType(type3).build();
|
||||||
vrpBuilder.addVehicle(vehicle3_1);
|
vrpBuilder.addVehicle(vehicle3_1);
|
||||||
|
|
||||||
//add penaltyVehicles to allow invalid solutions temporarily
|
//add penaltyVehicles to allow invalid solutions temporarily
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,7 @@ import jsprit.core.algorithm.VehicleRoutingAlgorithmBuilder;
|
||||||
import jsprit.core.algorithm.state.StateId;
|
import jsprit.core.algorithm.state.StateId;
|
||||||
import jsprit.core.algorithm.state.StateManager;
|
import jsprit.core.algorithm.state.StateManager;
|
||||||
import jsprit.core.algorithm.state.StateUpdater;
|
import jsprit.core.algorithm.state.StateUpdater;
|
||||||
|
import jsprit.core.problem.Location;
|
||||||
import jsprit.core.problem.VehicleRoutingProblem;
|
import jsprit.core.problem.VehicleRoutingProblem;
|
||||||
import jsprit.core.problem.constraint.ConstraintManager;
|
import jsprit.core.problem.constraint.ConstraintManager;
|
||||||
import jsprit.core.problem.constraint.HardActivityConstraint;
|
import jsprit.core.problem.constraint.HardActivityConstraint;
|
||||||
|
|
@ -36,7 +37,6 @@ import jsprit.core.problem.solution.route.activity.ActivityVisitor;
|
||||||
import jsprit.core.problem.solution.route.activity.TourActivity;
|
import jsprit.core.problem.solution.route.activity.TourActivity;
|
||||||
import jsprit.core.problem.vehicle.VehicleImpl;
|
import jsprit.core.problem.vehicle.VehicleImpl;
|
||||||
import jsprit.core.reporting.SolutionPrinter;
|
import jsprit.core.reporting.SolutionPrinter;
|
||||||
import jsprit.core.util.Coordinate;
|
|
||||||
import jsprit.core.util.Solutions;
|
import jsprit.core.util.Solutions;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
|
@ -210,45 +210,45 @@ public class JobAndActivityDependenciesExample {
|
||||||
|
|
||||||
VehicleImpl driver1 = VehicleImpl.Builder.newInstance("driver1")
|
VehicleImpl driver1 = VehicleImpl.Builder.newInstance("driver1")
|
||||||
.addSkill("driver1")
|
.addSkill("driver1")
|
||||||
.setStartLocationCoordinate(Coordinate.newInstance(0, 0)).setReturnToDepot(false).build();
|
.setStartLocation(Location.newInstance(0, 0)).setReturnToDepot(false).build();
|
||||||
|
|
||||||
VehicleImpl driver3 = VehicleImpl.Builder.newInstance("driver3")
|
VehicleImpl driver3 = VehicleImpl.Builder.newInstance("driver3")
|
||||||
.addSkill("driver3")
|
.addSkill("driver3")
|
||||||
.setStartLocationCoordinate(Coordinate.newInstance(-3, 5)).setReturnToDepot(true).build();
|
.setStartLocation(Location.newInstance(-3, 5)).setReturnToDepot(true).build();
|
||||||
|
|
||||||
Service s1 = Service.Builder.newInstance("s1")
|
Service s1 = Service.Builder.newInstance("s1")
|
||||||
.addRequiredSkill("driver1")
|
.addRequiredSkill("driver1")
|
||||||
.setName("install new device")
|
.setName("install new device")
|
||||||
.setCoord(Coordinate.newInstance(2, 2)).build();
|
.setLocation(Location.newInstance(2, 2)).build();
|
||||||
Service s2 = Service.Builder.newInstance("s2")
|
Service s2 = Service.Builder.newInstance("s2")
|
||||||
.addRequiredSkill("driver3")
|
.addRequiredSkill("driver3")
|
||||||
.setName("deliver key")
|
.setName("deliver key")
|
||||||
.setCoord(Coordinate.newInstance(2, 4)).build();
|
.setLocation(Location.newInstance(2, 4)).build();
|
||||||
|
|
||||||
Service s3 = Service.Builder.newInstance("s3")
|
Service s3 = Service.Builder.newInstance("s3")
|
||||||
.addRequiredSkill("driver1")
|
.addRequiredSkill("driver1")
|
||||||
.setName("repair heater")
|
.setName("repair heater")
|
||||||
.setCoord(Coordinate.newInstance(-2, 2)).build();
|
.setLocation(Location.newInstance(-2, 2)).build();
|
||||||
|
|
||||||
Service s4 = Service.Builder.newInstance("s4")
|
Service s4 = Service.Builder.newInstance("s4")
|
||||||
.addRequiredSkill("driver3")
|
.addRequiredSkill("driver3")
|
||||||
.setName("get key")
|
.setName("get key")
|
||||||
.setCoord(Coordinate.newInstance(-2.3, 4)).build();
|
.setLocation(Location.newInstance(-2.3, 4)).build();
|
||||||
|
|
||||||
Service s5 = Service.Builder.newInstance("s5")
|
Service s5 = Service.Builder.newInstance("s5")
|
||||||
.addRequiredSkill("driver1")
|
.addRequiredSkill("driver1")
|
||||||
.setName("cleaning")
|
.setName("cleaning")
|
||||||
.setCoord(Coordinate.newInstance(1, 5)).build();
|
.setLocation(Location.newInstance(1, 5)).build();
|
||||||
|
|
||||||
Service s6 = Service.Builder.newInstance("s6")
|
Service s6 = Service.Builder.newInstance("s6")
|
||||||
.addRequiredSkill("driver3")
|
.addRequiredSkill("driver3")
|
||||||
.setName("use key")
|
.setName("use key")
|
||||||
.setCoord(Coordinate.newInstance(-2, 3)).build();
|
.setLocation(Location.newInstance(-2, 3)).build();
|
||||||
|
|
||||||
Service s7 = Service.Builder.newInstance("s7")
|
Service s7 = Service.Builder.newInstance("s7")
|
||||||
.addRequiredSkill("driver3")
|
.addRequiredSkill("driver3")
|
||||||
.setName("maintenance")
|
.setName("maintenance")
|
||||||
.setCoord(Coordinate.newInstance(-1.7, 3.5)).build();
|
.setLocation(Location.newInstance(-1.7, 3.5)).build();
|
||||||
|
|
||||||
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance().setFleetSize(VehicleRoutingProblem.FleetSize.FINITE)
|
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance().setFleetSize(VehicleRoutingProblem.FleetSize.FINITE)
|
||||||
.addJob(s1).addJob(s2).addJob(s3).addJob(s4).addJob(s5).addJob(s6).addJob(s7)
|
.addJob(s1).addJob(s2).addJob(s3).addJob(s4).addJob(s5).addJob(s6).addJob(s7)
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@ package jsprit.examples;
|
||||||
import jsprit.core.algorithm.VehicleRoutingAlgorithm;
|
import jsprit.core.algorithm.VehicleRoutingAlgorithm;
|
||||||
import jsprit.core.algorithm.box.GreedySchrimpfFactory;
|
import jsprit.core.algorithm.box.GreedySchrimpfFactory;
|
||||||
import jsprit.core.algorithm.termination.IterationWithoutImprovementTermination;
|
import jsprit.core.algorithm.termination.IterationWithoutImprovementTermination;
|
||||||
|
import jsprit.core.problem.Location;
|
||||||
import jsprit.core.problem.VehicleRoutingProblem;
|
import jsprit.core.problem.VehicleRoutingProblem;
|
||||||
import jsprit.core.problem.VehicleRoutingProblem.FleetSize;
|
import jsprit.core.problem.VehicleRoutingProblem.FleetSize;
|
||||||
import jsprit.core.problem.io.VrpXMLWriter;
|
import jsprit.core.problem.io.VrpXMLWriter;
|
||||||
|
|
@ -49,55 +50,6 @@ import java.util.Collection;
|
||||||
*/
|
*/
|
||||||
public class RefuseCollectionExample {
|
public class RefuseCollectionExample {
|
||||||
|
|
||||||
static class RelationKey {
|
|
||||||
|
|
||||||
final String from;
|
|
||||||
final String to;
|
|
||||||
|
|
||||||
public RelationKey(String from, String to) {
|
|
||||||
super();
|
|
||||||
this.from = from;
|
|
||||||
this.to = to;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* (non-Javadoc)
|
|
||||||
* @see java.lang.Object#hashCode()
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public int hashCode() {
|
|
||||||
final int prime = 31;
|
|
||||||
int result = 1;
|
|
||||||
result = prime * result + ((from == null) ? 0 : from.hashCode());
|
|
||||||
result = prime * result + ((to == null) ? 0 : to.hashCode());
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* (non-Javadoc)
|
|
||||||
* @see java.lang.Object#equals(java.lang.Object)
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public boolean equals(Object obj) {
|
|
||||||
if (this == obj)
|
|
||||||
return true;
|
|
||||||
if (obj == null)
|
|
||||||
return false;
|
|
||||||
if (getClass() != obj.getClass())
|
|
||||||
return false;
|
|
||||||
RelationKey other = (RelationKey) obj;
|
|
||||||
if (from == null) {
|
|
||||||
if (other.from != null)
|
|
||||||
return false;
|
|
||||||
} else if (!from.equals(other.from))
|
|
||||||
return false;
|
|
||||||
if (to == null) {
|
|
||||||
if (other.to != null)
|
|
||||||
return false;
|
|
||||||
} else if (!to.equals(other.to))
|
|
||||||
return false;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void main(String[] args) throws IOException {
|
public static void main(String[] args) throws IOException {
|
||||||
/*
|
/*
|
||||||
* some preparation - create output folder
|
* some preparation - create output folder
|
||||||
|
|
@ -112,7 +64,7 @@ public class RefuseCollectionExample {
|
||||||
VehicleTypeImpl bigType = typeBuilder.build();
|
VehicleTypeImpl bigType = typeBuilder.build();
|
||||||
|
|
||||||
VehicleImpl.Builder vehicleBuilder = VehicleImpl.Builder.newInstance("vehicle");
|
VehicleImpl.Builder vehicleBuilder = VehicleImpl.Builder.newInstance("vehicle");
|
||||||
vehicleBuilder.setStartLocationId("1");
|
vehicleBuilder.setStartLocation(Location.newInstance("1"));
|
||||||
vehicleBuilder.setType(bigType);
|
vehicleBuilder.setType(bigType);
|
||||||
VehicleImpl bigVehicle = vehicleBuilder.build();
|
VehicleImpl bigVehicle = vehicleBuilder.build();
|
||||||
|
|
||||||
|
|
@ -162,7 +114,7 @@ public class RefuseCollectionExample {
|
||||||
/*
|
/*
|
||||||
* build service
|
* build service
|
||||||
*/
|
*/
|
||||||
Service service = Service.Builder.newInstance(lineTokens[0]).addSizeDimension(0, Integer.parseInt(lineTokens[1])).setLocationId(lineTokens[0]).build();
|
Service service = Service.Builder.newInstance(lineTokens[0]).addSizeDimension(0, Integer.parseInt(lineTokens[1])).setLocation(Location.newInstance(lineTokens[0])).build();
|
||||||
/*
|
/*
|
||||||
* and add it to problem
|
* and add it to problem
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,7 @@ import jsprit.analysis.toolbox.GraphStreamViewer.Label;
|
||||||
import jsprit.analysis.toolbox.Plotter;
|
import jsprit.analysis.toolbox.Plotter;
|
||||||
import jsprit.core.algorithm.VehicleRoutingAlgorithm;
|
import jsprit.core.algorithm.VehicleRoutingAlgorithm;
|
||||||
import jsprit.core.algorithm.io.VehicleRoutingAlgorithms;
|
import jsprit.core.algorithm.io.VehicleRoutingAlgorithms;
|
||||||
|
import jsprit.core.problem.Location;
|
||||||
import jsprit.core.problem.VehicleRoutingProblem;
|
import jsprit.core.problem.VehicleRoutingProblem;
|
||||||
import jsprit.core.problem.io.VrpXMLWriter;
|
import jsprit.core.problem.io.VrpXMLWriter;
|
||||||
import jsprit.core.problem.job.Service;
|
import jsprit.core.problem.job.Service;
|
||||||
|
|
@ -30,7 +31,6 @@ import jsprit.core.problem.vehicle.VehicleImpl.Builder;
|
||||||
import jsprit.core.problem.vehicle.VehicleType;
|
import jsprit.core.problem.vehicle.VehicleType;
|
||||||
import jsprit.core.problem.vehicle.VehicleTypeImpl;
|
import jsprit.core.problem.vehicle.VehicleTypeImpl;
|
||||||
import jsprit.core.reporting.SolutionPrinter;
|
import jsprit.core.reporting.SolutionPrinter;
|
||||||
import jsprit.core.util.Coordinate;
|
|
||||||
import jsprit.core.util.Solutions;
|
import jsprit.core.util.Solutions;
|
||||||
import jsprit.util.Examples;
|
import jsprit.util.Examples;
|
||||||
|
|
||||||
|
|
@ -57,12 +57,12 @@ public class ServicePickupsWithMultipleDepotsExample {
|
||||||
* define two depots, i.e. two vehicle locations ([10,10],[50,50]) and equip them with an infinite number of vehicles of type 'vehicleType'
|
* define two depots, i.e. two vehicle locations ([10,10],[50,50]) and equip them with an infinite number of vehicles of type 'vehicleType'
|
||||||
*/
|
*/
|
||||||
Builder vehicleBuilder1 = VehicleImpl.Builder.newInstance("vehicles@[10,10]");
|
Builder vehicleBuilder1 = VehicleImpl.Builder.newInstance("vehicles@[10,10]");
|
||||||
vehicleBuilder1.setStartLocationCoordinate(Coordinate.newInstance(10, 10));
|
vehicleBuilder1.setStartLocation(Location.newInstance(10, 10));
|
||||||
vehicleBuilder1.setType(vehicleType);
|
vehicleBuilder1.setType(vehicleType);
|
||||||
VehicleImpl vehicle1 = vehicleBuilder1.build();
|
VehicleImpl vehicle1 = vehicleBuilder1.build();
|
||||||
|
|
||||||
Builder vehicleBuilder2 = VehicleImpl.Builder.newInstance("vehicles@[50,50]");
|
Builder vehicleBuilder2 = VehicleImpl.Builder.newInstance("vehicles@[50,50]");
|
||||||
vehicleBuilder2.setStartLocationCoordinate(Coordinate.newInstance(50, 50));
|
vehicleBuilder2.setStartLocation(Location.newInstance(50, 50));
|
||||||
vehicleBuilder2.setType(vehicleType);
|
vehicleBuilder2.setType(vehicleType);
|
||||||
VehicleImpl vehicle2 = vehicleBuilder2.build();
|
VehicleImpl vehicle2 = vehicleBuilder2.build();
|
||||||
|
|
||||||
|
|
@ -76,17 +76,17 @@ public class ServicePickupsWithMultipleDepotsExample {
|
||||||
* 4: (15,13)->(14,11)
|
* 4: (15,13)->(14,11)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
Service shipment1 = Service.Builder.newInstance("1").addSizeDimension(0, 1).setCoord(Coordinate.newInstance(5, 7)).build();
|
Service shipment1 = Service.Builder.newInstance("1").addSizeDimension(0, 1).setLocation(Location.newInstance(5, 7)).build();
|
||||||
Service shipment2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setCoord(Coordinate.newInstance(5, 13)).build();
|
Service shipment2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(Location.newInstance(5, 13)).build();
|
||||||
|
|
||||||
Service shipment3 = Service.Builder.newInstance("3").addSizeDimension(0, 1).setCoord(Coordinate.newInstance(15, 7)).build();
|
Service shipment3 = Service.Builder.newInstance("3").addSizeDimension(0, 1).setLocation(Location.newInstance(15, 7)).build();
|
||||||
Service shipment4 = Service.Builder.newInstance("4").addSizeDimension(0, 1).setCoord(Coordinate.newInstance(15, 13)).build();
|
Service shipment4 = Service.Builder.newInstance("4").addSizeDimension(0, 1).setLocation(Location.newInstance(15, 13)).build();
|
||||||
|
|
||||||
Service shipment5 = Service.Builder.newInstance("5").addSizeDimension(0, 1).setCoord(Coordinate.newInstance(55, 57)).build();
|
Service shipment5 = Service.Builder.newInstance("5").addSizeDimension(0, 1).setLocation(Location.newInstance(55, 57)).build();
|
||||||
Service shipment6 = Service.Builder.newInstance("6").addSizeDimension(0, 1).setCoord(Coordinate.newInstance(55, 63)).build();
|
Service shipment6 = Service.Builder.newInstance("6").addSizeDimension(0, 1).setLocation(Location.newInstance(55, 63)).build();
|
||||||
|
|
||||||
Service shipment7 = Service.Builder.newInstance("7").addSizeDimension(0, 1).setCoord(Coordinate.newInstance(65, 57)).build();
|
Service shipment7 = Service.Builder.newInstance("7").addSizeDimension(0, 1).setLocation(Location.newInstance(65, 57)).build();
|
||||||
Service shipment8 = Service.Builder.newInstance("8").addSizeDimension(0, 1).setCoord(Coordinate.newInstance(65, 63)).build();
|
Service shipment8 = Service.Builder.newInstance("8").addSizeDimension(0, 1).setLocation(Location.newInstance(65, 63)).build();
|
||||||
|
|
||||||
|
|
||||||
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@ import jsprit.analysis.toolbox.Plotter;
|
||||||
import jsprit.analysis.toolbox.Plotter.Label;
|
import jsprit.analysis.toolbox.Plotter.Label;
|
||||||
import jsprit.core.algorithm.VehicleRoutingAlgorithm;
|
import jsprit.core.algorithm.VehicleRoutingAlgorithm;
|
||||||
import jsprit.core.algorithm.box.SchrimpfFactory;
|
import jsprit.core.algorithm.box.SchrimpfFactory;
|
||||||
|
import jsprit.core.problem.Location;
|
||||||
import jsprit.core.problem.VehicleRoutingProblem;
|
import jsprit.core.problem.VehicleRoutingProblem;
|
||||||
import jsprit.core.problem.io.VrpXMLWriter;
|
import jsprit.core.problem.io.VrpXMLWriter;
|
||||||
import jsprit.core.problem.job.Delivery;
|
import jsprit.core.problem.job.Delivery;
|
||||||
|
|
@ -30,7 +31,6 @@ import jsprit.core.problem.vehicle.VehicleImpl.Builder;
|
||||||
import jsprit.core.problem.vehicle.VehicleType;
|
import jsprit.core.problem.vehicle.VehicleType;
|
||||||
import jsprit.core.problem.vehicle.VehicleTypeImpl;
|
import jsprit.core.problem.vehicle.VehicleTypeImpl;
|
||||||
import jsprit.core.reporting.SolutionPrinter;
|
import jsprit.core.reporting.SolutionPrinter;
|
||||||
import jsprit.core.util.Coordinate;
|
|
||||||
import jsprit.core.util.Solutions;
|
import jsprit.core.util.Solutions;
|
||||||
import jsprit.util.Examples;
|
import jsprit.util.Examples;
|
||||||
|
|
||||||
|
|
@ -55,18 +55,18 @@ public class SimpleDepotBoundedPickupAndDeliveryExample {
|
||||||
* get a vehicle-builder and build a vehicle located at (10,10) with type "vehicleType"
|
* get a vehicle-builder and build a vehicle located at (10,10) with type "vehicleType"
|
||||||
*/
|
*/
|
||||||
Builder vehicleBuilder = VehicleImpl.Builder.newInstance("vehicle");
|
Builder vehicleBuilder = VehicleImpl.Builder.newInstance("vehicle");
|
||||||
vehicleBuilder.setStartLocationCoordinate(Coordinate.newInstance(10, 10));
|
vehicleBuilder.setStartLocation(Location.newInstance(10, 10));
|
||||||
vehicleBuilder.setType(vehicleType);
|
vehicleBuilder.setType(vehicleType);
|
||||||
VehicleImpl vehicle = vehicleBuilder.build();
|
VehicleImpl vehicle = vehicleBuilder.build();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* build pickups and deliveries at the required locations, each with a capacity-demand of 1.
|
* build pickups and deliveries at the required locations, each with a capacity-demand of 1.
|
||||||
*/
|
*/
|
||||||
Pickup pickup1 = (Pickup) Pickup.Builder.newInstance("1").addSizeDimension(0, 1).setCoord(Coordinate.newInstance(5, 7)).build();
|
Pickup pickup1 = (Pickup) Pickup.Builder.newInstance("1").addSizeDimension(0, 1).setLocation(Location.newInstance(5, 7)).build();
|
||||||
Delivery delivery1 = (Delivery) Delivery.Builder.newInstance("2").addSizeDimension(0, 1).setCoord(Coordinate.newInstance(5, 13)).build();
|
Delivery delivery1 = (Delivery) Delivery.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(Location.newInstance(5, 13)).build();
|
||||||
|
|
||||||
Pickup pickup2 = (Pickup) Pickup.Builder.newInstance("3").addSizeDimension(0, 1).setCoord(Coordinate.newInstance(15, 7)).build();
|
Pickup pickup2 = (Pickup) Pickup.Builder.newInstance("3").addSizeDimension(0, 1).setLocation(Location.newInstance(15, 7)).build();
|
||||||
Delivery delivery2 = (Delivery) Delivery.Builder.newInstance("4").addSizeDimension(0, 1).setCoord(Coordinate.newInstance(15, 13)).build();
|
Delivery delivery2 = (Delivery) Delivery.Builder.newInstance("4").addSizeDimension(0, 1).setLocation(Location.newInstance(15, 13)).build();
|
||||||
|
|
||||||
|
|
||||||
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@ import jsprit.analysis.toolbox.GraphStreamViewer;
|
||||||
import jsprit.analysis.toolbox.GraphStreamViewer.Label;
|
import jsprit.analysis.toolbox.GraphStreamViewer.Label;
|
||||||
import jsprit.core.algorithm.VehicleRoutingAlgorithm;
|
import jsprit.core.algorithm.VehicleRoutingAlgorithm;
|
||||||
import jsprit.core.algorithm.box.SchrimpfFactory;
|
import jsprit.core.algorithm.box.SchrimpfFactory;
|
||||||
|
import jsprit.core.problem.Location;
|
||||||
import jsprit.core.problem.VehicleRoutingProblem;
|
import jsprit.core.problem.VehicleRoutingProblem;
|
||||||
import jsprit.core.problem.io.VrpXMLWriter;
|
import jsprit.core.problem.io.VrpXMLWriter;
|
||||||
import jsprit.core.problem.job.Service;
|
import jsprit.core.problem.job.Service;
|
||||||
|
|
@ -29,7 +30,6 @@ import jsprit.core.problem.vehicle.VehicleImpl.Builder;
|
||||||
import jsprit.core.problem.vehicle.VehicleType;
|
import jsprit.core.problem.vehicle.VehicleType;
|
||||||
import jsprit.core.problem.vehicle.VehicleTypeImpl;
|
import jsprit.core.problem.vehicle.VehicleTypeImpl;
|
||||||
import jsprit.core.reporting.SolutionPrinter;
|
import jsprit.core.reporting.SolutionPrinter;
|
||||||
import jsprit.core.util.Coordinate;
|
|
||||||
import jsprit.core.util.Solutions;
|
import jsprit.core.util.Solutions;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
|
@ -63,18 +63,18 @@ public class SimpleExample {
|
||||||
* get a vehicle-builder and build a vehicle located at (10,10) with type "vehicleType"
|
* get a vehicle-builder and build a vehicle located at (10,10) with type "vehicleType"
|
||||||
*/
|
*/
|
||||||
Builder vehicleBuilder = VehicleImpl.Builder.newInstance("vehicle");
|
Builder vehicleBuilder = VehicleImpl.Builder.newInstance("vehicle");
|
||||||
vehicleBuilder.setStartLocationCoordinate(Coordinate.newInstance(10, 10));
|
vehicleBuilder.setStartLocation(Location.newInstance(10, 10));
|
||||||
vehicleBuilder.setType(vehicleType);
|
vehicleBuilder.setType(vehicleType);
|
||||||
VehicleImpl vehicle = vehicleBuilder.build();
|
VehicleImpl vehicle = vehicleBuilder.build();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* build services at the required locations, each with a capacity-demand of 1.
|
* build services at the required locations, each with a capacity-demand of 1.
|
||||||
*/
|
*/
|
||||||
Service service1 = Service.Builder.newInstance("1").addSizeDimension(WEIGHT_INDEX, 1).setCoord(Coordinate.newInstance(5, 7)).build();
|
Service service1 = Service.Builder.newInstance("1").addSizeDimension(WEIGHT_INDEX, 1).setLocation(Location.newInstance(5, 7)).build();
|
||||||
Service service2 = Service.Builder.newInstance("2").addSizeDimension(WEIGHT_INDEX, 1).setCoord(Coordinate.newInstance(5, 13)).build();
|
Service service2 = Service.Builder.newInstance("2").addSizeDimension(WEIGHT_INDEX, 1).setLocation(Location.newInstance(5, 13)).build();
|
||||||
|
|
||||||
Service service3 = Service.Builder.newInstance("3").addSizeDimension(WEIGHT_INDEX, 1).setCoord(Coordinate.newInstance(15, 7)).build();
|
Service service3 = Service.Builder.newInstance("3").addSizeDimension(WEIGHT_INDEX, 1).setLocation(Location.newInstance(15, 7)).build();
|
||||||
Service service4 = Service.Builder.newInstance("4").addSizeDimension(WEIGHT_INDEX, 1).setCoord(Coordinate.newInstance(15, 13)).build();
|
Service service4 = Service.Builder.newInstance("4").addSizeDimension(WEIGHT_INDEX, 1).setLocation(Location.newInstance(15, 13)).build();
|
||||||
|
|
||||||
|
|
||||||
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@ package jsprit.examples;
|
||||||
import jsprit.analysis.toolbox.Plotter;
|
import jsprit.analysis.toolbox.Plotter;
|
||||||
import jsprit.core.algorithm.VehicleRoutingAlgorithm;
|
import jsprit.core.algorithm.VehicleRoutingAlgorithm;
|
||||||
import jsprit.core.algorithm.io.VehicleRoutingAlgorithms;
|
import jsprit.core.algorithm.io.VehicleRoutingAlgorithms;
|
||||||
|
import jsprit.core.problem.Location;
|
||||||
import jsprit.core.problem.VehicleRoutingProblem;
|
import jsprit.core.problem.VehicleRoutingProblem;
|
||||||
import jsprit.core.problem.io.VrpXMLWriter;
|
import jsprit.core.problem.io.VrpXMLWriter;
|
||||||
import jsprit.core.problem.job.Service;
|
import jsprit.core.problem.job.Service;
|
||||||
|
|
@ -28,7 +29,6 @@ import jsprit.core.problem.vehicle.VehicleImpl.Builder;
|
||||||
import jsprit.core.problem.vehicle.VehicleType;
|
import jsprit.core.problem.vehicle.VehicleType;
|
||||||
import jsprit.core.problem.vehicle.VehicleTypeImpl;
|
import jsprit.core.problem.vehicle.VehicleTypeImpl;
|
||||||
import jsprit.core.reporting.SolutionPrinter;
|
import jsprit.core.reporting.SolutionPrinter;
|
||||||
import jsprit.core.util.Coordinate;
|
|
||||||
import jsprit.core.util.Solutions;
|
import jsprit.core.util.Solutions;
|
||||||
import jsprit.util.Examples;
|
import jsprit.util.Examples;
|
||||||
|
|
||||||
|
|
@ -54,7 +54,7 @@ public class SimpleExampleOpenRoutes {
|
||||||
* get a vehicle-builder and build a vehicle located at (10,10) with type "vehicleType"
|
* get a vehicle-builder and build a vehicle located at (10,10) with type "vehicleType"
|
||||||
*/
|
*/
|
||||||
Builder vehicleBuilder = VehicleImpl.Builder.newInstance("vehicle");
|
Builder vehicleBuilder = VehicleImpl.Builder.newInstance("vehicle");
|
||||||
vehicleBuilder.setStartLocationCoordinate(Coordinate.newInstance(10, 10));
|
vehicleBuilder.setStartLocation(Location.newInstance(10, 10));
|
||||||
vehicleBuilder.setType(vehicleType);
|
vehicleBuilder.setType(vehicleType);
|
||||||
vehicleBuilder.setReturnToDepot(false);
|
vehicleBuilder.setReturnToDepot(false);
|
||||||
|
|
||||||
|
|
@ -63,11 +63,11 @@ public class SimpleExampleOpenRoutes {
|
||||||
/*
|
/*
|
||||||
* build services at the required locations, each with a capacity-demand of 1.
|
* build services at the required locations, each with a capacity-demand of 1.
|
||||||
*/
|
*/
|
||||||
Service service1 = Service.Builder.newInstance("1").addSizeDimension(0, 1).setCoord(Coordinate.newInstance(5, 7)).build();
|
Service service1 = Service.Builder.newInstance("1").addSizeDimension(0, 1).setLocation(Location.newInstance(5, 7)).build();
|
||||||
Service service2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setCoord(Coordinate.newInstance(5, 13)).build();
|
Service service2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(Location.newInstance(5, 13)).build();
|
||||||
|
|
||||||
Service service3 = Service.Builder.newInstance("3").addSizeDimension(0, 1).setCoord(Coordinate.newInstance(15, 7)).build();
|
Service service3 = Service.Builder.newInstance("3").addSizeDimension(0, 1).setLocation(Location.newInstance(15, 7)).build();
|
||||||
Service service4 = Service.Builder.newInstance("4").addSizeDimension(0, 1).setCoord(Coordinate.newInstance(15, 13)).build();
|
Service service4 = Service.Builder.newInstance("4").addSizeDimension(0, 1).setLocation(Location.newInstance(15, 13)).build();
|
||||||
|
|
||||||
|
|
||||||
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,7 @@ import jsprit.analysis.toolbox.GraphStreamViewer.Label;
|
||||||
import jsprit.core.algorithm.VehicleRoutingAlgorithm;
|
import jsprit.core.algorithm.VehicleRoutingAlgorithm;
|
||||||
import jsprit.core.algorithm.VehicleRoutingAlgorithmBuilder;
|
import jsprit.core.algorithm.VehicleRoutingAlgorithmBuilder;
|
||||||
import jsprit.core.algorithm.state.StateManager;
|
import jsprit.core.algorithm.state.StateManager;
|
||||||
|
import jsprit.core.problem.Location;
|
||||||
import jsprit.core.problem.VehicleRoutingProblem;
|
import jsprit.core.problem.VehicleRoutingProblem;
|
||||||
import jsprit.core.problem.constraint.ConstraintManager;
|
import jsprit.core.problem.constraint.ConstraintManager;
|
||||||
import jsprit.core.problem.io.VrpXMLWriter;
|
import jsprit.core.problem.io.VrpXMLWriter;
|
||||||
|
|
@ -31,7 +32,6 @@ import jsprit.core.problem.vehicle.VehicleImpl.Builder;
|
||||||
import jsprit.core.problem.vehicle.VehicleType;
|
import jsprit.core.problem.vehicle.VehicleType;
|
||||||
import jsprit.core.problem.vehicle.VehicleTypeImpl;
|
import jsprit.core.problem.vehicle.VehicleTypeImpl;
|
||||||
import jsprit.core.reporting.SolutionPrinter;
|
import jsprit.core.reporting.SolutionPrinter;
|
||||||
import jsprit.core.util.Coordinate;
|
|
||||||
import jsprit.core.util.Solutions;
|
import jsprit.core.util.Solutions;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
|
@ -65,12 +65,12 @@ public class SimpleExampleWithSkills {
|
||||||
* get a vehicle-builder and build a vehicle located at (10,10) with type "vehicleType"
|
* get a vehicle-builder and build a vehicle located at (10,10) with type "vehicleType"
|
||||||
*/
|
*/
|
||||||
Builder vehicleBuilder = Builder.newInstance("vehicle");
|
Builder vehicleBuilder = Builder.newInstance("vehicle");
|
||||||
vehicleBuilder.setStartLocationCoordinate(Coordinate.newInstance(10, 10));
|
vehicleBuilder.setStartLocation(Location.newInstance(10, 10));
|
||||||
vehicleBuilder.setType(vehicleType);
|
vehicleBuilder.setType(vehicleType);
|
||||||
VehicleImpl vehicle = vehicleBuilder.build();
|
VehicleImpl vehicle = vehicleBuilder.build();
|
||||||
|
|
||||||
Builder vehicle2Builder = Builder.newInstance("vehicle2");
|
Builder vehicle2Builder = Builder.newInstance("vehicle2");
|
||||||
vehicle2Builder.setStartLocationCoordinate(Coordinate.newInstance(1, 1));
|
vehicle2Builder.setStartLocation(Location.newInstance(1, 1));
|
||||||
vehicle2Builder.setType(vehicleType);
|
vehicle2Builder.setType(vehicleType);
|
||||||
vehicle2Builder.addSkill("drill");
|
vehicle2Builder.addSkill("drill");
|
||||||
VehicleImpl vehicle2 = vehicle2Builder.build();
|
VehicleImpl vehicle2 = vehicle2Builder.build();
|
||||||
|
|
@ -78,12 +78,12 @@ public class SimpleExampleWithSkills {
|
||||||
/*
|
/*
|
||||||
* build services at the required locations, each with a capacity-demand of 1.
|
* build services at the required locations, each with a capacity-demand of 1.
|
||||||
*/
|
*/
|
||||||
Service service1 = Service.Builder.newInstance("1").addSizeDimension(WEIGHT_INDEX, 1).setCoord(Coordinate.newInstance(5, 7)).build();
|
Service service1 = Service.Builder.newInstance("1").addSizeDimension(WEIGHT_INDEX, 1).setLocation(Location.newInstance(5, 7)).build();
|
||||||
Service service2 = Service.Builder.newInstance("2").addSizeDimension(WEIGHT_INDEX, 1).setCoord(Coordinate.newInstance(5, 13)).build();
|
Service service2 = Service.Builder.newInstance("2").addSizeDimension(WEIGHT_INDEX, 1).setLocation(Location.newInstance(5, 13)).build();
|
||||||
|
|
||||||
Service service3 = Service.Builder.newInstance("3").addSizeDimension(WEIGHT_INDEX, 1).setCoord(Coordinate.newInstance(15, 7)).build();
|
Service service3 = Service.Builder.newInstance("3").addSizeDimension(WEIGHT_INDEX, 1).setLocation(Location.newInstance(15, 7)).build();
|
||||||
|
|
||||||
Service service4 = Service.Builder.newInstance("4").addSizeDimension(WEIGHT_INDEX, 1).addRequiredSkill("drill").setCoord(Coordinate.newInstance(15, 13)).build();
|
Service service4 = Service.Builder.newInstance("4").addSizeDimension(WEIGHT_INDEX, 1).addRequiredSkill("drill").setLocation(Location.newInstance(15, 13)).build();
|
||||||
|
|
||||||
|
|
||||||
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,7 @@ import jsprit.analysis.toolbox.Plotter.Label;
|
||||||
import jsprit.core.algorithm.VehicleRoutingAlgorithm;
|
import jsprit.core.algorithm.VehicleRoutingAlgorithm;
|
||||||
import jsprit.core.algorithm.VehicleRoutingAlgorithmBuilder;
|
import jsprit.core.algorithm.VehicleRoutingAlgorithmBuilder;
|
||||||
import jsprit.core.algorithm.state.StateManager;
|
import jsprit.core.algorithm.state.StateManager;
|
||||||
|
import jsprit.core.problem.Location;
|
||||||
import jsprit.core.problem.VehicleRoutingProblem;
|
import jsprit.core.problem.VehicleRoutingProblem;
|
||||||
import jsprit.core.problem.constraint.ConstraintManager;
|
import jsprit.core.problem.constraint.ConstraintManager;
|
||||||
import jsprit.core.problem.constraint.ServiceDeliveriesFirstConstraint;
|
import jsprit.core.problem.constraint.ServiceDeliveriesFirstConstraint;
|
||||||
|
|
@ -33,7 +34,6 @@ import jsprit.core.problem.vehicle.VehicleImpl.Builder;
|
||||||
import jsprit.core.problem.vehicle.VehicleType;
|
import jsprit.core.problem.vehicle.VehicleType;
|
||||||
import jsprit.core.problem.vehicle.VehicleTypeImpl;
|
import jsprit.core.problem.vehicle.VehicleTypeImpl;
|
||||||
import jsprit.core.reporting.SolutionPrinter;
|
import jsprit.core.reporting.SolutionPrinter;
|
||||||
import jsprit.core.util.Coordinate;
|
|
||||||
import jsprit.core.util.Solutions;
|
import jsprit.core.util.Solutions;
|
||||||
import jsprit.util.Examples;
|
import jsprit.util.Examples;
|
||||||
|
|
||||||
|
|
@ -58,18 +58,18 @@ public class SimpleVRPWithBackhaulsExample {
|
||||||
* get a vehicle-builder and build a vehicle located at (10,10) with type "vehicleType"
|
* get a vehicle-builder and build a vehicle located at (10,10) with type "vehicleType"
|
||||||
*/
|
*/
|
||||||
Builder vehicleBuilder = VehicleImpl.Builder.newInstance("vehicle");
|
Builder vehicleBuilder = VehicleImpl.Builder.newInstance("vehicle");
|
||||||
vehicleBuilder.setStartLocationCoordinate(Coordinate.newInstance(10, 10));
|
vehicleBuilder.setStartLocation(Location.newInstance(10, 10));
|
||||||
vehicleBuilder.setType(vehicleType);
|
vehicleBuilder.setType(vehicleType);
|
||||||
VehicleImpl vehicle = vehicleBuilder.build();
|
VehicleImpl vehicle = vehicleBuilder.build();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* build pickups and deliveries at the required locations, each with a capacity-demand of 1.
|
* build pickups and deliveries at the required locations, each with a capacity-demand of 1.
|
||||||
*/
|
*/
|
||||||
Pickup pickup1 = (Pickup) Pickup.Builder.newInstance("1").addSizeDimension(0, 1).setCoord(Coordinate.newInstance(5, 7)).build();
|
Pickup pickup1 = (Pickup) Pickup.Builder.newInstance("1").addSizeDimension(0, 1).setLocation(Location.newInstance(5, 7)).build();
|
||||||
Delivery delivery1 = (Delivery) Delivery.Builder.newInstance("2").addSizeDimension(0, 1).setCoord(Coordinate.newInstance(5, 13)).build();
|
Delivery delivery1 = (Delivery) Delivery.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(Location.newInstance(5, 13)).build();
|
||||||
|
|
||||||
Pickup pickup2 = (Pickup) Pickup.Builder.newInstance("3").addSizeDimension(0, 1).setCoord(Coordinate.newInstance(15, 7)).build();
|
Pickup pickup2 = (Pickup) Pickup.Builder.newInstance("3").addSizeDimension(0, 1).setLocation(Location.newInstance(15, 7)).build();
|
||||||
Delivery delivery2 = (Delivery) Delivery.Builder.newInstance("4").addSizeDimension(0, 1).setCoord(Coordinate.newInstance(15, 13)).build();
|
Delivery delivery2 = (Delivery) Delivery.Builder.newInstance("4").addSizeDimension(0, 1).setLocation(Location.newInstance(15, 13)).build();
|
||||||
|
|
||||||
|
|
||||||
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,7 @@ import jsprit.core.algorithm.VehicleRoutingAlgorithm;
|
||||||
import jsprit.core.algorithm.VehicleRoutingAlgorithmBuilder;
|
import jsprit.core.algorithm.VehicleRoutingAlgorithmBuilder;
|
||||||
import jsprit.core.algorithm.box.Jsprit;
|
import jsprit.core.algorithm.box.Jsprit;
|
||||||
import jsprit.core.algorithm.state.StateManager;
|
import jsprit.core.algorithm.state.StateManager;
|
||||||
|
import jsprit.core.problem.Location;
|
||||||
import jsprit.core.problem.VehicleRoutingProblem;
|
import jsprit.core.problem.VehicleRoutingProblem;
|
||||||
import jsprit.core.problem.constraint.ConstraintManager;
|
import jsprit.core.problem.constraint.ConstraintManager;
|
||||||
import jsprit.core.problem.io.VrpXMLWriter;
|
import jsprit.core.problem.io.VrpXMLWriter;
|
||||||
|
|
@ -51,12 +52,13 @@ public class SolomonWithSkillsExample {
|
||||||
VehicleType newType = solomonVehicle.getType();
|
VehicleType newType = solomonVehicle.getType();
|
||||||
VehicleRoutingProblem.Builder skillProblemBuilder = VehicleRoutingProblem.Builder.newInstance();
|
VehicleRoutingProblem.Builder skillProblemBuilder = VehicleRoutingProblem.Builder.newInstance();
|
||||||
for(int i=0;i<5;i++) {
|
for(int i=0;i<5;i++) {
|
||||||
VehicleImpl skill1Vehicle = VehicleImpl.Builder.newInstance("skill1_vehicle_"+i).addSkill("skill1")
|
VehicleImpl skill1Vehicle = VehicleImpl.Builder.newInstance("skill1_vehicle_" + i).addSkill("skill1")
|
||||||
.setStartLocationCoordinate(solomonVehicle.getStartLocationCoordinate()).setStartLocationId(solomonVehicle.getStartLocationId())
|
.setStartLocation(Location.Builder.newInstance().setId(solomonVehicle.getStartLocation().getId()).setCoordinate(solomonVehicle.getStartLocation().getCoordinate()).build())
|
||||||
.setEarliestStart(solomonVehicle.getEarliestDeparture())
|
.setEarliestStart(solomonVehicle.getEarliestDeparture())
|
||||||
.setType(newType).build();
|
.setType(newType).build();
|
||||||
VehicleImpl skill2Vehicle = VehicleImpl.Builder.newInstance("skill2_vehicle_"+i).addSkill("skill2")
|
VehicleImpl skill2Vehicle = VehicleImpl.Builder.newInstance("skill2_vehicle_" + i).addSkill("skill2")
|
||||||
.setStartLocationCoordinate(solomonVehicle.getStartLocationCoordinate()).setStartLocationId(solomonVehicle.getStartLocationId())
|
.setStartLocation(Location.Builder.newInstance().setId(solomonVehicle.getStartLocation().getId())
|
||||||
|
.setCoordinate(solomonVehicle.getStartLocation().getCoordinate()).build())
|
||||||
.setEarliestStart(solomonVehicle.getEarliestDeparture())
|
.setEarliestStart(solomonVehicle.getEarliestDeparture())
|
||||||
.setType(newType).build();
|
.setType(newType).build();
|
||||||
skillProblemBuilder.addVehicle(skill1Vehicle).addVehicle(skill2Vehicle);
|
skillProblemBuilder.addVehicle(skill1Vehicle).addVehicle(skill2Vehicle);
|
||||||
|
|
@ -65,14 +67,18 @@ public class SolomonWithSkillsExample {
|
||||||
Service service = (Service) job;
|
Service service = (Service) job;
|
||||||
Service.Builder skillServiceBuilder;
|
Service.Builder skillServiceBuilder;
|
||||||
if(service.getLocation().getCoordinate().getY()<50.){
|
if(service.getLocation().getCoordinate().getY()<50.){
|
||||||
skillServiceBuilder = Service.Builder.newInstance(service.getId()+"_skill2").setServiceTime(service.getServiceDuration())
|
skillServiceBuilder = Service.Builder.newInstance(service.getId() + "_skill2").setServiceTime(service.getServiceDuration())
|
||||||
.setCoord(service.getLocation().getCoordinate()).setLocationId(service.getLocation().getId()).setTimeWindow(service.getTimeWindow())
|
.setLocation(Location.Builder.newInstance().setId(service.getLocation().getId())
|
||||||
.addSizeDimension(0,service.getSize().get(0));
|
.setCoordinate(service.getLocation().getCoordinate()).build()).setTimeWindow(service.getTimeWindow())
|
||||||
|
.addSizeDimension(0, service.getSize().get(0));
|
||||||
skillServiceBuilder.addRequiredSkill("skill2");
|
skillServiceBuilder.addRequiredSkill("skill2");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
skillServiceBuilder = Service.Builder.newInstance(service.getId()+"_skill1").setServiceTime(service.getServiceDuration())
|
skillServiceBuilder = Service.Builder.newInstance(service.getId()+"_skill1").setServiceTime(service.getServiceDuration())
|
||||||
.setCoord(service.getLocation().getCoordinate()).setLocationId(service.getLocation().getId()).setTimeWindow(service.getTimeWindow())
|
.setLocation(
|
||||||
|
Location.Builder.newInstance().setId(service.getLocation().getId())
|
||||||
|
.setCoordinate(service.getLocation().getCoordinate()).build()
|
||||||
|
).setTimeWindow(service.getTimeWindow())
|
||||||
.addSizeDimension(0,service.getSize().get(0));
|
.addSizeDimension(0,service.getSize().get(0));
|
||||||
skillServiceBuilder.addRequiredSkill("skill1");
|
skillServiceBuilder.addRequiredSkill("skill1");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -17,10 +17,10 @@
|
||||||
package jsprit.instance.reader;
|
package jsprit.instance.reader;
|
||||||
|
|
||||||
|
|
||||||
|
import jsprit.core.problem.Location;
|
||||||
import jsprit.core.problem.VehicleRoutingProblem;
|
import jsprit.core.problem.VehicleRoutingProblem;
|
||||||
import jsprit.core.problem.VehicleRoutingProblem.FleetSize;
|
import jsprit.core.problem.VehicleRoutingProblem.FleetSize;
|
||||||
import jsprit.core.problem.job.Service;
|
import jsprit.core.problem.job.Service;
|
||||||
import jsprit.core.problem.vehicle.Vehicle;
|
|
||||||
import jsprit.core.problem.vehicle.VehicleImpl;
|
import jsprit.core.problem.vehicle.VehicleImpl;
|
||||||
import jsprit.core.problem.vehicle.VehicleTypeImpl;
|
import jsprit.core.problem.vehicle.VehicleTypeImpl;
|
||||||
import jsprit.core.util.Coordinate;
|
import jsprit.core.util.Coordinate;
|
||||||
|
|
@ -52,7 +52,7 @@ public class ChristofidesReader {
|
||||||
/**
|
/**
|
||||||
* Constructs the reader.
|
* Constructs the reader.
|
||||||
*
|
*
|
||||||
* @param vrpBuilder
|
* @param vrpBuilder the builder
|
||||||
*/
|
*/
|
||||||
public ChristofidesReader(VehicleRoutingProblem.Builder vrpBuilder) {
|
public ChristofidesReader(VehicleRoutingProblem.Builder vrpBuilder) {
|
||||||
super();
|
super();
|
||||||
|
|
@ -63,7 +63,7 @@ public class ChristofidesReader {
|
||||||
* Reads instance-file and memorizes vehicles, customers and so forth in
|
* Reads instance-file and memorizes vehicles, customers and so forth in
|
||||||
* {@link VehicleRoutingProblem.Builder}.
|
* {@link VehicleRoutingProblem.Builder}.
|
||||||
*
|
*
|
||||||
* @param fileName
|
* @param fileName the filename to read
|
||||||
*/
|
*/
|
||||||
public void read(String fileName){
|
public void read(String fileName){
|
||||||
vrpBuilder.setFleetSize(FleetSize.INFINITE);
|
vrpBuilder.setFleetSize(FleetSize.INFINITE);
|
||||||
|
|
@ -72,7 +72,7 @@ public class ChristofidesReader {
|
||||||
double serviceTime = 0.0;
|
double serviceTime = 0.0;
|
||||||
double endTime = Double.MAX_VALUE;
|
double endTime = Double.MAX_VALUE;
|
||||||
int counter = 0;
|
int counter = 0;
|
||||||
String line = null;
|
String line;
|
||||||
while((line = readLine(reader)) != null){
|
while((line = readLine(reader)) != null){
|
||||||
line = line.replace("\r", "");
|
line = line.replace("\r", "");
|
||||||
line = line.trim();
|
line = line.trim();
|
||||||
|
|
@ -86,7 +86,7 @@ public class ChristofidesReader {
|
||||||
Coordinate depotCoord = makeCoord(tokens[0].trim(),tokens[1].trim());
|
Coordinate depotCoord = makeCoord(tokens[0].trim(),tokens[1].trim());
|
||||||
VehicleTypeImpl vehicleType = VehicleTypeImpl.Builder.newInstance("christophidesType").addCapacityDimension(0, vehicleCapacity).
|
VehicleTypeImpl vehicleType = VehicleTypeImpl.Builder.newInstance("christophidesType").addCapacityDimension(0, vehicleCapacity).
|
||||||
setCostPerDistance(1.0).build();
|
setCostPerDistance(1.0).build();
|
||||||
Vehicle vehicle = VehicleImpl.Builder.newInstance("christophidesVehicle").setLatestArrival(endTime).setStartLocationCoordinate(depotCoord).
|
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("christophidesVehicle").setLatestArrival(endTime).setStartLocation(Location.newInstance(depotCoord.getX(), depotCoord.getY())).
|
||||||
setType(vehicleType).build();
|
setType(vehicleType).build();
|
||||||
vrpBuilder.addVehicle(vehicle);
|
vrpBuilder.addVehicle(vehicle);
|
||||||
}
|
}
|
||||||
|
|
@ -94,7 +94,7 @@ public class ChristofidesReader {
|
||||||
Coordinate customerCoord = makeCoord(tokens[0].trim(),tokens[1].trim());
|
Coordinate customerCoord = makeCoord(tokens[0].trim(),tokens[1].trim());
|
||||||
int demand = Integer.parseInt(tokens[2].trim());
|
int demand = Integer.parseInt(tokens[2].trim());
|
||||||
String customer = Integer.valueOf(counter-1).toString();
|
String customer = Integer.valueOf(counter-1).toString();
|
||||||
Service service = Service.Builder.newInstance(customer).addSizeDimension(0, demand).setServiceTime(serviceTime).setCoord(customerCoord).build();
|
Service service = Service.Builder.newInstance(customer).addSizeDimension(0, demand).setServiceTime(serviceTime).setLocation(Location.newInstance(customerCoord.getX(), customerCoord.getY())).build();
|
||||||
vrpBuilder.addJob(service);
|
vrpBuilder.addJob(service);
|
||||||
}
|
}
|
||||||
counter++;
|
counter++;
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@
|
||||||
package jsprit.instance.reader;
|
package jsprit.instance.reader;
|
||||||
|
|
||||||
|
|
||||||
|
import jsprit.core.problem.Location;
|
||||||
import jsprit.core.problem.VehicleRoutingProblem;
|
import jsprit.core.problem.VehicleRoutingProblem;
|
||||||
import jsprit.core.problem.VehicleRoutingProblem.FleetSize;
|
import jsprit.core.problem.VehicleRoutingProblem.FleetSize;
|
||||||
import jsprit.core.problem.job.Service;
|
import jsprit.core.problem.job.Service;
|
||||||
|
|
@ -53,8 +54,7 @@ public class CordeauReader {
|
||||||
private final VehicleRoutingProblem.Builder vrpBuilder;
|
private final VehicleRoutingProblem.Builder vrpBuilder;
|
||||||
|
|
||||||
private double coordProjectionFactor = 1;
|
private double coordProjectionFactor = 1;
|
||||||
|
|
||||||
private boolean addPenaltyVehicles = false;
|
|
||||||
|
|
||||||
public CordeauReader(VehicleRoutingProblem.Builder vrpBuilder) {
|
public CordeauReader(VehicleRoutingProblem.Builder vrpBuilder) {
|
||||||
super();
|
super();
|
||||||
|
|
@ -65,7 +65,6 @@ public class CordeauReader {
|
||||||
public CordeauReader(VehicleRoutingProblem.Builder vrpBuilder, boolean penaltyVehicles) {
|
public CordeauReader(VehicleRoutingProblem.Builder vrpBuilder, boolean penaltyVehicles) {
|
||||||
super();
|
super();
|
||||||
this.vrpBuilder = vrpBuilder;
|
this.vrpBuilder = vrpBuilder;
|
||||||
this.addPenaltyVehicles = penaltyVehicles;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void read(String fileName){
|
public void read(String fileName){
|
||||||
|
|
@ -111,14 +110,15 @@ public class CordeauReader {
|
||||||
Coordinate customerCoord = makeCoord(tokens[1].trim(),tokens[2].trim());
|
Coordinate customerCoord = makeCoord(tokens[1].trim(),tokens[2].trim());
|
||||||
double serviceTime = Double.parseDouble(tokens[3].trim());
|
double serviceTime = Double.parseDouble(tokens[3].trim());
|
||||||
int demand = Integer.parseInt(tokens[4].trim());
|
int demand = Integer.parseInt(tokens[4].trim());
|
||||||
Service service = Service.Builder.newInstance(id).addSizeDimension(0, demand).setServiceTime(serviceTime).setLocationId(id).setCoord(customerCoord).build();
|
Service service = Service.Builder.newInstance(id).addSizeDimension(0, demand).setServiceTime(serviceTime)
|
||||||
|
.setLocation(Location.Builder.newInstance().setId(id).setCoordinate(customerCoord).build()).build();
|
||||||
vrpBuilder.addJob(service);
|
vrpBuilder.addJob(service);
|
||||||
}
|
}
|
||||||
else if(counter <= (nOfCustomers+nOfDepots+nOfDepots)){
|
else if(counter <= (nOfCustomers+nOfDepots+nOfDepots)){
|
||||||
Coordinate depotCoord = makeCoord(tokens[1].trim(),tokens[2].trim());
|
Coordinate depotCoord = makeCoord(tokens[1].trim(),tokens[2].trim());
|
||||||
List<Builder> vBuilders = vehiclesAtDepot.get(depotCounter);
|
List<Builder> vBuilders = vehiclesAtDepot.get(depotCounter);
|
||||||
for(Builder vBuilder : vBuilders){
|
for(Builder vBuilder : vBuilders){
|
||||||
vBuilder.setStartLocationCoordinate(depotCoord);
|
vBuilder.setStartLocation(Location.newInstance(depotCoord.getX(),depotCoord.getY()));
|
||||||
VehicleImpl vehicle = vBuilder.build();
|
VehicleImpl vehicle = vBuilder.build();
|
||||||
vrpBuilder.addVehicle(vehicle);
|
vrpBuilder.addVehicle(vehicle);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@
|
||||||
package jsprit.instance.reader;
|
package jsprit.instance.reader;
|
||||||
|
|
||||||
|
|
||||||
|
import jsprit.core.problem.Location;
|
||||||
import jsprit.core.problem.VehicleRoutingProblem;
|
import jsprit.core.problem.VehicleRoutingProblem;
|
||||||
import jsprit.core.problem.VehicleRoutingProblem.FleetSize;
|
import jsprit.core.problem.VehicleRoutingProblem.FleetSize;
|
||||||
import jsprit.core.problem.job.Service;
|
import jsprit.core.problem.job.Service;
|
||||||
|
|
@ -86,7 +87,8 @@ public class LuiShenReader {
|
||||||
createVehicles(vehicleFile,costScenario,customerId,coord,start,end);
|
createVehicles(vehicleFile,costScenario,customerId,coord,start,end);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
Service service = Service.Builder.newInstance("" + counter).addSizeDimension(0, demand).setCoord(coord).setLocationId(customerId).setServiceTime(serviceTime)
|
Service service = Service.Builder.newInstance("" + counter).addSizeDimension(0, demand)
|
||||||
|
.setLocation(Location.Builder.newInstance().setCoordinate(coord).setId(customerId).build()).setServiceTime(serviceTime)
|
||||||
.setTimeWindow(TimeWindow.newInstance(start, end)).build();
|
.setTimeWindow(TimeWindow.newInstance(start, end)).build();
|
||||||
vrpBuilder.addJob(service);
|
vrpBuilder.addJob(service);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@
|
||||||
package jsprit.instance.reader;
|
package jsprit.instance.reader;
|
||||||
|
|
||||||
|
|
||||||
|
import jsprit.core.problem.Location;
|
||||||
import jsprit.core.problem.VehicleRoutingProblem;
|
import jsprit.core.problem.VehicleRoutingProblem;
|
||||||
import jsprit.core.problem.VehicleRoutingProblem.FleetSize;
|
import jsprit.core.problem.VehicleRoutingProblem.FleetSize;
|
||||||
import jsprit.core.problem.job.Service;
|
import jsprit.core.problem.job.Service;
|
||||||
|
|
@ -104,12 +105,14 @@ public class SolomonReader {
|
||||||
VehicleTypeImpl vehicleType = typeBuilder.build();
|
VehicleTypeImpl vehicleType = typeBuilder.build();
|
||||||
|
|
||||||
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("solomonVehicle").setEarliestStart(start).setLatestArrival(end)
|
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("solomonVehicle").setEarliestStart(start).setLatestArrival(end)
|
||||||
.setStartLocationId(customerId).setStartLocationCoordinate(coord).setType(vehicleType).build();
|
.setStartLocation(Location.Builder.newInstance().setId(customerId)
|
||||||
|
.setCoordinate(coord).build()).setType(vehicleType).build();
|
||||||
vrpBuilder.addVehicle(vehicle);
|
vrpBuilder.addVehicle(vehicle);
|
||||||
|
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
Service service = Service.Builder.newInstance(customerId).addSizeDimension(0, demand).setCoord(coord).setLocationId(customerId).setServiceTime(serviceTime)
|
Service service = Service.Builder.newInstance(customerId).addSizeDimension(0, demand)
|
||||||
|
.setLocation(Location.Builder.newInstance().setCoordinate(coord).setId(customerId).build()).setServiceTime(serviceTime)
|
||||||
.setTimeWindow(TimeWindow.newInstance(start, end)).build();
|
.setTimeWindow(TimeWindow.newInstance(start, end)).build();
|
||||||
vrpBuilder.addJob(service);
|
vrpBuilder.addJob(service);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -17,12 +17,12 @@
|
||||||
|
|
||||||
package jsprit.instance.reader;
|
package jsprit.instance.reader;
|
||||||
|
|
||||||
|
import jsprit.core.problem.Location;
|
||||||
import jsprit.core.problem.VehicleRoutingProblem;
|
import jsprit.core.problem.VehicleRoutingProblem;
|
||||||
import jsprit.core.problem.VehicleRoutingProblem.Builder;
|
import jsprit.core.problem.VehicleRoutingProblem.Builder;
|
||||||
import jsprit.core.problem.VehicleRoutingProblem.FleetSize;
|
import jsprit.core.problem.VehicleRoutingProblem.FleetSize;
|
||||||
import jsprit.core.problem.io.VrpXMLWriter;
|
import jsprit.core.problem.io.VrpXMLWriter;
|
||||||
import jsprit.core.problem.job.Service;
|
import jsprit.core.problem.job.Service;
|
||||||
import jsprit.core.problem.vehicle.Vehicle;
|
|
||||||
import jsprit.core.problem.vehicle.VehicleImpl;
|
import jsprit.core.problem.vehicle.VehicleImpl;
|
||||||
import jsprit.core.problem.vehicle.VehicleTypeImpl;
|
import jsprit.core.problem.vehicle.VehicleTypeImpl;
|
||||||
import jsprit.core.util.Coordinate;
|
import jsprit.core.util.Coordinate;
|
||||||
|
|
@ -72,7 +72,7 @@ public class VrphGoldenReader {
|
||||||
|
|
||||||
public void read(String filename){
|
public void read(String filename){
|
||||||
BufferedReader reader = getReader(filename);
|
BufferedReader reader = getReader(filename);
|
||||||
String line = null;
|
String line;
|
||||||
boolean firstline = true;
|
boolean firstline = true;
|
||||||
Coordinate depotCoord = null;
|
Coordinate depotCoord = null;
|
||||||
int customerCount=0;
|
int customerCount=0;
|
||||||
|
|
@ -92,7 +92,7 @@ public class VrphGoldenReader {
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
Service.Builder serviceBuilder = Service.Builder.newInstance(tokens[0]).addSizeDimension(0, Integer.parseInt(tokens[3]));
|
Service.Builder serviceBuilder = Service.Builder.newInstance(tokens[0]).addSizeDimension(0, Integer.parseInt(tokens[3]));
|
||||||
serviceBuilder.setCoord(Coordinate.newInstance(Double.parseDouble(tokens[1]), Double.parseDouble(tokens[2])));
|
serviceBuilder.setLocation(Location.newInstance(Double.parseDouble(tokens[1]), Double.parseDouble(tokens[2])));
|
||||||
vrpBuilder.addJob(serviceBuilder.build());
|
vrpBuilder.addJob(serviceBuilder.build());
|
||||||
}
|
}
|
||||||
customerCount++;
|
customerCount++;
|
||||||
|
|
@ -135,8 +135,8 @@ public class VrphGoldenReader {
|
||||||
}
|
}
|
||||||
for(int i=0;i<nuOfVehicles;i++){
|
for(int i=0;i<nuOfVehicles;i++){
|
||||||
VehicleTypeImpl type = typeBuilder.build();
|
VehicleTypeImpl type = typeBuilder.build();
|
||||||
Vehicle vehicle = VehicleImpl.Builder.newInstance("vehicle_"+tokens[1]+"_"+i)
|
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("vehicle_"+tokens[1]+"_"+i)
|
||||||
.setStartLocationCoordinate(depotCoord).setType(type).build();
|
.setStartLocation(Location.newInstance(depotCoord.getX(),depotCoord.getY())).setType(type).build();
|
||||||
vrpBuilder.addVehicle(vehicle);
|
vrpBuilder.addVehicle(vehicle);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue