Имя: Пароль:
1C
1С v8
Подскажите алгоритм оптимального заполнения объема
0 VKS
 
26.09.19
15:25
Добрый день

Может кто сталкивался или сам писал wms системы и в частности алгоритм оптимального заполнения объема ячейки. Поделитесь примером или где можно почитать/посмотреть.
Задача простая. Есть объем ячейки -ш/д/в. Есть несколько товаров каждый из которых имеет свой объем - ш/д/в. Как оптимально заполнить ячейку имеющимся товаром?

Просьба сейчас не относить данную задачу с практикой, мол человек может лучше разместить, чем программа или наоборот, человек не сможет разместить товар так, как рассчитала программа. Задача чисто теоритическая и нужна как пример оптимального заполнения объема
1 PR
 
26.09.19
15:27
2 d4rkmesa
 
26.09.19
15:37
3 VKS
 
26.09.19
16:09
спасибо, почитаю
4 Злопчинский
 
26.09.19
16:11
Мой опыт показывает что практической пользы от реализации оптимального заполнения - практически никакой. В wms системах приходится обсчитывать много при ограниченных ресурсах. Поиск оптимальности сжимает.
Для практической работы вполне хватает
- расчёт вместимости по заданным количествами в типоразмер ячейки
- или считаем снежным комом с поправочным коэффициентом
- при размещении кладем в указанную ячейку, если не лезет то системой ставим временную блокировку на вход в ячейку и кладем в следующую подходящую.

В своё время NS публиковал здесь рекурсивный алгоритм, я на основе его считал разбиение заказа на количество паллет - результат хороший, чем крупнее габариты и меньше заказ - тем больше погрешность.
5 Злопчинский
 
26.09.19
16:14
Если надо действительно реализовать то имхо лучше стучаться в packer3d - с его помощью у меня оператор обсчитывал вместимость товара в моноячейки. В нем модно и мультиукладку считать
6 Михаил Козлов
 
26.09.19
16:16
Есть классическая задача заполнения куба (неограниченного размера) шарами.
Известно 2 укладки с одинаковым коэфф. заполнения, но не доказано, что они оптимальны.
Это я к тому, что строгого результата ожидать не нужно. Попробуйте поискать что-то "практическое".
7 Злопчинский
 
26.09.19
16:21
Задача у автора имеет имхо только академический интерес.
Следует например учитывать разрешенные ориентации, допустимые нагрузки
Опять же если с практической точки зрения то обычно в одной ячейке ДЛЯ ХРАНЕНИЯ больше 2-3 товаров делать очень проблематично. А в рабочих ячейках мульти размещение очень быстро скатывается к хаосу.
8 dezss
 
26.09.19
16:40
(7) Зависит от специфики, если товар мелкий, то можно и больше 2-3.
(0) Смотри задачу о рюкзаке. Теоритичней просто некуда)))
9 Михаил Козлов
 
26.09.19
17:23
(8) Рюкзак одномерный и здесь не годится.
10 dezss
 
26.09.19
17:26
11 Chum
 
26.09.19
17:28
(0) тебе эту задачу решат два Дшамшута с опытом работы на складе, причем без регистрации и смс. В ПЭК-е, например, таких видел.
12 ProxyInspector
 
26.09.19
17:33
1. Если ты хочешь с точностью 100% найти оптимальный вариант, то это одна задача (чисто академическая)
2. Если достаточно точности 95% (т.е. в 95% случаев ячейка будет заполнена оптимально) тогда достаточно проверять ШхВхГ товара, чтобы помещался в ячейку и контролировать, чтобы объем товаров в ячейке не превышал объем ячейки.
  Если ячеек много, то разницу между 1 и 2 вариантом не заметишь
13 ProxyInspector
 
26.09.19
17:34
У нас вообще задана возможность длинномерные товары размещать в ячейках, чтобы они могли свешиваться.
14 Мимохожий Однако
 
26.09.19
18:30
Товар поступает не одновременно, а по порядку. В момент поступления очередной партии-впихивай в минимально возможную.
©Ваш Джамшут
15 Злопчинский
 
26.09.19
18:48
А можно вообще весь склад одной ячейкой считать и задача отпадает
16 Михаил Козлов
 
26.09.19
23:02
(10) Вы ошибатесь: 3-х мерный рюкзак - не "упаковка" 3-х мерных объектов.
17 dezss
 
27.09.19
14:57
(16) э...что? Почему это?
18 Михаил Козлов
 
30.09.19
13:38
(17) Многомерный ранец, это несколько ограничений, а не одно, как в одномерном.
Например (2 измерения), рюкзак ограничен по весу и по объему.
Нужно его наполнить, так чтобы "калорийность" была максимальной (каждый предмет имеет вес, объем и калорийность).
При упаковке 2-мерных предметов (прямоугольники с шириной и высотой) ограничения на суммарную ширину и суммарную высоту не адекватны задаче.
19 dezss
 
30.09.19
16:36
(18) Один фиг задача из (0) - это частный случай задачи о рюкзаке.
И как раз таки суммарная ширина и высота вполне себе адекватны задаче (просто у 2-х мерных предметов ширина и высота могут меняться местами, если это для них разрешено).
20 Михаил Козлов
 
