Java 这是什么样的算法?箱子包装/背包?

Java 这是什么样的算法?箱子包装/背包?,java,algorithm,dynamic-programming,Java,Algorithm,Dynamic Programming,昨晚我在做一个应用程序,遇到了一个特殊的问题,我相信可能有一个有效的算法来解决它。有人能建议吗 问题: TL;医生:也许一张照片会有帮助。我有很多东西可以放在不同的隔间里:我想尽量减少我需要带的箱子数量 我有一套N件昂贵的电子设备,我想把它们装进专门设计的保护盒里。这些盒子都有许多隔间,每个隔间可以容纳单个物品:其中一些专门设计用于容纳特定物品(即相机形状的孔),另一些是通用的(矩形孔)。我事先知道有C种不同尺寸的隔间,以及它们的尺寸 这些盒子有不同的布局,每个至少有一个隔间。布局可能是“两个

昨晚我在做一个应用程序,遇到了一个特殊的问题,我相信可能有一个有效的算法来解决它。有人能建议吗

问题:

TL;医生:也许一张照片会有帮助。我有很多东西可以放在不同的隔间里:我想尽量减少我需要带的箱子数量

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

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

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

这些项目具有一定的异质性——例如,一种尺寸的项目可能有50个,另一种尺寸的项目可能有20个

每个盒子有两个成本-体积和美元(但D与V成比例)。我需要将一项或两项成本降至最低,同时将我的所有物品装入箱子中。由于箱子的布局,最佳解决方案可能包含未使用的隔间。如果两种溶液的体积相等,则选择一种含有最多未使用隔间的溶液。因为每个隔间至少有一个布局,并且每个项目至少适合一个隔间,所以总是有一个适合所有项目的解决方案


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

根据你所追求的,你也可以考虑使用A。由于这个问题是NP完全问题,如果您需要添加更多项,运行时间最终会爆炸,因此如果我需要与所需时间无关的最佳解决方案,我将主要使用这个方法


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

我认为你可以用动态规划优化解决这个问题。。。但是仅仅是阅读这个问题就让我头疼!是的,这看起来像是一个糟糕的箱子包装。我在这里找到了一些关于你的问题的参考资料:虽然这是关于纯粹的背包问题,而不是你需要的实现。希望能有帮助!祝你好运编辑:这里:只要买100箱,把你的东西装进去,然后把你不需要的送回去:)@hage哈哈,不幸的是我是卖箱子的人-我想为客户提供一种自动方式来确定最佳装船。