From 5ab2ab7bf73726ee0ddfcceaf32488834d214a54 Mon Sep 17 00:00:00 2001
From: cprudhom
Date: Mon, 21 Aug 2023 15:21:20 +0200
Subject: [PATCH 1/6] Add frequency + fallback value selector
---
.../selectors/values/IntDomainBest.java | 45 ++++++++++++++++---
1 file changed, 39 insertions(+), 6 deletions(-)
diff --git a/solver/src/main/java/org/chocosolver/solver/search/strategy/selectors/values/IntDomainBest.java b/solver/src/main/java/org/chocosolver/solver/search/strategy/selectors/values/IntDomainBest.java
index 81790068cc..98c8510e55 100644
--- a/solver/src/main/java/org/chocosolver/solver/search/strategy/selectors/values/IntDomainBest.java
+++ b/solver/src/main/java/org/chocosolver/solver/search/strategy/selectors/values/IntDomainBest.java
@@ -43,6 +43,10 @@ public final class IntDomainBest implements IntValueSelector {
*/
private final BiPredicate condition;
+ private final IntValueSelector fallbackValueSelector;
+
+ private final int frequency;
+
/**
* Create a value selector that returns the best value wrt to the objective to optimize.
* When an enumerated variable domain exceeds {@link #maxdom}, only bounds are considered.
@@ -54,14 +58,40 @@ public final class IntDomainBest implements IntValueSelector {
* is kept.
*
*
- * @param maxdom a maximum domain size to satisfy to use this value selector.
- * @param dop the decision operator used to make the decision
- * @param condition predicate to break ties
+ * @param maxdom a maximum domain size to satisfy to use this value selector
+ * @param intValueSelector fallback value selector
+ * @param frequency the frequency of application of the best value selector.
+ * If f is the value indicated, the selector will be applied when restarts mod f = 0.
+ * In the other case, the fallback value selector is applied.
+ * @param dop the decision operator used to make the decision
+ * @param condition predicate to break ties
*/
- public IntDomainBest(int maxdom, DecisionOperator dop, BiPredicate condition) {
+ public IntDomainBest(int maxdom, IntValueSelector intValueSelector, int frequency, DecisionOperator dop, BiPredicate condition) {
this.maxdom = maxdom;
this.dop = dop;
this.condition = condition;
+ this.fallbackValueSelector = intValueSelector;
+ this.frequency = frequency;
+ }
+
+ /**
+ * Create a value selector that returns the best value wrt to the objective to optimize.
+ * When an enumerated variable domain exceeds {@link #maxdom}, only bounds are considered.
+ *
+ *
+ * {@code condition} is called when the evaluated {@code value} returns a score
+ * equals to the current best one. In that case, if {@code condition} returns {@code true}
+ * then {@code value} is retained as the new best candidate, otherwise the previous one
+ * is kept.
+ *
+ *
+ * @param intValueSelector fallback value selector
+ * @param frequency the frequency of applying best value selector.
+ * If f is the value indicated, the selector will be applied when restarts mod f = 0.
+ * In the other case, the fallback value selector is applied.
+ */
+ public IntDomainBest(IntValueSelector intValueSelector, int frequency) {
+ this(100, intValueSelector, frequency, DecisionOperatorFactory.makeIntEq(), (k, v) -> false);
}
/**
@@ -78,7 +108,7 @@ public IntDomainBest(int maxdom, DecisionOperator dop, BiPredicate condition) {
- this(100, DecisionOperatorFactory.makeIntEq(), condition);
+ this(100, new IntDomainMin(), 16, DecisionOperatorFactory.makeIntEq(), condition);
}
@@ -88,7 +118,7 @@ public IntDomainBest(BiPredicate condition) {
* Always-false condition is set by default.
*/
public IntDomainBest() {
- this(100, DecisionOperatorFactory.makeIntEq(), (k, v) -> false);
+ this(100, new IntDomainMin(), 16, DecisionOperatorFactory.makeIntEq(), (k, v) -> false);
}
/**
@@ -96,6 +126,9 @@ public IntDomainBest() {
*/
@Override
public int selectValue(IntVar var) {
+ if (var.getModel().getSolver().getRestartCount() % frequency > 0) {
+ return fallbackValueSelector.selectValue(var);
+ }
assert var.getModel().getObjective() != null;
if (var.hasEnumeratedDomain() && var.getDomainSize() < maxdom) {
int bestCost = Integer.MAX_VALUE;
From fd543b6623c92c62ab67669dfcd9af6c7f0eb573 Mon Sep 17 00:00:00 2001
From: cprudhom
Date: Mon, 21 Aug 2023 15:33:18 +0200
Subject: [PATCH 2/6] Add contract on plugging restart in
---
solver/src/main/java/org/chocosolver/solver/Solver.java | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/solver/src/main/java/org/chocosolver/solver/Solver.java b/solver/src/main/java/org/chocosolver/solver/Solver.java
index 5ee9740acd..4218e03d2f 100644
--- a/solver/src/main/java/org/chocosolver/solver/Solver.java
+++ b/solver/src/main/java/org/chocosolver/solver/Solver.java
@@ -1162,8 +1162,10 @@ public void setPropagate(Propagate p) {
* @see #clearRestarter()
*/
public void addRestarter(AbstractRestart restarter) {
- restarter.setNext(this.restarter);
- this.restarter = restarter;
+ if(restarter != AbstractRestart.NO_RESTART) {
+ restarter.setNext(this.restarter);
+ this.restarter = restarter;
+ }
}
/**
From 2b04db5b0782d5ea2d6e2b56a8805297745ceb6b Mon Sep 17 00:00:00 2001
From: cprudhom
Date: Mon, 21 Aug 2023 16:06:57 +0200
Subject: [PATCH 3/6] Fix tests related to
bf07cc720ec0c591ab7616bf6953b5c5c8936969
---
parsers/src/test/resources/xcsp/instances.csv | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/parsers/src/test/resources/xcsp/instances.csv b/parsers/src/test/resources/xcsp/instances.csv
index dfe02ed210..66657493f9 100644
--- a/parsers/src/test/resources/xcsp/instances.csv
+++ b/parsers/src/test/resources/xcsp/instances.csv
@@ -19,7 +19,7 @@ basics;CryptoPuzzle-cross-roads-danger.xml.lzma;1;_;6;1
basics;Cutstock-small.xml.lzma;1;4;10;9
basics;Domino-300-300.xml.lzma;1;_;1;0
basics;driverlogw-09.xml.lzma;1;_;2738;2649
-basics;Fapp-m2s-ex2_c18.xml.lzma;5;13871;108;99
+basics;Fapp-m2s-ex2_c18.xml.lzma;5;13871;167;158
basics;Filters-dct_2_3.xml.lzma;17;16;55552;53838
basics;FlexibleJobshop-easy01.xml.lzma;94;253;768;565
basics;FlexibleJobshop-easy02.xml.lzma;27;11;4486;4057
@@ -68,11 +68,11 @@ basics;QuadraticAssignment-qap.xml.lzma;10;4776;945;924
basics;QuasiGroup-3-04.xml.lzma;1;_;2;0
basics;QuasiGroup-7-09.xml.lzma;1;_;419;410
basics;QueenAttacking-06.xml.lzma;3;0;18563;18240
-basics;Queens-0008-m1.xml.lzma;1;_;120;116
+basics;Queens-0008-m1.xml.lzma;1;_;6;0
basics;RadarSurveillance-8-24-3-2-00.xml.lzma;1;_;75;4
basics;Ramsey-12.xml.lzma;3;2;13885;13107
basics;Rcpsp-j30-01-01_c18.xml.lzma;7;43;159;146
-basics;Rlfap-graph-04-opt_c18.xml.lzma;1;394;236;235
+basics;Rlfap-graph-04-opt_c18.xml.lzma;1;394;197;196
basics;RoomMate-sr0050-int.xml.lzma;1;_;6;4
basics;SocialGolfers-4-3-4-cp.xml.lzma;1;_;55;38
basics;Sonet-s2ring02.xml.lzma;7;14;459188;454754
@@ -102,4 +102,4 @@ basics;TestSchedulingM18-t30m10r3-15.xml.lzma;93;4149;3450;2650
basics;Tpp-3-3-20-1.xml.lzma;5;126;87;78
basics;TravelingTournament-a3-galaxy04_c18.xml.lzma;4;416;4180;4139
basics;Warehouse-opl.xml.lzma;1;383;568;557
-basics;Zebra.xml.lzma;1;_;13;6
\ No newline at end of file
+basics;Zebra.xml.lzma;1;_;9;3
\ No newline at end of file
From 76d53c652bfac2adcd5f694e3524db046215a922 Mon Sep 17 00:00:00 2001
From: cprudhom
Date: Mon, 21 Aug 2023 16:39:38 +0200
Subject: [PATCH 4/6] Replace frequency (int) by a Function +
add javadoc
---
.../selectors/values/IntDomainBest.java | 51 ++++++++++++++-----
1 file changed, 37 insertions(+), 14 deletions(-)
diff --git a/solver/src/main/java/org/chocosolver/solver/search/strategy/selectors/values/IntDomainBest.java b/solver/src/main/java/org/chocosolver/solver/search/strategy/selectors/values/IntDomainBest.java
index 98c8510e55..d28d467564 100644
--- a/solver/src/main/java/org/chocosolver/solver/search/strategy/selectors/values/IntDomainBest.java
+++ b/solver/src/main/java/org/chocosolver/solver/search/strategy/selectors/values/IntDomainBest.java
@@ -18,6 +18,7 @@
import org.chocosolver.solver.variables.IntVar;
import java.util.function.BiPredicate;
+import java.util.function.Function;
/**
* Value selector for optimization problems:
@@ -45,7 +46,7 @@ public final class IntDomainBest implements IntValueSelector {
private final IntValueSelector fallbackValueSelector;
- private final int frequency;
+ private final Function trigger;
/**
* Create a value selector that returns the best value wrt to the objective to optimize.
@@ -60,18 +61,18 @@ public final class IntDomainBest implements IntValueSelector {
*
* @param maxdom a maximum domain size to satisfy to use this value selector
* @param intValueSelector fallback value selector
- * @param frequency the frequency of application of the best value selector.
- * If f is the value indicated, the selector will be applied when restarts mod f = 0.
- * In the other case, the fallback value selector is applied.
+ * @param trigger the function that indicates when the best value selector is applied.
+ * When it returns true, the best value selector is applied.
+ * Otherwise, the fallback value selector is applied.
* @param dop the decision operator used to make the decision
* @param condition predicate to break ties
*/
- public IntDomainBest(int maxdom, IntValueSelector intValueSelector, int frequency, DecisionOperator dop, BiPredicate condition) {
+ public IntDomainBest(int maxdom, IntValueSelector intValueSelector, Function trigger, DecisionOperator dop, BiPredicate condition) {
this.maxdom = maxdom;
this.dop = dop;
this.condition = condition;
this.fallbackValueSelector = intValueSelector;
- this.frequency = frequency;
+ this.trigger = trigger;
}
/**
@@ -86,12 +87,12 @@ public IntDomainBest(int maxdom, IntValueSelector intValueSelector, int frequenc
*
*
* @param intValueSelector fallback value selector
- * @param frequency the frequency of applying best value selector.
- * If f is the value indicated, the selector will be applied when restarts mod f = 0.
- * In the other case, the fallback value selector is applied.
+ * @param trigger the function that indicates when the best value selector is applied.
+ * When it returns true, the best value selector is applied.
+ * Otherwise, the fallback value selector is applied.
*/
- public IntDomainBest(IntValueSelector intValueSelector, int frequency) {
- this(100, intValueSelector, frequency, DecisionOperatorFactory.makeIntEq(), (k, v) -> false);
+ public IntDomainBest(IntValueSelector intValueSelector, Function trigger) {
+ this(100, intValueSelector, trigger, DecisionOperatorFactory.makeIntEq(), (k, v) -> false);
}
/**
@@ -106,9 +107,19 @@ public IntDomainBest(IntValueSelector intValueSelector, int frequency) {
*
*
* @param condition predicate to break ties
+ * @apiNote The default values are:
+ *
+ * - maxdom is set to 100
+ * - the trigger is set to restart count % 16 == 0
+ * - the decision operator is set to '='
+ *
*/
public IntDomainBest(BiPredicate condition) {
- this(100, new IntDomainMin(), 16, DecisionOperatorFactory.makeIntEq(), condition);
+ this(100,
+ new IntDomainMin(),
+ v -> v.getModel().getSolver().getRestartCount() % 16 == 0,
+ DecisionOperatorFactory.makeIntEq(),
+ condition);
}
@@ -116,9 +127,21 @@ public IntDomainBest(BiPredicate condition) {
* Create a value selector for assignments that returns the best value wrt to the objective to
* optimize. When an enumerated variable domain exceeds 100, only bounds are considered.
* Always-false condition is set by default.
+ *
+ * @apiNote The default values are:
+ *
+ * - maxdom is set to 100
+ * - the trigger is set to restart count % 16 == 0
+ * - the decision operator is set to '='
+ * - the predicate to break ties is lexico
+ *
*/
public IntDomainBest() {
- this(100, new IntDomainMin(), 16, DecisionOperatorFactory.makeIntEq(), (k, v) -> false);
+ this(100,
+ new IntDomainMin(),
+ v -> v.getModel().getSolver().getRestartCount() % 16 == 0,
+ DecisionOperatorFactory.makeIntEq(),
+ (k, v) -> false);
}
/**
@@ -126,7 +149,7 @@ public IntDomainBest() {
*/
@Override
public int selectValue(IntVar var) {
- if (var.getModel().getSolver().getRestartCount() % frequency > 0) {
+ if (!trigger.apply(var)) {
return fallbackValueSelector.selectValue(var);
}
assert var.getModel().getObjective() != null;
From 521c4a31d7b7407cd9e3fece2915c904b0f7848c Mon Sep 17 00:00:00 2001
From: cprudhom
Date: Mon, 21 Aug 2023 17:45:47 +0200
Subject: [PATCH 5/6] Adapt test results to changes
---
parsers/src/test/resources/xcsp/instances.csv | 50 +++++++++----------
1 file changed, 25 insertions(+), 25 deletions(-)
diff --git a/parsers/src/test/resources/xcsp/instances.csv b/parsers/src/test/resources/xcsp/instances.csv
index 66657493f9..71dff7e77b 100644
--- a/parsers/src/test/resources/xcsp/instances.csv
+++ b/parsers/src/test/resources/xcsp/instances.csv
@@ -3,14 +3,14 @@ basics;Allergy.xml.lzma;1;_;1;0
basics;AllInterval-005.xml.lzma;1;_;13;9
basics;Auction-cnt-example_c18.xml.lzma;2;54;7;4
basics;Auction-sum-example_c18.xml.lzma;2;54;6;3
-basics;Bacp-m1-06_c18.xml.lzma;3;10;38111;37700
-basics;Bacp-m2-06_c18.xml.lzma;3;10;152931;151070
+basics;Bacp-m1-06_c18.xml.lzma;3;10;39219;38817
+basics;Bacp-m2-06_c18.xml.lzma;3;10;248257;245681
basics;Bibd-sc-06-050-25-03-10.xml.lzma;1;_;714;666
basics;Bibd-sum-06-050-25-03-10.xml.lzma;1;_;498;462
basics;Blackhole-04-3-00.xml.lzma;1;_;11;0
basics;BusScheduling-cnt-t1.xml.lzma;1;7;334;333
basics;CarSequencing-dingbas.xml.lzma;1;_;23;16
-basics;ChessboardColoration-07-07.xml.lzma;2;2;1958;1909
+basics;ChessboardColoration-07-07.xml.lzma;2;2;2066;2016
basics;ColouredQueens-07.xml.lzma;1;_;90;78
basics;CostasArray-12.xml.lzma;1;_;47;39
basics;Crossword-lex-vg-5-6.xml.lzma;1;_;10701;10543
@@ -20,12 +20,12 @@ basics;Cutstock-small.xml.lzma;1;4;10;9
basics;Domino-300-300.xml.lzma;1;_;1;0
basics;driverlogw-09.xml.lzma;1;_;2738;2649
basics;Fapp-m2s-ex2_c18.xml.lzma;5;13871;167;158
-basics;Filters-dct_2_3.xml.lzma;17;16;55552;53838
-basics;FlexibleJobshop-easy01.xml.lzma;94;253;768;565
-basics;FlexibleJobshop-easy02.xml.lzma;27;11;4486;4057
+basics;Filters-dct_2_3.xml.lzma;21;16;133996;127366
+basics;FlexibleJobshop-easy01.xml.lzma;94;253;778;575
+basics;FlexibleJobshop-easy02.xml.lzma;27;11;2891;2544
basics;Furniture.xml.lzma;1;603;21;20
basics;GracefulGraph-K02-P04.xml.lzma;1;_;73;64
-basics;GraphColoring-3-fullins-4.xml.lzma;1;6;22854;22403
+basics;GraphColoring-3-fullins-4.xml.lzma;1;6;22143;21706
basics;GraphColoring-qwhdec-o5-h10-1.xml.lzma;1;4;1;0
basics;Hanoi-05.xml.lzma;1;_;31;0
basics;Kakuro-easy-000-ext.xml.lzma;1;_;1;0
@@ -41,11 +41,11 @@ basics;MagicSequence-008-co.xml.lzma;1;_;5;1
basics;MagicSquare-4-table.xml.lzma;1;_;20;13
basics;MagicSquare-6-mdd.xml.lzma;1;_;693;662
basics;MagicSquare-6-sum.xml.lzma;1;_;960;928
-basics;Mapping-full2x2_mp3.xml.lzma;4;1100;1815;1722
-basics;Mario-easy-4.xml.lzma;4;545;1913;1883
+basics;Mapping-full2x2_mp3.xml.lzma;4;1100;1780;1684
+basics;Mario-easy-4.xml.lzma;4;545;2193;2163
basics;MarketSplit-01.xml.lzma;1;_;1243457;1236746
basics;MSPSP-easy_01.xml.lzma;5;26;281;272
-basics;MSPSP-hard_01.xml.lzma;22;35;1792;1703
+basics;MSPSP-hard_01.xml.lzma;21;35;1001;939
basics;MultiKnapsack-1-0_X2.xml.lzma;1;_;2;0
basics;MultiKnapsack-1-01.xml.lzma;1;_;2;0
basics;NFC-12_2_10.xml.lzma;1;848;12;11
@@ -58,24 +58,24 @@ basics;Ortholatin-005.xml.lzma;1;_;10;0
basics;Pb-gr-05.xml.lzma;5;11;703;685
basics;Pb-robin08.xml.lzma;1;_;2395;1438
basics;PeacableArmies-m1-05_c18.xml.lzma;3;4;3074;3020
-basics;PeacableArmies-m2-05_c18.xml.lzma;5;4;2058;2017
-basics;PizzaVoucher-10a_c18.xml.lzma;8;210;36531;36289
+basics;PeacableArmies-m2-05_c18.xml.lzma;5;4;2002;1953
+basics;PizzaVoucher-10a_c18.xml.lzma;8;210;39022;38777
basics;Primes-15-20-2-1.xml.lzma;1;_;7;0
-basics;PrizeCollecting-15-3-5-0.xml.lzma;4;20;1635;1590
+basics;PrizeCollecting-15-3-5-0.xml.lzma;7;20;1518;1480
basics;qcp-15-120-00_X2.xml.lzma;1;_;484;458
-basics;QuadraticAssignment-qap_c18.xml.lzma;10;4776;945;924
-basics;QuadraticAssignment-qap.xml.lzma;10;4776;945;924
+basics;QuadraticAssignment-qap_c18.xml.lzma;10;4776;1018;997
+basics;QuadraticAssignment-qap.xml.lzma;10;4776;1018;997
basics;QuasiGroup-3-04.xml.lzma;1;_;2;0
basics;QuasiGroup-7-09.xml.lzma;1;_;419;410
-basics;QueenAttacking-06.xml.lzma;3;0;18563;18240
+basics;QueenAttacking-06.xml.lzma;3;0;11455;11251
basics;Queens-0008-m1.xml.lzma;1;_;6;0
basics;RadarSurveillance-8-24-3-2-00.xml.lzma;1;_;75;4
-basics;Ramsey-12.xml.lzma;3;2;13885;13107
+basics;Ramsey-12.xml.lzma;3;2;42073;40593
basics;Rcpsp-j30-01-01_c18.xml.lzma;7;43;159;146
basics;Rlfap-graph-04-opt_c18.xml.lzma;1;394;197;196
basics;RoomMate-sr0050-int.xml.lzma;1;_;6;4
basics;SocialGolfers-4-3-4-cp.xml.lzma;1;_;55;38
-basics;Sonet-s2ring02.xml.lzma;7;14;459188;454754
+basics;Sonet-s2ring02.xml.lzma;7;14;857492;849368
basics;SportsScheduling-08.xml.lzma;1;_;3220;3154
basics;SteelMillSlab-m1-simple_c18.xml.lzma;4;0;86;79
basics;SteelMillSlab-m2-simple_c18.xml.lzma;4;0;124;117
@@ -85,11 +85,11 @@ basics;StillLife-wastage-03.xml.lzma;3;6;22;17
basics;StripPacking-C1P1.xml.lzma;1;_;7948;7731
basics;Subisomorphism-A-10.xml.lzma;1;_;18;16
basics;Sudoku-s01a-alldiff.xml.lzma;1;_;1;0
-basics;SumColoring-myciel4_c18.xml.lzma;5;22;27017;26883
-basics;Taillard-os-04-04-0.xml.lzma;19;193;15620;15434
+basics;SumColoring-myciel4_c18.xml.lzma;5;22;5446;5399
+basics;Taillard-os-04-04-0.xml.lzma;20;193;10826;10683
basics;Tal-01_c18.xml.lzma;1;6;4;3
-basics;TeamAssignment-data1_4_6.xml.lzma;19;2948;5684;5599
-basics;TeamAssignment-data1_4_6.xml.lzma;19;2948;5684;5599
+basics;TeamAssignment-data1_4_6.xml.lzma;21;2948;4211;4138
+basics;TeamAssignment-data1_4_6.xml.lzma;21;2948;4211;4138
basics;TemplateDesign-m1-1_c18.xml.lzma;1;2;10;9
basics;TemplateDesign-m1s-1_c18.xml.lzma;1;2;12;11
basics;TemplateDesign-m2-1_c18.xml.lzma;1;2;10;9
@@ -98,8 +98,8 @@ basics;testExtension2.xml.lzma;1;_;4;0
basics;testExtension3.xml.lzma;0;_;15;16
basics;testObjective1.xml.lzma;3;11;11;6
basics;testPrimitive.xml.lzma;1;_;3;1
-basics;TestSchedulingM18-t30m10r3-15.xml.lzma;93;4149;3450;2650
+basics;TestSchedulingM18-t30m10r3-15.xml.lzma;27;4149;1959;1500
basics;Tpp-3-3-20-1.xml.lzma;5;126;87;78
-basics;TravelingTournament-a3-galaxy04_c18.xml.lzma;4;416;4180;4139
-basics;Warehouse-opl.xml.lzma;1;383;568;557
+basics;TravelingTournament-a3-galaxy04_c18.xml.lzma;4;416;4553;4516
+basics;Warehouse-opl.xml.lzma;10;383;573;544
basics;Zebra.xml.lzma;1;_;9;3
\ No newline at end of file
From 37f37a11a14e048dd1c41dd0905cf3c0692b2d62 Mon Sep 17 00:00:00 2001
From: cprudhom
Date: Wed, 23 Aug 2023 09:24:57 +0200
Subject: [PATCH 6/6] Restore default behavior of IntDomainBest, that is, to
always applies it
---
parsers/src/test/resources/xcsp/instances.csv | 50 +++++++++----------
.../selectors/values/IntDomainBest.java | 4 +-
2 files changed, 27 insertions(+), 27 deletions(-)
diff --git a/parsers/src/test/resources/xcsp/instances.csv b/parsers/src/test/resources/xcsp/instances.csv
index 71dff7e77b..66657493f9 100644
--- a/parsers/src/test/resources/xcsp/instances.csv
+++ b/parsers/src/test/resources/xcsp/instances.csv
@@ -3,14 +3,14 @@ basics;Allergy.xml.lzma;1;_;1;0
basics;AllInterval-005.xml.lzma;1;_;13;9
basics;Auction-cnt-example_c18.xml.lzma;2;54;7;4
basics;Auction-sum-example_c18.xml.lzma;2;54;6;3
-basics;Bacp-m1-06_c18.xml.lzma;3;10;39219;38817
-basics;Bacp-m2-06_c18.xml.lzma;3;10;248257;245681
+basics;Bacp-m1-06_c18.xml.lzma;3;10;38111;37700
+basics;Bacp-m2-06_c18.xml.lzma;3;10;152931;151070
basics;Bibd-sc-06-050-25-03-10.xml.lzma;1;_;714;666
basics;Bibd-sum-06-050-25-03-10.xml.lzma;1;_;498;462
basics;Blackhole-04-3-00.xml.lzma;1;_;11;0
basics;BusScheduling-cnt-t1.xml.lzma;1;7;334;333
basics;CarSequencing-dingbas.xml.lzma;1;_;23;16
-basics;ChessboardColoration-07-07.xml.lzma;2;2;2066;2016
+basics;ChessboardColoration-07-07.xml.lzma;2;2;1958;1909
basics;ColouredQueens-07.xml.lzma;1;_;90;78
basics;CostasArray-12.xml.lzma;1;_;47;39
basics;Crossword-lex-vg-5-6.xml.lzma;1;_;10701;10543
@@ -20,12 +20,12 @@ basics;Cutstock-small.xml.lzma;1;4;10;9
basics;Domino-300-300.xml.lzma;1;_;1;0
basics;driverlogw-09.xml.lzma;1;_;2738;2649
basics;Fapp-m2s-ex2_c18.xml.lzma;5;13871;167;158
-basics;Filters-dct_2_3.xml.lzma;21;16;133996;127366
-basics;FlexibleJobshop-easy01.xml.lzma;94;253;778;575
-basics;FlexibleJobshop-easy02.xml.lzma;27;11;2891;2544
+basics;Filters-dct_2_3.xml.lzma;17;16;55552;53838
+basics;FlexibleJobshop-easy01.xml.lzma;94;253;768;565
+basics;FlexibleJobshop-easy02.xml.lzma;27;11;4486;4057
basics;Furniture.xml.lzma;1;603;21;20
basics;GracefulGraph-K02-P04.xml.lzma;1;_;73;64
-basics;GraphColoring-3-fullins-4.xml.lzma;1;6;22143;21706
+basics;GraphColoring-3-fullins-4.xml.lzma;1;6;22854;22403
basics;GraphColoring-qwhdec-o5-h10-1.xml.lzma;1;4;1;0
basics;Hanoi-05.xml.lzma;1;_;31;0
basics;Kakuro-easy-000-ext.xml.lzma;1;_;1;0
@@ -41,11 +41,11 @@ basics;MagicSequence-008-co.xml.lzma;1;_;5;1
basics;MagicSquare-4-table.xml.lzma;1;_;20;13
basics;MagicSquare-6-mdd.xml.lzma;1;_;693;662
basics;MagicSquare-6-sum.xml.lzma;1;_;960;928
-basics;Mapping-full2x2_mp3.xml.lzma;4;1100;1780;1684
-basics;Mario-easy-4.xml.lzma;4;545;2193;2163
+basics;Mapping-full2x2_mp3.xml.lzma;4;1100;1815;1722
+basics;Mario-easy-4.xml.lzma;4;545;1913;1883
basics;MarketSplit-01.xml.lzma;1;_;1243457;1236746
basics;MSPSP-easy_01.xml.lzma;5;26;281;272
-basics;MSPSP-hard_01.xml.lzma;21;35;1001;939
+basics;MSPSP-hard_01.xml.lzma;22;35;1792;1703
basics;MultiKnapsack-1-0_X2.xml.lzma;1;_;2;0
basics;MultiKnapsack-1-01.xml.lzma;1;_;2;0
basics;NFC-12_2_10.xml.lzma;1;848;12;11
@@ -58,24 +58,24 @@ basics;Ortholatin-005.xml.lzma;1;_;10;0
basics;Pb-gr-05.xml.lzma;5;11;703;685
basics;Pb-robin08.xml.lzma;1;_;2395;1438
basics;PeacableArmies-m1-05_c18.xml.lzma;3;4;3074;3020
-basics;PeacableArmies-m2-05_c18.xml.lzma;5;4;2002;1953
-basics;PizzaVoucher-10a_c18.xml.lzma;8;210;39022;38777
+basics;PeacableArmies-m2-05_c18.xml.lzma;5;4;2058;2017
+basics;PizzaVoucher-10a_c18.xml.lzma;8;210;36531;36289
basics;Primes-15-20-2-1.xml.lzma;1;_;7;0
-basics;PrizeCollecting-15-3-5-0.xml.lzma;7;20;1518;1480
+basics;PrizeCollecting-15-3-5-0.xml.lzma;4;20;1635;1590
basics;qcp-15-120-00_X2.xml.lzma;1;_;484;458
-basics;QuadraticAssignment-qap_c18.xml.lzma;10;4776;1018;997
-basics;QuadraticAssignment-qap.xml.lzma;10;4776;1018;997
+basics;QuadraticAssignment-qap_c18.xml.lzma;10;4776;945;924
+basics;QuadraticAssignment-qap.xml.lzma;10;4776;945;924
basics;QuasiGroup-3-04.xml.lzma;1;_;2;0
basics;QuasiGroup-7-09.xml.lzma;1;_;419;410
-basics;QueenAttacking-06.xml.lzma;3;0;11455;11251
+basics;QueenAttacking-06.xml.lzma;3;0;18563;18240
basics;Queens-0008-m1.xml.lzma;1;_;6;0
basics;RadarSurveillance-8-24-3-2-00.xml.lzma;1;_;75;4
-basics;Ramsey-12.xml.lzma;3;2;42073;40593
+basics;Ramsey-12.xml.lzma;3;2;13885;13107
basics;Rcpsp-j30-01-01_c18.xml.lzma;7;43;159;146
basics;Rlfap-graph-04-opt_c18.xml.lzma;1;394;197;196
basics;RoomMate-sr0050-int.xml.lzma;1;_;6;4
basics;SocialGolfers-4-3-4-cp.xml.lzma;1;_;55;38
-basics;Sonet-s2ring02.xml.lzma;7;14;857492;849368
+basics;Sonet-s2ring02.xml.lzma;7;14;459188;454754
basics;SportsScheduling-08.xml.lzma;1;_;3220;3154
basics;SteelMillSlab-m1-simple_c18.xml.lzma;4;0;86;79
basics;SteelMillSlab-m2-simple_c18.xml.lzma;4;0;124;117
@@ -85,11 +85,11 @@ basics;StillLife-wastage-03.xml.lzma;3;6;22;17
basics;StripPacking-C1P1.xml.lzma;1;_;7948;7731
basics;Subisomorphism-A-10.xml.lzma;1;_;18;16
basics;Sudoku-s01a-alldiff.xml.lzma;1;_;1;0
-basics;SumColoring-myciel4_c18.xml.lzma;5;22;5446;5399
-basics;Taillard-os-04-04-0.xml.lzma;20;193;10826;10683
+basics;SumColoring-myciel4_c18.xml.lzma;5;22;27017;26883
+basics;Taillard-os-04-04-0.xml.lzma;19;193;15620;15434
basics;Tal-01_c18.xml.lzma;1;6;4;3
-basics;TeamAssignment-data1_4_6.xml.lzma;21;2948;4211;4138
-basics;TeamAssignment-data1_4_6.xml.lzma;21;2948;4211;4138
+basics;TeamAssignment-data1_4_6.xml.lzma;19;2948;5684;5599
+basics;TeamAssignment-data1_4_6.xml.lzma;19;2948;5684;5599
basics;TemplateDesign-m1-1_c18.xml.lzma;1;2;10;9
basics;TemplateDesign-m1s-1_c18.xml.lzma;1;2;12;11
basics;TemplateDesign-m2-1_c18.xml.lzma;1;2;10;9
@@ -98,8 +98,8 @@ basics;testExtension2.xml.lzma;1;_;4;0
basics;testExtension3.xml.lzma;0;_;15;16
basics;testObjective1.xml.lzma;3;11;11;6
basics;testPrimitive.xml.lzma;1;_;3;1
-basics;TestSchedulingM18-t30m10r3-15.xml.lzma;27;4149;1959;1500
+basics;TestSchedulingM18-t30m10r3-15.xml.lzma;93;4149;3450;2650
basics;Tpp-3-3-20-1.xml.lzma;5;126;87;78
-basics;TravelingTournament-a3-galaxy04_c18.xml.lzma;4;416;4553;4516
-basics;Warehouse-opl.xml.lzma;10;383;573;544
+basics;TravelingTournament-a3-galaxy04_c18.xml.lzma;4;416;4180;4139
+basics;Warehouse-opl.xml.lzma;1;383;568;557
basics;Zebra.xml.lzma;1;_;9;3
\ No newline at end of file
diff --git a/solver/src/main/java/org/chocosolver/solver/search/strategy/selectors/values/IntDomainBest.java b/solver/src/main/java/org/chocosolver/solver/search/strategy/selectors/values/IntDomainBest.java
index d28d467564..79f2ffc726 100644
--- a/solver/src/main/java/org/chocosolver/solver/search/strategy/selectors/values/IntDomainBest.java
+++ b/solver/src/main/java/org/chocosolver/solver/search/strategy/selectors/values/IntDomainBest.java
@@ -117,7 +117,7 @@ public IntDomainBest(IntValueSelector intValueSelector, Function condition) {
this(100,
new IntDomainMin(),
- v -> v.getModel().getSolver().getRestartCount() % 16 == 0,
+ v -> true,
DecisionOperatorFactory.makeIntEq(),
condition);
}
@@ -139,7 +139,7 @@ public IntDomainBest(BiPredicate condition) {
public IntDomainBest() {
this(100,
new IntDomainMin(),
- v -> v.getModel().getSolver().getRestartCount() % 16 == 0,
+ v -> true,
DecisionOperatorFactory.makeIntEq(),
(k, v) -> false);
}