Я использую специальный вариант задачи 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)