From c62aa94021d6a52019b191c3db35fc9a950de301 Mon Sep 17 00:00:00 2001 From: Iris Date: Tue, 26 Jun 2018 10:19:50 +0300 Subject: [PATCH] ruin cluster --- .../jsprit/io/algorithm/VehicleRoutingAlgorithms.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/jsprit-io/src/main/java/com/graphhopper/jsprit/io/algorithm/VehicleRoutingAlgorithms.java b/jsprit-io/src/main/java/com/graphhopper/jsprit/io/algorithm/VehicleRoutingAlgorithms.java index 3bc3800a..6f6aae04 100644 --- a/jsprit-io/src/main/java/com/graphhopper/jsprit/io/algorithm/VehicleRoutingAlgorithms.java +++ b/jsprit-io/src/main/java/com/graphhopper/jsprit/io/algorithm/VehicleRoutingAlgorithms.java @@ -889,8 +889,13 @@ public class VehicleRoutingAlgorithms { ruin = getRadialRuin(vrp, routeStates, definedClasses, ruinKey, shareToRuin, jobDistance); } else if (ruin_name.equals("clusterRuin")) { String initialNumberJobsToRemoveString = moduleConfig.getString("ruin.initRemoveJobs"); - if (initialNumberJobsToRemoveString == null) throw new IllegalStateException("module.ruin.initRemoveJobs is missing."); - int initialNumberJobsToRemove = Integer.valueOf(initialNumberJobsToRemoveString); + String shareFactor = moduleConfig.getString("ruin.share"); + int initialNumberJobsToRemove; + if (initialNumberJobsToRemoveString != null) + initialNumberJobsToRemove = Integer.valueOf(initialNumberJobsToRemoveString); + else if(shareFactor != null) + initialNumberJobsToRemove = (int) (Double.valueOf(shareFactor) * vrp.getJobs().size()); + else throw new IllegalStateException("module.ruin.initRemoveJobs is missing."); ruin = getClusterRuin(vrp, routeStates, definedClasses, ruinKey, initialNumberJobsToRemove); } else throw new IllegalStateException("ruin[@name] " + ruin_name + " is not known. Use either randomRuin or radialRuin.");