Как я могу уменьшить этот алгоритм BinPack? (Его можно назвать sth, как MinBreak-BinFill.)

Я использую специальный вариант задачи BinPack. Я использую наивный алгоритм, atm, поэтому мне нужно знать, как его можно вызвать, чтобы провести начальное исследование. Или кто-нибудь знает, как свести эту проблему к чему-то известному?


Проблема: есть предметы I и корзины B определенного количества и размера.

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

Сумма всех размеров элементов не меньше размера суммы всех ячеек.

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

Каждая корзина должна быть заполнена предметами или частями предметов так, чтобы она была заполнена полностью. s(b,i) — это размер той части i, которая находится в b, или 0, если нет.

∀ 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)

Цель состоит в том, чтобы свести к минимуму количество деталей, необходимых для заполнения всех контейнеров.

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

person comonad    schedule 16.11.2012    source источник


Ответы (1)


Окончательно!

Это называется биновая упаковка с фрагментацией с сохранением размера (BP-SPF).

Существует эта бумага

Приближенные схемы упаковки с фрагментацией элементов Омер Йехезкели (ноябрь 2006 г.)

person comonad    schedule 06.05.2013