30.09.19
18:25
(19) Вы упорно ошибаетесь.
21 Злопчинский
 
30.09.19
19:50
(19) трехмерная укладка имхо неэквивалентна задаче о рюкзаке. "Рюкзак" считает кучей. Трехмерная укладка - зависит от ориентации, порядка укладки. можно наверное и трехмерную укладку свести к задаче о рюкзаке - но внутри функции расчета в рюкзаке тогда д.б. расчет получившегося занятого объема (в т.ч. возможно с пустотами внутри) с учетом реальнйо трехмерной укладки...

(20) так?
22 Сияющий в темноте
 
01.10.19
00:54
так,и с учетом того,что товар можно размещать не параллельно сторонам ячейки-тут даже расчет фиксированного размещения достаточно сложен,не говоря уж о переборе.
опять же,навалив в ячейку кучу вы будете терять время на поиск предмета в ячейке.
и потом,с приходом новой партии товаров даже стопроцентная оптимальность становится уже не такой и оптимальной
23 Сияющий в темноте
 
01.10.19
01:19
задача оптимального размещения хорошо подходит для загрузки машин,да и то в вопросе-влезет или не влезет,а также при упаковке товаров заказа в коробки-в какую коробку все войдет

на складе постоянно идет извлечение и размещение,а для этих операций оптимизация делается по минимальному маршруту сборщика или по частоте использования,а не оптимальному размещению.
24 Злопчинский
 
01.10.19
01:58
(23) "в какую коробку все войдет" - ну это совсем уже вылом мозга/клиента.
прекрасно работает упаковка в коробку по факту. заполнилась - закрываем коробку. и пакуем новую. если совсем красиво - паковать можно одновременно в несколько незакрытых коробок.
25 Злопчинский
 
01.10.19
01:59
(23) для загрузки машин - если паллетами - то длятиповых фур растановка типовых паллет давно просчитана и известна. Если набивка машины валом - то просчет через packer3d
26 dezss
 
01.10.19
08:54
(21) >>можно наверное и трехмерную укладку свести к задаче о рюкзаке - но внутри функции расчета в рюкзаке тогда д.б. расчет получившегося занятого объема (в т.ч. возможно с пустотами внутри) с учетом реальнйо трехмерной укладки...

Именно это и имел ввиду, когда говорил, что это частный случай задачи о рюкзаке. С доп. условиями, ограничениями, в т.ч. и учет пустот. Да, условия получаются более сложные, но на то этот случай и "частный"

(20) неплохо было бы свое мнение аргументировать, а не голословно утверждать, что оппонент ошибается)
27 Михаил Козлов
 
01.10.19
14:05
(21) Не так: это совсем разные задачи.
(26) Давайте формально: Вы утверждаете, что укладка 3-мерных объектов - частный случай многомерного ранца.
Тогда это утверждение нужно доказать, т.е. показать (можно для 2 мерного случая), что любую задачу укладки прямоугольников можно записать как многомерный ранец (т.е. систему линейных неравенств с булевыми переменными (могут принимать значения 0 и 1)).
Для простоты можно считать, что прямоугольники не вращаются (т.е. ширина прямоугольника - по ширине ячейки).
Доказывать же противоположное утверждение (что нельзя свести) у меня нет никакого желания, т.к. для меня это совершенно очевидно, а Фалкерсоновскую премию все равно не дадут.
28 dezss
 
03.10.19
14:33
29 Simod
 
04.10.19
08:30
30 Михаил Козлов
 
07.10.19
13:14
(28) Оно. Но к многомерному ранцу отношения (кроме одномерных контейнеров) не имеет.
Вы можете из статьи увидеть, что хоть какие-то результаты (ε -оптимальные полиномиальные алгоритмы и пр.) относятся только к одномерному случаю.
31 Михаил Козлов
 
07.10.19
13:18
(29) Перебором можно, но долго (а значительно сократить его вряд ли удастся).
В свое время (лет 20 назад) пытался схемой неявного перебора (ветви и границы) делать раскрой (нестандартные элементы для кровли).
Не утверждаю, что сделал лучшим образом: выход получался примерно 75%.
32 Злопчинский
 
07.10.19
18:53
(29) Я с автором стыковался ранее по этой разработке. Вариант опубликованный чисто какпоиграться, для промприменения непригоден. Он простейшие укладки из нескольких коробок не мог уложить. Если будете играться то проверять можно упомянутым выше пакором3д
33 dezss
 
08.10.19
10:22
(30) Так я и не утверждал, что задача имеет решение за полиномиальное время.
И чем же контейнеры принципиально отличаются от ранцев?
34 Михаил Козлов
 
08.10.19
12:01
(33) Одномерные контейнеры - ничем. Изначально речь шла об упаковке 3-х мерных предметов.
Вы предложили в качестве модели использовать многомерный ранец, я утверждаю, что задачу (0) к многомерному ранцу свести не удастся.
Вы дали ссылку на статью в Википедия, я обратил Ваше внимание, что в этой статье есть результаты ТОЛЬКО об одномерных контейнерах.
Если Вы считаете, что (0) можно свести к многомерному ранцу - оставайтесь в этом приятном заблуждении.
На этом позвольте попрощаться.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший