Алгоритм: заполнить разные корзины - PullRequest
0 голосов
/ 24 октября 2018

Давайте предположим, что у меня есть 3 разных корзины с фиксированной емкостью

И n-продуктов, которые имеют различную ценность для каждой корзины - вы можете выбрать только целые продукты

Каждый продукт должен быть ограниченна максимальную сумму (т. е. вы можете максимально выбрать продукт 5 раз)

Каждый продукт добавляет по меньшей мере 0 или более значений ко всем корзинам и входит во все виды вариаций

Теперь я хочусписок со всеми возможными комбинациями товаров, размещаемых в корзинах, упорядоченных по точности (например, корзина 1 на 5% полнее будет на 5% менее точной)

Редактировать: Пример
Корзина Емкость 100
КорзинаB емкость 80
Корзина C емкость 30

поддельные продукты
Продукт 1 (A: 5, B: 10, C: 1)
Продукт 2 (A: 20 B:0, C: 0)
Там может быть сотни других продуктов

Лучше всего подходит с максимум 5 каждый будет
5 раз Продукт 1
4 раза Продукт 2

Результат
A: 105
B: 50
C: 5
Точность: (qty_used / max_qty) * 100 = (160/210) * 100 = 76,190%

Следующей будет другая комбинация с меньшей точностью

Любое указание в правильном направлении высоко ценится Спасибо

Редактировать:
вместо вышеуказанного метода, точность должна быть как ошибка, а список должен быть в порядке возрастания ошибки.

Ошибка (Корзина x) = (|max_qty(x) - qty_used(x)| / max_qty(x)) * 100

и общая ошибкадолжно быть средневзвешенным значением ошибок всех корзин.

Общая ошибка = [Σ (Error(x) * max_qty(x))] / [Σ (max_qty(x))]

...