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.");