优化 - 重新排列特定类型的项目?

时间:2013-06-05 19:57:48

标签: optimization

优化 - 重新排列特定类型的项目? 这是我正在处理的个人项目的一个小优化问题:所以想象你有很多盒子的物品,并且在每个盒子里,你知道物品必须运到不同的地方。

示例:

  

方框1:1000个项目,500到位置A,500到位置B。

     

方框2:1000个项目,500到位置A,500到位置B.

我希望能够重新排列这些项目,以便我可以尽可能多地将整箱运送到一个目的地。例如,在上面的示例中,我可以重新排列项目,使new_box 1有1000个项目到位置A,1000个到位置B。

现在你可以想象这种完美的重排案例并不总是会发生。如果我有以下内容:

  

方框1:1000个项目,500到位置A,300到位置B,200到位置C.

     

方框2:1000个项目,500到位置A,500到位置B。

然后,我想(a)优化一个目的地的整箱数量,& (b)最小化每个其他框中不同位置的数量。例如,拥有3个盒子,每个盒子有2个不同的目的地,比3个盒子每个有3个不同的目的地要好。上面第二个例子的最佳重新排列是:

  

New_box_1:1000件商品,1000件到位置A。

     

New_box_2:1000个项目,800到位置B,200到位置C。

我的问题是:我如何处理任意数量的盒子和每个盒子的任意数量的目的地的这种情况?为了解决这个问题,我们首先假设每个盒子都有相同的物品数量。

我现在想的是采取一种贪婪的方法:

  1. 在每个后续框中下行,并保留目的地的运行总和以及将要运送到它的项目数。
  2. 如果这些中的任何一个加起来的值大于盒子容量,请将这些项目放在他们自己的盒子中。
  3. 然后,将最大数量的项目带到剩余的一个目的地,调用此“x”,取值(框容量 - x),(调用此“y”),并找到数量的值到达一个目的地的项目,它们都是“y”,最接近“y”。
  4. 然后,将“x”项目放在第一个目的地,将“y项目”放到另一个框中的第二个目的地,然后重复。
  5. 还有其他任何建议或见解吗?非常感谢。

1 个答案:

答案 0 :(得分:0)

我认为这是一个简单的1d装箱问题。问题是最多包含1000个项目的框。然后你可以使用bin-packing算法,如最适合,first-fit等。