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); }