4

昨晚我正在开发一个应用程序,遇到了一个特定的问题,我确信它可能有一个有效的算法来解决它。有人可以建议吗?

问题:

TL;DR:也许一张图片会有所帮助:http ://www.custom-foam-inserts.com/ 。我有很多物品可以放在不同的隔间里:我想尽量减少需要携带的箱子数量。

.

我有一套 N 件昂贵的电子设备,我想将它们装入专门设计的保护盒中。这些盒子每个都有许多隔间,每个隔间都可以容纳单个物品:其中一些专门设计用于容纳特定物品(即,相机形状的孔),而另一些则是通用的(矩形孔)。我事先知道有 C 种不同尺寸的隔间以及它们的尺寸。

这些盒子有 L 种不同的布局,每个都至少有一个隔间。布局可能是“两个大矩形隔间和 4 个小圆形隔间”。

每个隔间尺寸至少存在一个布局,但我有不适合任何隔间尺寸的物品。每件物品至少适合一个隔间,并且可能适合多个不同的隔间:例如,我的数码单反相机可能适合“中号矩形”隔间,宽松适合“大矩形”,完美适合“单反相机隔间”,但不适合“小圆圈”。为此,我列出了适合每个项目的隔间。

这些项目是中度异构的——例如,可能有 50 个相同尺寸的项目和 20 个另一种尺寸的项目。

每个盒子有两个成本 Volume 和 Dollars(但是 D ~与 V 成正比)。我需要尽量减少其中一项或两项费用,同时将我所有的物品都装进盒子里。由于盒子的布局,最佳解决方案可能包含未使用的隔间。如果两种溶液的体积相同,则选择未使用的隔间最多的一种。因为每个隔间都存在于至少一个布局中,并且每个项目至少适合一个隔间,所以总是有一个适合所有项目的解决方案。

项目数:<=2000,平均箱数 150。隔间数:<= 1000。布局数:<= 1000。

关于这个有什么想法吗?我看过一些背包和装箱算法,但我不确定它们是否适合。非常感谢帮助。

4

1 回答 1

1

从问题描述来看,这确实似乎是背包问题,因为您必须最大限度地利用可用空间,同时牢记您的选择权重

根据您所追求的,您还可以考虑使用遗传算法。由于这个问题是 NP Complete,所以如果您需要添加更多项目,运行时间最终会爆炸,所以如果我需要与所需时间无关的最佳解决方案,我会主要使用这个。

另一方面,遗传算法应该能够在较短的时间内提供一些解决方案,但是它提供的解决方案可能不如背包算法提供的解决方案,所以我会选择遗传算法如果我有时间限制,我需要提供一些解决方案,我不在乎它是否不是绝对最好的。

于 2012-05-03T12:10:22.090 回答