mirror of
https://github.com/graphhopper/jsprit.git
synced 2020-01-24 07:45:05 +01:00
Merge branch 'master' into experimentWithInsertion
Conflicts: jsprit-core/src/main/java/algorithms/CalculatesServiceInsertion.java jsprit-core/src/main/java/algorithms/CalculatesServiceInsertionOnRouteLevel.java
This commit is contained in:
commit
c60ab8afd0
22 changed files with 64 additions and 64 deletions
|
|
@ -15,7 +15,7 @@ package algorithms;
|
|||
import org.apache.log4j.Logger;
|
||||
|
||||
import util.Neighborhood;
|
||||
import algorithms.StatesContainer.State;
|
||||
import algorithms.StateManager.State;
|
||||
import basics.Job;
|
||||
import basics.Service;
|
||||
import basics.costs.VehicleRoutingActivityCosts;
|
||||
|
|
@ -36,7 +36,7 @@ final class CalculatesServiceInsertion implements JobInsertionCalculator{
|
|||
|
||||
private static final Logger logger = Logger.getLogger(CalculatesServiceInsertion.class);
|
||||
|
||||
private StatesContainer states;
|
||||
private StateManager states;
|
||||
|
||||
private VehicleRoutingTransportCosts routingCosts;
|
||||
|
||||
|
|
@ -71,7 +71,8 @@ final class CalculatesServiceInsertion implements JobInsertionCalculator{
|
|||
logger.info("initialise neighborhood " + neighborhood);
|
||||
}
|
||||
|
||||
public void setStates(StatesContainer activityStates2){
|
||||
|
||||
public void setStates(StateManager activityStates2){
|
||||
this.states = activityStates2;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -23,8 +23,8 @@ package algorithms;
|
|||
import org.apache.log4j.Logger;
|
||||
|
||||
import algorithms.InsertionData.NoInsertionFound;
|
||||
import algorithms.StatesContainer.State;
|
||||
import algorithms.StatesContainer.States;
|
||||
import algorithms.StateManager.State;
|
||||
import algorithms.StateManager.States;
|
||||
import basics.Job;
|
||||
import basics.route.Driver;
|
||||
import basics.route.Vehicle;
|
||||
|
|
@ -43,9 +43,9 @@ final class CalculatesServiceInsertionConsideringFixCost implements JobInsertion
|
|||
|
||||
private double solution_completeness_ratio = 0.5;
|
||||
|
||||
private StatesContainer states;
|
||||
private StateManager states;
|
||||
|
||||
public CalculatesServiceInsertionConsideringFixCost(final JobInsertionCalculator standardInsertionCalculator, StatesContainer activityStates2) {
|
||||
public CalculatesServiceInsertionConsideringFixCost(final JobInsertionCalculator standardInsertionCalculator, StateManager activityStates2) {
|
||||
super();
|
||||
this.standardServiceInsertion = standardInsertionCalculator;
|
||||
this.states = activityStates2;
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ final class CalculatesServiceInsertionOnRouteLevel implements JobInsertionCalcul
|
|||
|
||||
private AuxilliaryCostCalculator auxilliaryPathCostCalculator;
|
||||
|
||||
private StatesContainer states;
|
||||
private StateManager states;
|
||||
|
||||
private int nuOfActsForwardLooking = 0;
|
||||
|
||||
|
|
@ -90,7 +90,8 @@ final class CalculatesServiceInsertionOnRouteLevel implements JobInsertionCalcul
|
|||
logger.info("initialise " + this);
|
||||
}
|
||||
|
||||
public void setStates(StatesContainer activityStates2){
|
||||
|
||||
public void setStates(StateManager activityStates2){
|
||||
this.states = activityStates2;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -17,8 +17,8 @@ import org.apache.log4j.Logger;
|
|||
import util.Neighborhood;
|
||||
|
||||
import algorithms.RouteStates.ActivityState;
|
||||
import algorithms.StatesContainer.State;
|
||||
import algorithms.StatesContainer.States;
|
||||
import algorithms.StateManager.State;
|
||||
import algorithms.StateManager.States;
|
||||
import basics.Job;
|
||||
import basics.Service;
|
||||
import basics.costs.VehicleRoutingActivityCosts;
|
||||
|
|
@ -62,7 +62,7 @@ final class CalculatesServiceInsertionWithTriangleInequality implements JobInser
|
|||
|
||||
private static final Logger logger = Logger.getLogger(CalculatesServiceInsertionWithTriangleInequality.class);
|
||||
|
||||
private StatesContainer routeStates;
|
||||
private StateManager routeStates;
|
||||
|
||||
private VehicleRoutingTransportCosts routingCosts;
|
||||
|
||||
|
|
@ -97,7 +97,7 @@ final class CalculatesServiceInsertionWithTriangleInequality implements JobInser
|
|||
logger.info("initialise neighborhood " + neighborhood);
|
||||
}
|
||||
|
||||
public void setActivityStates(StatesContainer activityStates2){
|
||||
public void setActivityStates(StateManager activityStates2){
|
||||
this.routeStates = activityStates2;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ class CalculatorBuilder {
|
|||
|
||||
private VehicleRoutingProblem vrp;
|
||||
|
||||
private StatesContainer states;
|
||||
private StateManager states;
|
||||
|
||||
private boolean local = true;
|
||||
|
||||
|
|
@ -111,7 +111,7 @@ class CalculatorBuilder {
|
|||
*
|
||||
* @return
|
||||
*/
|
||||
public CalculatorBuilder setStates(StatesContainer states){
|
||||
public CalculatorBuilder setStates(StateManager states){
|
||||
this.states = states;
|
||||
return this;
|
||||
}
|
||||
|
|
@ -221,7 +221,7 @@ class CalculatorBuilder {
|
|||
}
|
||||
}
|
||||
|
||||
private CalculatorPlusListeners createStandardLocal(VehicleRoutingProblem vrp, StatesContainer activityStates2){
|
||||
private CalculatorPlusListeners createStandardLocal(VehicleRoutingProblem vrp, StateManager activityStates2){
|
||||
JobInsertionCalculator standardServiceInsertion = new CalculatesServiceInsertion(vrp.getTransportCosts(), vrp.getActivityCosts());
|
||||
|
||||
((CalculatesServiceInsertion) standardServiceInsertion).setStates(activityStates2);
|
||||
|
|
@ -232,7 +232,7 @@ class CalculatorBuilder {
|
|||
return calcPlusListeners;
|
||||
}
|
||||
|
||||
private CalculatorPlusListeners createCalculatorConsideringFixedCosts(VehicleRoutingProblem vrp, JobInsertionCalculator baseCalculator, StatesContainer activityStates2, double weightOfFixedCosts){
|
||||
private CalculatorPlusListeners createCalculatorConsideringFixedCosts(VehicleRoutingProblem vrp, JobInsertionCalculator baseCalculator, StateManager activityStates2, double weightOfFixedCosts){
|
||||
final CalculatesServiceInsertionConsideringFixCost withFixCost = new CalculatesServiceInsertionConsideringFixCost(baseCalculator, activityStates2);
|
||||
withFixCost.setWeightOfFixCost(weightOfFixedCosts);
|
||||
CalculatorPlusListeners calcPlusListeners = new CalculatorPlusListeners(withFixCost);
|
||||
|
|
@ -240,7 +240,7 @@ class CalculatorBuilder {
|
|||
return calcPlusListeners;
|
||||
}
|
||||
|
||||
private CalculatorPlusListeners createStandardRoute(VehicleRoutingProblem vrp, StatesContainer activityStates2, int forwardLooking, int solutionMemory){
|
||||
private CalculatorPlusListeners createStandardRoute(VehicleRoutingProblem vrp, StateManager activityStates2, int forwardLooking, int solutionMemory){
|
||||
int after = forwardLooking;
|
||||
JobInsertionCalculator jobInsertionCalculator = new CalculatesServiceInsertionOnRouteLevel(vrp.getTransportCosts(), vrp.getActivityCosts());
|
||||
((CalculatesServiceInsertionOnRouteLevel)jobInsertionCalculator).setNuOfActsForwardLooking(after);
|
||||
|
|
@ -251,7 +251,7 @@ class CalculatorBuilder {
|
|||
return calcPlusListener;
|
||||
}
|
||||
|
||||
private JobInsertionCalculator createFinalInsertion(VehicleFleetManager fleetManager, JobInsertionCalculator baseCalc, StatesContainer activityStates2){
|
||||
private JobInsertionCalculator createFinalInsertion(VehicleFleetManager fleetManager, JobInsertionCalculator baseCalc, StateManager activityStates2){
|
||||
return new CalculatesVehTypeDepServiceInsertion(fleetManager, baseCalc);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -6,9 +6,9 @@ class HardConstraints {
|
|||
|
||||
static class HardLoadConstraint implements HardConstraint{
|
||||
|
||||
private StatesContainer states;
|
||||
private StateManager states;
|
||||
|
||||
public HardLoadConstraint(StatesContainer states) {
|
||||
public HardLoadConstraint(StateManager states) {
|
||||
super();
|
||||
this.states = states;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ class InsertionFactory {
|
|||
private static Logger log = Logger.getLogger(InsertionFactory.class);
|
||||
|
||||
public static InsertionStrategy createInsertion(VehicleRoutingProblem vrp, HierarchicalConfiguration config,
|
||||
VehicleFleetManager vehicleFleetManager, StatesContainerImpl routeStates, List<PrioritizedVRAListener> algorithmListeners, ExecutorService executorService, int nuOfThreads){
|
||||
VehicleFleetManager vehicleFleetManager, StateManagerImpl routeStates, List<PrioritizedVRAListener> algorithmListeners, ExecutorService executorService, int nuOfThreads){
|
||||
boolean concurrentInsertion = false;
|
||||
if(executorService != null) concurrentInsertion = true;
|
||||
if(config.containsKey("[@name]")){
|
||||
|
|
|
|||
|
|
@ -1,11 +1,9 @@
|
|||
package algorithms;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import basics.route.TourActivity;
|
||||
import basics.route.VehicleRoute;
|
||||
|
||||
interface StatesContainer {
|
||||
interface StateManager {
|
||||
|
||||
interface State {
|
||||
double toDouble();
|
||||
|
|
@ -7,7 +7,7 @@ import java.util.Map;
|
|||
import basics.route.TourActivity;
|
||||
import basics.route.VehicleRoute;
|
||||
|
||||
class StatesContainerImpl implements StatesContainer{
|
||||
class StateManagerImpl implements StateManager{
|
||||
|
||||
static class StatesImpl implements States{
|
||||
|
||||
|
|
@ -24,9 +24,9 @@ class StatesContainerImpl implements StatesContainer{
|
|||
|
||||
}
|
||||
|
||||
private Map<VehicleRoute,States> vehicleRouteStates = new HashMap<VehicleRoute, StatesContainer.States>();
|
||||
private Map<VehicleRoute,States> vehicleRouteStates = new HashMap<VehicleRoute, StateManager.States>();
|
||||
|
||||
private Map<TourActivity,States> activityStates = new HashMap<TourActivity, StatesContainer.States>();
|
||||
private Map<TourActivity,States> activityStates = new HashMap<TourActivity, StateManager.States>();
|
||||
|
||||
public Map<VehicleRoute, States> getRouteStates() {
|
||||
return Collections.unmodifiableMap(vehicleRouteStates);
|
||||
|
|
@ -12,13 +12,13 @@ import basics.route.VehicleRoute;
|
|||
|
||||
class UdateCostsAtRouteLevel implements JobInsertedListener, InsertionStartsListener, InsertionEndsListener{
|
||||
|
||||
private StatesContainerImpl states;
|
||||
private StateManagerImpl states;
|
||||
|
||||
private VehicleRoutingTransportCosts tpCosts;
|
||||
|
||||
private VehicleRoutingActivityCosts actCosts;
|
||||
|
||||
public UdateCostsAtRouteLevel(StatesContainerImpl states, VehicleRoutingTransportCosts tpCosts, VehicleRoutingActivityCosts actCosts) {
|
||||
public UdateCostsAtRouteLevel(StateManagerImpl states, VehicleRoutingTransportCosts tpCosts, VehicleRoutingActivityCosts actCosts) {
|
||||
super();
|
||||
this.states = states;
|
||||
this.tpCosts = tpCosts;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package algorithms;
|
||||
|
||||
import algorithms.ForwardInTimeListeners.ForwardInTimeListener;
|
||||
import algorithms.StatesContainer.StateImpl;
|
||||
import algorithms.StateManager.StateImpl;
|
||||
import basics.costs.ForwardTransportCost;
|
||||
import basics.costs.VehicleRoutingActivityCosts;
|
||||
import basics.route.End;
|
||||
|
|
@ -15,7 +15,7 @@ class UpdateCostsAtAllLevels implements ForwardInTimeListener{
|
|||
|
||||
private ForwardTransportCost transportCost;
|
||||
|
||||
private StatesContainerImpl states;
|
||||
private StateManagerImpl states;
|
||||
|
||||
private double totalOperationCost = 0.0;
|
||||
|
||||
|
|
@ -25,7 +25,7 @@ class UpdateCostsAtAllLevels implements ForwardInTimeListener{
|
|||
|
||||
private double startTimeAtPrevAct = 0.0;
|
||||
|
||||
public UpdateCostsAtAllLevels(VehicleRoutingActivityCosts activityCost, ForwardTransportCost transportCost, StatesContainerImpl states) {
|
||||
public UpdateCostsAtAllLevels(VehicleRoutingActivityCosts activityCost, ForwardTransportCost transportCost, StateManagerImpl states) {
|
||||
super();
|
||||
this.activityCost = activityCost;
|
||||
this.transportCost = transportCost;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package algorithms;
|
||||
|
||||
import algorithms.ForwardInTimeListeners.ForwardInTimeListener;
|
||||
import algorithms.StatesContainer.StateImpl;
|
||||
import algorithms.StateManager.StateImpl;
|
||||
import basics.route.End;
|
||||
import basics.route.Start;
|
||||
import basics.route.TourActivity;
|
||||
|
|
@ -9,9 +9,9 @@ import basics.route.VehicleRoute;
|
|||
|
||||
class UpdateEarliestStartTimeWindowAtActLocations implements ForwardInTimeListener{
|
||||
|
||||
private StatesContainerImpl states;
|
||||
private StateManagerImpl states;
|
||||
|
||||
public UpdateEarliestStartTimeWindowAtActLocations(StatesContainerImpl states) {
|
||||
public UpdateEarliestStartTimeWindowAtActLocations(StateManagerImpl states) {
|
||||
super();
|
||||
this.states = states;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package algorithms;
|
||||
|
||||
import algorithms.BackwardInTimeListeners.BackwardInTimeListener;
|
||||
import algorithms.StatesContainer.StateImpl;
|
||||
import algorithms.StateManager.StateImpl;
|
||||
import basics.route.End;
|
||||
import basics.route.Start;
|
||||
import basics.route.TourActivity;
|
||||
|
|
@ -9,9 +9,9 @@ import basics.route.VehicleRoute;
|
|||
|
||||
class UpdateLatestOperationStartTimeAtActLocations implements BackwardInTimeListener{
|
||||
|
||||
private StatesContainerImpl states;
|
||||
private StateManagerImpl states;
|
||||
|
||||
public UpdateLatestOperationStartTimeAtActLocations(StatesContainerImpl states) {
|
||||
public UpdateLatestOperationStartTimeAtActLocations(StateManagerImpl states) {
|
||||
super();
|
||||
this.states = states;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package algorithms;
|
||||
|
||||
import algorithms.ForwardInTimeListeners.ForwardInTimeListener;
|
||||
import algorithms.StatesContainer.StateImpl;
|
||||
import algorithms.StateManager.StateImpl;
|
||||
import basics.route.End;
|
||||
import basics.route.Start;
|
||||
import basics.route.TourActivity;
|
||||
|
|
@ -17,11 +17,11 @@ class UpdateLoadAtAllLevels implements ForwardInTimeListener{
|
|||
|
||||
private double load = 0.0;
|
||||
|
||||
private StatesContainerImpl states;
|
||||
private StateManagerImpl states;
|
||||
|
||||
private VehicleRoute vehicleRoute;
|
||||
|
||||
public UpdateLoadAtAllLevels(StatesContainerImpl states) {
|
||||
public UpdateLoadAtAllLevels(StateManagerImpl states) {
|
||||
super();
|
||||
this.states = states;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ package algorithms;
|
|||
|
||||
import java.util.Collection;
|
||||
|
||||
import algorithms.StatesContainer.StateImpl;
|
||||
import algorithms.StateManager.StateImpl;
|
||||
import basics.Job;
|
||||
import basics.Service;
|
||||
import basics.algo.InsertionStartsListener;
|
||||
|
|
@ -11,9 +11,9 @@ import basics.route.VehicleRoute;
|
|||
|
||||
class UpdateLoadAtRouteLevel implements JobInsertedListener, InsertionStartsListener{
|
||||
|
||||
private StatesContainerImpl states;
|
||||
private StateManagerImpl states;
|
||||
|
||||
public UpdateLoadAtRouteLevel(StatesContainerImpl states) {
|
||||
public UpdateLoadAtRouteLevel(StateManagerImpl states) {
|
||||
super();
|
||||
this.states = states;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ class UpdateStates implements JobInsertedListener, RuinListener{
|
|||
|
||||
private IterateRouteBackwardInTime iterateBackward;
|
||||
|
||||
public UpdateStates(StatesContainerImpl states, VehicleRoutingTransportCosts routingCosts, VehicleRoutingActivityCosts activityCosts) {
|
||||
public UpdateStates(StateManagerImpl states, VehicleRoutingTransportCosts routingCosts, VehicleRoutingActivityCosts activityCosts) {
|
||||
|
||||
iterateForward = new IterateRouteForwardInTime(routingCosts);
|
||||
iterateForward.addListener(new UpdateActivityTimes());
|
||||
|
|
|
|||
|
|
@ -448,7 +448,7 @@ public class VehicleRoutingAlgorithms {
|
|||
|
||||
algorithmListeners.add(new PrioritizedVRAListener(Priority.LOW, new SolutionVerifier()));
|
||||
|
||||
final StatesContainerImpl routeStates = new StatesContainerImpl();
|
||||
final StateManagerImpl routeStates = new StateManagerImpl();
|
||||
IterationStartsListener resetStates = new IterationStartsListener() {
|
||||
|
||||
@Override
|
||||
|
|
@ -570,7 +570,7 @@ public class VehicleRoutingAlgorithms {
|
|||
metaAlgorithm.getAlgorithmListeners().addAll(algorithmListeners);
|
||||
}
|
||||
|
||||
private static AlgorithmStartsListener createInitialSolution(XMLConfiguration config, final VehicleRoutingProblem vrp, VehicleFleetManager vehicleFleetManager, StatesContainerImpl routeStates, Set<PrioritizedVRAListener> algorithmListeners, TypedMap definedClasses, ExecutorService executorService, int nuOfThreads) {
|
||||
private static AlgorithmStartsListener createInitialSolution(XMLConfiguration config, final VehicleRoutingProblem vrp, VehicleFleetManager vehicleFleetManager, StateManagerImpl routeStates, Set<PrioritizedVRAListener> algorithmListeners, TypedMap definedClasses, ExecutorService executorService, int nuOfThreads) {
|
||||
List<HierarchicalConfiguration> modConfigs = config.configurationsAt("construction.insertion");
|
||||
if(modConfigs == null) return null;
|
||||
if(modConfigs.isEmpty()) return null;
|
||||
|
|
@ -667,7 +667,7 @@ public class VehicleRoutingAlgorithms {
|
|||
}
|
||||
|
||||
private static SearchStrategyModule buildModule(HierarchicalConfiguration moduleConfig, final VehicleRoutingProblem vrp, VehicleFleetManager vehicleFleetManager,
|
||||
final StatesContainerImpl routeStates, Set<PrioritizedVRAListener> algorithmListeners, TypedMap definedClasses, ExecutorService executorService, int nuOfThreads) {
|
||||
final StateManagerImpl routeStates, Set<PrioritizedVRAListener> algorithmListeners, TypedMap definedClasses, ExecutorService executorService, int nuOfThreads) {
|
||||
String moduleName = moduleConfig.getString("[@name]");
|
||||
if(moduleName == null) throw new IllegalStateException("module(-name) is missing.");
|
||||
String moduleId = moduleConfig.getString("[@id]");
|
||||
|
|
@ -805,7 +805,7 @@ public class VehicleRoutingAlgorithms {
|
|||
"\n\tgendreauPostOpt");
|
||||
}
|
||||
|
||||
private static RuinStrategy getRadialRuin(final VehicleRoutingProblem vrp, final StatesContainerImpl routeStates, TypedMap definedClasses, ModKey modKey, double shareToRuin, JobDistance jobDistance) {
|
||||
private static RuinStrategy getRadialRuin(final VehicleRoutingProblem vrp, final StateManagerImpl routeStates, TypedMap definedClasses, ModKey modKey, double shareToRuin, JobDistance jobDistance) {
|
||||
RuinStrategyKey stratKey = new RuinStrategyKey(modKey);
|
||||
RuinStrategy ruin = definedClasses.get(stratKey);
|
||||
if(ruin == null){
|
||||
|
|
@ -816,7 +816,7 @@ public class VehicleRoutingAlgorithms {
|
|||
return ruin;
|
||||
}
|
||||
|
||||
private static RuinStrategy getRandomRuin(final VehicleRoutingProblem vrp, final StatesContainerImpl routeStates, TypedMap definedClasses, ModKey modKey, double shareToRuin) {
|
||||
private static RuinStrategy getRandomRuin(final VehicleRoutingProblem vrp, final StateManagerImpl routeStates, TypedMap definedClasses, ModKey modKey, double shareToRuin) {
|
||||
RuinStrategyKey stratKey = new RuinStrategyKey(modKey);
|
||||
RuinStrategy ruin = definedClasses.get(stratKey);
|
||||
if(ruin == null){
|
||||
|
|
@ -827,7 +827,7 @@ public class VehicleRoutingAlgorithms {
|
|||
return ruin;
|
||||
}
|
||||
|
||||
private static InsertionStrategy createInsertionStrategy(HierarchicalConfiguration moduleConfig, VehicleRoutingProblem vrp,VehicleFleetManager vehicleFleetManager, StatesContainerImpl routeStates, List<PrioritizedVRAListener> algorithmListeners, ExecutorService executorService, int nuOfThreads) {
|
||||
private static InsertionStrategy createInsertionStrategy(HierarchicalConfiguration moduleConfig, VehicleRoutingProblem vrp,VehicleFleetManager vehicleFleetManager, StateManagerImpl routeStates, List<PrioritizedVRAListener> algorithmListeners, ExecutorService executorService, int nuOfThreads) {
|
||||
InsertionStrategy insertion = InsertionFactory.createInsertion(vrp, moduleConfig, vehicleFleetManager, routeStates, algorithmListeners, executorService, nuOfThreads);
|
||||
return insertion;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue