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
|
|
@ -98,16 +98,22 @@ public class StateManager implements RouteAndActivityStateGetter, IterationStart
|
||||||
|
|
||||||
private int nuVehicleTypeKeys;
|
private int nuVehicleTypeKeys;
|
||||||
|
|
||||||
private Object[][] activity_states;
|
private Object[][] activityStates;
|
||||||
|
|
||||||
private Object[][][] vehicle_dependent_activity_states;
|
private Object[][][] vehicleDependentActivityStates;
|
||||||
|
|
||||||
private Map<VehicleRoute, Object[]> route_state_map;
|
private Map<VehicleRoute, Object[]> routeStateMap;
|
||||||
|
|
||||||
private Map<VehicleRoute, Object[][]> vehicle_dependent_route_state_map;
|
private Map<VehicleRoute, Object[][]> vehicleDependentRouteStateMap;
|
||||||
|
|
||||||
|
private Object[][] routeStatesArr;
|
||||||
|
|
||||||
|
private Object[][][] vehicleDependentRouteStatesArr;
|
||||||
|
|
||||||
private VehicleRoutingProblem vrp;
|
private VehicleRoutingProblem vrp;
|
||||||
|
|
||||||
|
private final boolean isIndexedBased;
|
||||||
|
|
||||||
int getMaxIndexOfVehicleTypeIdentifiers() {
|
int getMaxIndexOfVehicleTypeIdentifiers() {
|
||||||
return nuVehicleTypeKeys;
|
return nuVehicleTypeKeys;
|
||||||
}
|
}
|
||||||
|
|
@ -124,11 +130,11 @@ public class StateManager implements RouteAndActivityStateGetter, IterationStart
|
||||||
*/
|
*/
|
||||||
public StateId createStateId(String name) {
|
public StateId createStateId(String name) {
|
||||||
if (createdStateIds.containsKey(name)) return createdStateIds.get(name);
|
if (createdStateIds.containsKey(name)) return createdStateIds.get(name);
|
||||||
if (stateIndexCounter >= activity_states[0].length) {
|
if (stateIndexCounter >= activityStates[0].length) {
|
||||||
activity_states = new Object[vrp.getNuActivities() + 1][stateIndexCounter + 1];
|
activityStates = new Object[vrp.getNuActivities() + 1][stateIndexCounter + 1];
|
||||||
// route_states = new Object[vrp.getNuActivities()+1][stateIndexCounter+1];
|
vehicleDependentActivityStates = new Object[nuActivities][nuVehicleTypeKeys][stateIndexCounter + 1];
|
||||||
vehicle_dependent_activity_states = new Object[nuActivities][nuVehicleTypeKeys][stateIndexCounter + 1];
|
routeStatesArr = new Object[vrp.getNuActivities()+1][stateIndexCounter+1];
|
||||||
// vehicle_dependent_route_states = new Object[nuActivities][nuVehicleTypeKeys][stateIndexCounter+1];
|
vehicleDependentRouteStatesArr = new Object[nuActivities][nuVehicleTypeKeys][stateIndexCounter+1];
|
||||||
}
|
}
|
||||||
StateId id = StateFactory.createId(name, stateIndexCounter);
|
StateId id = StateFactory.createId(name, stateIndexCounter);
|
||||||
incStateIndexCounter();
|
incStateIndexCounter();
|
||||||
|
|
@ -152,12 +158,18 @@ public class StateManager implements RouteAndActivityStateGetter, IterationStart
|
||||||
this.vrp = vehicleRoutingProblem;
|
this.vrp = vehicleRoutingProblem;
|
||||||
nuActivities = Math.max(10, vrp.getNuActivities() + 1);
|
nuActivities = Math.max(10, vrp.getNuActivities() + 1);
|
||||||
nuVehicleTypeKeys = Math.max(3, getNuVehicleTypes(vrp) + 2);
|
nuVehicleTypeKeys = Math.max(3, getNuVehicleTypes(vrp) + 2);
|
||||||
activity_states = new Object[nuActivities][initialStateArrayLength];
|
activityStates = new Object[nuActivities][initialStateArrayLength];
|
||||||
// route_states = new Object[nuActivities][initialStateArrayLength];
|
vehicleDependentActivityStates = new Object[nuActivities][nuVehicleTypeKeys][initialStateArrayLength];
|
||||||
vehicle_dependent_activity_states = new Object[nuActivities][nuVehicleTypeKeys][initialStateArrayLength];
|
if(vehicleRoutingProblem.getFleetSize().equals(VehicleRoutingProblem.FleetSize.FINITE)){
|
||||||
// vehicle_dependent_route_states = new Object[nuActivities][nuVehicleTypeKeys][initialStateArrayLength];
|
isIndexedBased = true;
|
||||||
route_state_map = new HashMap<VehicleRoute, Object[]>();
|
routeStatesArr = new Object[vrp.getVehicles().size() + 2][initialStateArrayLength];
|
||||||
vehicle_dependent_route_state_map = new HashMap<VehicleRoute, Object[][]>();
|
vehicleDependentRouteStatesArr = new Object[vrp.getVehicles().size() + 2][nuVehicleTypeKeys][initialStateArrayLength];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
isIndexedBased = false;
|
||||||
|
routeStateMap = new HashMap<VehicleRoute, Object[]>();
|
||||||
|
vehicleDependentRouteStateMap = new HashMap<VehicleRoute, Object[][]>();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private int getNuVehicleTypes(VehicleRoutingProblem vrp) {
|
private int getNuVehicleTypes(VehicleRoutingProblem vrp) {
|
||||||
|
|
@ -198,13 +210,17 @@ public class StateManager implements RouteAndActivityStateGetter, IterationStart
|
||||||
* Clears all states, i.e. set all value to null.
|
* Clears all states, i.e. set all value to null.
|
||||||
*/
|
*/
|
||||||
public void clear() {
|
public void clear() {
|
||||||
fill_twoDimArr(activity_states, null);
|
fill_twoDimArr(activityStates, null);
|
||||||
// fill_twoDimArr(route_states, null);
|
fill_threeDimArr(vehicleDependentActivityStates, null);
|
||||||
fill_threeDimArr(vehicle_dependent_activity_states, null);
|
if(isIndexedBased) {
|
||||||
// fill_threeDimArr(vehicle_dependent_route_states, null);
|
fill_twoDimArr(routeStatesArr, null);
|
||||||
|
fill_threeDimArr(vehicleDependentRouteStatesArr, null);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
routeStateMap.clear();
|
||||||
|
vehicleDependentRouteStateMap.clear();
|
||||||
|
}
|
||||||
problemStates_.clear();
|
problemStates_.clear();
|
||||||
route_state_map.clear();
|
|
||||||
vehicle_dependent_route_state_map.clear();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void fill_threeDimArr(Object[][][] states, Object o) {
|
private void fill_threeDimArr(Object[][][] states, Object o) {
|
||||||
|
|
@ -239,9 +255,9 @@ public class StateManager implements RouteAndActivityStateGetter, IterationStart
|
||||||
if (act.getIndex() < 0) return null;
|
if (act.getIndex() < 0) return null;
|
||||||
T state;
|
T state;
|
||||||
try {
|
try {
|
||||||
state = type.cast(activity_states[act.getIndex()][stateId.getIndex()]);
|
state = type.cast(activityStates[act.getIndex()][stateId.getIndex()]);
|
||||||
} catch (ClassCastException e) {
|
} catch (ClassCastException e) {
|
||||||
throw getClassCastException(e, stateId, type.toString(), activity_states[act.getIndex()][stateId.getIndex()].getClass().toString());
|
throw getClassCastException(e, stateId, type.toString(), activityStates[act.getIndex()][stateId.getIndex()].getClass().toString());
|
||||||
}
|
}
|
||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
|
|
@ -257,7 +273,7 @@ public class StateManager implements RouteAndActivityStateGetter, IterationStart
|
||||||
*/
|
*/
|
||||||
public boolean hasActivityState(TourActivity act, Vehicle vehicle, StateId stateId) {
|
public boolean hasActivityState(TourActivity act, Vehicle vehicle, StateId stateId) {
|
||||||
if (act.getIndex() == 0) throw new IllegalStateException("activity index is 0. this should not be.");
|
if (act.getIndex() == 0) throw new IllegalStateException("activity index is 0. this should not be.");
|
||||||
return vehicle_dependent_activity_states[act.getIndex()][vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()] != null;
|
return vehicleDependentActivityStates[act.getIndex()][vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()] != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -280,9 +296,9 @@ public class StateManager implements RouteAndActivityStateGetter, IterationStart
|
||||||
if (act.getIndex() < 0) return null; //act.getIndex() < 0 indicates that act is either Start (-1) or End (-2)
|
if (act.getIndex() < 0) return null; //act.getIndex() < 0 indicates that act is either Start (-1) or End (-2)
|
||||||
T state;
|
T state;
|
||||||
try {
|
try {
|
||||||
state = type.cast(vehicle_dependent_activity_states[act.getIndex()][vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()]);
|
state = type.cast(vehicleDependentActivityStates[act.getIndex()][vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()]);
|
||||||
} catch (ClassCastException e) {
|
} catch (ClassCastException e) {
|
||||||
Object state_class = vehicle_dependent_activity_states[act.getIndex()][vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()];
|
Object state_class = vehicleDependentActivityStates[act.getIndex()][vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()];
|
||||||
throw getClassCastException(e, stateId, type.toString(), state_class.getClass().toString());
|
throw getClassCastException(e, stateId, type.toString(), state_class.getClass().toString());
|
||||||
}
|
}
|
||||||
return state;
|
return state;
|
||||||
|
|
@ -308,17 +324,21 @@ public class StateManager implements RouteAndActivityStateGetter, IterationStart
|
||||||
public <T> T getRouteState(VehicleRoute route, StateId stateId, Class<T> type) {
|
public <T> T getRouteState(VehicleRoute route, StateId stateId, Class<T> type) {
|
||||||
if (route.isEmpty()) return null;
|
if (route.isEmpty()) return null;
|
||||||
T state = null;
|
T state = null;
|
||||||
|
if(isIndexedBased){
|
||||||
// int index_of_first_act = route.getActivities().get(0).getIndex();
|
|
||||||
// if(index_of_first_act == 0) throw new IllegalStateException("first activity in route has no index. this should not be.");
|
|
||||||
try {
|
try {
|
||||||
if (route_state_map.containsKey(route)) {
|
state = type.cast(routeStatesArr[route.getVehicle().getIndex()][stateId.getIndex()]);
|
||||||
state = type.cast(route_state_map.get(route)[stateId.getIndex()]);
|
|
||||||
}
|
|
||||||
// state = type.cast(route_states[index_of_first_act][stateId.getIndex()]);
|
|
||||||
} catch (ClassCastException e) {
|
} catch (ClassCastException e) {
|
||||||
throw getClassCastException(e, stateId, type.toString(), route_state_map.get(route)[stateId.getIndex()].getClass().toString());
|
throw getClassCastException(e,stateId,type.toString(),routeStatesArr[route.getVehicle().getIndex()][stateId.getIndex()].getClass().toString());
|
||||||
// throw getClassCastException(e,stateId,type.toString(),route_states[index_of_first_act][stateId.getIndex()].getClass().toString());
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
try {
|
||||||
|
if (routeStateMap.containsKey(route)) {
|
||||||
|
state = type.cast(routeStateMap.get(route)[stateId.getIndex()]);
|
||||||
|
}
|
||||||
|
} catch (ClassCastException e) {
|
||||||
|
throw getClassCastException(e, stateId, type.toString(), routeStateMap.get(route)[stateId.getIndex()].getClass().toString());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
|
|
@ -333,8 +353,8 @@ public class StateManager implements RouteAndActivityStateGetter, IterationStart
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("UnusedDeclaration")
|
@SuppressWarnings("UnusedDeclaration")
|
||||||
public boolean hasRouteState(VehicleRoute route, Vehicle vehicle, StateId stateId) {
|
public boolean hasRouteState(VehicleRoute route, Vehicle vehicle, StateId stateId) {
|
||||||
if (!vehicle_dependent_route_state_map.containsKey(route)) return false;
|
if (!vehicleDependentRouteStateMap.containsKey(route)) return false;
|
||||||
return vehicle_dependent_route_state_map.get(route)[vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()] != null;
|
return vehicleDependentRouteStateMap.get(route)[vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()] != null;
|
||||||
// return vehicle_dependent_route_states[route.getActivities().get(0).getIndex()][vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()] != null;
|
// return vehicle_dependent_route_states[route.getActivities().get(0).getIndex()][vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()] != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -353,16 +373,22 @@ public class StateManager implements RouteAndActivityStateGetter, IterationStart
|
||||||
*/
|
*/
|
||||||
public <T> T getRouteState(VehicleRoute route, Vehicle vehicle, StateId stateId, Class<T> type) {
|
public <T> T getRouteState(VehicleRoute route, Vehicle vehicle, StateId stateId, Class<T> type) {
|
||||||
if (route.isEmpty()) return null;
|
if (route.isEmpty()) return null;
|
||||||
// int index_of_first_act = route.getActivities().get(0).getIndex();
|
|
||||||
// if(index_of_first_act == 0) throw new IllegalStateException("first activity in route has no index. this should not be.");
|
|
||||||
T state = null;
|
T state = null;
|
||||||
|
if(isIndexedBased){
|
||||||
try {
|
try {
|
||||||
if (vehicle_dependent_route_state_map.containsKey(route)) {
|
state = type.cast(vehicleDependentRouteStatesArr[route.getVehicle().getIndex()][vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()]);
|
||||||
state = type.cast(vehicle_dependent_route_state_map.get(route)[vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()]);
|
|
||||||
}
|
|
||||||
// state = type.cast(vehicle_dependent_route_states[index_of_first_act][vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()]);
|
|
||||||
} catch (ClassCastException e) {
|
} catch (ClassCastException e) {
|
||||||
throw getClassCastException(e, stateId, type.toString(), vehicle_dependent_route_state_map.get(route)[vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()].getClass().toString());
|
throw getClassCastException(e, stateId, type.toString(), vehicleDependentRouteStatesArr[route.getVehicle().getIndex()][vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()].getClass().toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
try {
|
||||||
|
if (vehicleDependentRouteStateMap.containsKey(route)) {
|
||||||
|
state = type.cast(vehicleDependentRouteStateMap.get(route)[vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()]);
|
||||||
|
}
|
||||||
|
} catch (ClassCastException e) {
|
||||||
|
throw getClassCastException(e, stateId, type.toString(), vehicleDependentRouteStateMap.get(route)[vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()].getClass().toString());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
|
|
@ -413,11 +439,11 @@ public class StateManager implements RouteAndActivityStateGetter, IterationStart
|
||||||
}
|
}
|
||||||
|
|
||||||
<T> void putInternalTypedActivityState(TourActivity act, StateId stateId, T state) {
|
<T> void putInternalTypedActivityState(TourActivity act, StateId stateId, T state) {
|
||||||
activity_states[act.getIndex()][stateId.getIndex()] = state;
|
activityStates[act.getIndex()][stateId.getIndex()] = state;
|
||||||
}
|
}
|
||||||
|
|
||||||
<T> void putInternalTypedActivityState(TourActivity act, Vehicle vehicle, StateId stateId, T state) {
|
<T> void putInternalTypedActivityState(TourActivity act, Vehicle vehicle, StateId stateId, T state) {
|
||||||
vehicle_dependent_activity_states[act.getIndex()][vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()] = state;
|
vehicleDependentActivityStates[act.getIndex()][vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()] = state;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -454,20 +480,29 @@ public class StateManager implements RouteAndActivityStateGetter, IterationStart
|
||||||
|
|
||||||
<T> void putTypedInternalRouteState(VehicleRoute route, StateId stateId, T state) {
|
<T> void putTypedInternalRouteState(VehicleRoute route, StateId stateId, T state) {
|
||||||
if (route.isEmpty()) return;
|
if (route.isEmpty()) return;
|
||||||
if (!route_state_map.containsKey(route)) {
|
if(isIndexedBased){
|
||||||
route_state_map.put(route, new Object[stateIndexCounter]);
|
routeStatesArr[route.getVehicle().getIndex()][stateId.getIndex()] = state;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (!routeStateMap.containsKey(route)) {
|
||||||
|
routeStateMap.put(route, new Object[stateIndexCounter]);
|
||||||
|
}
|
||||||
|
routeStateMap.get(route)[stateId.getIndex()] = state;
|
||||||
}
|
}
|
||||||
route_state_map.get(route)[stateId.getIndex()] = state;
|
|
||||||
// route_states[route.getActivities().get(0).getIndex()][stateId.getIndex()] = state;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
<T> void putTypedInternalRouteState(VehicleRoute route, Vehicle vehicle, StateId stateId, T state) {
|
<T> void putTypedInternalRouteState(VehicleRoute route, Vehicle vehicle, StateId stateId, T state) {
|
||||||
if (route.isEmpty()) return;
|
if (route.isEmpty()) return;
|
||||||
if (!vehicle_dependent_route_state_map.containsKey(route)) {
|
if(isIndexedBased){
|
||||||
vehicle_dependent_route_state_map.put(route, new Object[nuVehicleTypeKeys][stateIndexCounter]);
|
vehicleDependentRouteStatesArr[route.getVehicle().getIndex()][vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()] = state;
|
||||||
}
|
}
|
||||||
vehicle_dependent_route_state_map.get(route)[vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()] = state;
|
else {
|
||||||
// vehicle_dependent_route_states[route.getActivities().get(0).getIndex()][vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()] = state;
|
if (!vehicleDependentRouteStateMap.containsKey(route)) {
|
||||||
|
vehicleDependentRouteStateMap.put(route, new Object[nuVehicleTypeKeys][stateIndexCounter]);
|
||||||
|
}
|
||||||
|
vehicleDependentRouteStateMap.get(route)[vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()] = state;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -621,6 +656,7 @@ public class StateManager implements RouteAndActivityStateGetter, IterationStart
|
||||||
addActivityVisitor(new UpdateSkills(this));
|
addActivityVisitor(new UpdateSkills(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
public void addCoreUpdater() {
|
public void addCoreUpdater() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -174,7 +174,9 @@ public class TestLocalActivityInsertionCostsCalculator {
|
||||||
|
|
||||||
VehicleRoute route = VehicleRoute.Builder.newInstance(v).setJobActivityFactory(vrp.getJobActivityFactory()).addService(prevS).addService(nextS).build();
|
VehicleRoute route = VehicleRoute.Builder.newInstance(v).setJobActivityFactory(vrp.getJobActivityFactory()).addService(prevS).addService(nextS).build();
|
||||||
JobInsertionContext context = new JobInsertionContext(route, newS, v, null, 0.);
|
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.);
|
calc.setSolutionCompletenessRatio(1.);
|
||||||
|
|
||||||
double c = calc.getCosts(context, prevAct, nextAct, newAct, 10);
|
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.junit.Assert.assertEquals;
|
||||||
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.mock;
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by schroeder on 02.07.14.
|
* 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();
|
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.addStateUpdater(new UpdateVariableCosts(activityCosts, routingCosts, stateManager));
|
||||||
stateManager.informInsertionStarts(Arrays.asList(route), Collections.<Job>emptyList());
|
stateManager.informInsertionStarts(Arrays.asList(route), Collections.<Job>emptyList());
|
||||||
constraintManager = new ConstraintManager(vrp, stateManager);
|
constraintManager = new ConstraintManager(vrp, stateManager);
|
||||||
|
|
|
||||||
|
|
@ -100,7 +100,9 @@ public class LoadStateTest {
|
||||||
});
|
});
|
||||||
shipment_route = shipmentRouteBuilder.addPickup(shipment1).addPickup(shipment2).addDelivery(shipment2).addDelivery(shipment1).build();
|
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();
|
stateManager.updateLoadStates();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,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.problem.vehicle.VehicleTypeImpl;
|
import jsprit.core.problem.vehicle.VehicleTypeImpl;
|
||||||
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
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();
|
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
|
@Test
|
||||||
public void whenInternalRouteStateIsSet_itMustBeSetCorrectly() {
|
public void whenInternalRouteStateIsSet_itMustBeSetCorrectly() {
|
||||||
VehicleRoute route = getRoute(mock(Vehicle.class));
|
VehicleRoute route = getRoute(mock(Vehicle.class));
|
||||||
StateManager stateManager = new StateManager(mock(VehicleRoutingProblem.class));
|
StateManager stateManager = new StateManager(vrpMock);
|
||||||
StateId id = InternalStates.COSTS;
|
StateId id = InternalStates.COSTS;
|
||||||
stateManager.putTypedInternalRouteState(route, id, 10.);
|
stateManager.putTypedInternalRouteState(route, id, 10.);
|
||||||
assertEquals(10., stateManager.getRouteState(route, id, Double.class), 0.01);
|
assertEquals(10., stateManager.getRouteState(route, id, Double.class), 0.01);
|
||||||
|
|
@ -66,7 +74,7 @@ public class StateManagerTest {
|
||||||
@Test
|
@Test
|
||||||
public void whenInternalRouteStateIsNotSet_itShouldReturnNull() {
|
public void whenInternalRouteStateIsNotSet_itShouldReturnNull() {
|
||||||
VehicleRoute route = getRoute(mock(Vehicle.class));
|
VehicleRoute route = getRoute(mock(Vehicle.class));
|
||||||
StateManager stateManager = new StateManager(mock(VehicleRoutingProblem.class));
|
StateManager stateManager = new StateManager(vrpMock);
|
||||||
StateId id = InternalStates.COSTS;
|
StateId id = InternalStates.COSTS;
|
||||||
Double costs = stateManager.getRouteState(route, id, Double.class);
|
Double costs = stateManager.getRouteState(route, id, Double.class);
|
||||||
assertTrue(costs == null);
|
assertTrue(costs == null);
|
||||||
|
|
@ -79,7 +87,7 @@ public class StateManagerTest {
|
||||||
VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addVehicle(vehicle).build();
|
VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addVehicle(vehicle).build();
|
||||||
|
|
||||||
VehicleRoute route = getRoute(vehicle);
|
VehicleRoute route = getRoute(vehicle);
|
||||||
StateManager stateManager = new StateManager(mock(VehicleRoutingProblem.class));
|
StateManager stateManager = new StateManager(vrpMock);
|
||||||
StateId id = InternalStates.COSTS;
|
StateId id = InternalStates.COSTS;
|
||||||
stateManager.putTypedInternalRouteState(route, vehicle, id, 10.);
|
stateManager.putTypedInternalRouteState(route, vehicle, id, 10.);
|
||||||
assertEquals(10., stateManager.getRouteState(route, vehicle, id, Double.class), 0.01);
|
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();
|
VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addVehicle(vehicle).build();
|
||||||
|
|
||||||
VehicleRoute route = getRoute(vehicle);
|
VehicleRoute route = getRoute(vehicle);
|
||||||
StateManager stateManager = new StateManager(mock(VehicleRoutingProblem.class));
|
StateManager stateManager = new StateManager(vrpMock);
|
||||||
StateId id = InternalStates.COSTS;
|
StateId id = InternalStates.COSTS;
|
||||||
Double costs = stateManager.getRouteState(route, vehicle, id, Double.class);
|
Double costs = stateManager.getRouteState(route, vehicle, id, Double.class);
|
||||||
assertTrue(costs == null);
|
assertTrue(costs == null);
|
||||||
|
|
@ -101,7 +109,7 @@ public class StateManagerTest {
|
||||||
@Test
|
@Test
|
||||||
public void whenRouteStateIsSetWithGenericMethodAndBoolean_itMustBeSetCorrectly() {
|
public void whenRouteStateIsSetWithGenericMethodAndBoolean_itMustBeSetCorrectly() {
|
||||||
VehicleRoute route = getRoute(mock(Vehicle.class));
|
VehicleRoute route = getRoute(mock(Vehicle.class));
|
||||||
StateManager stateManager = new StateManager(mock(VehicleRoutingProblem.class));
|
StateManager stateManager = new StateManager(vrpMock);
|
||||||
StateId id = stateManager.createStateId("myState");
|
StateId id = stateManager.createStateId("myState");
|
||||||
stateManager.putRouteState(route, id, true);
|
stateManager.putRouteState(route, id, true);
|
||||||
assertTrue(stateManager.getRouteState(route, id, Boolean.class));
|
assertTrue(stateManager.getRouteState(route, id, Boolean.class));
|
||||||
|
|
@ -110,7 +118,7 @@ public class StateManagerTest {
|
||||||
@Test
|
@Test
|
||||||
public void whenRouteStateIsSetWithGenericMethodAndInteger_itMustBeSetCorrectly() {
|
public void whenRouteStateIsSetWithGenericMethodAndInteger_itMustBeSetCorrectly() {
|
||||||
VehicleRoute route = getRoute(mock(Vehicle.class));
|
VehicleRoute route = getRoute(mock(Vehicle.class));
|
||||||
StateManager stateManager = new StateManager(mock(VehicleRoutingProblem.class));
|
StateManager stateManager = new StateManager(vrpMock);
|
||||||
StateId id = stateManager.createStateId("myState");
|
StateId id = stateManager.createStateId("myState");
|
||||||
int load = 3;
|
int load = 3;
|
||||||
stateManager.putRouteState(route, id, load);
|
stateManager.putRouteState(route, id, load);
|
||||||
|
|
@ -121,7 +129,7 @@ public class StateManagerTest {
|
||||||
@Test
|
@Test
|
||||||
public void whenRouteStateIsSetWithGenericMethodAndCapacity_itMustBeSetCorrectly() {
|
public void whenRouteStateIsSetWithGenericMethodAndCapacity_itMustBeSetCorrectly() {
|
||||||
VehicleRoute route = getRoute(mock(Vehicle.class));
|
VehicleRoute route = getRoute(mock(Vehicle.class));
|
||||||
StateManager stateManager = new StateManager(mock(VehicleRoutingProblem.class));
|
StateManager stateManager = new StateManager(vrpMock);
|
||||||
StateId id = stateManager.createStateId("myState");
|
StateId id = stateManager.createStateId("myState");
|
||||||
Capacity capacity = Capacity.Builder.newInstance().addDimension(0, 500).build();
|
Capacity capacity = Capacity.Builder.newInstance().addDimension(0, 500).build();
|
||||||
stateManager.putRouteState(route, id, capacity);
|
stateManager.putRouteState(route, id, capacity);
|
||||||
|
|
@ -134,7 +142,7 @@ public class StateManagerTest {
|
||||||
public void whenActivityStateIsSetWithGenericMethodAndBoolean_itMustBeSetCorrectly() {
|
public void whenActivityStateIsSetWithGenericMethodAndBoolean_itMustBeSetCorrectly() {
|
||||||
TourActivity activity = mock(TourActivity.class);
|
TourActivity activity = mock(TourActivity.class);
|
||||||
when(activity.getIndex()).thenReturn(1);
|
when(activity.getIndex()).thenReturn(1);
|
||||||
StateManager stateManager = new StateManager(mock(VehicleRoutingProblem.class));
|
StateManager stateManager = new StateManager(vrpMock);
|
||||||
StateId id = stateManager.createStateId("myState");
|
StateId id = stateManager.createStateId("myState");
|
||||||
stateManager.putActivityState(activity, id, true);
|
stateManager.putActivityState(activity, id, true);
|
||||||
assertTrue(stateManager.getActivityState(activity, id, Boolean.class));
|
assertTrue(stateManager.getActivityState(activity, id, Boolean.class));
|
||||||
|
|
@ -144,7 +152,7 @@ public class StateManagerTest {
|
||||||
public void whenActivityStateIsSetWithGenericMethodAndInteger_itMustBeSetCorrectly() {
|
public void whenActivityStateIsSetWithGenericMethodAndInteger_itMustBeSetCorrectly() {
|
||||||
TourActivity activity = mock(TourActivity.class);
|
TourActivity activity = mock(TourActivity.class);
|
||||||
when(activity.getIndex()).thenReturn(1);
|
when(activity.getIndex()).thenReturn(1);
|
||||||
StateManager stateManager = new StateManager(mock(VehicleRoutingProblem.class));
|
StateManager stateManager = new StateManager(vrpMock);
|
||||||
StateId id = stateManager.createStateId("myState");
|
StateId id = stateManager.createStateId("myState");
|
||||||
int load = 3;
|
int load = 3;
|
||||||
stateManager.putActivityState(activity, id, load);
|
stateManager.putActivityState(activity, id, load);
|
||||||
|
|
@ -156,7 +164,7 @@ public class StateManagerTest {
|
||||||
public void whenActivityStateIsSetWithGenericMethodAndCapacity_itMustBeSetCorrectly() {
|
public void whenActivityStateIsSetWithGenericMethodAndCapacity_itMustBeSetCorrectly() {
|
||||||
TourActivity activity = mock(TourActivity.class);
|
TourActivity activity = mock(TourActivity.class);
|
||||||
when(activity.getIndex()).thenReturn(1);
|
when(activity.getIndex()).thenReturn(1);
|
||||||
StateManager stateManager = new StateManager(mock(VehicleRoutingProblem.class));
|
StateManager stateManager = new StateManager(vrpMock);
|
||||||
StateId id = stateManager.createStateId("myState");
|
StateId id = stateManager.createStateId("myState");
|
||||||
Capacity capacity = Capacity.Builder.newInstance().addDimension(0, 500).build();
|
Capacity capacity = Capacity.Builder.newInstance().addDimension(0, 500).build();
|
||||||
stateManager.putActivityState(activity, id, capacity);
|
stateManager.putActivityState(activity, id, capacity);
|
||||||
|
|
@ -166,7 +174,7 @@ public class StateManagerTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenProblemStateIsSet_itMustBeSetCorrectly() {
|
public void whenProblemStateIsSet_itMustBeSetCorrectly() {
|
||||||
StateManager stateManager = new StateManager(mock(VehicleRoutingProblem.class));
|
StateManager stateManager = new StateManager(vrpMock);
|
||||||
StateId id = stateManager.createStateId("problemState");
|
StateId id = stateManager.createStateId("problemState");
|
||||||
stateManager.putProblemState(id, Boolean.class, true);
|
stateManager.putProblemState(id, Boolean.class, true);
|
||||||
boolean problemState = stateManager.getProblemState(id, Boolean.class);
|
boolean problemState = stateManager.getProblemState(id, Boolean.class);
|
||||||
|
|
@ -175,7 +183,7 @@ public class StateManagerTest {
|
||||||
|
|
||||||
@Test(expected = NullPointerException.class)
|
@Test(expected = NullPointerException.class)
|
||||||
public void whenProblemStateIsSetAndStateManagerClearedAfterwards_itThrowsException() {
|
public void whenProblemStateIsSetAndStateManagerClearedAfterwards_itThrowsException() {
|
||||||
StateManager stateManager = new StateManager(mock(VehicleRoutingProblem.class));
|
StateManager stateManager = new StateManager(vrpMock);
|
||||||
StateId id = stateManager.createStateId("problemState");
|
StateId id = stateManager.createStateId("problemState");
|
||||||
stateManager.putProblemState(id, Boolean.class, true);
|
stateManager.putProblemState(id, Boolean.class, true);
|
||||||
stateManager.clear();
|
stateManager.clear();
|
||||||
|
|
@ -185,7 +193,7 @@ public class StateManagerTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenProblemStateIsSetAndStateManagerClearedAfterwards_itReturnsNull() {
|
public void whenProblemStateIsSetAndStateManagerClearedAfterwards_itReturnsNull() {
|
||||||
StateManager stateManager = new StateManager(mock(VehicleRoutingProblem.class));
|
StateManager stateManager = new StateManager(vrpMock);
|
||||||
StateId id = StateFactory.createId("problemState");
|
StateId id = StateFactory.createId("problemState");
|
||||||
stateManager.putProblemState(id, Boolean.class, true);
|
stateManager.putProblemState(id, Boolean.class, true);
|
||||||
stateManager.clear();
|
stateManager.clear();
|
||||||
|
|
@ -195,14 +203,14 @@ public class StateManagerTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenCreatingNewState_itShouldHaveAnIndex() {
|
public void whenCreatingNewState_itShouldHaveAnIndex() {
|
||||||
StateManager stateManager = new StateManager(mock(VehicleRoutingProblem.class));
|
StateManager stateManager = new StateManager(vrpMock);
|
||||||
StateId stateId = stateManager.createStateId("foo-state");
|
StateId stateId = stateManager.createStateId("foo-state");
|
||||||
assertEquals(21, stateId.getIndex());
|
assertEquals(21, stateId.getIndex());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenCreatingNewStates_theyShouldHaveAnIndex() {
|
public void whenCreatingNewStates_theyShouldHaveAnIndex() {
|
||||||
StateManager stateManager = new StateManager(mock(VehicleRoutingProblem.class));
|
StateManager stateManager = new StateManager(vrpMock);
|
||||||
StateId fooState = stateManager.createStateId("foo-state");
|
StateId fooState = stateManager.createStateId("foo-state");
|
||||||
StateId foofooState = stateManager.createStateId("foo-foo-state");
|
StateId foofooState = stateManager.createStateId("foo-foo-state");
|
||||||
assertEquals(21, fooState.getIndex());
|
assertEquals(21, fooState.getIndex());
|
||||||
|
|
@ -211,7 +219,7 @@ public class StateManagerTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenCreatingTwoStatesWithTheSameName_theyShouldHaveTheSameIndex() {
|
public void whenCreatingTwoStatesWithTheSameName_theyShouldHaveTheSameIndex() {
|
||||||
StateManager stateManager = new StateManager(mock(VehicleRoutingProblem.class));
|
StateManager stateManager = new StateManager(vrpMock);
|
||||||
StateId fooState = stateManager.createStateId("foo-state");
|
StateId fooState = stateManager.createStateId("foo-state");
|
||||||
StateId foofooState = stateManager.createStateId("foo-state");
|
StateId foofooState = stateManager.createStateId("foo-state");
|
||||||
assertEquals(21, fooState.getIndex());
|
assertEquals(21, fooState.getIndex());
|
||||||
|
|
@ -224,7 +232,7 @@ public class StateManagerTest {
|
||||||
//noinspection UnusedDeclaration
|
//noinspection UnusedDeclaration
|
||||||
VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addVehicle(vehicle).build();
|
VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addVehicle(vehicle).build();
|
||||||
VehicleRoute route = getRoute(vehicle);
|
VehicleRoute route = getRoute(vehicle);
|
||||||
StateManager stateManager = new StateManager(mock(VehicleRoutingProblem.class));
|
StateManager stateManager = new StateManager(vrpMock);
|
||||||
StateId id = stateManager.createStateId("myState");
|
StateId id = stateManager.createStateId("myState");
|
||||||
Capacity capacity = Capacity.Builder.newInstance().addDimension(0, 500).build();
|
Capacity capacity = Capacity.Builder.newInstance().addDimension(0, 500).build();
|
||||||
stateManager.putRouteState(route, vehicle, id, capacity);
|
stateManager.putRouteState(route, vehicle, id, capacity);
|
||||||
|
|
@ -237,7 +245,7 @@ public class StateManagerTest {
|
||||||
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("loc")).build();
|
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("loc")).build();
|
||||||
//noinspection UnusedDeclaration
|
//noinspection UnusedDeclaration
|
||||||
VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addVehicle(vehicle).build();
|
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");
|
StateId id = stateManager.createStateId("myState");
|
||||||
Capacity capacity = Capacity.Builder.newInstance().addDimension(0, 500).build();
|
Capacity capacity = Capacity.Builder.newInstance().addDimension(0, 500).build();
|
||||||
TourActivity act = mock(TourActivity.class);
|
TourActivity act = mock(TourActivity.class);
|
||||||
|
|
@ -253,7 +261,7 @@ public class StateManagerTest {
|
||||||
//noinspection UnusedDeclaration
|
//noinspection UnusedDeclaration
|
||||||
VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addVehicle(vehicle).build();
|
VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addVehicle(vehicle).build();
|
||||||
VehicleRoute route = getRoute(vehicle);
|
VehicleRoute route = getRoute(vehicle);
|
||||||
StateManager stateManager = new StateManager(mock(VehicleRoutingProblem.class));
|
StateManager stateManager = new StateManager(vrpMock);
|
||||||
StateId id = stateManager.createStateId("vehicleParam");
|
StateId id = stateManager.createStateId("vehicleParam");
|
||||||
double distanceParam = vehicle.getType().getVehicleCostParams().perDistanceUnit;
|
double distanceParam = vehicle.getType().getVehicleCostParams().perDistanceUnit;
|
||||||
stateManager.putRouteState(route, vehicle, id, distanceParam);
|
stateManager.putRouteState(route, vehicle, id, distanceParam);
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,7 @@ import java.util.List;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.mock;
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
public class UpdatePracticalTimeWindowTest {
|
public class UpdatePracticalTimeWindowTest {
|
||||||
|
|
||||||
|
|
@ -57,7 +58,9 @@ public class UpdatePracticalTimeWindowTest {
|
||||||
|
|
||||||
routingCosts = CostFactory.createManhattanCosts();
|
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 = new ReverseRouteActivityVisitor();
|
||||||
reverseActivityVisitor.addActivityVisitor(new UpdatePracticalTimeWindows(stateManager, routingCosts));
|
reverseActivityVisitor.addActivityVisitor(new UpdatePracticalTimeWindows(stateManager, routingCosts));
|
||||||
|
|
|
||||||
|
|
@ -98,7 +98,7 @@ public class SolutionAnalyserTest {
|
||||||
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance().addVehicle(vehicle)
|
VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance().addVehicle(vehicle)
|
||||||
.addVehicle(vehicle2)
|
.addVehicle(vehicle2)
|
||||||
.addJob(s1)
|
.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()));
|
vrpBuilder.setRoutingCost(new ManhattanCosts(vrpBuilder.getLocations()));
|
||||||
vrp = vrpBuilder.build();
|
vrp = vrpBuilder.build();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -103,7 +103,9 @@ public class LoadConstraintTest {
|
||||||
});
|
});
|
||||||
shipment_route = shipmentRouteBuilder.addPickup(shipment1).addPickup(shipment2).addDelivery(shipment2).addDelivery(shipment1).build();
|
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();
|
stateManager.updateLoadStates();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -70,7 +70,9 @@ public class ServiceLoadRouteLevelConstraintTest {
|
||||||
|
|
||||||
constraint = new ServiceLoadRouteLevelConstraint(stateGetter);
|
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();
|
stateManager.updateLoadStates();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue