Автор: beginner2004

Подскажите алгоритм.

Дано:
склад с пронумерованными ячейками, в которых лежат различные товары.
один товар может лежать в нескольких местах.
задано, сколько нужно собрать на поддон товара A(1) N(1) штук, товара А (2) N(2) штук, … товара А (m) N(m) штук

Надо:
рассчитать из каких ячеек брать и порядок обхода, чтобы длина пути была минимальна.

Если бы ячейки были фиксированными, то это алгоритм коммивояжера. Но тут можно варьировать, из каких ячеек брать.

#Практика #Информационные_технологии_в_логистике

Комментарии (58)

Вообще, это только часть задачи по оптимизации работы склада. Для того что бы с минимальными потерями времени подбирать товар, его необходимо правильно разместить на складе.

Относительно минимальной длины пути — задача не имеет практической пользы, так как мало вероятно что весь товар на складе разбросан в равных количествах по всему складу. Чаще товар при размещении группируют по брендам, видам и пр, в связи с чем весь товар находится в одной области склада. В данном случае куда важнее выбрать такие ячейки — что бы количество «подходов» было минимальным.
Для этого используется следующий алгоритм:
По каждой позиции строиться список ячеек, и сортируется по убыванию остатка.
Определяется количество к подбору.
Если количество к подбору больше максимального остатка — товар извлекается из ячейки с максимальным остатком и алгоритм повторяется
Если количество к подбору меньше максимального, находится минимальный достаточный остаток в ячейке и товар извлекается из этой ячейки.

Если товар храниться в множестве ячеек с равным количеством (например полные паллеты всегда заполнены одинаковым количеством товара) в этом случае накладывается дополнительная сортировка по индексу ячейки. Индекс задается пользователем вручную для каждой ячейки и определяется расстоянием от зоны собранных заказов.

А настроить коммивояжера каждый раз считать перед выездом никак?

Система же помнит куда в ДАННЫЙ момент разнесены товары, остается только выбрать товар и сделать ПОИСК РЕШЕНИЯ потем ячейкам, которые автоматом подставляться должны в сетку. Isn’t it?


Относительно минимальной длины пути — задача не имеет практической пользы, так как мало вероятно что весь товар на складе разбросан в равных количествах по всему складу.
[/qoute]

Конечно, хотелось бы обойтись без разброса товара. Не ясно, как это сделать. Склад ответственного хранения. Ассортимент определяется клиентами. Наполнять склад надо как можно сильнее.

А настроить коммивояжера каждый раз считать перед выездом никак?

Система же помнит куда в ДАННЫЙ момент разнесены товары, остается только выбрать товар и сделать ПОИСК РЕШЕНИЯ потем ячейкам, которые автоматом подставляться должны в сетку. Isn’t it?

Нет, не так. Пусть у нас m товаров, каждый из которых лежит в n ячейках. Тогда число различных комбинаций из m ячеек, для которых надо решить алгоритм коммивояжера равно n в степени m. Для десяти товаров и десяти ячеек — 10 в 10 степени = 10000000000 вариантов. Не многовато ли?

Бороться с «миксованием» товара можно за счет настройки правил размещения. Склады ответственного хранения опять же — позволяют регулировать заполнение склада.

1С: Логистика. Вам поможет.

Кстати там и этот алгоритм так же реализован.

Есть вопросы, Велкам в личку или ICQ.

Нет, не так. Пусть у нас m товаров, каждый из которых лежит в n ячейках. Тогда число различных комбинаций из m ячеек, для которых надо решить алгоритм коммивояжера равно n в степени m. Для десяти товаров и десяти ячеек — 10 в 10 степени = 10000000000 вариантов. Не многовато ли?

да не для всех сразу..  :)

приехала машина за поддоном творожка «Растишишка»
скажем указываете ИМЕННО ЭТУ позицию, система автоматически проставляет в ячейки задачи вояжера расстояние до ячеек С ЭТИМ товаром и просчитывается наикратчайший.

Едете, за другим товаром, вычисляете ДЛя НЕГО.

To Петров Константин

Грузчик берет поддон и с ним обходит все ячейки, а не бегает от ячейки к поддону.

Прочитайте раз 10, может тогда до Вас дойдет смысл и не будете говорить ерунду.

