最佳解决方案,以适应多个容量袋中的物品

时间:2017-03-09 01:12:12

标签: algorithm optimization dynamic-programming distributed-computing

我一直在研究这个问题(https://github.com/alexpchung/File-Distribution-Planning/blob/master/README.pdf),我需要找到一个最佳的解决方案来将文件放在节点中。

这是我到目前为止使用的算法

  • 节点数是N.

  • 跟踪每个节点迭代的可用文件大小 每个文件,它有N个选择(假设文件适合等)

  • 递归评估每个

我想到的另一个解决方案是迭代每个节点并做一个背包0/1。不幸的是,我受到了打击,因为由于节点大小没有修复,这将是一个不正确的解决方案。

如果你有任何指针会很棒。

感谢。

1 个答案:

答案 0 :(得分:0)

也许你可以对此进行基准测试:

  • 排序两个列表。(容量,大小,全部增加)

  • 从最大的文件开始。

  • 也从最大的节点开始。
  • 检查它是否合适
    • true:把它放进
    • false:将其置于“失败”列表,因为不存在更大的节点。
  • 如果选中(最大)节点已满,则迭代下一个较小节点
  • İ到下一个较小的文件。
  • 返回检查步骤,直到其中一个条件为真
    • 分配的所有文件,存在空节点
    • 所有节点已满,未放置的文件存在
  • (*)仅对空白空间中的节点进行排序(空节点存在= true或两者都为true)
    • 具有相反顺序的重复节点列表
      • 检查“最新添加的文件”是否最少“空白”d可以适合最大的“空白空间”d节点,如果转换在两者上产生相等/平衡的空白空间
        • true:将文件发送到该节点
        • false:迭代下一个“最小空格”节点,因为该文件不能适合其他人更新
      • 迭代两个列表(并从列表中删除精炼对)
  • 如果可以改进至少1个文件,请转到(*)