|
Формирование возврата из минимального количества реализаций | ☑ | ||
---|---|---|---|---|
0
Надо работать
21.01.20
✎
09:38
|
Есть список товаров для возврата. Нужно подобрать реализации за период так, чтобы из количество было минимальным. Какой алгоритм посоветуете?
|
|||
1
Михаил Козлов
21.01.20
✎
09:42
|
Многомерный ранец. Попробуйте жадным алгоритмом. Если задача на равенство, как Вы понимаете, решения может не быть.
|
|||
2
Надо работать
21.01.20
✎
11:38
|
Мда уж, задача нетривиальна. Удивительно то никто в сообществе 1С ее еще не решал
|
|||
3
catena
21.01.20
✎
12:12
|
(2)Удивительно, как вы делаете такие выводы. Решали и не один раз, но вряд ли кто-то поделится готовым кодом забесплатно. Описания алгоритма есть в гугле.
|
|||
4
Надо работать
21.01.20
✎
12:24
|
Я в гугле не нашел
|
|||
5
catena
21.01.20
✎
12:27
|
(4)Серьезно? https://ru.wikipedia.org/wiki/Задача_о_рюкзаке
|
|||
6
Надо работать
21.01.20
✎
12:30
|
(5) серьезно? это не задача о рюкзаке, как минимум читайте (1)
|
|||
7
Жан Пердежон
21.01.20
✎
12:36
|
пахнет NP-задачкой;
(6) да, но похоже, что решается точно также |
|||
8
catena
21.01.20
✎
12:45
|
(6)Это задача о рюкзаке - набрать сумму минимальным/максимальным количеством предметов. Задача о рюкзаке и ее вариации читаются в первые недели на курсах комбинаторики, алгоритмов, теории чисел. Неужели у вас не было ничего из этого?
|
|||
9
Надо работать
21.01.20
✎
13:07
|
(8) у вас в возвратах всегда одна строка?
|
|||
10
catena
21.01.20
✎
13:15
|
(9)При чем тут количество строк?
|
|||
11
FIXXXL
22.01.20
✎
08:30
|
(10) возврат на 10 товаров, надо найти реализации, максимально покрывающие товарный состав и количество...
не понятно как выбирать документ реализации, какой лучше, каков "весовой" коэффициент? макс.список товаров? макс.количество по каждому товару? |
|||
12
FIXXXL
22.01.20
✎
08:32
|
(11) +
к примеру, есть реализация, которая закроет один товар полностью, но других в ней нет есть реализация, в которой представлены все 10 товаров, но количества маловато что в приоритете? |
|||
13
Сияющий в темноте
22.01.20
✎
08:34
|
Смысл этого действа?
потом пояаляется другой возврат,например,весь по одной реализаци,а ее уже в прошлом использовали. |
|||
14
FIXXXL
22.01.20
✎
08:36
|
(13) значит неповезло :)
|
|||
15
d4rkmesa
22.01.20
✎
09:03
|
(0) Самому интересно, есть ли приемлемое по скорости и "попаданию" решение. Когда прикидывал подобную задачу, пришел к выводу примерно как в (7). Сделал пока обработку, которая предлагает пользователю потыкать галочки напротив ссылок на реализации, минимизировав результат, благо такие возвраты единичны.
|
|||
16
Папа Гапа
22.01.20
✎
11:42
|
Корявое условие, даже не понятно по количеству приоритет строить или по сумме. Одинэсники опять изобретают что-то несуществующее.
|
|||
17
Михаил Козлов
23.01.20
✎
10:52
|
Формально:
{I} - множество товаров в возврате {J} - множество расходных накладных, которые можно выбирать Bi - количество товара i в возврате Aij - количество товара I в реализации j. Xj - искомые переменные = 0 или 1 в зависимости от того, выбрана или нет накладная. Условие "покрытия" возврата: СУММА(Aij*Xj)>=Bi Минимизация числа накладных: СУММА(Xj) -> MIN Это многомерный ранец. Можно про него почитать. Можно попробовать жадный алгоритм, придумав критерий упорядочения реализаций. Можно попробовать схему "ветвей и границ", используя для отсечения решение задачи линейного программирования с релаксированными ограничениями 0<=Xj<=1. Реализацию симплекс метода (мыло в профиле) могу выслать. |
|||
18
Надо работать
23.01.20
✎
16:47
|
Короче многомерные ранцы и генетические алгоритмы это хорошо, но очень долго...
Запросом выбираем партии с таким упорядочиванием 1) полное покрытие 2) общее количество совпадающих товаров 3) количество совпадающих строк 4) количество полностью покрытых строк Дальше по фифо |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |