【问题标题】:Equal emptying disposing algorithm等排空处理算法
【发布时间】:2017-01-18 16:12:37
【问题描述】:

我正在解决与Bin packing problem 类似的问题。

问题

我有几个垃圾箱。每个箱子包含多个重量相同的物品(例如 1、2、5、10 公斤)。每个 bin 中的项目数量不同。我必须实现一种算法,该算法计算应分配的物品数量以达到一定的重量,以便在更多操作过程中,垃圾箱大约同时是空的。

示例

  1. B1有50件,重量为1公斤
  2. B2有90件,重量为2公斤
  3. B3有80个物品,重量5公斤
  4. B4有50件10公斤的物品

算法应该计算出达到 45 公斤的物品数量。该算法应返回类似于以下内容的结果: 10*B1 + 3*B3 + 1*B4 = 45 公斤。

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

【问题讨论】:

    标签: algorithm statistics combinatorics knapsack-problem bin-packing


    【解决方案1】:

    您可以将您的问题拆分为一系列大小相等的装箱问题,方法是首先只考虑比最小箱子有更多物品的箱子,然后重复此操作,直到所有箱子都具有相同的大小。

    因此,对上述减少的垃圾箱集使用已知的(维基百科文章)垃圾箱打包算法。

    【讨论】:

      【解决方案2】:

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

      • 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 .....

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-10-21
        • 2017-07-17
        • 1970-01-01
        • 2016-12-23
        • 2011-06-19
        • 1970-01-01
        相关资源
        最近更新 更多