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

removed warnings and added .updateSkills

This commit is contained in:
oblonski 2014-07-02 23:56:39 +02:00
parent 0637bdb4b6
commit 83e142faa5
2 changed files with 42 additions and 24 deletions

View file

@ -57,8 +57,8 @@ import jsprit.core.problem.solution.route.state.StateFactory.StateId;
* *
*/ */
public class StateManager implements RouteAndActivityStateGetter, IterationStartsListener, RuinListener, InsertionStartsListener, JobInsertedListener, InsertionEndsListener { public class StateManager implements RouteAndActivityStateGetter, IterationStartsListener, RuinListener, InsertionStartsListener, JobInsertedListener, InsertionEndsListener {
static class States_ { static class States_ {
private Map<StateId,Object> states = new HashMap<StateId,Object>(); private Map<StateId,Object> states = new HashMap<StateId,Object>();
@ -110,6 +110,8 @@ public class StateManager implements RouteAndActivityStateGetter, IterationStart
private boolean updateLoad = false; private boolean updateLoad = false;
private boolean updateTWs = false; private boolean updateTWs = false;
private boolean updateSkills = false;
private void addDefaultStates() { private void addDefaultStates() {
defaultActivityStates_.put(StateFactory.LOAD, Capacity.Builder.newInstance().build()); defaultActivityStates_.put(StateFactory.LOAD, Capacity.Builder.newInstance().build());
@ -164,9 +166,9 @@ public class StateManager implements RouteAndActivityStateGetter, IterationStart
* can add the default simply by coding <br> * can add the default simply by coding <br>
* <code>addDefaultRouteState(StateFactory.createStateId("max_weight"), Integer.class, 0)</code> * <code>addDefaultRouteState(StateFactory.createStateId("max_weight"), Integer.class, 0)</code>
* *
* @param stateId * @param stateId id of state
* @param type * @param type type of memorized state
* @param defaultState * @param defaultState actual state
*/ */
public <T> void addDefaultRouteState(StateId stateId, Class<T> type, T defaultState){ public <T> void addDefaultRouteState(StateId stateId, Class<T> type, T defaultState){
if(StateFactory.isReservedId(stateId)) StateFactory.throwReservedIdException(stateId.toString()); if(StateFactory.isReservedId(stateId)) StateFactory.throwReservedIdException(stateId.toString());
@ -175,10 +177,10 @@ public class StateManager implements RouteAndActivityStateGetter, IterationStart
/** /**
* Generic method to add default activity state. * Generic method to add default activity state.
* *
* @param stateId * @param stateId id of state
* @param type * @param type type of memorized state
* @param defaultState * @param defaultState actual state
*/ */
public <T> void addDefaultActivityState(StateId stateId, Class<T> type, T defaultState){ public <T> void addDefaultActivityState(StateId stateId, Class<T> type, T defaultState){
if(StateFactory.isReservedId(stateId)) StateFactory.throwReservedIdException(stateId.toString()); if(StateFactory.isReservedId(stateId)) StateFactory.throwReservedIdException(stateId.toString());
@ -211,11 +213,12 @@ public class StateManager implements RouteAndActivityStateGetter, IterationStart
} }
/** /**
* *
* @param act * @param act tour activity
* @param stateId * @param stateId id of state
* @param type * @param type of actual state
* @return *
* @return state
*/ */
private <T> T getDefaultTypedActivityState(TourActivity act, StateId stateId,Class<T> type) { private <T> T getDefaultTypedActivityState(TourActivity act, StateId stateId,Class<T> type) {
if(defaultActivityStates_.containsKey(stateId)){ if(defaultActivityStates_.containsKey(stateId)){
@ -263,10 +266,10 @@ public class StateManager implements RouteAndActivityStateGetter, IterationStart
* <p>you can retrieve the load at myActivity by <br> * <p>you can retrieve the load at myActivity by <br>
* <code>Capacity load = stateManager.getActivityState(myActivity, StateFactory.createStateId("act-load"), Capacity.class);</code> * <code>Capacity load = stateManager.getActivityState(myActivity, StateFactory.createStateId("act-load"), Capacity.class);</code>
* *
* @param act * @param act tour activity
* @param stateId * @param stateId stateId of state to be memorized
* @param type * @param type type of state
* @param state * @param state acutall state
*/ */
public <T> void putTypedActivityState(TourActivity act, StateId stateId, Class<T> type, T state){ public <T> void putTypedActivityState(TourActivity act, StateId stateId, Class<T> type, T state){
if(StateFactory.isReservedId(stateId)) StateFactory.throwReservedIdException(stateId.toString()); if(StateFactory.isReservedId(stateId)) StateFactory.throwReservedIdException(stateId.toString());
@ -298,10 +301,10 @@ public class StateManager implements RouteAndActivityStateGetter, IterationStart
* <p>you can retrieve the duration of myRoute then by <br> * <p>you can retrieve the duration of myRoute then by <br>
* <code>double totalRouteDuration = stateManager.getRouteState(myRoute, StateFactory.createStateId("route-duration"), Double.class);</code> * <code>double totalRouteDuration = stateManager.getRouteState(myRoute, StateFactory.createStateId("route-duration"), Double.class);</code>
* *
* @param route * @param route vehilcRoute that gets a state
* @param stateId * @param stateId id of state
* @param type * @param type of state
* @param state * @param state actual state
*/ */
public <T> void putTypedRouteState(VehicleRoute route, StateId stateId, Class<T> type, T state){ public <T> void putTypedRouteState(VehicleRoute route, StateId stateId, Class<T> type, T state){
if(StateFactory.isReservedId(stateId)) StateFactory.throwReservedIdException(stateId.toString()); if(StateFactory.isReservedId(stateId)) StateFactory.throwReservedIdException(stateId.toString());
@ -318,7 +321,7 @@ public class StateManager implements RouteAndActivityStateGetter, IterationStart
* <p>The following rule pertain for activity/route visitors:These visitors visits all activities/route in a route subsequently in two cases. First, if insertionStart (after ruinStrategies have removed activities from routes) * <p>The following rule pertain for activity/route visitors:These visitors visits all activities/route in a route subsequently in two cases. First, if insertionStart (after ruinStrategies have removed activities from routes)
* and, second, if a job has been inserted and thus if a route has changed. * and, second, if a job has been inserted and thus if a route has changed.
* *
* @param updater * @param updater to be inserted here
*/ */
public void addStateUpdater(StateUpdater updater){ public void addStateUpdater(StateUpdater updater){
if(updater instanceof ActivityVisitor) addActivityVisitor((ActivityVisitor) updater); if(updater instanceof ActivityVisitor) addActivityVisitor((ActivityVisitor) updater);
@ -444,5 +447,11 @@ public class StateManager implements RouteAndActivityStateGetter, IterationStart
} }
} }
public void updateSkillStates(){
if(!updateSkills){
updateSkills=true;
addActivityVisitor(new UpdateSkills(this));
}
}
} }

View file

@ -38,7 +38,7 @@ import org.apache.log4j.Logger;
*/ */
public class ConstraintManager implements HardActivityStateLevelConstraint, HardRouteStateLevelConstraint, SoftActivityConstraint, SoftRouteConstraint{ public class ConstraintManager implements HardActivityStateLevelConstraint, HardRouteStateLevelConstraint, SoftActivityConstraint, SoftRouteConstraint{
public static enum Priority { public static enum Priority {
CRITICAL, HIGH, LOW CRITICAL, HIGH, LOW
} }
@ -59,6 +59,8 @@ public class ConstraintManager implements HardActivityStateLevelConstraint, Hard
private boolean loadConstraintsSet = false; private boolean loadConstraintsSet = false;
private boolean timeWindowConstraintsSet = false; private boolean timeWindowConstraintsSet = false;
private boolean skillconstraintSet = false;
public ConstraintManager(VehicleRoutingProblem vrp, RouteAndActivityStateGetter stateManager) { public ConstraintManager(VehicleRoutingProblem vrp, RouteAndActivityStateGetter stateManager) {
this.vrp = vrp; this.vrp = vrp;
@ -113,6 +115,13 @@ public class ConstraintManager implements HardActivityStateLevelConstraint, Hard
loadConstraintsSet=true; loadConstraintsSet=true;
} }
} }
public void addSkillsConstraint() {
if (!skillconstraintSet){
addConstraint(new SkillConstraint(stateManager));
skillconstraintSet=true;
}
}
// public void add // public void add