1
0
Fork 0
mirror of https://github.com/graphhopper/jsprit.git synced 2020-01-24 07:45:05 +01:00

state manager use vehicle index

This commit is contained in:
Iris 2018-03-06 12:03:21 +02:00
parent 3c568835e9
commit 614b8b5e01

View file

@ -252,7 +252,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 vehicleDependentActivityStates[act.getIndex()][vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()] != null; return vehicleDependentActivityStates[act.getIndex()][vehicle.getIndex()][stateId.getIndex()] != null;
} }
/** /**
@ -275,9 +275,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(vehicleDependentActivityStates[act.getIndex()][vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()]); state = type.cast(vehicleDependentActivityStates[act.getIndex()][vehicle.getIndex()][stateId.getIndex()]);
} catch (ClassCastException e) { } catch (ClassCastException e) {
Object state_class = vehicleDependentActivityStates[act.getIndex()][vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()]; Object state_class = vehicleDependentActivityStates[act.getIndex()][vehicle.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;
@ -333,8 +333,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 (!vehicleDependentRouteStateMap.containsKey(route)) return false; if (!vehicleDependentRouteStateMap.containsKey(route)) return false;
return vehicleDependentRouteStateMap.get(route)[vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()] != null; return vehicleDependentRouteStateMap.get(route)[vehicle.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.getIndex()][stateId.getIndex()] != null;
} }
/** /**
@ -355,18 +355,18 @@ public class StateManager implements RouteAndActivityStateGetter, IterationStart
T state = null; T state = null;
if(isIndexedBased){ if(isIndexedBased){
try { try {
state = type.cast(vehicleDependentRouteStatesArr[route.getVehicle().getIndex()][vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()]); state = type.cast(vehicleDependentRouteStatesArr[route.getVehicle().getIndex()][vehicle.getIndex()][stateId.getIndex()]);
} catch (ClassCastException e) { } catch (ClassCastException e) {
throw getClassCastException(e, stateId, type.toString(), vehicleDependentRouteStatesArr[route.getVehicle().getIndex()][vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()].getClass().toString()); throw getClassCastException(e, stateId, type.toString(), vehicleDependentRouteStatesArr[route.getVehicle().getIndex()][vehicle.getIndex()][stateId.getIndex()].getClass().toString());
} }
} }
else { else {
try { try {
if (vehicleDependentRouteStateMap.containsKey(route)) { if (vehicleDependentRouteStateMap.containsKey(route)) {
state = type.cast(vehicleDependentRouteStateMap.get(route)[vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()]); state = type.cast(vehicleDependentRouteStateMap.get(route)[vehicle.getIndex()][stateId.getIndex()]);
} }
} catch (ClassCastException e) { } catch (ClassCastException e) {
throw getClassCastException(e, stateId, type.toString(), vehicleDependentRouteStateMap.get(route)[vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()].getClass().toString()); throw getClassCastException(e, stateId, type.toString(), vehicleDependentRouteStateMap.get(route)[vehicle.getIndex()][stateId.getIndex()].getClass().toString());
} }
} }
return state; return state;
@ -422,7 +422,7 @@ public class StateManager implements RouteAndActivityStateGetter, IterationStart
} }
<T> void putInternalTypedActivityState(TourActivity act, Vehicle vehicle, StateId stateId, T state) { <T> void putInternalTypedActivityState(TourActivity act, Vehicle vehicle, StateId stateId, T state) {
vehicleDependentActivityStates[act.getIndex()][vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()] = state; vehicleDependentActivityStates[act.getIndex()][vehicle.getIndex()][stateId.getIndex()] = state;
} }
/** /**
@ -473,13 +473,13 @@ public class StateManager implements RouteAndActivityStateGetter, IterationStart
<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(isIndexedBased){ if(isIndexedBased){
vehicleDependentRouteStatesArr[route.getVehicle().getIndex()][vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()] = state; vehicleDependentRouteStatesArr[route.getVehicle().getIndex()][vehicle.getIndex()][stateId.getIndex()] = state;
} }
else { else {
if (!vehicleDependentRouteStateMap.containsKey(route)) { if (!vehicleDependentRouteStateMap.containsKey(route)) {
vehicleDependentRouteStateMap.put(route, new Object[nuVehicleTypeKeys][stateIndexCounter]); vehicleDependentRouteStateMap.put(route, new Object[nuVehicleTypeKeys][stateIndexCounter]);
} }
vehicleDependentRouteStateMap.get(route)[vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()] = state; vehicleDependentRouteStateMap.get(route)[vehicle.getIndex()][stateId.getIndex()] = state;
} }
} }