Равномерное деление весов в Javascript (проблема сортировки / сортировки по бинам) - PullRequest
0 голосов
/ 16 октября 2018

У меня есть 100 корзин и случайное количество коробок (каждая из которых имеет вес и объем).Мне нужно как можно более равномерно распределить ящики по ячейкам, и ни одна ячейка не может иметь более 100 объемов.Хотя число ящиков в каждом ходу случайное, я знаю количество ящиков (boxCount), а также вес и объем каждого ящика в массиве.

Поскольку вес должен распределяться одинаково, яm, взяв общий вес всех ящиков и разделив его на 100, чтобы получить среднее количество, которое должно быть в каждой корзине.Ниже я просто пытаюсь перебрать каждую ячейку и назначить ее ячейке, если текущая ячейка меньше среднего, а объем меньше 100. Но корзина остается на нуле, она не увеличивается.Что-то не так в утверждении 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;
  }
}
...