Евгений, я понял ваш вопрос -мне приходилось ставить задачи программистам!
Так вот, если у вас учитываются сроки годности, то брать нужно из ячейки с  с.г.
Если по учётной политике финотдела у вас принят FIFO, то самый ранний приход.
Если всего этого нет, то из ячейки с меньшим номером адреса.
Но  мы всёже «условно привязывали» артикул к ячейке на основании АВСанализа и ставили товар в другое место, толькое если «место» полное,  из многих свободных ячеек выбор идёт также по АВС, т.е. каждому артикулу автоматически с периодичностью присваивается в карточке товара рейтинг по АВС.  Товар с рейтингом А занимает свободные ячейки с меньшим номером, С -с большим.  

Подскажите алгоритм.

Дано:
склад с пронумерованными ячейками, в которых лежат различные товары.
один товар может лежать в нескольких местах.
задано, сколько нужно собрать на поддон товара A(1) N(1) штук, товара А (2) N(2) штук, … товара А (m) N(m) штук

Надо:
рассчитать из каких ячеек брать и порядок обхода, чтобы длина пути была минимальна.

Если бы ячейки были фиксированными, то это алгоритм коммивояжера. Но тут можно варьировать, из каких ячеек брать.

Не очень понятна постановка вопроса, равно как и завязавшееся обсуждение.

Оптимизация маршрута на адресном складе — не может быть так запросто выражена тут в форуме однозначно, т.к. это — результат учета многих факторов. Специфика товара, устройство склада, планировка склада и т.д.
Каждый если что посоветует, то в силу того, с чем сам имеет дело.
Меня лично «позабавил» метод «разместить товар по брендам». Он, конечно, имеет право на жизнь, и даже используется. Но советуя такое старайтесь все же абстрагироваться от того, с чем сами имеете дело. Вопрос — то человек задал универсальный, а советы ему идут специфические.
У нас, например, книги. Найдите у них бренд. Автор — их 3000. Будете склад на 3000 зон делить?
Еще серии есть — их 2000. Еще есть жанры. Их штук 40. Вот только толку от этого — тоже нет, т.к. любой заказ клиента, а, стало быть и набор товара, размазывается совершенно равномерно по всем таким «брендам».
Алгоритм обхода склада, тем не менее, есть, и его оптимизация продолжается. И, как правильно заметили, должна быть еще и оптимизация первичного размещения, а завязывать ее надо….
Даже продолжать не буду — повторю, слишком специфичная задача, чтобы дать универсальный ответ.

Андрей,
делить товар на группы всё равно нужно!
Елена Павлова  о классификаторе очень доходчиво поясняет эту мысль!
Специфика классификации у всех своя, но остаются принципы!
Классификатор первичен, АВС-вторичен!

Андрей,
делить товар на группы всё равно нужно!

Нужно. Но не всегда по брендам.

В целях оптимизации склада у нас автоматический алгоритм делит на 4 группы в зависимости от того, как много дней за период продажи товара вообще были. То есть не важно — сколько штук. Важно сколько дней.
Практический смысл такого деления — положить поближе те товары, за которыми ходят чаще.
Разновидность XYZ.

Делить по брендам для нас бесполезно. По ABC тоже.

Но это — оптимизация именно размещения, а не маршрута обхода. Маршрут обхода — отдельная история и зависит прежде всего от устройства и планировки склада. Сколько стеллажей, сколько рядов, какая высота, есть ли и где проходы между рядами и т.п.

Андрей,
я согласен, что всё очень индивидуально!
Кстати, о делении по брендам я ничего не говорил!
У меня есть коллега-долгое время работал в книжном бизнесе Генеральным, по его рассказам, непростая там логистика и штрихкод просто необходим, и доходность невысокая.
Так что, желаю Успехов!

Господа, задачка решается. Но со многими «но».
Для ее решения за допустимое время вам придется сделать
дополнителные предвычисления, а именно расстояние от
каждой ячейки до каждой. При 7000 это всего 49 000 000 раз
найти кратчайший путь на графе. Запишите это все в отдельной таблице.
После этого в реалтайме выполняете аллокейт (назначение товара на отбор) с учетом FIFO и пр. Если есть варианты — решаете несколько задач комивояжера и получаете кратчайший путь.

Тут будет еще одна проблема, которую вы не упомянули, ваша картинка оптимизации выполняется не сразу. Пока вы проходите часть пути, появляются другие заказы к отбору и осуществляются приходы. Общий кратчайший путь может измениться. Поэтому надо осуществлять перерасчет по каждому событию отбора, аллокейта и размещения.
Вполне может оказаться, что более примитивные методы будут давать больше практической пользы, чем математически точные.

«Вполне может оказаться, что более примитивные методы будут давать больше практической пользы, чем математически точные.»

Это бесспорно!  Вредно увлекаться математикой, правило Паретто можно трактовать так: «Надо знать, когда вовремя остановиться!»  

Расстояние до ячейки считать не обязатеньно,  номер ячейки уже говорит об этом.  Нумеровать ячейки и прокладывать маршрут нужно грамотно.
Я в некоторых случаях рекомендую  маркировать не стеллажи, а «проходы», делая «улицы», но это при одностороннем движении и максимальном коэф использования площади в зонах подбора заказов.  

Номер ячейки в некоторых системах действительно указывает на расстояние. Уже одно только это порождает конфликт — приоритет
размещения входящего товара и приоритет отбора — в общем случае разные вещи. В других системах номер — это просто «имя» и полей два.

Ни в тех, ни в других взаимное расположение не учитывается. Изначально задачка ставилась так, что решить ее можно только
методами дискретной математики.

Я просто предостерегал, что не надо из пушки по воробьям.
В теории много всяких идей. Смоделируйте и убедитесь, что
АВС, например, во многих случаях вредная штука. А область
применения, когда она полезная, исчезающе мала.  

«Смоделируйте и убедитесь, что
АВС, например, во многих случаях вредная штука. А область
применения, когда она полезная, исчезающе мала.»
Дмитрий, зачем же в крайности бросаться!
Я  АВС  использую даже в житейских ситуациях при планировании своей загрузки!
Просто всё надо делать с умом и в Меру!

Я тоже считаю что АВС на больших складах с АСУ не всегда можно использовать. Или использовать в отдельных зонах,  например зона подбора штучных заказов.  А по алгаритму, для такого склада нужно чтобы отбор по возможности в 1 заказ давало только с одного места(Если хватает количества), так как с увеличением работ увеличивается количество ошибок(  А дальше по специфике склада.

Подскажите алгоритм.

Дано:
склад с пронумерованными ячейками, в которых лежат различные товары.
один товар может лежать в нескольких местах.
задано, сколько нужно собрать на поддон товара A(1) N(1) штук, товара А (2) N(2) штук, … товара А (m) N(m) штук

Надо:
рассчитать из каких ячеек брать и порядок обхода, чтобы длина пути была минимальна.

Если бы ячейки были фиксированными, то это алгоритм коммивояжера. Но тут можно варьировать, из каких ячеек брать.

Доброго всем здравия!
  Тема вопроса разбилась автоматически на 2 темы: 1. Как быстро отобрать товар для формирования заявки?; 2. Как разместить товар, чтобы быстро при его отборке сформировать заявку?
  Судя по всему 2-й вопрос автоматически ставится, когда нет ответа на 1-й?
  Практически ответ на 2-й вопрос подсказал прапор СА: «Парни не морочьте голову. Товар размещается в алфавитном порядке, как в накладной, от крайней точки хранения до места комплектации. Размер места хранения определен среднемесячной потребностью».
  Ответ на 1й вопрос. Порядок обхода по алфавиту, как в накладной. Количество обходов рассчитывается по накладной, исходя из размеров поддона и времени, затрачиваемое на отборку конкретной позиции. Время на отборку определяется, как время отбора в месте хранения, подсчета отбираемого товара и перемещения к месту комплектации.
  Для уяснения приведу пример. Товар А — 20 шт. (на поддоне размещается 10 шт, время перемещения единицы на поддон — 0,05 мин, время посчета 1 ед. — 0,01, расстояние от места хранения -30 м).
  Очевидно отборщик пройдет 120 м — 1,5 мин + 1 мин на перемещение товара с полки на поддон + 1 мин на перемещение товара с поддона в место комплектации+ время подсчета при отборке и передаче комплектовщику — 0,5 мин. Итого 4 мин.
  На складах, где есть «плавающие» места хранения, необходимо добавить среднее время поиска 1 позиции товара — 5 мин. Итого получилось 9 мин.
  В случае размещения товара не по алфавиту, ранжируем по удаленности от места комплектации позиции товара (группы и внутри групп позиции) и в таком порядке формируем накладную.  
  При применении норматива отборки на 1 отборщика — 5 мин. Очевидно необходимо для отборки товара в примере с поиском — 2 отборщика с 2 поддонами.
  Данный метод хорош при типе склада — параллельно-перпендикулярной структуре и размещении в одном углу зоны комплектации.
  При радиально-концентрической структуре обход отборщика осуществляется по спирали.

С уважением Валерий.

А что трудно товару код присвоить, после даже какого-нибудь «хилого» АВС? Да пересматривать АВС ну хоть раз кварталл!


Пожалуйста, войдите или зарегистрируйтесь, чтобы комментировать.