From 7166ac25156c576329cb9856531fd95ceb393893 Mon Sep 17 00:00:00 2001 From: oblonski Date: Fri, 23 Oct 2015 08:46:09 +0200 Subject: [PATCH] remove redundant state stuff --- .../jsprit/core/algorithm/box/Jsprit.java | 1 + .../core/algorithm/state/StateManager.java | 38 ++------- .../algorithm/state/StateManagerTest.java | 2 +- .../test/resources/infiniteWriterV2Test.xml | 81 +++++++------------ 4 files changed, 37 insertions(+), 85 deletions(-) diff --git a/jsprit-core/src/main/java/jsprit/core/algorithm/box/Jsprit.java b/jsprit-core/src/main/java/jsprit/core/algorithm/box/Jsprit.java index 45653c9c..3a7a0618 100644 --- a/jsprit-core/src/main/java/jsprit/core/algorithm/box/Jsprit.java +++ b/jsprit-core/src/main/java/jsprit/core/algorithm/box/Jsprit.java @@ -638,4 +638,5 @@ public class Jsprit { return solutionCostCalculator; } + } diff --git a/jsprit-core/src/main/java/jsprit/core/algorithm/state/StateManager.java b/jsprit-core/src/main/java/jsprit/core/algorithm/state/StateManager.java index 43aec4a8..be09f491 100644 --- a/jsprit-core/src/main/java/jsprit/core/algorithm/state/StateManager.java +++ b/jsprit-core/src/main/java/jsprit/core/algorithm/state/StateManager.java @@ -45,33 +45,6 @@ import java.util.*; */ public class StateManager implements RouteAndActivityStateGetter, IterationStartsListener, RuinListener, InsertionStartsListener, JobInsertedListener, InsertionEndsListener { - static class States_ { - - private Map states = new HashMap(); - - public void putState(StateId id, Class type, T state) { - states.put(id, type.cast(state)); - } - - public T getState(StateId id, Class type) { - if (states.containsKey(id)) { - return type.cast(states.get(id)); - } - return null; - } - - public boolean containsKey(StateId stateId) { - return states.containsKey(stateId); - } - - public void clear() { - states.clear(); - } - - } - - private States_ problemStates_ = new States_(); - private RouteActivityVisitor routeActivityVisitor = new RouteActivityVisitor(); private ReverseRouteActivityVisitor revRouteActivityVisitor = new ReverseRouteActivityVisitor(); @@ -98,6 +71,8 @@ public class StateManager implements RouteAndActivityStateGetter, IterationStart private int nuVehicleTypeKeys; + private Object[] problemStates; + private Object[][] activityStates; private Object[][][] vehicleDependentActivityStates; @@ -135,6 +110,7 @@ public class StateManager implements RouteAndActivityStateGetter, IterationStart vehicleDependentActivityStates = new Object[nuActivities][nuVehicleTypeKeys][stateIndexCounter + 1]; routeStatesArr = new Object[vrp.getNuActivities()+1][stateIndexCounter+1]; vehicleDependentRouteStatesArr = new Object[nuActivities][nuVehicleTypeKeys][stateIndexCounter+1]; + problemStates = new Object[stateIndexCounter+1]; } StateId id = StateFactory.createId(name, stateIndexCounter); incStateIndexCounter(); @@ -170,6 +146,7 @@ public class StateManager implements RouteAndActivityStateGetter, IterationStart routeStateMap = new HashMap(); vehicleDependentRouteStateMap = new HashMap(); } + problemStates = new Object[initialStateArrayLength]; } private int getNuVehicleTypes(VehicleRoutingProblem vrp) { @@ -190,7 +167,8 @@ public class StateManager implements RouteAndActivityStateGetter, IterationStart * @param the type of the state value */ public void putProblemState(StateId stateId, Class type, T state) { - problemStates_.putState(stateId, type, state); + problemStates[stateId.getIndex()] = state; +// problemStates.putState(stateId, type, state); } /** @@ -203,7 +181,7 @@ public class StateManager implements RouteAndActivityStateGetter, IterationStart * @return the state value that is associated to the specified stateId or null if no value is associated */ public T getProblemState(StateId stateId, Class type) { - return problemStates_.getState(stateId, type); + return type.cast(problemStates[stateId.getIndex()]); } /** @@ -220,7 +198,7 @@ public class StateManager implements RouteAndActivityStateGetter, IterationStart routeStateMap.clear(); vehicleDependentRouteStateMap.clear(); } - problemStates_.clear(); + Arrays.fill(problemStates,null); } private void fill_threeDimArr(Object[][][] states, Object o) { diff --git a/jsprit-core/src/test/java/jsprit/core/algorithm/state/StateManagerTest.java b/jsprit-core/src/test/java/jsprit/core/algorithm/state/StateManagerTest.java index c115f852..b21a07db 100644 --- a/jsprit-core/src/test/java/jsprit/core/algorithm/state/StateManagerTest.java +++ b/jsprit-core/src/test/java/jsprit/core/algorithm/state/StateManagerTest.java @@ -194,7 +194,7 @@ public class StateManagerTest { @Test public void whenProblemStateIsSetAndStateManagerClearedAfterwards_itReturnsNull() { StateManager stateManager = new StateManager(vrpMock); - StateId id = StateFactory.createId("problemState"); + StateId id = stateManager.createStateId("problemState"); stateManager.putProblemState(id, Boolean.class, true); stateManager.clear(); Boolean problemState = stateManager.getProblemState(id, Boolean.class); diff --git a/jsprit-core/src/test/resources/infiniteWriterV2Test.xml b/jsprit-core/src/test/resources/infiniteWriterV2Test.xml index 2d9058ab..07c5406a 100644 --- a/jsprit-core/src/test/resources/infiniteWriterV2Test.xml +++ b/jsprit-core/src/test/resources/infiniteWriterV2Test.xml @@ -2,9 +2,24 @@ - INFINITE + FINITE + + v2 + vehType2 + + loc + + + loc + + + 0.0 + 1.7976931348623157E308 + + true + v1 vehType @@ -33,58 +48,16 @@ + + vehType2 + + 200 + + + 0.0 + 1.0 + + + - - - - loc - - - 1 - - 2.0 - - - 0.0 - 1.7976931348623157E308 - - - - - - loc2 - - - 1 - - 4.0 - - - 0.0 - 1.7976931348623157E308 - - - - - - - 10.0 - - - noDriver - v1 - 0.0 - - 1 - 0.0 - 0.0 - - 0.0 - - - - - - -