Search code examples
algorithmoptimizationnp-hard

How can I reduce this kind of BinPack algorithm? (It might be called sth like MinBreak-BinFill.)


I use a special variant of BinPack problem. I use a naïve algorithm, atm, so I like to know how it might be called to do some initial research. Or does anyone know how to reduce this problem to something known?


The problem: There are items I and bins B in specific quantity and size.

|I| ∈ ℕ, |B| ∈ ℕ
s : (I ∪ B) → ℕ

The sum of all item-sizes is at least the size of the sum of all bins.

∑ _{i∈I} s(i) ≥ ∑ _{b∈B} s(b)

Each bin has to be filled with items or parts of items so that it is filled completely. s(b,i) is the size of that part of i that is in b, or 0 iff not.

∀ b ∈ B, i ∈ I: s(b,i) ∈ ℕ ∪ {0}
∀ i ∈ I: ∑ _{b∈B} s(b,i) ≤ s(i)
∀ b ∈ B: ∑ _{i∈I} s(b,i) ≥ s(b)

The goal is to minimize the number of item-parts needed to fill all bins.

numparts = |{ (b,i) ∈ B×I | s(b,i)>0 }|
find min(numparts)

Solution

  • Finally!

    It is called bin packing with size preserving fragmentation (BP-SPF).

    There exists this paper

    Approximation Schemes for Packing with Item Fragmentation Omer Yehezkely (November 2006)