diff --git a/optaplanner-core/src/main/java/org/optaplanner/core/config/localsearch/decider/acceptor/AcceptorConfig.java b/optaplanner-core/src/main/java/org/optaplanner/core/config/localsearch/decider/acceptor/AcceptorConfig.java
index f0bfcc31251..be8f5ad3963 100644
--- a/optaplanner-core/src/main/java/org/optaplanner/core/config/localsearch/decider/acceptor/AcceptorConfig.java
+++ b/optaplanner-core/src/main/java/org/optaplanner/core/config/localsearch/decider/acceptor/AcceptorConfig.java
@@ -505,8 +505,8 @@ public Acceptor buildAcceptor(HeuristicConfigPolicy configPolicy) {
+ ") currently requires a simulatedAnnealingStartingTemperature ("
+ simulatedAnnealingStartingTemperature + ").");
}
- acceptor.setStartingTemperature(configPolicy.getScoreDefinition()
- .parseScore(simulatedAnnealingStartingTemperature));
+ acceptor.setStartingTemperature(
+ configPolicy.getScoreDefinition().parseScore(simulatedAnnealingStartingTemperature));
acceptorList.add(acceptor);
}
if ((acceptorTypeList != null && acceptorTypeList.contains(AcceptorType.LATE_ACCEPTANCE))
@@ -520,25 +520,23 @@ public Acceptor buildAcceptor(HeuristicConfigPolicy configPolicy) {
|| greatDelugeWaterLevelIncrementScore != null
|| greatDelugeWaterLevelIncrementRatio != null) {
GreatDelugeAcceptor acceptor = new GreatDelugeAcceptor();
-
- if (greatDelugeWaterLevelIncrementScore != null && greatDelugeWaterLevelIncrementRatio != null) {
- throw new IllegalArgumentException("The greatDelugeWaterLevelIncrementScore ("
- + greatDelugeWaterLevelIncrementScore + ") and greatDelugeWaterLevelIncrementRatio ("
- + greatDelugeWaterLevelIncrementRatio + ") cannot be both non null.");
- }
-
if (greatDelugeInitialWaterLevel != null) {
- acceptor.setInitialWaterLevel(configPolicy.getScoreDefinition()
- .parseScore(greatDelugeInitialWaterLevel));
+ acceptor.setInitialWaterLevel(
+ configPolicy.getScoreDefinition().parseScore(greatDelugeInitialWaterLevel));
}
-
if (greatDelugeWaterLevelIncrementScore != null) {
- acceptor.setWaterLevelIncrementScore(configPolicy.getScoreDefinition()
- .parseScore(greatDelugeWaterLevelIncrementScore));
- }
-
- if (greatDelugeWaterLevelIncrementRatio != null) {
+ if (greatDelugeWaterLevelIncrementRatio != null) {
+ throw new IllegalArgumentException("The acceptor cannot have both "
+ + "greatDelugeWaterLevelIncrementScore (" + greatDelugeWaterLevelIncrementScore
+ + ") and greatDelugeWaterLevelIncrementRatio (" + greatDelugeWaterLevelIncrementRatio + ").");
+ }
+ acceptor.setWaterLevelIncrementScore(
+ configPolicy.getScoreDefinition().parseScore(greatDelugeWaterLevelIncrementScore));
+ } else if (greatDelugeWaterLevelIncrementRatio != null) {
acceptor.setWaterLevelIncrementRatio(greatDelugeWaterLevelIncrementRatio);
+ } else {
+ // Based on Tomas Muller's work. TODO Confirm with benchmarker across our examples/datasets
+ acceptor.setWaterLevelIncrementRatio(0.00_000_005);
}
acceptorList.add(acceptor);
}
diff --git a/optaplanner-core/src/main/java/org/optaplanner/core/impl/localsearch/decider/acceptor/greatdeluge/GreatDelugeAcceptor.java b/optaplanner-core/src/main/java/org/optaplanner/core/impl/localsearch/decider/acceptor/greatdeluge/GreatDelugeAcceptor.java
index b8ad5c02c37..70ccd78a1ae 100644
--- a/optaplanner-core/src/main/java/org/optaplanner/core/impl/localsearch/decider/acceptor/greatdeluge/GreatDelugeAcceptor.java
+++ b/optaplanner-core/src/main/java/org/optaplanner/core/impl/localsearch/decider/acceptor/greatdeluge/GreatDelugeAcceptor.java
@@ -9,13 +9,10 @@
public class GreatDelugeAcceptor extends AbstractAcceptor {
- // Good value to come out from. Source: https://github.com/UniTime/cpsolver from Tomas Muller
- private static final double DEFAULT_WATER_LEVEL_INCREMENT_RATIO = 0.00_000_005;
+ private Score initialWaterLevel;
- private Score initialWaterLevel = null;
-
- private Score waterLevelIncrementScore = null;
- private Double waterLevelIncrementRatio = DEFAULT_WATER_LEVEL_INCREMENT_RATIO;
+ private Score waterLevelIncrementScore;
+ private Double waterLevelIncrementRatio;
private Score currentWaterLevel = null;
@@ -50,7 +47,7 @@ public void phaseStarted(LocalSearchPhaseScope phaseScope) {
for (double initialLevelLevel : ScoreUtils.extractLevelDoubles(initialWaterLevel)) {
if (initialLevelLevel < 0.0) {
throw new IllegalArgumentException("The initial level (" + initialWaterLevel
- + ") cannot have negative level (" + initialLevelLevel + ").");
+ + ") cannot have negative level (" + initialLevelLevel + ").");
}
}
currentWaterLevel = initialWaterLevel;
@@ -62,7 +59,7 @@ public void phaseStarted(LocalSearchPhaseScope phaseScope) {
@Override
public void phaseEnded(LocalSearchPhaseScope phaseScope) {
super.phaseEnded(phaseScope);
- initialWaterLevel = null;
+ currentWaterLevel = null;
}
@Override
diff --git a/optaplanner-examples/src/main/resources/org/optaplanner/examples/cloudbalancing/optional/benchmark/cloudBalancingBenchmarkConfig.xml b/optaplanner-examples/src/main/resources/org/optaplanner/examples/cloudbalancing/optional/benchmark/cloudBalancingBenchmarkConfig.xml
index c869237ec4b..a0dd3cfcf4a 100644
--- a/optaplanner-examples/src/main/resources/org/optaplanner/examples/cloudbalancing/optional/benchmark/cloudBalancingBenchmarkConfig.xml
+++ b/optaplanner-examples/src/main/resources/org/optaplanner/examples/cloudbalancing/optional/benchmark/cloudBalancingBenchmarkConfig.xml
@@ -55,6 +55,94 @@
+
+ EVERY_LOCAL_SEARCH_TYPE
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -63,88 +151,4 @@
-
-
- First Fit
-
-
- FIRST_FIT
-
-
-
-
- First Fit Decreasing
-
-
- FIRST_FIT_DECREASING
-
-
-
-
-
- Tabu Search
-
-
- FIRST_FIT_DECREASING
-
-
-
-
-
-
-
-
-
- 7
-
-
- 1000
-
-
-
-
-
- Simulated Annealing
-
-
- FIRST_FIT_DECREASING
-
-
-
-
-
-
-
-
-
- 0hard/400soft
-
-
- 4
-
-
-
-
-
- Late Acceptance
-
-
- FIRST_FIT_DECREASING
-
-
-
-
-
-
-
-
-
- 400
-
-
- 4
-
-
-
-
diff --git a/optaplanner-examples/src/main/resources/org/optaplanner/examples/vehiclerouting/benchmark/vehicleRoutingBenchmarkConfig.xml b/optaplanner-examples/src/main/resources/org/optaplanner/examples/vehiclerouting/benchmark/vehicleRoutingBenchmarkConfig.xml
index 8baee292884..63a436e8e2d 100644
--- a/optaplanner-examples/src/main/resources/org/optaplanner/examples/vehiclerouting/benchmark/vehicleRoutingBenchmarkConfig.xml
+++ b/optaplanner-examples/src/main/resources/org/optaplanner/examples/vehiclerouting/benchmark/vehicleRoutingBenchmarkConfig.xml
@@ -12,97 +12,97 @@
data/vehiclerouting/import/belgium/basic/air/belgium-n500-k20.vrp
data/vehiclerouting/import/belgium/basic/air/belgium-n1000-k20.vrp
data/vehiclerouting/import/belgium/basic/air/belgium-n2750-k55.vrp
- data/vehiclerouting/import/belgium/basic/road-km/belgium-road-km-n50-k10.vrp
- data/vehiclerouting/import/belgium/basic/road-km/belgium-road-km-n100-k10.vrp
- data/vehiclerouting/import/belgium/basic/road-km/belgium-road-km-n500-k20.vrp
+
+
+
- data/vehiclerouting/import/belgium/basic/road-time/belgium-road-time-n50-k10.vrp
- data/vehiclerouting/import/belgium/basic/road-time/belgium-road-time-n100-k10.vrp
- data/vehiclerouting/import/belgium/basic/road-time/belgium-road-time-n500-k20.vrp
+
+
+
- data/vehiclerouting/import/usa/basic/air/usa-n100-k10.vrp
- data/vehiclerouting/import/usa/basic/air/usa-n500-k20.vrp
- data/vehiclerouting/import/usa/basic/air/usa-n1000-k20.vrp
- data/vehiclerouting/import/usa/basic/air/usa-n5000-k100.vrp
- data/vehiclerouting/import/usa/basic/air/usa-n10000-k100.vrp
- data/vehiclerouting/import/usa/basic/air/usa-n50000-k500.vrp
- data/vehiclerouting/import/usa/basic/air/usa-n100000-k500.vrp
+
+
+
+
+
+
+
- data/vehiclerouting/import/vrpweb/basic/air/A-n32-k5.vrp
- data/vehiclerouting/import/vrpweb/basic/air/A-n33-k5.vrp
- data/vehiclerouting/import/vrpweb/basic/air/A-n33-k6.vrp
- data/vehiclerouting/import/vrpweb/basic/air/A-n34-k5.vrp
- data/vehiclerouting/import/vrpweb/basic/air/A-n36-k5.vrp
- data/vehiclerouting/import/vrpweb/basic/air/A-n37-k5.vrp
- data/vehiclerouting/import/vrpweb/basic/air/A-n37-k6.vrp
- data/vehiclerouting/import/vrpweb/basic/air/A-n38-k5.vrp
- data/vehiclerouting/import/vrpweb/basic/air/A-n39-k5.vrp
- data/vehiclerouting/import/vrpweb/basic/air/A-n39-k6.vrp
- data/vehiclerouting/import/vrpweb/basic/air/A-n44-k7.vrp
- data/vehiclerouting/import/vrpweb/basic/air/A-n45-k6.vrp
- data/vehiclerouting/import/vrpweb/basic/air/A-n45-k7.vrp
- data/vehiclerouting/import/vrpweb/basic/air/A-n46-k7.vrp
- data/vehiclerouting/import/vrpweb/basic/air/A-n48-k7.vrp
- data/vehiclerouting/import/vrpweb/basic/air/A-n53-k7.vrp
- data/vehiclerouting/import/vrpweb/basic/air/A-n54-k7.vrp
- data/vehiclerouting/import/vrpweb/basic/air/A-n55-k9.vrp
- data/vehiclerouting/import/vrpweb/basic/air/A-n60-k9.vrp
- data/vehiclerouting/import/vrpweb/basic/air/A-n61-k9.vrp
- data/vehiclerouting/import/vrpweb/basic/air/A-n62-k8.vrp
- data/vehiclerouting/import/vrpweb/basic/air/A-n63-k10.vrp
- data/vehiclerouting/import/vrpweb/basic/air/A-n63-k9.vrp
- data/vehiclerouting/import/vrpweb/basic/air/A-n64-k9.vrp
- data/vehiclerouting/import/vrpweb/basic/air/A-n65-k9.vrp
- data/vehiclerouting/import/vrpweb/basic/air/A-n69-k9.vrp
- data/vehiclerouting/import/vrpweb/basic/air/A-n80-k10.vrp
- data/vehiclerouting/import/vrpweb/basic/air/F-n135-k7.vrp
- data/vehiclerouting/import/vrpweb/basic/air/F-n45-k4.vrp
- data/vehiclerouting/import/vrpweb/basic/air/F-n72-k4.vrp
- data/vehiclerouting/import/vrpweb/timewindowed/air/Solomon_025_C101.vrp
- data/vehiclerouting/import/vrpweb/timewindowed/air/Solomon_025_C201.vrp
- data/vehiclerouting/import/vrpweb/timewindowed/air/Solomon_025_R101.vrp
- data/vehiclerouting/import/vrpweb/timewindowed/air/Solomon_025_R201.vrp
- data/vehiclerouting/import/vrpweb/timewindowed/air/Solomon_025_RC101.vrp
- data/vehiclerouting/import/vrpweb/timewindowed/air/Solomon_025_RC201.vrp
- data/vehiclerouting/import/vrpweb/timewindowed/air/Solomon_100_C101.vrp
- data/vehiclerouting/import/vrpweb/timewindowed/air/Solomon_100_C201.vrp
- data/vehiclerouting/import/vrpweb/timewindowed/air/Solomon_100_R101.vrp
- data/vehiclerouting/import/vrpweb/timewindowed/air/Solomon_100_R201.vrp
- data/vehiclerouting/import/vrpweb/timewindowed/air/Solomon_100_RC101.vrp
- data/vehiclerouting/import/vrpweb/timewindowed/air/Solomon_100_RC201.vrp
- data/vehiclerouting/import/vrpweb/timewindowed/air/Homberger_0200_C1_2_1.vrp
- data/vehiclerouting/import/vrpweb/timewindowed/air/Homberger_0200_C2_2_1.vrp
- data/vehiclerouting/import/vrpweb/timewindowed/air/Homberger_0200_R1_2_1.vrp
- data/vehiclerouting/import/vrpweb/timewindowed/air/Homberger_0200_R2_2_1.vrp
- data/vehiclerouting/import/vrpweb/timewindowed/air/Homberger_0200_RC1_2_1.vrp
- data/vehiclerouting/import/vrpweb/timewindowed/air/Homberger_0200_RC2_2_1.vrp
- data/vehiclerouting/import/vrpweb/timewindowed/air/Homberger_0400_C1_4_1.vrp
- data/vehiclerouting/import/vrpweb/timewindowed/air/Homberger_0400_C2_4_1.vrp
- data/vehiclerouting/import/vrpweb/timewindowed/air/Homberger_0400_R1_4_1.vrp
- data/vehiclerouting/import/vrpweb/timewindowed/air/Homberger_0400_R2_4_1.vrp
- data/vehiclerouting/import/vrpweb/timewindowed/air/Homberger_0400_RC1_4_1.vrp
- data/vehiclerouting/import/vrpweb/timewindowed/air/Homberger_0400_RC2_4_1.vrp
- data/vehiclerouting/import/vrpweb/timewindowed/air/Homberger_0600_C1_6_1.vrp
- data/vehiclerouting/import/vrpweb/timewindowed/air/Homberger_0600_C2_6_1.vrp
- data/vehiclerouting/import/vrpweb/timewindowed/air/Homberger_0600_R1_6_1.vrp
- data/vehiclerouting/import/vrpweb/timewindowed/air/Homberger_0600_R2_6_1.vrp
- data/vehiclerouting/import/vrpweb/timewindowed/air/Homberger_0600_RC2_6_1.vrp
- data/vehiclerouting/import/vrpweb/timewindowed/air/Homberger_0600_RC1_6_1.vrp
- data/vehiclerouting/import/vrpweb/timewindowed/air/Homberger_0800_C1_8_1.vrp
- data/vehiclerouting/import/vrpweb/timewindowed/air/Homberger_0800_C2_8_1.vrp
- data/vehiclerouting/import/vrpweb/timewindowed/air/Homberger_0800_R1_8_1.vrp
- data/vehiclerouting/import/vrpweb/timewindowed/air/Homberger_0800_R2_8_1.vrp
- data/vehiclerouting/import/vrpweb/timewindowed/air/Homberger_0800_RC1_8_1.vrp
- data/vehiclerouting/import/vrpweb/timewindowed/air/Homberger_0800_RC2_8_1.vrp
- data/vehiclerouting/import/vrpweb/timewindowed/air/Homberger_1000_C110_1.vrp
- data/vehiclerouting/import/vrpweb/timewindowed/air/Homberger_1000_C210_1.vrp
- data/vehiclerouting/import/vrpweb/timewindowed/air/Homberger_1000_R110_1.vrp
- data/vehiclerouting/import/vrpweb/timewindowed/air/Homberger_1000_R210_1.vrp
- data/vehiclerouting/import/vrpweb/timewindowed/air/Homberger_1000_RC110_1.vrp
- data/vehiclerouting/import/vrpweb/timewindowed/air/Homberger_1000_RC210_1.vrp
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -134,6 +134,10 @@
+
+
+
+
First Fit