私はBinPack問題の特別な変形を使用します。私はナイーブなアルゴリズムatmを使用しているので、初期の調査を行うためにどのように呼び出されるかを知りたいです。または、この問題を既知のものに減らす方法を知っている人はいますか?
問題:特定の数量とサイズのアイテムIとビンBがあります。
|I| ∈ ℕ, |B| ∈ ℕ
s : (I ∪ B) → ℕ
すべてのアイテムサイズの合計は、少なくともすべてのビンの合計のサイズです。
∑ _{i∈I} s(i) ≥ ∑ _{b∈B} s(b)
各ビンは、完全に満たされるように、アイテムまたはアイテムの一部で満たされる必要があります。s(b,i)
はbにあるiの部分のサイズであり、そうでない場合は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)