mirror of
https://github.com/graphhopper/jsprit.git
synced 2020-01-24 07:45:05 +01:00
index based route state memory
This commit is contained in:
parent
2877765f7a
commit
149b657238
9 changed files with 140 additions and 82 deletions
|
|
@ -174,7 +174,9 @@ public class TestLocalActivityInsertionCostsCalculator {
|
|||
|
||||
VehicleRoute route = VehicleRoute.Builder.newInstance(v).setJobActivityFactory(vrp.getJobActivityFactory()).addService(prevS).addService(nextS).build();
|
||||
JobInsertionContext context = new JobInsertionContext(route, newS, v, null, 0.);
|
||||
LocalActivityInsertionCostsCalculator calc = new LocalActivityInsertionCostsCalculator(CostFactory.createEuclideanCosts(), new WaitingTimeCosts(), new StateManager(mock(VehicleRoutingProblem.class)));
|
||||
VehicleRoutingProblem vrpMock = mock(VehicleRoutingProblem.class);
|
||||
when(vrpMock.getFleetSize()).thenReturn(VehicleRoutingProblem.FleetSize.INFINITE);
|
||||
LocalActivityInsertionCostsCalculator calc = new LocalActivityInsertionCostsCalculator(CostFactory.createEuclideanCosts(), new WaitingTimeCosts(), new StateManager(vrpMock));
|
||||
calc.setSolutionCompletenessRatio(1.);
|
||||
|
||||
double c = calc.getCosts(context, prevAct, nextAct, newAct, 10);
|
||||
|
|
|
|||
|
|
@ -48,6 +48,7 @@ import java.util.List;
|
|||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
/**
|
||||
* Created by schroeder on 02.07.14.
|
||||
|
|
@ -103,7 +104,9 @@ public class TestRouteLevelServiceInsertionCostEstimator {
|
|||
};
|
||||
route = VehicleRoute.Builder.newInstance(vehicle).setJobActivityFactory(activityFactory).addService(s1).addService(s2).addService(s3).build();
|
||||
|
||||
stateManager = new StateManager(mock(VehicleRoutingProblem.class));
|
||||
VehicleRoutingProblem vrpMock = mock(VehicleRoutingProblem.class);
|
||||
when(vrpMock.getFleetSize()).thenReturn(VehicleRoutingProblem.FleetSize.INFINITE);
|
||||
stateManager = new StateManager(vrpMock);
|
||||
stateManager.addStateUpdater(new UpdateVariableCosts(activityCosts, routingCosts, stateManager));
|
||||
stateManager.informInsertionStarts(Arrays.asList(route), Collections.<Job>emptyList());
|
||||
constraintManager = new ConstraintManager(vrp, stateManager);
|
||||
|
|
|
|||
|
|
@ -100,7 +100,9 @@ public class LoadStateTest {
|
|||
});
|
||||
shipment_route = shipmentRouteBuilder.addPickup(shipment1).addPickup(shipment2).addDelivery(shipment2).addDelivery(shipment1).build();
|
||||
|
||||
stateManager = new StateManager(mock(VehicleRoutingProblem.class));
|
||||
VehicleRoutingProblem vrpMock = mock(VehicleRoutingProblem.class);
|
||||
when(vrpMock.getFleetSize()).thenReturn(VehicleRoutingProblem.FleetSize.FINITE);
|
||||
stateManager = new StateManager(vrpMock);
|
||||
stateManager.updateLoadStates();
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ import jsprit.core.problem.vehicle.Vehicle;
|
|||
import jsprit.core.problem.vehicle.VehicleImpl;
|
||||
import jsprit.core.problem.vehicle.VehicleType;
|
||||
import jsprit.core.problem.vehicle.VehicleTypeImpl;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
|
@ -53,11 +54,18 @@ public class StateManagerTest {
|
|||
return VehicleRoute.Builder.newInstance(vehicle).setJobActivityFactory(new ActFac()).addService(Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")).build()).build();
|
||||
}
|
||||
|
||||
private VehicleRoutingProblem vrpMock;
|
||||
|
||||
@Before
|
||||
public void doBefore(){
|
||||
vrpMock = mock(VehicleRoutingProblem.class);
|
||||
when(vrpMock.getFleetSize()).thenReturn(VehicleRoutingProblem.FleetSize.INFINITE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenInternalRouteStateIsSet_itMustBeSetCorrectly() {
|
||||
VehicleRoute route = getRoute(mock(Vehicle.class));
|
||||
StateManager stateManager = new StateManager(mock(VehicleRoutingProblem.class));
|
||||
StateManager stateManager = new StateManager(vrpMock);
|
||||
StateId id = InternalStates.COSTS;
|
||||
stateManager.putTypedInternalRouteState(route, id, 10.);
|
||||
assertEquals(10., stateManager.getRouteState(route, id, Double.class), 0.01);
|
||||
|
|
@ -66,7 +74,7 @@ public class StateManagerTest {
|
|||
@Test
|
||||
public void whenInternalRouteStateIsNotSet_itShouldReturnNull() {
|
||||
VehicleRoute route = getRoute(mock(Vehicle.class));
|
||||
StateManager stateManager = new StateManager(mock(VehicleRoutingProblem.class));
|
||||
StateManager stateManager = new StateManager(vrpMock);
|
||||
StateId id = InternalStates.COSTS;
|
||||
Double costs = stateManager.getRouteState(route, id, Double.class);
|
||||
assertTrue(costs == null);
|
||||
|
|
@ -79,7 +87,7 @@ public class StateManagerTest {
|
|||
VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addVehicle(vehicle).build();
|
||||
|
||||
VehicleRoute route = getRoute(vehicle);
|
||||
StateManager stateManager = new StateManager(mock(VehicleRoutingProblem.class));
|
||||
StateManager stateManager = new StateManager(vrpMock);
|
||||
StateId id = InternalStates.COSTS;
|
||||
stateManager.putTypedInternalRouteState(route, vehicle, id, 10.);
|
||||
assertEquals(10., stateManager.getRouteState(route, vehicle, id, Double.class), 0.01);
|
||||
|
|
@ -92,7 +100,7 @@ public class StateManagerTest {
|
|||
VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addVehicle(vehicle).build();
|
||||
|
||||
VehicleRoute route = getRoute(vehicle);
|
||||
StateManager stateManager = new StateManager(mock(VehicleRoutingProblem.class));
|
||||
StateManager stateManager = new StateManager(vrpMock);
|
||||
StateId id = InternalStates.COSTS;
|
||||
Double costs = stateManager.getRouteState(route, vehicle, id, Double.class);
|
||||
assertTrue(costs == null);
|
||||
|
|
@ -101,7 +109,7 @@ public class StateManagerTest {
|
|||
@Test
|
||||
public void whenRouteStateIsSetWithGenericMethodAndBoolean_itMustBeSetCorrectly() {
|
||||
VehicleRoute route = getRoute(mock(Vehicle.class));
|
||||
StateManager stateManager = new StateManager(mock(VehicleRoutingProblem.class));
|
||||
StateManager stateManager = new StateManager(vrpMock);
|
||||
StateId id = stateManager.createStateId("myState");
|
||||
stateManager.putRouteState(route, id, true);
|
||||
assertTrue(stateManager.getRouteState(route, id, Boolean.class));
|
||||
|
|
@ -110,7 +118,7 @@ public class StateManagerTest {
|
|||
@Test
|
||||
public void whenRouteStateIsSetWithGenericMethodAndInteger_itMustBeSetCorrectly() {
|
||||
VehicleRoute route = getRoute(mock(Vehicle.class));
|
||||
StateManager stateManager = new StateManager(mock(VehicleRoutingProblem.class));
|
||||
StateManager stateManager = new StateManager(vrpMock);
|
||||
StateId id = stateManager.createStateId("myState");
|
||||
int load = 3;
|
||||
stateManager.putRouteState(route, id, load);
|
||||
|
|
@ -121,7 +129,7 @@ public class StateManagerTest {
|
|||
@Test
|
||||
public void whenRouteStateIsSetWithGenericMethodAndCapacity_itMustBeSetCorrectly() {
|
||||
VehicleRoute route = getRoute(mock(Vehicle.class));
|
||||
StateManager stateManager = new StateManager(mock(VehicleRoutingProblem.class));
|
||||
StateManager stateManager = new StateManager(vrpMock);
|
||||
StateId id = stateManager.createStateId("myState");
|
||||
Capacity capacity = Capacity.Builder.newInstance().addDimension(0, 500).build();
|
||||
stateManager.putRouteState(route, id, capacity);
|
||||
|
|
@ -134,7 +142,7 @@ public class StateManagerTest {
|
|||
public void whenActivityStateIsSetWithGenericMethodAndBoolean_itMustBeSetCorrectly() {
|
||||
TourActivity activity = mock(TourActivity.class);
|
||||
when(activity.getIndex()).thenReturn(1);
|
||||
StateManager stateManager = new StateManager(mock(VehicleRoutingProblem.class));
|
||||
StateManager stateManager = new StateManager(vrpMock);
|
||||
StateId id = stateManager.createStateId("myState");
|
||||
stateManager.putActivityState(activity, id, true);
|
||||
assertTrue(stateManager.getActivityState(activity, id, Boolean.class));
|
||||
|
|
@ -144,7 +152,7 @@ public class StateManagerTest {
|
|||
public void whenActivityStateIsSetWithGenericMethodAndInteger_itMustBeSetCorrectly() {
|
||||
TourActivity activity = mock(TourActivity.class);
|
||||
when(activity.getIndex()).thenReturn(1);
|
||||
StateManager stateManager = new StateManager(mock(VehicleRoutingProblem.class));
|
||||
StateManager stateManager = new StateManager(vrpMock);
|
||||
StateId id = stateManager.createStateId("myState");
|
||||
int load = 3;
|
||||
stateManager.putActivityState(activity, id, load);
|
||||
|
|
@ -156,7 +164,7 @@ public class StateManagerTest {
|
|||
public void whenActivityStateIsSetWithGenericMethodAndCapacity_itMustBeSetCorrectly() {
|
||||
TourActivity activity = mock(TourActivity.class);
|
||||
when(activity.getIndex()).thenReturn(1);
|
||||
StateManager stateManager = new StateManager(mock(VehicleRoutingProblem.class));
|
||||
StateManager stateManager = new StateManager(vrpMock);
|
||||
StateId id = stateManager.createStateId("myState");
|
||||
Capacity capacity = Capacity.Builder.newInstance().addDimension(0, 500).build();
|
||||
stateManager.putActivityState(activity, id, capacity);
|
||||
|
|
@ -166,7 +174,7 @@ public class StateManagerTest {
|
|||
|
||||
@Test
|
||||
public void whenProblemStateIsSet_itMustBeSetCorrectly() {
|
||||
StateManager stateManager = new StateManager(mock(VehicleRoutingProblem.class));
|
||||
StateManager stateManager = new StateManager(vrpMock);
|
||||
StateId id = stateManager.createStateId("problemState");
|
||||
stateManager.putProblemState(id, Boolean.class, true);
|
||||
boolean problemState = stateManager.getProblemState(id, Boolean.class);
|
||||
|
|
@ -175,7 +183,7 @@ public class StateManagerTest {
|
|||
|
||||
@Test(expected = NullPointerException.class)
|
||||
public void whenProblemStateIsSetAndStateManagerClearedAfterwards_itThrowsException() {
|
||||
StateManager stateManager = new StateManager(mock(VehicleRoutingProblem.class));
|
||||
StateManager stateManager = new StateManager(vrpMock);
|
||||
StateId id = stateManager.createStateId("problemState");
|
||||
stateManager.putProblemState(id, Boolean.class, true);
|
||||
stateManager.clear();
|
||||
|
|
@ -185,7 +193,7 @@ public class StateManagerTest {
|
|||
|
||||
@Test
|
||||
public void whenProblemStateIsSetAndStateManagerClearedAfterwards_itReturnsNull() {
|
||||
StateManager stateManager = new StateManager(mock(VehicleRoutingProblem.class));
|
||||
StateManager stateManager = new StateManager(vrpMock);
|
||||
StateId id = StateFactory.createId("problemState");
|
||||
stateManager.putProblemState(id, Boolean.class, true);
|
||||
stateManager.clear();
|
||||
|
|
@ -195,14 +203,14 @@ public class StateManagerTest {
|
|||
|
||||
@Test
|
||||
public void whenCreatingNewState_itShouldHaveAnIndex() {
|
||||
StateManager stateManager = new StateManager(mock(VehicleRoutingProblem.class));
|
||||
StateManager stateManager = new StateManager(vrpMock);
|
||||
StateId stateId = stateManager.createStateId("foo-state");
|
||||
assertEquals(21, stateId.getIndex());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenCreatingNewStates_theyShouldHaveAnIndex() {
|
||||
StateManager stateManager = new StateManager(mock(VehicleRoutingProblem.class));
|
||||
StateManager stateManager = new StateManager(vrpMock);
|
||||
StateId fooState = stateManager.createStateId("foo-state");
|
||||
StateId foofooState = stateManager.createStateId("foo-foo-state");
|
||||
assertEquals(21, fooState.getIndex());
|
||||
|
|
@ -211,7 +219,7 @@ public class StateManagerTest {
|
|||
|
||||
@Test
|
||||
public void whenCreatingTwoStatesWithTheSameName_theyShouldHaveTheSameIndex() {
|
||||
StateManager stateManager = new StateManager(mock(VehicleRoutingProblem.class));
|
||||
StateManager stateManager = new StateManager(vrpMock);
|
||||
StateId fooState = stateManager.createStateId("foo-state");
|
||||
StateId foofooState = stateManager.createStateId("foo-state");
|
||||
assertEquals(21, fooState.getIndex());
|
||||
|
|
@ -224,7 +232,7 @@ public class StateManagerTest {
|
|||
//noinspection UnusedDeclaration
|
||||
VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addVehicle(vehicle).build();
|
||||
VehicleRoute route = getRoute(vehicle);
|
||||
StateManager stateManager = new StateManager(mock(VehicleRoutingProblem.class));
|
||||
StateManager stateManager = new StateManager(vrpMock);
|
||||
StateId id = stateManager.createStateId("myState");
|
||||
Capacity capacity = Capacity.Builder.newInstance().addDimension(0, 500).build();
|
||||
stateManager.putRouteState(route, vehicle, id, capacity);
|
||||
|
|
@ -237,7 +245,7 @@ public class StateManagerTest {
|
|||
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("loc")).build();
|
||||
//noinspection UnusedDeclaration
|
||||
VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addVehicle(vehicle).build();
|
||||
StateManager stateManager = new StateManager(mock(VehicleRoutingProblem.class));
|
||||
StateManager stateManager = new StateManager(vrpMock);
|
||||
StateId id = stateManager.createStateId("myState");
|
||||
Capacity capacity = Capacity.Builder.newInstance().addDimension(0, 500).build();
|
||||
TourActivity act = mock(TourActivity.class);
|
||||
|
|
@ -253,7 +261,7 @@ public class StateManagerTest {
|
|||
//noinspection UnusedDeclaration
|
||||
VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addVehicle(vehicle).build();
|
||||
VehicleRoute route = getRoute(vehicle);
|
||||
StateManager stateManager = new StateManager(mock(VehicleRoutingProblem.class));
|
||||
StateManager stateManager = new StateManager(vrpMock);
|
||||
StateId id = stateManager.createStateId("vehicleParam");
|
||||
double distanceParam = vehicle.getType().getVehicleCostParams().perDistanceUnit;
|
||||
stateManager.putRouteState(route, vehicle, id, distanceParam);
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@ import java.util.List;
|
|||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
public class UpdatePracticalTimeWindowTest {
|
||||
|
||||
|
|
@ -57,7 +58,9 @@ public class UpdatePracticalTimeWindowTest {
|
|||
|
||||
routingCosts = CostFactory.createManhattanCosts();
|
||||
|
||||
stateManager = new StateManager(mock(VehicleRoutingProblem.class));
|
||||
VehicleRoutingProblem vrpMock = mock(VehicleRoutingProblem.class);
|
||||
when(vrpMock.getFleetSize()).thenReturn(VehicleRoutingProblem.FleetSize.FINITE);
|
||||
stateManager = new StateManager(vrpMock);
|
||||
|
||||
reverseActivityVisitor = new ReverseRouteActivityVisitor();
|
||||
reverseActivityVisitor.addActivityVisitor(new UpdatePracticalTimeWindows(stateManager, routingCosts));
|
||||
|
|
|
|||
|
|
@ -98,7 +98,7 @@ public class SolutionAnalyserTest {
|
|||
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance().addVehicle(vehicle)
|
||||
.addVehicle(vehicle2)
|
||||
.addJob(s1)
|
||||
.addJob(s2).addJob(shipment1).addJob(s3).addJob(s4).addJob(shipment2).setFleetSize(VehicleRoutingProblem.FleetSize.FINITE);
|
||||
.addJob(s2).addJob(shipment1).addJob(s3).addJob(s4).addJob(shipment2).setFleetSize(VehicleRoutingProblem.FleetSize.INFINITE);
|
||||
vrpBuilder.setRoutingCost(new ManhattanCosts(vrpBuilder.getLocations()));
|
||||
vrp = vrpBuilder.build();
|
||||
|
||||
|
|
|
|||
|
|
@ -103,7 +103,9 @@ public class LoadConstraintTest {
|
|||
});
|
||||
shipment_route = shipmentRouteBuilder.addPickup(shipment1).addPickup(shipment2).addDelivery(shipment2).addDelivery(shipment1).build();
|
||||
|
||||
stateManager = new StateManager(mock(VehicleRoutingProblem.class));
|
||||
VehicleRoutingProblem vrpMock = mock(VehicleRoutingProblem.class);
|
||||
when(vrpMock.getFleetSize()).thenReturn(VehicleRoutingProblem.FleetSize.FINITE);
|
||||
stateManager = new StateManager(vrpMock);
|
||||
stateManager.updateLoadStates();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -70,7 +70,9 @@ public class ServiceLoadRouteLevelConstraintTest {
|
|||
|
||||
constraint = new ServiceLoadRouteLevelConstraint(stateGetter);
|
||||
|
||||
stateManager = new StateManager(mock(VehicleRoutingProblem.class));
|
||||
VehicleRoutingProblem vrpMock = mock(VehicleRoutingProblem.class);
|
||||
when(vrpMock.getFleetSize()).thenReturn(VehicleRoutingProblem.FleetSize.INFINITE);
|
||||
stateManager = new StateManager(vrpMock);
|
||||
stateManager.updateLoadStates();
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue