Algorithm 等空处理算法

Algorithm 等空处理算法,algorithm,statistics,combinatorics,knapsack-problem,bin-packing,Algorithm,Statistics,Combinatorics,Knapsack Problem,Bin Packing,我正在研究一个类似的问题 问题 我有几个箱子。每个箱子包含几个重量相同的物品(例如1、2、5、10千克)。每个箱子中的物品数量不同。我必须实现一个算法,计算出为了达到一定重量而应该分配的物品数量,以便在更多的操作过程中,箱子几乎同时是空的 示例 B1有50个项目,重量为1 Kg B2有90个项目,重量为2 Kg B3有80个项目,重量为5 Kg B4有50个项目,重量为10 Kg 算法应计算应处理的物品数量,以达到45 Kg。该算法应返回与以下类似的结果: 10*B1+3*B3+1*B4=45千

我正在研究一个类似的问题

问题

我有几个箱子。每个箱子包含几个重量相同的物品(例如1、2、5、10千克)。每个箱子中的物品数量不同。我必须实现一个算法,计算出为了达到一定重量而应该分配的物品数量,以便在更多的操作过程中,箱子几乎同时是空的

示例

  • B1有50个项目,重量为1 Kg
  • B2有90个项目,重量为2 Kg
  • B3有80个项目,重量为5 Kg
  • B4有50个项目,重量为10 Kg
  • 算法应计算应处理的物品数量,以达到45 Kg。该算法应返回与以下类似的结果: 10*B1+3*B3+1*B4=45千克


    我想知道是否有任何已知的算法可以用来解决我的问题。我已经有了一个算法,它可以计算出分配预期重量所需的项目所需的所有排列,但我有一些问题需要解决,根据每个箱子中物品的可用性,我应该选择哪种排列方式。

    您可以将问题分解为一系列大小相等的箱子包装问题,首先只考虑比最小箱子多的箱子,然后重复该操作,直到所有箱子的大小相同


    因此,在前面提到的简化的箱子集合上使用已知的(维基百科文章)箱子装箱算法。

    我认为箱子装箱算法不是解决我问题的最佳方案。我实现了最合适的装箱算法。首先,我根据可用项对数据进行降序排序。我遍历所有项目,直到找到解决方案或项目列表为空(未找到解决方案)。对于以下情况,算法未找到有效的解决方案:

    • B1 40件,重量100
    • B2 30件,重量50
    • B3 20重量为20的物品
    对于权重350,算法未找到任何有效结果

    结果1(340)100 50 20 100 50 20 结果2(340)100 50 20 100 50 20