Download presentation
Presentation is loading. Please wait.
1
number partitioning
2
Like subset sum
4
Recently featured in the Crystal Maze!
Given a bag of numbers, can you partition this into 2 bags such that the sum of the integers in each bag is equal? Recently featured in the Crystal Maze! (Thanks Zoe!)
5
Try it!
6
Try that!
7
Try that?
8
Try that?
9
Can you think of a 1st test to
carry out to determine if there is no partition?
10
Garey & Johnson “Computers and Intractability”
Given a bag of numbers, can you partition this into 2 bags such that the sum of the integers in each bag is equal? Garey & Johnson “Computers and Intractability” [SP12] PARTITION INSTANCE: Finite set A and a size s(a) Z+ for each a A QUESTION: Is there a subset A’ A such that aA’ s(a) aA-A’ s(a)
12
How complex?
13
Who cares? Imagine you have 2 machines on the shop floor You have n activities, of varying durations Place the activities on the machines to minimise makespan
14
Why just 2-partition? Why not m-way partitioning? Is there an optimisation problem?
15
A number of constraint encodings
16
1st stab variables constraints Questions: What are the “decision variables” Can we be more efficient generate more propagation Bound or enumerated variables Is there a better model? What if it is insoluble?
24
How can I make an IntegerVariable with a domain
that is a set of values, rather than a range? If I had L[i] {0,w[i]} and R[i] {0,w[i]} could I throw away D[i] and have R[i] ≠ L[i]? Laura?
28
Look! No D!
29
Value ordering … does it matter
Questions, questions, questions Decision variables … does it matter? Heuristics? Value ordering … does it matter Bound versus enumerated variables … anyone? Symmetries Propagation: what will it do? Will it have an effect? Size of state space? How big is the model? How will search progress?
30
Symmetry If we are using a static variable ordering heuristic and If we are using the 0/1 decision variables D[i] Does it make any difference if we have D[0] = 0 or D[0] = 1 That is, can we half the search space?
31
Can we think of any “side constraints”?
1st stab Why use CP for numPart? Can we think of any “side constraints”? Actually, an important question: justify use of CP
32
We want to minimise the difference between the sum
A 2nd stab We want to minimise the difference between the sum of the numbers on the left and the sum of the numbers on the right Right!?
33
An optimisation problem Minimise the difference between left and right
A 2nd stab An optimisation problem Minimise the difference between left and right
34
Minimize imbalance
35
How do we optimise in CP? A sequence of decision problems Branch and bound
37
Demo of Optimize
38
Why is Optimize so slow?
39
When can this propagate?
40
Can we limit the search effort?
42
3d stab
43
Optimize is a wee bit “clunky”
3d stab Optimize is a wee bit “clunky” Can we do better? Put ½ the numbers on one side
46
1st stab variables constraints
47
Maximize the sum of Weights on the right As close to tot/2
48
Demo of OptimizeV2
49
Why was version 2 faster?
50
Could we Optimize without the decision variable D?
I suppose so … could explore this Replace scalar with sum
51
So?
52
Three stabs! A fair bit to consider Has this all been easy? Is there a better way to do numPart?
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.