1d bin packing (or cp? who cares?) a case study. [sr1] bin packing instance: finite set u of items,...
TRANSCRIPT
![Page 1: 1D Bin Packing (or CP? Who cares?) A case study. [SR1] BIN PACKING INSTANCE: Finite set U of items, a size s(u) in Z + for each u in U, a positive integer](https://reader036.vdocuments.us/reader036/viewer/2022062312/5515c99355034689058b4963/html5/thumbnails/1.jpg)
1D Bin Packing(or “CP? Who cares?”)
A case study
![Page 2: 1D Bin Packing (or CP? Who cares?) A case study. [SR1] BIN PACKING INSTANCE: Finite set U of items, a size s(u) in Z + for each u in U, a positive integer](https://reader036.vdocuments.us/reader036/viewer/2022062312/5515c99355034689058b4963/html5/thumbnails/2.jpg)
[SR1] BIN PACKING
INSTANCE: Finite set U of items, a size s(u) in Z+ for each u in U, a positive integer bin capacity B, and a positive integer K.
QUESTION: Is there a partition of U into disjoint sets U1, U2, …, Uk
such that the sum of the sizes of the items in each Ui is B or less?
Garey & Johnson “Computers and Intractability: A guide to the theory of NP-Completeness”
![Page 3: 1D Bin Packing (or CP? Who cares?) A case study. [SR1] BIN PACKING INSTANCE: Finite set U of items, a size s(u) in Z + for each u in U, a positive integer](https://reader036.vdocuments.us/reader036/viewer/2022062312/5515c99355034689058b4963/html5/thumbnails/3.jpg)
data = 42 63 67 57 93 90 38 36 45 42n = 10 // 10 numbersm = 5 // 5 binsc = 150 // bin capacity of 150
Can we pack the above 10 numbers into 5 bins such that thesum of the numbers in each bin is less than or equal to 150?
Note: the above 10 numbers sum to a total of 579 579/150 = 3.86
An example
![Page 4: 1D Bin Packing (or CP? Who cares?) A case study. [SR1] BIN PACKING INSTANCE: Finite set U of items, a size s(u) in Z + for each u in U, a positive integer](https://reader036.vdocuments.us/reader036/viewer/2022062312/5515c99355034689058b4963/html5/thumbnails/4.jpg)
![Page 5: 1D Bin Packing (or CP? Who cares?) A case study. [SR1] BIN PACKING INSTANCE: Finite set U of items, a size s(u) in Z + for each u in U, a positive integer](https://reader036.vdocuments.us/reader036/viewer/2022062312/5515c99355034689058b4963/html5/thumbnails/5.jpg)
1st stab
}1,0{
...v)scalar(c, 111100
i
i
nn
v
Zc
vcvcvc
1. Read in the numbers into array called data2. Associate an array of constrained integer variables v with a bin3. vi is 1 if and only if the ith number is in that bin
Typical constraint for one bin
![Page 6: 1D Bin Packing (or CP? Who cares?) A case study. [SR1] BIN PACKING INSTANCE: Finite set U of items, a size s(u) in Z + for each u in U, a positive integer](https://reader036.vdocuments.us/reader036/viewer/2022062312/5515c99355034689058b4963/html5/thumbnails/6.jpg)
More specifically
1/01/0inBin
1/0inBin
1/0inBin
1/0inBin
1/0........................1/0inBin
42453638909357676342data
4
3
2
1
0
ijji bindatainBin 1,
c)i,0, l_"("makeIntVar load[i]
inBin[i]))a,scalar(dat,eq(load[i]
.1
,
n
jjij capacityinBindata
The sum of the numbers in a bin is less than or equal to its capacity
![Page 7: 1D Bin Packing (or CP? Who cares?) A case study. [SR1] BIN PACKING INSTANCE: Finite set U of items, a size s(u) in Z + for each u in U, a positive integer](https://reader036.vdocuments.us/reader036/viewer/2022062312/5515c99355034689058b4963/html5/thumbnails/7.jpg)
![Page 8: 1D Bin Packing (or CP? Who cares?) A case study. [SR1] BIN PACKING INSTANCE: Finite set U of items, a size s(u) in Z + for each u in U, a positive integer](https://reader036.vdocuments.us/reader036/viewer/2022062312/5515c99355034689058b4963/html5/thumbnails/8.jpg)
load[i] is the sum of the numbers in the ith bin
where load[i] is a constrained integer variable with domain [0 .. C]
1/01/0inBin
1/0inBin
1/0inBin
1/0inBin
1/0........................1/0inBin
42453638909357676342data
4
3
2
1
0
![Page 9: 1D Bin Packing (or CP? Who cares?) A case study. [SR1] BIN PACKING INSTANCE: Finite set U of items, a size s(u) in Z + for each u in U, a positive integer](https://reader036.vdocuments.us/reader036/viewer/2022062312/5515c99355034689058b4963/html5/thumbnails/9.jpg)
Note 1
We have n.m 0/1 constrained integer variables
Question: How big is the potential state space?
![Page 10: 1D Bin Packing (or CP? Who cares?) A case study. [SR1] BIN PACKING INSTANCE: Finite set U of items, a size s(u) in Z + for each u in U, a positive integer](https://reader036.vdocuments.us/reader036/viewer/2022062312/5515c99355034689058b4963/html5/thumbnails/10.jpg)
Only in one place at any one time!
A number data[i] can only be in one bin at any one time!
Therefore, the number of 1’s in any column must be exactly 1
1/01/0inBin
1/0inBin
1/0inBin
1/0inBin
1/0........................1/0inBin
42453638909357676342data
4
3
2
1
0
![Page 11: 1D Bin Packing (or CP? Who cares?) A case study. [SR1] BIN PACKING INSTANCE: Finite set U of items, a size s(u) in Z + for each u in U, a positive integer](https://reader036.vdocuments.us/reader036/viewer/2022062312/5515c99355034689058b4963/html5/thumbnails/11.jpg)
Is a bin used?
If there are numbers in a bin then that bin is used.
binUsed[i] = 1 iff and only if load[i] > 0
Where binUsed is 0/1 constrained integer variable
1/01/0inBin
1/0inBin
1/0inBin
1/0inBin
1/0........................1/0inBin
42453638909357676342data
4
3
2
1
0
![Page 12: 1D Bin Packing (or CP? Who cares?) A case study. [SR1] BIN PACKING INSTANCE: Finite set U of items, a size s(u) in Z + for each u in U, a positive integer](https://reader036.vdocuments.us/reader036/viewer/2022062312/5515c99355034689058b4963/html5/thumbnails/12.jpg)
How many bins are used?
Sum up the number of bins used and ensure that thisis less than or equal to the number of bins that we have
totBinsUsed is a constraint integer variable with domain [0..m]
1/01/0inBin
1/0inBin
1/0inBin
1/0inBin
1/0........................1/0inBin
42453638909357676342data
4
3
2
1
0
![Page 13: 1D Bin Packing (or CP? Who cares?) A case study. [SR1] BIN PACKING INSTANCE: Finite set U of items, a size s(u) in Z + for each u in U, a positive integer](https://reader036.vdocuments.us/reader036/viewer/2022062312/5515c99355034689058b4963/html5/thumbnails/13.jpg)
Program has the following command line inputs
fnameThe name of a file containing 100 or more numbers
cThe (uniform) capacity of each bin
nThe number of numbers to read from file fname
mThe number of bins
Program finds first solution and displaysnumber of nodes, and the solution
![Page 14: 1D Bin Packing (or CP? Who cares?) A case study. [SR1] BIN PACKING INSTANCE: Finite set U of items, a size s(u) in Z + for each u in U, a positive integer](https://reader036.vdocuments.us/reader036/viewer/2022062312/5515c99355034689058b4963/html5/thumbnails/14.jpg)
Remember … we will optimise via a sequence of decision problems
Keep reducing the number of bins until no solution
![Page 15: 1D Bin Packing (or CP? Who cares?) A case study. [SR1] BIN PACKING INSTANCE: Finite set U of items, a size s(u) in Z + for each u in U, a positive integer](https://reader036.vdocuments.us/reader036/viewer/2022062312/5515c99355034689058b4963/html5/thumbnails/15.jpg)
It does nothing!
What is it doing?
What is search doing?
![Page 16: 1D Bin Packing (or CP? Who cares?) A case study. [SR1] BIN PACKING INSTANCE: Finite set U of items, a size s(u) in Z + for each u in U, a positive integer](https://reader036.vdocuments.us/reader036/viewer/2022062312/5515c99355034689058b4963/html5/thumbnails/16.jpg)
Decisions, decisions
What are the decision variables?!
![Page 17: 1D Bin Packing (or CP? Who cares?) A case study. [SR1] BIN PACKING INSTANCE: Finite set U of items, a size s(u) in Z + for each u in U, a positive integer](https://reader036.vdocuments.us/reader036/viewer/2022062312/5515c99355034689058b4963/html5/thumbnails/17.jpg)
![Page 18: 1D Bin Packing (or CP? Who cares?) A case study. [SR1] BIN PACKING INSTANCE: Finite set U of items, a size s(u) in Z + for each u in U, a positive integer](https://reader036.vdocuments.us/reader036/viewer/2022062312/5515c99355034689058b4963/html5/thumbnails/18.jpg)
It is so slow!
Why is it so slow?
What is search doing?
![Page 19: 1D Bin Packing (or CP? Who cares?) A case study. [SR1] BIN PACKING INSTANCE: Finite set U of items, a size s(u) in Z + for each u in U, a positive integer](https://reader036.vdocuments.us/reader036/viewer/2022062312/5515c99355034689058b4963/html5/thumbnails/19.jpg)
Value Ordering!
![Page 20: 1D Bin Packing (or CP? Who cares?) A case study. [SR1] BIN PACKING INSTANCE: Finite set U of items, a size s(u) in Z + for each u in U, a positive integer](https://reader036.vdocuments.us/reader036/viewer/2022062312/5515c99355034689058b4963/html5/thumbnails/20.jpg)
It’s still slow!
![Page 21: 1D Bin Packing (or CP? Who cares?) A case study. [SR1] BIN PACKING INSTANCE: Finite set U of items, a size s(u) in Z + for each u in U, a positive integer](https://reader036.vdocuments.us/reader036/viewer/2022062312/5515c99355034689058b4963/html5/thumbnails/21.jpg)
Is there a heuristic?
1st fit decreasing
![Page 22: 1D Bin Packing (or CP? Who cares?) A case study. [SR1] BIN PACKING INSTANCE: Finite set U of items, a size s(u) in Z + for each u in U, a positive integer](https://reader036.vdocuments.us/reader036/viewer/2022062312/5515c99355034689058b4963/html5/thumbnails/22.jpg)
93 90 69 67 57 45 42 42 38 36
sorted
![Page 23: 1D Bin Packing (or CP? Who cares?) A case study. [SR1] BIN PACKING INSTANCE: Finite set U of items, a size s(u) in Z + for each u in U, a positive integer](https://reader036.vdocuments.us/reader036/viewer/2022062312/5515c99355034689058b4963/html5/thumbnails/23.jpg)
Bin PackingFirst fit decreasing algorithm
12
3
6
23
53
A B C D E F
4
With the first fit decreasing algorithm we sort the blocks into descending order first.
With the first fit decreasing algorithm we sort the blocks into descending order first.
![Page 24: 1D Bin Packing (or CP? Who cares?) A case study. [SR1] BIN PACKING INSTANCE: Finite set U of items, a size s(u) in Z + for each u in U, a positive integer](https://reader036.vdocuments.us/reader036/viewer/2022062312/5515c99355034689058b4963/html5/thumbnails/24.jpg)
2333
45
Bin PackingFirst fit decreasing algorithm
1
6
2
A B C D E F
Now we use the first fit algorithmNow we use the first fit algorithm
![Page 25: 1D Bin Packing (or CP? Who cares?) A case study. [SR1] BIN PACKING INSTANCE: Finite set U of items, a size s(u) in Z + for each u in U, a positive integer](https://reader036.vdocuments.us/reader036/viewer/2022062312/5515c99355034689058b4963/html5/thumbnails/25.jpg)
233
Bin PackingFirst fit decreasing algorithm
12
A B C D E F
Now we use the first fit algorithmNow we use the first fit algorithm
54
3
6
![Page 26: 1D Bin Packing (or CP? Who cares?) A case study. [SR1] BIN PACKING INSTANCE: Finite set U of items, a size s(u) in Z + for each u in U, a positive integer](https://reader036.vdocuments.us/reader036/viewer/2022062312/5515c99355034689058b4963/html5/thumbnails/26.jpg)
233
Bin PackingFirst fit decreasing algorithm
1
6
2
A B C D E F
Now we use the first fit algorithmNow we use the first fit algorithm
5
43
5
![Page 27: 1D Bin Packing (or CP? Who cares?) A case study. [SR1] BIN PACKING INSTANCE: Finite set U of items, a size s(u) in Z + for each u in U, a positive integer](https://reader036.vdocuments.us/reader036/viewer/2022062312/5515c99355034689058b4963/html5/thumbnails/27.jpg)
233
Bin PackingFirst fit decreasing algorithm
1
6
2
A B C D E F
Now we use the first fit algorithmNow we use the first fit algorithm
5
4
4
3
4
![Page 28: 1D Bin Packing (or CP? Who cares?) A case study. [SR1] BIN PACKING INSTANCE: Finite set U of items, a size s(u) in Z + for each u in U, a positive integer](https://reader036.vdocuments.us/reader036/viewer/2022062312/5515c99355034689058b4963/html5/thumbnails/28.jpg)
233
Bin PackingFirst fit decreasing algorithm
1
6
2
A B C D E F
Now we use the first fit algorithmNow we use the first fit algorithm
54
33
3
3
![Page 29: 1D Bin Packing (or CP? Who cares?) A case study. [SR1] BIN PACKING INSTANCE: Finite set U of items, a size s(u) in Z + for each u in U, a positive integer](https://reader036.vdocuments.us/reader036/viewer/2022062312/5515c99355034689058b4963/html5/thumbnails/29.jpg)
23
Bin PackingFirst fit decreasing algorithm
1
6
2
A B C D E F
Now we use the first fit algorithmNow we use the first fit algorithm
54
3
33
3
3
![Page 30: 1D Bin Packing (or CP? Who cares?) A case study. [SR1] BIN PACKING INSTANCE: Finite set U of items, a size s(u) in Z + for each u in U, a positive integer](https://reader036.vdocuments.us/reader036/viewer/2022062312/5515c99355034689058b4963/html5/thumbnails/30.jpg)
2
Bin PackingFirst fit decreasing algorithm
1
6
2
A B C D E F
Now we use the first fit algorithmNow we use the first fit algorithm
54
3
3
33
3
3
3
![Page 31: 1D Bin Packing (or CP? Who cares?) A case study. [SR1] BIN PACKING INSTANCE: Finite set U of items, a size s(u) in Z + for each u in U, a positive integer](https://reader036.vdocuments.us/reader036/viewer/2022062312/5515c99355034689058b4963/html5/thumbnails/31.jpg)
Bin PackingFirst fit decreasing algorithm
1
6
2
A B C D E F
Now we use the first fit algorithmNow we use the first fit algorithm
54
3
3
3
22
2
![Page 32: 1D Bin Packing (or CP? Who cares?) A case study. [SR1] BIN PACKING INSTANCE: Finite set U of items, a size s(u) in Z + for each u in U, a positive integer](https://reader036.vdocuments.us/reader036/viewer/2022062312/5515c99355034689058b4963/html5/thumbnails/32.jpg)
Bin PackingFirst fit decreasing algorithm
1
6
A B C D E F
Now we use the first fit algorithmNow we use the first fit algorithm
54
3
3
3
2
22
2 2
2
![Page 33: 1D Bin Packing (or CP? Who cares?) A case study. [SR1] BIN PACKING INSTANCE: Finite set U of items, a size s(u) in Z + for each u in U, a positive integer](https://reader036.vdocuments.us/reader036/viewer/2022062312/5515c99355034689058b4963/html5/thumbnails/33.jpg)
Bin PackingFirst fit decreasing algorithm
6
A B C D E F
Now we use the first fit algorithmNow we use the first fit algorithm
54
3
3
3
22
1
We have packed them into 5 bins.We have packed them into 5 bins.
1
![Page 34: 1D Bin Packing (or CP? Who cares?) A case study. [SR1] BIN PACKING INSTANCE: Finite set U of items, a size s(u) in Z + for each u in U, a positive integer](https://reader036.vdocuments.us/reader036/viewer/2022062312/5515c99355034689058b4963/html5/thumbnails/34.jpg)
![Page 35: 1D Bin Packing (or CP? Who cares?) A case study. [SR1] BIN PACKING INSTANCE: Finite set U of items, a size s(u) in Z + for each u in U, a positive integer](https://reader036.vdocuments.us/reader036/viewer/2022062312/5515c99355034689058b4963/html5/thumbnails/35.jpg)
![Page 36: 1D Bin Packing (or CP? Who cares?) A case study. [SR1] BIN PACKING INSTANCE: Finite set U of items, a size s(u) in Z + for each u in U, a positive integer](https://reader036.vdocuments.us/reader036/viewer/2022062312/5515c99355034689058b4963/html5/thumbnails/36.jpg)
![Page 37: 1D Bin Packing (or CP? Who cares?) A case study. [SR1] BIN PACKING INSTANCE: Finite set U of items, a size s(u) in Z + for each u in U, a positive integer](https://reader036.vdocuments.us/reader036/viewer/2022062312/5515c99355034689058b4963/html5/thumbnails/37.jpg)
Slow proving optimality
Don’t have a test that sum of numbers over capacityis less than or equal to the number of bins available!
![Page 38: 1D Bin Packing (or CP? Who cares?) A case study. [SR1] BIN PACKING INSTANCE: Finite set U of items, a size s(u) in Z + for each u in U, a positive integer](https://reader036.vdocuments.us/reader036/viewer/2022062312/5515c99355034689058b4963/html5/thumbnails/38.jpg)
Symmetries?
Are there any symmetries that are slowing down search?
Can we remove those symmetries?
What are the symmetries in this problem?
![Page 39: 1D Bin Packing (or CP? Who cares?) A case study. [SR1] BIN PACKING INSTANCE: Finite set U of items, a size s(u) in Z + for each u in U, a positive integer](https://reader036.vdocuments.us/reader036/viewer/2022062312/5515c99355034689058b4963/html5/thumbnails/39.jpg)
Symmetries?
Why not insist that load[i] >= load[i+1]?
How about “lex” ordering between rows of inBin?
![Page 40: 1D Bin Packing (or CP? Who cares?) A case study. [SR1] BIN PACKING INSTANCE: Finite set U of items, a size s(u) in Z + for each u in U, a positive integer](https://reader036.vdocuments.us/reader036/viewer/2022062312/5515c99355034689058b4963/html5/thumbnails/40.jpg)
Is there another model?
?
![Page 41: 1D Bin Packing (or CP? Who cares?) A case study. [SR1] BIN PACKING INSTANCE: Finite set U of items, a size s(u) in Z + for each u in U, a positive integer](https://reader036.vdocuments.us/reader036/viewer/2022062312/5515c99355034689058b4963/html5/thumbnails/41.jpg)
An alternative (and it’s consequences)?
Introduce an array of constrained integer variables
loc[j] with domain [0..m]
1, jij inBiniloc
Consequences:
1. Array loc is now decision variables2. No longer need to insist that sums of columns of inBin equal 1
Question: what’s the size of the state space now?
![Page 42: 1D Bin Packing (or CP? Who cares?) A case study. [SR1] BIN PACKING INSTANCE: Finite set U of items, a size s(u) in Z + for each u in U, a positive integer](https://reader036.vdocuments.us/reader036/viewer/2022062312/5515c99355034689058b4963/html5/thumbnails/42.jpg)
So?
What have we learned?
1. Identify the decision variables2. What is the size of the state space?3. What is the size of the model?4. What is value ordering doing to the search?5. Can we use any heuristics?6. Are there symmetries that we can break?7. Are there any simple/redundant tests/constraints overlooked?8. Is there an alternative model?
![Page 43: 1D Bin Packing (or CP? Who cares?) A case study. [SR1] BIN PACKING INSTANCE: Finite set U of items, a size s(u) in Z + for each u in U, a positive integer](https://reader036.vdocuments.us/reader036/viewer/2022062312/5515c99355034689058b4963/html5/thumbnails/43.jpg)
And let’s not forget the big question …
9. Why are we using constraint programming?
Answers?