From 2f636fc07b43a17cf6588e500088c648770e721c Mon Sep 17 00:00:00 2001 From: oblonski <4sschroeder@gmail.com> Date: Wed, 26 Mar 2014 07:08:20 +0100 Subject: [PATCH] added problem states --- .../core/algorithm/state/StateManager.java | 34 +++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) 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 8e3aff70..3fd5a1cd 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 @@ -74,12 +74,24 @@ public class StateManager implements RouteAndActivityStateGetter, IterationStart return null; } + public boolean containsKey(StateId stateId){ + return states.containsKey(stateId); + } + + public void clear(){ + states.clear(); + } + } private Map vehicleRouteStates_ = new HashMap(); private Map activityStates_ = new HashMap(); + private States_ problemStates_ = new States_(); + + private States_ defaultProblemStates_ = new States_(); + private RouteActivityVisitor routeActivityVisitor = new RouteActivityVisitor(); private ReverseRouteActivityVisitor revRouteActivityVisitor = new ReverseRouteActivityVisitor(); @@ -115,8 +127,6 @@ public class StateManager implements RouteAndActivityStateGetter, IterationStart private void addDefaultStates() { defaultActivityStates_.put(StateFactory.LOAD, Capacity.Builder.newInstance().build()); - - defaultActivityStates_.put(StateFactory.COSTS, 0.); defaultActivityStates_.put(StateFactory.DURATION, 0.); defaultActivityStates_.put(StateFactory.FUTURE_MAXLOAD, Capacity.Builder.newInstance().build()); @@ -141,6 +151,25 @@ public class StateManager implements RouteAndActivityStateGetter, IterationStart addDefaultStates(); } + public void putDefaultProblemState(StateId stateId, Class type, T defaultState){ + defaultProblemStates_.putState(stateId, type, defaultState); + } + + public void putProblemState(StateId stateId, Class type, T state){ + problemStates_.putState(stateId, type, state); + } + + public T getProblemState(StateId stateId, Class type){ + if(!problemStates_.containsKey(stateId)){ + return getDefaultProblemState(stateId, type); + } + return problemStates_.getState(stateId, type); + } + + T getDefaultProblemState(StateId stateId, Class type){ + return defaultProblemStates_.getState(stateId, type); + } + /** * @deprecated use the generic methode addDefaultRouteState(StateId stateId, Class type, T defaultState) instead. * @param stateId @@ -196,6 +225,7 @@ public class StateManager implements RouteAndActivityStateGetter, IterationStart public void clear(){ vehicleRouteStates_.clear(); activityStates_.clear(); + problemStates_.clear(); } /**