在Javascript中平均分配权重(bin排序/背包式排序问题)

时间:2018-10-16 14:31:48

标签: javascript sorting optimization knapsack-problem

我有100个垃圾箱和随机数量的箱子(每个箱子都有重量和体积)。我需要将箱子尽可能平均地分配到垃圾箱中,并且任何垃圾箱的体积都不能超过100。尽管每回合的箱子数量是随机的,但我知道箱子的数量(boxCount)以及数组中每个箱子的重量和体积。

因为重量需要平均分配,所以我将所有箱子的总重量除以100,以获得每个箱中所需的平均重量。在下面,我只是简单地尝试遍历每个框,如果当前bin小于平均值并且体积小于100,则将其分配给bin。但是bin保持为零,并且没有增加。 if语句有问题吗?

此外,关于如何进行优化以使每个箱具有尽可能接近平均值的任何指针将受到赞赏,因为如果下一个箱子的重量或体积很大,则当前方法可能相差很远

let bin = 0;
for (let i = 0; i < boxCount; i++) {
  w = 0;
  vol = 0;
  if (((w + allBoxes[i].weight) <= (average)) && ((vol + allBoxes[i].volume)) < 100) {
    w = w + allBoxes[i].weight;
    vol = vol + allBoxes[i].volume;
    allBoxes[i].bin = bin;
  } else {
    bin = ++bin;
  }
}

0 个答案:

没有答案