The AllDifferent Constraint: Efficiency Measures
description
Transcript of The AllDifferent Constraint: Efficiency Measures
![Page 1: The AllDifferent Constraint: Efficiency Measures](https://reader035.fdocuments.in/reader035/viewer/2022070418/5681595d550346895dc69c6f/html5/thumbnails/1.jpg)
The AllDifferent Constraint:The AllDifferent Constraint:Efficiency MeasuresEfficiency Measures
Ian P. Gent, Ian Miguel, Peter Nightingale
![Page 2: The AllDifferent Constraint: Efficiency Measures](https://reader035.fdocuments.in/reader035/viewer/2022070418/5681595d550346895dc69c6f/html5/thumbnails/2.jpg)
22
AllDifferentAllDifferent
A vector of variables must take distinct valuesA vector of variables must take distinct values Very widely used – very importantVery widely used – very important Examples:Examples:
A class of students must have lectures at distinct A class of students must have lectures at distinct timestimes
In a sports schedule, the teams playing on a In a sports schedule, the teams playing on a particular week are all distinctparticular week are all distinct
No pair of golfers play together more than onceNo pair of golfers play together more than once SudokuSudoku
![Page 3: The AllDifferent Constraint: Efficiency Measures](https://reader035.fdocuments.in/reader035/viewer/2022070418/5681595d550346895dc69c6f/html5/thumbnails/3.jpg)
33
AllDifferentAllDifferent
Van Hoeve surveys various strengths of Van Hoeve surveys various strengths of inferenceinference
In order of increasing strength:In order of increasing strength: Weak and fast pairwise decomposition (AC) -- O(r)Weak and fast pairwise decomposition (AC) -- O(r) Bound consistency – find Hall intervals (as Bound consistency – find Hall intervals (as
described by Toby) and prune bounds – O(r log r)described by Toby) and prune bounds – O(r log r) Range consistency – find Hall intervals and pruneRange consistency – find Hall intervals and prune Generalised arc consistency (GAC) – O(kGeneralised arc consistency (GAC) – O(k0.50.5 r d) r d)
We focus on GAC algorithm by RWe focus on GAC algorithm by Réégingin
![Page 4: The AllDifferent Constraint: Efficiency Measures](https://reader035.fdocuments.in/reader035/viewer/2022070418/5681595d550346895dc69c6f/html5/thumbnails/4.jpg)
44
GAC AllDifferentGAC AllDifferent
One expensive pass achieves consistencyOne expensive pass achieves consistency Traditionally has large incremental, backtracked Traditionally has large incremental, backtracked
data structuredata structure Traditionally low priorityTraditionally low priority Triggered on any domain changeTriggered on any domain change
But many changes are processed togetherBut many changes are processed together No paper that we are aware of comprehensively No paper that we are aware of comprehensively
investigates implementation decisionsinvestigates implementation decisions
![Page 5: The AllDifferent Constraint: Efficiency Measures](https://reader035.fdocuments.in/reader035/viewer/2022070418/5681595d550346895dc69c6f/html5/thumbnails/5.jpg)
55
Our approachOur approach
Investigate optimizations in literature (tried to Investigate optimizations in literature (tried to find everything!)find everything!)
Trigger only on relevant valuesTrigger only on relevant values It is not necessary to trigger on all domain removalsIt is not necessary to trigger on all domain removals Identify O(2r+d) trigger valuesIdentify O(2r+d) trigger values
Partition the constraint dynamicallyPartition the constraint dynamically Algorithm already identifies independent sub-Algorithm already identifies independent sub-
constraintsconstraints Store and re-use this partitionStore and re-use this partition Run expensive algorithm only on sub-constraintRun expensive algorithm only on sub-constraint
![Page 6: The AllDifferent Constraint: Efficiency Measures](https://reader035.fdocuments.in/reader035/viewer/2022070418/5681595d550346895dc69c6f/html5/thumbnails/6.jpg)
66
Régin's AlgorithmRégin's Algorithm
Find a maximum matching M from variables to Find a maximum matching M from variables to values.values. Corresponds to a satisfying tuple of the constraintCorresponds to a satisfying tuple of the constraint
If |M|<r, the constraint is unsatisfiableIf |M|<r, the constraint is unsatisfiable Construct residual graph R (as described later)Construct residual graph R (as described later) Edges not in M, and in no cycle in R, Edges not in M, and in no cycle in R,
correspond to values to prunecorrespond to values to prune
![Page 7: The AllDifferent Constraint: Efficiency Measures](https://reader035.fdocuments.in/reader035/viewer/2022070418/5681595d550346895dc69c6f/html5/thumbnails/7.jpg)
77
Régin's AlgorithmRégin's Algorithm
Described in terms of flow, Ford-Fulkerson BFS Described in terms of flow, Ford-Fulkerson BFS algorithmalgorithm
Alternative is bipartite graph matching, Alternative is bipartite graph matching, Hopcroft-Karp or other algorithmHopcroft-Karp or other algorithm
![Page 8: The AllDifferent Constraint: Efficiency Measures](https://reader035.fdocuments.in/reader035/viewer/2022070418/5681595d550346895dc69c6f/html5/thumbnails/8.jpg)
88
Régin's AlgorithmRégin's Algorithm
x1 x2 x3 x4
1 2 3 4 5 6
s
t
Find Find maximum maximum flow from s flow from s to tto t
Ford-Ford-Fulkerson Fulkerson algorithmalgorithm
![Page 9: The AllDifferent Constraint: Efficiency Measures](https://reader035.fdocuments.in/reader035/viewer/2022070418/5681595d550346895dc69c6f/html5/thumbnails/9.jpg)
99
Régin's AlgorithmRégin's Algorithm
x1 x2 x3 x4
1 2 3 4 5 6
s
t
Find Find maximum maximum flow from s flow from s to tto t
Ford-Ford-Fulkerson Fulkerson algorithmalgorithm
![Page 10: The AllDifferent Constraint: Efficiency Measures](https://reader035.fdocuments.in/reader035/viewer/2022070418/5681595d550346895dc69c6f/html5/thumbnails/10.jpg)
1010
Régin's AlgorithmRégin's Algorithm
x1 x2 x3 x4
1 2 3 4 5 6
s
t
Find Find maximum maximum flow from s flow from s to tto t
Ford-Ford-Fulkerson Fulkerson algorithmalgorithm
![Page 11: The AllDifferent Constraint: Efficiency Measures](https://reader035.fdocuments.in/reader035/viewer/2022070418/5681595d550346895dc69c6f/html5/thumbnails/11.jpg)
1111
Régin's AlgorithmRégin's Algorithm
x1 x2 x3 x4
1 2 3 4 5 6
s
t
Find Find maximum maximum flow from s flow from s to tto t
Ford-Ford-Fulkerson Fulkerson algorithmalgorithm
![Page 12: The AllDifferent Constraint: Efficiency Measures](https://reader035.fdocuments.in/reader035/viewer/2022070418/5681595d550346895dc69c6f/html5/thumbnails/12.jpg)
1212
Régin's AlgorithmRégin's Algorithm
x1 x2 x3 x4
1 2 3 4 5 6
s
t
Find Find maximum maximum flow from s flow from s to tto t
Ford-Ford-Fulkerson Fulkerson algorithmalgorithm
![Page 13: The AllDifferent Constraint: Efficiency Measures](https://reader035.fdocuments.in/reader035/viewer/2022070418/5681595d550346895dc69c6f/html5/thumbnails/13.jpg)
1313
Régin's AlgorithmRégin's Algorithm
x1 x2 x3 x4
1 2 3 4 5 6
s
t
Find Find maximum maximum flow from s flow from s to tto t
Ford-Ford-Fulkerson Fulkerson algorithmalgorithm
![Page 14: The AllDifferent Constraint: Efficiency Measures](https://reader035.fdocuments.in/reader035/viewer/2022070418/5681595d550346895dc69c6f/html5/thumbnails/14.jpg)
1414
Régin's AlgorithmRégin's Algorithm
x1 x2 x3 x4
1 2 3 4 5 6
s
t
Find Find maximum maximum flow from s flow from s to tto t
Ford-Ford-Fulkerson Fulkerson algorithmalgorithm
![Page 15: The AllDifferent Constraint: Efficiency Measures](https://reader035.fdocuments.in/reader035/viewer/2022070418/5681595d550346895dc69c6f/html5/thumbnails/15.jpg)
1515
Régin's AlgorithmRégin's Algorithm
x1 x2 x3 x4
1 2 3 4 5 6
s
t
Find Find maximum maximum flow from s flow from s to tto t
Ford-Ford-Fulkerson Fulkerson algorithmalgorithm
![Page 16: The AllDifferent Constraint: Efficiency Measures](https://reader035.fdocuments.in/reader035/viewer/2022070418/5681595d550346895dc69c6f/html5/thumbnails/16.jpg)
1616
Régin's AlgorithmRégin's Algorithm
x1 x2 x3 x4
1 2 3 4 5 6
s
t
Completed Completed maximum maximum flow from s flow from s to tto t
Covers all Covers all variables variables (constraint (constraint is is satisfiable)satisfiable)
One of 24One of 24
![Page 17: The AllDifferent Constraint: Efficiency Measures](https://reader035.fdocuments.in/reader035/viewer/2022070418/5681595d550346895dc69c6f/html5/thumbnails/17.jpg)
1717
Régin's AlgorithmRégin's Algorithm
x1 x2 x3 x4
1 2 3 4 5 6
s
t
Find Find strongly-strongly-connected connected componentscomponents
![Page 18: The AllDifferent Constraint: Efficiency Measures](https://reader035.fdocuments.in/reader035/viewer/2022070418/5681595d550346895dc69c6f/html5/thumbnails/18.jpg)
1818
Régin's AlgorithmRégin's Algorithm
Strongly-connected components (SCCs)Strongly-connected components (SCCs) Vertices Vertices ii and and jj in same SCC iff: in same SCC iff:
Path from Path from ii to to jj and from and from j j to to i i in digraphin digraph Found by Tarjan's algorithmFound by Tarjan's algorithm
DFSDFS SCC='Maximal set of cycles'SCC='Maximal set of cycles'
![Page 19: The AllDifferent Constraint: Efficiency Measures](https://reader035.fdocuments.in/reader035/viewer/2022070418/5681595d550346895dc69c6f/html5/thumbnails/19.jpg)
1919
Régin's AlgorithmRégin's Algorithm
x1 x2 x3 x4
1 2 3 4 5 6
s
t
Find Find strongly-strongly-connected connected componentscomponents
![Page 20: The AllDifferent Constraint: Efficiency Measures](https://reader035.fdocuments.in/reader035/viewer/2022070418/5681595d550346895dc69c6f/html5/thumbnails/20.jpg)
2020
Régin's AlgorithmRégin's Algorithm
x1 x2 x3 x4
1 2 3 4 5 6
s
t
Cycle within Cycle within SCCSCC
Apply cycle Apply cycle to find to find different different maximum maximum flowflow
No cycles No cycles between between SCCsSCCs
![Page 21: The AllDifferent Constraint: Efficiency Measures](https://reader035.fdocuments.in/reader035/viewer/2022070418/5681595d550346895dc69c6f/html5/thumbnails/21.jpg)
2121
Régin's AlgorithmRégin's Algorithm
x1 x2 x3 x4
1 2 3 4 5 6
s
t
Cycle within Cycle within SCCSCC
Apply cycle Apply cycle to find to find different different maximum maximum flowflow
No cycles No cycles between between SCCsSCCs
![Page 22: The AllDifferent Constraint: Efficiency Measures](https://reader035.fdocuments.in/reader035/viewer/2022070418/5681595d550346895dc69c6f/html5/thumbnails/22.jpg)
2222
Régin's AlgorithmRégin's Algorithm
x1 x2 x3 x4
1 2 3 4 5 6
s
t
No cycles No cycles between between SCCsSCCs
No maximum No maximum flows flows involving involving x3=2 or x4=2x3=2 or x4=2
![Page 23: The AllDifferent Constraint: Efficiency Measures](https://reader035.fdocuments.in/reader035/viewer/2022070418/5681595d550346895dc69c6f/html5/thumbnails/23.jpg)
2323
Régin's AlgorithmRégin's Algorithm
Remove Remove edges which edges which are: are: Between Between
SCCsSCCs Not in flowNot in flow
Corresponds Corresponds to theorem to theorem by Berge, by Berge, 19731973
x1 x2 x3 x4
1 2 3 4 5 6
s
t
![Page 24: The AllDifferent Constraint: Efficiency Measures](https://reader035.fdocuments.in/reader035/viewer/2022070418/5681595d550346895dc69c6f/html5/thumbnails/24.jpg)
2424
ImplementationImplementation
Key assumption: don't maintain the graph, Key assumption: don't maintain the graph, discover it as you traversediscover it as you traverse Domain queries cheap in MinionDomain queries cheap in Minion Alternative: maintain and BT adjacency lists, size Alternative: maintain and BT adjacency lists, size
O(rd)O(rd) We claim this is better without experimentWe claim this is better without experiment If Patrick reads the paper, I'm in trouble!If Patrick reads the paper, I'm in trouble! If the assumption is not true, our experiments are If the assumption is not true, our experiments are
somewhat less reliable, but the big results should somewhat less reliable, but the big results should still holdstill hold
![Page 25: The AllDifferent Constraint: Efficiency Measures](https://reader035.fdocuments.in/reader035/viewer/2022070418/5681595d550346895dc69c6f/html5/thumbnails/25.jpg)
2525
Optimizations in LiteratureOptimizations in Literature
Incremental matching (Régin)Incremental matching (Régin) Priority QueuePriority Queue
Execute at low priority and with no duplicate eventsExecute at low priority and with no duplicate events Staged propagation (Schulte & Stuckey)Staged propagation (Schulte & Stuckey)
Do simple propagation at high priority, GAC at low Do simple propagation at high priority, GAC at low prioritypriority
Domain counting (Quimper & Walsh)Domain counting (Quimper & Walsh) Fixpoint reasoning (Schulte & Stuckey)Fixpoint reasoning (Schulte & Stuckey)
Solves the 'Double Call Problem'Solves the 'Double Call Problem' Advisors (Lagerkvist & Schulte)Advisors (Lagerkvist & Schulte)
![Page 26: The AllDifferent Constraint: Efficiency Measures](https://reader035.fdocuments.in/reader035/viewer/2022070418/5681595d550346895dc69c6f/html5/thumbnails/26.jpg)
2626
Priority QueuePriority Queue
![Page 27: The AllDifferent Constraint: Efficiency Measures](https://reader035.fdocuments.in/reader035/viewer/2022070418/5681595d550346895dc69c6f/html5/thumbnails/27.jpg)
2727
Incremental MatchingIncremental Matching
![Page 28: The AllDifferent Constraint: Efficiency Measures](https://reader035.fdocuments.in/reader035/viewer/2022070418/5681595d550346895dc69c6f/html5/thumbnails/28.jpg)
2828
FF-BFS vs HKFF-BFS vs HK
FF is also FF is also much easier much easier to to implement!implement!
![Page 29: The AllDifferent Constraint: Efficiency Measures](https://reader035.fdocuments.in/reader035/viewer/2022070418/5681595d550346895dc69c6f/html5/thumbnails/29.jpg)
2929
Staged propagationStaged propagation
Very simple, Very simple, deals with deals with assigned assigned vars at high vars at high prioritypriority
![Page 30: The AllDifferent Constraint: Efficiency Measures](https://reader035.fdocuments.in/reader035/viewer/2022070418/5681595d550346895dc69c6f/html5/thumbnails/30.jpg)
3030
TriggeringTriggering
Trigger only on relevant values (Dynamic Trigger only on relevant values (Dynamic Triggers)Triggers) It is not necessary to trigger on all domain removalsIt is not necessary to trigger on all domain removals Identify tIdentify t≤≤2r+d trigger values from rd2r+d trigger values from rd Doesn't work on our instances!Doesn't work on our instances! Ratio not low enoughRatio not low enough
![Page 31: The AllDifferent Constraint: Efficiency Measures](https://reader035.fdocuments.in/reader035/viewer/2022070418/5681595d550346895dc69c6f/html5/thumbnails/31.jpg)
3131
TriggeringTriggering
Domain counting (Lagerkvist & Schulte, variant Domain counting (Lagerkvist & Schulte, variant of Quimper & Walsh)of Quimper & Walsh) Only trigger when domain size less than rOnly trigger when domain size less than r Very cheap but has almost no effectVery cheap but has almost no effect
Fixpoint reasoning and advisorsFixpoint reasoning and advisors No claim in original papers that these are useful for No claim in original papers that these are useful for
AllDifferentAllDifferent DT results suggest fixpoint reasoning is uselessDT results suggest fixpoint reasoning is useless We have something like advisors (although more We have something like advisors (although more
general) – the variable event queue!general) – the variable event queue!
![Page 32: The AllDifferent Constraint: Efficiency Measures](https://reader035.fdocuments.in/reader035/viewer/2022070418/5681595d550346895dc69c6f/html5/thumbnails/32.jpg)
3232
Partitioning the constraintPartitioning the constraint
Partition by SCCsPartition by SCCs Each SCC corresponds to an independent sub-Each SCC corresponds to an independent sub-
constraintconstraint Store and re-use this partition (of the variables)Store and re-use this partition (of the variables) Run expensive algorithm only on sub-constraintRun expensive algorithm only on sub-constraint
![Page 33: The AllDifferent Constraint: Efficiency Measures](https://reader035.fdocuments.in/reader035/viewer/2022070418/5681595d550346895dc69c6f/html5/thumbnails/33.jpg)
3333
Partitioning the constraintPartitioning the constraint
1 2 3 4 5 6setElements:
0 0 0 00splitPoint:
Partition this set into {1,3,5},{2,4,6}
1 23 45 6setElements:
0 1 0 00splitPoint:
Backtrack
1 23 45 6setElements:
0 0 0 00splitPoint:
Representation of {1,2,3,4,5,6}
1 2 3 4 5 6
setElementIndex:
1 4 2 5 3 6
1 4 2 5 3 6
splitPoint[3]=true indicates that adjacent elements 5 and 2 are in different subsets in the partition.
Small incremental data structure which Small incremental data structure which backtracks efficientlybacktracks efficiently
![Page 34: The AllDifferent Constraint: Efficiency Measures](https://reader035.fdocuments.in/reader035/viewer/2022070418/5681595d550346895dc69c6f/html5/thumbnails/34.jpg)
3434
Partitioning the constraintPartitioning the constraint
![Page 35: The AllDifferent Constraint: Efficiency Measures](https://reader035.fdocuments.in/reader035/viewer/2022070418/5681595d550346895dc69c6f/html5/thumbnails/35.jpg)
3535
Partitioning the constraintPartitioning the constraint
Worth considering for other large constraintsWorth considering for other large constraints GAC GCC partitions in the same wayGAC GCC partitions in the same way Graph connectivity partitions when you find a Graph connectivity partitions when you find a
'bridge''bridge' Sequence constraint?Sequence constraint? Regular/Slide partition when variables are assigned Regular/Slide partition when variables are assigned
in middlein middle
![Page 36: The AllDifferent Constraint: Efficiency Measures](https://reader035.fdocuments.in/reader035/viewer/2022070418/5681595d550346895dc69c6f/html5/thumbnails/36.jpg)
3636
Pairwise AllDifferentPairwise AllDifferent
Trigger only on assignment of a variableTrigger only on assignment of a variable Remove assigned value from all other variablesRemove assigned value from all other variables Extremely cheapExtremely cheap Equivalent to AC on pairwise not-equal Equivalent to AC on pairwise not-equal
constraintsconstraints This is no straw man!This is no straw man!
![Page 37: The AllDifferent Constraint: Efficiency Measures](https://reader035.fdocuments.in/reader035/viewer/2022070418/5681595d550346895dc69c6f/html5/thumbnails/37.jpg)
3737
Comparing to PairwiseComparing to Pairwise
![Page 38: The AllDifferent Constraint: Efficiency Measures](https://reader035.fdocuments.in/reader035/viewer/2022070418/5681595d550346895dc69c6f/html5/thumbnails/38.jpg)
3838
Comparing to PairwiseComparing to Pairwise
GAC AllDifferent never slows down search by GAC AllDifferent never slows down search by more than 2.34 timesmore than 2.34 times
Can be 100,000 times fasterCan be 100,000 times faster Most AllDifferent constraints here are tightMost AllDifferent constraints here are tight
![Page 39: The AllDifferent Constraint: Efficiency Measures](https://reader035.fdocuments.in/reader035/viewer/2022070418/5681595d550346895dc69c6f/html5/thumbnails/39.jpg)
3939
Modelling with AllDifferentModelling with AllDifferent
Golomb RulerGolomb Ruler Triangular table representing all pairsTriangular table representing all pairs One AllDifferent constraintOne AllDifferent constraint Optimization tightens AllDiffOptimization tightens AllDiff Implied constraintsImplied constraints
Ruler: 0 A B C D ... (monotonic)Diffs: A B C D ... B-A C-A D-A ... C-B D-B ... D-C ... ...
AllDifferent
![Page 40: The AllDifferent Constraint: Efficiency Measures](https://reader035.fdocuments.in/reader035/viewer/2022070418/5681595d550346895dc69c6f/html5/thumbnails/40.jpg)
4040
Modelling with AllDifferentModelling with AllDifferent
Langford's problem with 2 instances of each Langford's problem with 2 instances of each numbernumber Model due to RendlModel due to Rendl PermutationPermutation Represent the indices rather than the actual Represent the indices rather than the actual
Langford sequenceLangford sequence
For Langford sequence of length n with n/2 numbers.Pos[1..n] -- AllDifferentPos[1]+2=Pos[11] // first instance of number 1 is distance // 1 from the second instance of 1...
![Page 41: The AllDifferent Constraint: Efficiency Measures](https://reader035.fdocuments.in/reader035/viewer/2022070418/5681595d550346895dc69c6f/html5/thumbnails/41.jpg)
4141
Modelling with AllDifferentModelling with AllDifferent
Quasigroup and QWHQuasigroup and QWH Similar to Sudoku (without the sub squares)Similar to Sudoku (without the sub squares) n x n matrix of variables with domain 1..nn x n matrix of variables with domain 1..n AllDifferent on each row and each columnAllDifferent on each row and each column QWH has some values filled in alreadyQWH has some values filled in already
Well known to show off GAC AllDifferentWell known to show off GAC AllDifferent Quasigroup has various properties (e.g. Quasigroup has various properties (e.g.
associativity, idempotence)associativity, idempotence) Colton & Miguel's model and implied constraintsColton & Miguel's model and implied constraints
![Page 42: The AllDifferent Constraint: Efficiency Measures](https://reader035.fdocuments.in/reader035/viewer/2022070418/5681595d550346895dc69c6f/html5/thumbnails/42.jpg)
4242
Modelling with AllDifferentModelling with AllDifferent
N Queens problemN Queens problem Model 1Model 1
Three vectors representing queen position in row, the Three vectors representing queen position in row, the number of the leading diagonal, and the number of the number of the leading diagonal, and the number of the secondary diagonalsecondary diagonal
These vectors are all differentThese vectors are all different Model 2Model 2
One vector representing queen position in row (all One vector representing queen position in row (all different)different)
Constraints to forbid diagonalsConstraints to forbid diagonals Tailor creates 30 auxiliary variables for n=16Tailor creates 30 auxiliary variables for n=16
![Page 43: The AllDifferent Constraint: Efficiency Measures](https://reader035.fdocuments.in/reader035/viewer/2022070418/5681595d550346895dc69c6f/html5/thumbnails/43.jpg)
4343
Modelling with AllDifferentModelling with AllDifferent
Sports schedulingSports scheduling Two viewpointsTwo viewpoints
For each week, a vector of the teams (all different)For each week, a vector of the teams (all different) Vector of games (all different)Vector of games (all different) Channelling constraints between the two (table)Channelling constraints between the two (table) Symmetry breaking constraints (< for each game, lex on Symmetry breaking constraints (< for each game, lex on
weeks, lex on stadiums)weeks, lex on stadiums) Stadium constraints (each team plays no more than twice Stadium constraints (each team plays no more than twice
in one stadium)in one stadium)
1 3 2 4 ...Week 1:
Stadium 1 Stadium 2
![Page 44: The AllDifferent Constraint: Efficiency Measures](https://reader035.fdocuments.in/reader035/viewer/2022070418/5681595d550346895dc69c6f/html5/thumbnails/44.jpg)
4444
Modelling with AllDifferentModelling with AllDifferent
Social GolfersSocial Golfers Very similar to sports schedulingVery similar to sports scheduling Two viewpointsTwo viewpoints
For each week, a vector of the golfers (all different)For each week, a vector of the golfers (all different) Vector of pairs who played together (all different but not Vector of pairs who played together (all different but not
necessarily a permutation)necessarily a permutation) Channelling constraints between the two (table)Channelling constraints between the two (table) Symmetry breaking constraints (< within the groups, lex Symmetry breaking constraints (< within the groups, lex
on weeks, lex between groups)on weeks, lex between groups)
1 2 4 5Week 1: 3 6 7 9 ...
![Page 45: The AllDifferent Constraint: Efficiency Measures](https://reader035.fdocuments.in/reader035/viewer/2022070418/5681595d550346895dc69c6f/html5/thumbnails/45.jpg)
4545
Modelling with AllDifferentModelling with AllDifferent
As you can see, AllDifferent is widely used! 7 As you can see, AllDifferent is widely used! 7 example problems.example problems.
The AllDifferent is tight in all examplesThe AllDifferent is tight in all examples In a lot of cases it is worth doing GAC, but not allIn a lot of cases it is worth doing GAC, but not all I think it does depend on tightness, but also on I think it does depend on tightness, but also on
other constraints surrounding the AllDifferentother constraints surrounding the AllDifferent I refuse to offer any advice!I refuse to offer any advice!
![Page 46: The AllDifferent Constraint: Efficiency Measures](https://reader035.fdocuments.in/reader035/viewer/2022070418/5681595d550346895dc69c6f/html5/thumbnails/46.jpg)
4646
ConclusionsConclusions
A bag of useful tricks from the literatureA bag of useful tricks from the literature One new trick which worked: partitioning the One new trick which worked: partitioning the
constraintconstraint Perhaps this is general!Perhaps this is general!
One new trick which didn't: dynamic triggers One new trick which didn't: dynamic triggers from SCC algorithmfrom SCC algorithm
The only modelling advice is to try a couple of The only modelling advice is to try a couple of different propagators!different propagators!
![Page 47: The AllDifferent Constraint: Efficiency Measures](https://reader035.fdocuments.in/reader035/viewer/2022070418/5681595d550346895dc69c6f/html5/thumbnails/47.jpg)
4747
Thank YouThank You
Any Questions?Any Questions?