web-dev-qa-db-ja.com

Binパッキングでの動的プログラミング

Problem:セットS = {1,2,4,8}から可能なサイズのオブジェクトのリストLとサイズ16のビンの無制限の供給が与えられ、ビンの可能な最小数を使用する必要があるLのすべてのオブジェクトをパックする.
以下のシナリオで、動的プログラミングまたはその他の方法を使用して、最適な(またはほぼ最適な)ソリューションを探しています。

  1. Lはオフラインで与えられず、代わりに、将来の要求(1-Dオンラインベクトルビンパッキング)を知らずにオブジェクトを1つずつフィットするように求められます。
  2. サイズはSXSからで、ビンはそれぞれ容量(16、16)です。 (2次元ベクトルビンパッキング)。

仮定:最適なパッキングとは、可能なすべてのパッキング、つまり使用されるビンの最小数のパッキングからの可能な最高のパッキングを意味します。
実際に一般化されたベクトルビンパッキングはNP困難ですが、有限セットの標準サイズにより、より効率的で優れたソリューションが存在する可能性があると思います。

私のアプローチ:明らかに、1-Dオフラインはオブジェクトの巧妙なペアリングを使用して<= optimal + 1にパックできます。
しかし、上で尋ねられた他の2つの側面には行き詰まっています。
First Fit、Best Fit、First Fit Decreeasingアルゴリズムについて知っていますが、この問題固有の解決策を探しています。

4
v78

1次元のオフラインの場合、すべてのオブジェクトを大きいものから小さいものに並べ替えるとします。サイズが原因で、厄介なカットオフは発生せず、おそらく最後のものを除くすべてのビンが最大容量まで満たされます。これが賢いペアリングの意味だと思います。

オンラインの場合、サイズごとに1つずつ、4つの異なるビンを保持すると、おそらく4つのビンを除いて、すべてのビンを完全に満たすことができます。リストが十分に大きければ、これは最適解に非常に近くなります。リストLのサイズと各サイズが発生する確率は事前にわかっていますか?

1
FlorianK