2D箱包装的变化?

时间:2013-07-23 17:37:19

标签: javascript algorithm bin-packing

根据我对料桶包装的理解,您试图将预定且通常不同尺寸的物品装入一个或多个容器或预定固定尺寸的“箱”中。我有一个问题,我有一个固定大小的单个容器和必须适合它的固定数量的元素。区别在于我的元素不是固定大小,但可以调整为特定的任何倍数数。例如:

假设我有3个对象或元素必须完美地放在280x420的容器中,并且对象必须重新调整为140的倍数。

因此,它可以像这样:(或垂直翻转)

+----------+----------+
| 140x140  | 140x140  |
|          |          |
|          |          |
+----------+----------+
| 280x280             |
|                     |
|                     |
|                     |
|                     |
+---------------------+

或:(或水平翻转)

+----------+----------+
| 140x210  | 140x420  |
|          |          |
|          |          |
|          |          |
+----------+          |
| 140x210  |          |
|          |          |
|          |          |
|          |          |
+----------+----------+

最终,每个框的大小将根据统计信息动态确定。 (例如,如果一个项目的统计数据为90%,而另外两个项目的统计数据为2%和8%,那么很明显90%会得到更大的框。)但是,我试图不要过于复杂化它还没有,所以只需创建一个填充容器的算法就是我现在的主要目标。

我一直在研究不同的算法,但还没有想出一个理想的尝试方法。有什么指针吗?例子?现有的数学或其他相似的算法?


更复杂的例子是:6件物品,容器为560x420。 元素JSON: { "0": "432", "1": "389", "2": "403", "3": "190", "4": "215", "5": "832" } 一种可能的渲染:

+----------+----------+---------------------+
| 140x280  | 140x140  | 280x140             |
| (0,1,    | (3 or 4) | (2)                 |
|    or 2) |          |                     |
|          |          |                     |
|          +----------+---------------------+
|          | 140x140  | 280x280             |
|          | (3 or 4) | (5)                 |
|          |          |                     |
|          |          |                     |
+----------+----------+                     |
| 280x210             |                     |
| (0,1, or 2)         |                     |
|                     |                     |
|                     |                     |
+---------------------+---------------------+

1 个答案:

答案 0 :(得分:0)

进行了一些挖掘,发现我正在寻找的东西被称为“砌体”。探索了一下,然后遇到了Isotope,一个jQuery的插件,(希望)正是我正在尝试做的事情。这应该是一个快速的研究。

http://isotope.metafizzy.co/