Class Ruin
java.lang.Object
com.graphhopper.jsprit.core.algorithm.ruin.Ruin
Factory methods for creating common ruin operator configurations.
Provides pre-configured ruin operators for use with independent operator selection:
Jsprit.Builder.newInstance(vrp)
.addRuinOperator(0.3, Ruin.random(0.3))
.addRuinOperator(0.3, Ruin.radial(0.3))
.addRuinOperator(0.2, Ruin.cluster())
.addRuinOperator(0.2, Ruin.kruskalCluster())
.buildAlgorithm();
All factories return RuinOperatorFactory instances that will be
instantiated during algorithm construction with proper dependencies.
- See Also:
-
Method Summary
Modifier and TypeMethodDescriptionstatic RuinOperatorFactorycluster()Cluster ruin using DBSCAN clustering (default).static RuinOperatorFactorycluster(double minFraction, double maxFraction) Cluster ruin with variable removal fraction.static RuinOperatorFactorycluster(double minFraction, double maxFraction, int minBound, int maxBound) Cluster ruin with fraction-based scaling and absolute bounds.static RuinOperatorFactoryKruskal MST-based cluster ruin (ranked #2 in Voigt 2025).static RuinOperatorFactorykruskalCluster(double minFraction, double maxFraction) Kruskal cluster ruin with variable removal fraction.static RuinOperatorFactorykruskalCluster(double minFraction, double maxFraction, int minBound, int maxBound) Kruskal cluster ruin with fraction-based scaling and absolute bounds.static RuinOperatorFactoryradial(double fraction) Radial ruin that removes nearby jobs.static RuinOperatorFactoryradial(double minFraction, double maxFraction) Radial ruin with variable removal fraction.static RuinOperatorFactoryradial(double minFraction, double maxFraction, int minBound, int maxBound) Radial ruin with fraction-based scaling and absolute bounds.static RuinOperatorFactoryrandom(double fraction) Random ruin that removes a fraction of jobs randomly.static RuinOperatorFactoryrandom(double minFraction, double maxFraction) Random ruin with variable removal fraction.static RuinOperatorFactoryrandom(double minFraction, double maxFraction, int minBound, int maxBound) Random ruin with fraction-based scaling and absolute bounds.static RuinOperatorFactorystring()String ruin that removes sequences of jobs from routes.static RuinOperatorFactorystring(int kMin, int kMax, int lMin, int lMax) String ruin with configurable parameters.static RuinOperatorFactorytimeRelated(double fraction) Time-related ruin that removes jobs with similar time windows.static RuinOperatorFactorytimeRelated(double minFraction, double maxFraction) Time-related ruin with variable removal fraction.static RuinOperatorFactorytimeRelated(double minFraction, double maxFraction, int minBound, int maxBound) Time-related ruin with fraction-based scaling and absolute bounds.static RuinOperatorFactoryworst(double fraction) Worst ruin that removes jobs with highest removal benefit.static RuinOperatorFactoryworst(double minFraction, double maxFraction, double noiseLevel, double noiseProbability) Worst ruin with configurable parameters.static RuinOperatorFactoryworst(double minFraction, double maxFraction, int minBound, int maxBound) Worst ruin with fraction-based scaling and absolute bounds.
-
Method Details
-
random
Random ruin that removes a fraction of jobs randomly.- Parameters:
fraction- fraction of jobs to remove (0.0-1.0)- Returns:
- factory for random ruin
-
random
Random ruin with variable removal fraction.- Parameters:
minFraction- minimum fraction of jobs to removemaxFraction- maximum fraction of jobs to remove- Returns:
- factory for random ruin
-
random
public static RuinOperatorFactory random(double minFraction, double maxFraction, int minBound, int maxBound) Random ruin with fraction-based scaling and absolute bounds.Calculates share as
numJobs * fraction, then clamps between bounds.- Parameters:
minFraction- minimum fraction of jobs to removemaxFraction- maximum fraction of jobs to removeminBound- absolute minimum jobs to remove (floor)maxBound- absolute maximum jobs to remove (ceiling)- Returns:
- factory for random ruin
-
radial
Radial ruin that removes nearby jobs.Selects a random job and removes it along with its nearest neighbors.
- Parameters:
fraction- fraction of jobs to remove (0.0-1.0)- Returns:
- factory for radial ruin
-
radial
Radial ruin with variable removal fraction.- Parameters:
minFraction- minimum fraction of jobs to removemaxFraction- maximum fraction of jobs to remove- Returns:
- factory for radial ruin
-
radial
public static RuinOperatorFactory radial(double minFraction, double maxFraction, int minBound, int maxBound) Radial ruin with fraction-based scaling and absolute bounds.- Parameters:
minFraction- minimum fraction of jobs to removemaxFraction- maximum fraction of jobs to removeminBound- absolute minimum jobs to remove (floor)maxBound- absolute maximum jobs to remove (ceiling)- Returns:
- factory for radial ruin
-
cluster
Cluster ruin using DBSCAN clustering (default).Clusters jobs spatially and removes entire clusters.
- Returns:
- factory for cluster ruin
-
cluster
Cluster ruin with variable removal fraction.- Parameters:
minFraction- minimum fraction of jobs to removemaxFraction- maximum fraction of jobs to remove- Returns:
- factory for cluster ruin
-
cluster
public static RuinOperatorFactory cluster(double minFraction, double maxFraction, int minBound, int maxBound) Cluster ruin with fraction-based scaling and absolute bounds.- Parameters:
minFraction- minimum fraction of jobs to removemaxFraction- maximum fraction of jobs to removeminBound- absolute minimum jobs to remove (floor)maxBound- absolute maximum jobs to remove (ceiling)- Returns:
- factory for cluster ruin
-
kruskalCluster
Kruskal MST-based cluster ruin (ranked #2 in Voigt 2025).Uses minimum spanning tree to identify clusters of related jobs within routes, then removes connected components.
- Returns:
- factory for Kruskal cluster ruin
-
kruskalCluster
Kruskal cluster ruin with variable removal fraction.- Parameters:
minFraction- minimum fraction of jobs to removemaxFraction- maximum fraction of jobs to remove- Returns:
- factory for Kruskal cluster ruin
-
kruskalCluster
public static RuinOperatorFactory kruskalCluster(double minFraction, double maxFraction, int minBound, int maxBound) Kruskal cluster ruin with fraction-based scaling and absolute bounds.- Parameters:
minFraction- minimum fraction of jobs to removemaxFraction- maximum fraction of jobs to removeminBound- absolute minimum jobs to remove (floor)maxBound- absolute maximum jobs to remove (ceiling)- Returns:
- factory for Kruskal cluster ruin
-
worst
Worst ruin that removes jobs with highest removal benefit.Removes jobs that, when removed, provide the largest cost savings. Good for escaping local optima.
- Parameters:
fraction- fraction of jobs to remove (0.0-1.0)- Returns:
- factory for worst ruin
-
worst
public static RuinOperatorFactory worst(double minFraction, double maxFraction, double noiseLevel, double noiseProbability) Worst ruin with configurable parameters.- Parameters:
minFraction- minimum fraction of jobs to removemaxFraction- maximum fraction of jobs to removenoiseLevel- noise level for randomization (0.0-1.0)noiseProbability- probability of applying noise (0.0-1.0)- Returns:
- factory for worst ruin
-
worst
public static RuinOperatorFactory worst(double minFraction, double maxFraction, int minBound, int maxBound) Worst ruin with fraction-based scaling and absolute bounds.- Parameters:
minFraction- minimum fraction of jobs to removemaxFraction- maximum fraction of jobs to removeminBound- absolute minimum jobs to remove (floor)maxBound- absolute maximum jobs to remove (ceiling)- Returns:
- factory for worst ruin
-
string
String ruin that removes sequences of jobs from routes.Selects random routes and removes contiguous sequences of jobs.
- Returns:
- factory for string ruin with default parameters
-
string
String ruin with configurable parameters.- Parameters:
kMin- minimum number of routes to affectkMax- maximum number of routes to affectlMin- minimum string length per routelMax- maximum string length per route- Returns:
- factory for string ruin
-
timeRelated
Time-related ruin that removes jobs with similar time windows.- Parameters:
fraction- fraction of jobs to remove (0.0-1.0)- Returns:
- factory for time-related ruin
-
timeRelated
Time-related ruin with variable removal fraction.- Parameters:
minFraction- minimum fraction of jobs to removemaxFraction- maximum fraction of jobs to remove- Returns:
- factory for time-related ruin
-
timeRelated
public static RuinOperatorFactory timeRelated(double minFraction, double maxFraction, int minBound, int maxBound) Time-related ruin with fraction-based scaling and absolute bounds.- Parameters:
minFraction- minimum fraction of jobs to removemaxFraction- maximum fraction of jobs to removeminBound- absolute minimum jobs to remove (floor)maxBound- absolute maximum jobs to remove (ceiling)- Returns:
- factory for time-related ruin
-