diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsOptimized.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsOptimized.java index dae6b1e1..36e76ead 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsOptimized.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsOptimized.java @@ -70,8 +70,8 @@ class JobNeighborhoodsOptimized implements JobNeighborhoods { this.vrp = vrp; this.jobDistance = jobDistance; this.capacity = capacity; - neighbors = new int[vrp.getJobs().size()][capacity]; - jobs = new Job[vrp.getJobs().size()+1]; + neighbors = new int[vrp.getJobsInclusiveInitialJobsInRoutes().size()+1][capacity]; + jobs = new Job[vrp.getJobsInclusiveInitialJobsInRoutes().size()+1]; logger.debug("initialize {}", this); } @@ -97,10 +97,10 @@ class JobNeighborhoodsOptimized implements JobNeighborhoods { logger.debug("pre-process distances between locations ..."); StopWatch stopWatch = new StopWatch(); stopWatch.start(); - for (Job job_i : vrp.getJobs().values()) { + for (Job job_i : vrp.getJobsInclusiveInitialJobsInRoutes().values()) { jobs[job_i.getIndex()] = job_i; - List jobList = new ArrayList(vrp.getJobs().size()); - for (Job job_j : vrp.getJobs().values()) { + List jobList = new ArrayList(vrp.getJobsInclusiveInitialJobsInRoutes().values().size()); + for (Job job_j : vrp.getJobsInclusiveInitialJobsInRoutes().values()) { if (job_i == job_j) continue; double distance = jobDistance.getDistance(job_i, job_j); if (distance > maxDistance) maxDistance = distance; diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java index c9c405f7..5898088b 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java @@ -546,6 +546,7 @@ public class VehicleRoutingProblem { */ private final Map jobs; + private final Map allJobs; /** * Collection that contains available vehicles. */ @@ -593,6 +594,7 @@ public class VehicleRoutingProblem { this.activityMap = builder.activityMap; this.nuActivities = builder.activityIndexCounter; this.allLocations = builder.allLocations; + this.allJobs = builder.tentativeJobs; logger.info("setup problem: {}", this); } @@ -623,6 +625,9 @@ public class VehicleRoutingProblem { return Collections.unmodifiableMap(jobs); } + public Map getJobsInclusiveInitialJobsInRoutes(){ + return Collections.unmodifiableMap(allJobs); + } /** * Returns a copy of initial vehicle routes. * @@ -685,6 +690,8 @@ public class VehicleRoutingProblem { return Collections.unmodifiableList(activityMap.get(job)); } +// public Map> getActivityMap() { return Collections.unmodifiableMap(activityMap); } + /** * @return total number of activities */ diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsOptimizedTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsOptimizedTest.java index fa217795..1da2913e 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsOptimizedTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsOptimizedTest.java @@ -142,4 +142,6 @@ public class JobNeighborhoodsOptimizedTest { assertEquals(2, services.size()); } + + }