Algorithm 产品分箱算法
我有产品和盒子。我想使用最小包装箱数。请忽略产品和包装箱尺寸(WxHxD)。只关注数量。Algorithm 产品分箱算法,algorithm,Algorithm,我有产品和盒子。我想使用最小包装箱数。请忽略产品和包装箱尺寸(WxHxD)。只关注数量。 我需要一个算法来把这些产品放到盒子里。算法必须使用最小盒数和它能使用的最小盒数。算法可以使用同一个框多个。每种产品只能使用一次 我试过这个算法 按数量递增的订单产品 把最小的产品放到最大的盒子里,然后把下一个产品加到盒子里。直到没有空间放下一个。重复上述步骤,直到产品完成 根据该算法 E产品至Z-1盒(自由空间:2900 cm3) B产品至Z-1盒(自由空间:2700 cm3) F产品至Z-1盒(自
我需要一个算法来把这些产品放到盒子里。算法必须使用最小盒数和它能使用的最小盒数。算法可以使用同一个框多个。每种产品只能使用一次 我试过这个算法
- 按数量递增的订单产品
- 把最小的产品放到最大的盒子里,然后把下一个产品加到盒子里。直到没有空间放下一个。重复上述步骤,直到产品完成
- E产品至Z-1盒(自由空间:2900 cm3)
- B产品至Z-1盒(自由空间:2700 cm3)
- F产品至Z-1盒(自由空间:2300 cm3)
- D产品至Z-1盒(自由空间:1700 cm3)
- A产品到Z-1盒(可用空间:700 cm3)
- B产品至Z-2盒(自由空间:1500 cm3)
所以算法使用了两个Z盒。但是人脑可以适应(C+A+F+E)=3000立方厘米(Z盒)和(B+D)=800立方厘米(X盒)
谢谢你的评论和回复。我会计算出最佳的方法来将这些盒子放在一起
- 一个Z等于一个V和一个X
- 一个V等于两个X
- 一个X等于两个U
- 一个U最多等于五个T(必须能够将至少两个盒子合并为一个,以便任何盒子合并都有意义)
CEF=>V
(从技术上讲,它应该是E=>F
,然后是EF=>C
),A=>X,DB=>X
。然后你可以从那里把它组合起来ADB=V
(将2X
框组合成一个V
框)
另一个有效选项是:
DF=>X,BCE=>V,A=>X
。在这种情况下,我们仍然将两个X
组合成V
。也有一些可能的解决方案,您可能有1V
和1Z
,但这只有在您有1X
和1V
时才有意义,否则最好使用2X=>1V
。您会为以下答案支付多少费用:
==========
Found the following best packing into 2 boxes after 10 trials:
Box z with space 200.0 cm3 left contains product(s):
D C E B F
Box x with space 0.0 cm3 left contains product(s):
A
END.
这个想法是从选择中进行有分量的选择
determineBox(listOfProducts) {
create an empty list of boxes listOfBoxes
VS = sum_of_volume(listOfProducts)
If there is a box which volume is bigger than VS
add the smallest box bigger than VS to listOfBoxes
Else
create an empty list newListOfProducts
consider the biggest available box B
add B to listOfBoxes
until the sum_of_volume(listOfProducts) become smaller than the volume of B
drop out of listOfProducts the smallest item
and add it to newListOfProducts
merge listOfBoxes with the result of the function determineBox(newListOfProducts)
returns listOfBoxes
}
其思想是使用递归函数找到最小的框来存储最大的乘积。对于剩余的产品,我们再次使用该功能。总共有多少个箱子/产品?无限制。例如,产品计数可以是100,盒子类型只能是一个。请更好地指定问题。例如,一个盒子可以容纳多个产品吗?每个产品中有多少是你想要包装的?如果你忽略了尺寸,那么这只是一个普通的背包问题,afaict。“算法必须使用最小盒数和它能使用的最小盒数”您的意思是在考虑盒大小之前,盒数必须是最小的吗?因为您需要指定其中一个标准比另一个更重要。如果不是,考虑有1项A(1000)和1项E(100)的情况,它们可以被装入X和E中,对于2盒,总体积为1100,或者将它们都放在一个盒子V中,对于1个体积为2000的盒子。在许多情况下,这可能不产生最佳结果,但是关于拾取(或舍入)有一些要说的话。盒子大小(可能还有产品体积大小)可以产生最佳结果,否则,您可能无法在100多种产品的合理时间内获得最佳结果。