ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു

ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു

В статье рассказывается как при внедрении WMS-системы мы столкнулись с необходимостью решения нестандартной задачи кластеризации и какими алгоритмами мы ее решали. Расскажем, как мы применяли системный, научный подход к решению проблемы, с какими сложностями столкнулись и какие уроки вынесли.

Эта публикация начинает цикл статей, в которых мы делимся своим успешным опытом внедрения алгоритмов оптимизации в складские процессы. Целью цикла статей ставится познакомить аудиторию с видами задач оптимизации складских операций, которые возникают практически на любом среднем и крупном складе, а также рассказать про наш опыт решения таких задач и встречающиеся на этом пути подводные камни. Статьи будут полезны тем, кто работает в отрасли складской логистики, внедряет WMS-системы, а также программистам, которые интересуются приложениями математики в бизнесе и оптимизацией процессов на предприятии.

പ്രക്രിയകളിലെ തടസ്സം

2018-ൽ, നടപ്പിലാക്കാനുള്ള ഒരു പദ്ധതി ഞങ്ങൾ പൂർത്തിയാക്കി WMS-системы на складе компании «Торговый дом «ЛД» в г. Челябинске. Внедрили продукт «1С-Логистика: Управление складом 3» на 20 рабочих мест: операторы WMS, സ്റ്റോർകീപ്പർമാർ, ഫോർക്ക്ലിഫ്റ്റ് ഡ്രൈവർമാർ. ശരാശരി വെയർഹൗസ് ഏകദേശം 4 ആയിരം m2 ആണ്, സെല്ലുകളുടെ എണ്ണം 5000 ആണ്, SKU കളുടെ എണ്ണം 4500 ആണ്. 1 കിലോ മുതൽ 400 കിലോ വരെ വിവിധ വലുപ്പത്തിലുള്ള നമ്മുടെ സ്വന്തം ഉൽപാദനത്തിന്റെ ബോൾ വാൽവുകൾ വെയർഹൗസ് സംഭരിക്കുന്നു. FIFO അനുസരിച്ച് സാധനങ്ങൾ തിരഞ്ഞെടുക്കേണ്ട ആവശ്യം ഉള്ളതിനാൽ വെയർഹൗസിലെ ഇൻവെന്ററി ബാച്ചുകളായി സൂക്ഷിക്കുന്നു.

При проектировании схем автоматизации складских процессов мы столкнулись с существующей проблемой неоптимального хранения запасов. Специфика хранения и укладки кранов такая, что в одной ячейке штучного хранения может находиться только номенклатура одной партии. Продукция приходит на склад ежедневно и каждый приход – это отдельная партия. Итого, в результате 1 месяца работы склада создаются 30 отдельных партий, притом, что каждая должна хранится в отдельной ячейке. Товар зачастую отбирается не целыми палетами, а штуками, и в результате в зоне штучного отбора во многих ячейках наблюдается такая картина: в ячейке объемом более 1м3 лежит несколько штук кранов, которые занимают менее 5-10% от объема ячейки.

ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു Рис 1. Фото нескольких штук товара в ячейке

На лицо неоптимальное использование складских мощностей. Чтобы представить масштаб бедствия могу привести цифры: в среднем таких ячеек объемом более 1м3 с «мизерными» остатками в разные периоды работы склада насчитывается от 100 до 300 ячеек. Так как склад относительно небольшой, то в сезоны загрузки склада этот фактор становится «узким горлышком» с сильно тормозит складские процессы.

പ്രശ്ന പരിഹാര ആശയം

Возникла идея: партии остатков с наиболее близкими датами приводить к одной единой партии и такие остатки с унифицированной партией размещать компактно вместе в одной ячейке, или в нескольких, если места в одной не будет хватать на размещение всего количества остатков.

ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു
ചിത്രം.2. കോശങ്ങളിലെ അവശിഷ്ടങ്ങൾ കംപ്രസ്സുചെയ്യുന്നതിനുള്ള സ്കീം

Это позволяет значительно сократить занимаемые складские площади, которые будут использоваться под новый размещаемый товар. В ситуации с перегрузкой складских мощностей такая мера является крайне необходимой, в противном случае свободного места под размещение нового товара может попросту не хватить, что приведет к стопору складских процессов размещения и подпитки. Раньше до внедрения WMS-системы такую операцию выполняли вручную, что было не эффективно, так как процесс поиска подходящих остатков в ячейках был достаточно долгим. Сейчас с внедрением WMS-системы решили процесс автоматизировать, ускорить и сделать его интеллектуальным.

അത്തരമൊരു പ്രശ്നം പരിഹരിക്കുന്നതിനുള്ള പ്രക്രിയ 2 ഘട്ടങ്ങളായി തിരിച്ചിരിക്കുന്നു:

  • на первом этапе мы находим близкие по дате группы партий для сжатия;
  • രണ്ടാം ഘട്ടത്തിൽ, ബാച്ചുകളുടെ ഓരോ ഗ്രൂപ്പിനും സെല്ലുകളിൽ ശേഷിക്കുന്ന സാധനങ്ങളുടെ ഏറ്റവും ഒതുക്കമുള്ള സ്ഥാനം ഞങ്ങൾ കണക്കാക്കുന്നു.

В текущей статье мы остановимся на первом этапе алгоритма, а освещение второго этапа оставим для следующей статьи.

പ്രശ്നത്തിന്റെ ഗണിതശാസ്ത്ര മോഡലിനായി തിരയുക

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

Так как из бизнес-постановки задачи явно следует, что мы имеем дело с множествами, то сформулируем такую задачу в терминах теории множеств.

അനുവദിക്കുക ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു – множество всех партий остатков некоторого товара на складе. Пусть ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു – заданная константа дней. Пусть ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു – подмножество партий, где разница дат для всех пар партий подмножества не превосходит константы ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു. Требуется найти минимальное количество непересекающихся подмножеств ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു, такое что все подмножества ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു в совокупности давали бы множество ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു.

Иными словами, нам нужно найти группы или кластеры схожих партий, где критерий схожести определяется константой ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു. Такая задача напоминает нам хорошо известную всем задачу кластеризации. Важно сказать, что рассматриваемая задача отличается от задачи кластеризации, тем что в нашей задаче есть жестко заданное условие по критерию схожести элементов кластера, определяемое константой ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു, а в задаче кластеризации такое условие отсутствует. Постановку задачи кластеризации и информацию по этой задаче можно найти ഇവിടെ.

Итак, нам удалось сформулировать задачу и найти классическую задачу с похожей постановкой. Теперь необходимо рассмотреть общеизвестные алгоритмы для ее решения, чтобы не изобретать велосипед заново, а взять лучшие практики и применить их. Для решения задачи кластеризации мы рассматривали самые популярные алгоритмы, а именно: ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു-means, ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു-means, алгоритм выделения связных компонент, алгоритм минимального остовного дерева. Описание и разбор таких алгоритмов можно найти ഇവിടെ.

Для решения нашей задачи алгоритмы кластеризации ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു-means и ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു-means не применимы вовсе, так как заранее никогда не известно количество кластеров ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു и такие алгоритмы не учитывают ограничение константы дней. Такие алгоритмы были изначально отброшены из рассмотрения.
Для решения нашей задачи алгоритм выделения связных компонент и алгоритм минимального остовного дерева подходят больше, но, как оказалось, их нельзя применить «в лоб» к решаемой задаче и получить хорошее решение. Чтобы пояснить это, рассмотрим логику работы таких алгоритмов применительно к нашей задаче.

Рассмотрим граф ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു, в котором вершины – это множество партий ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു, а ребро между вершинами ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു и ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു имеет вес равный разнице дней между партиями ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു и ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു. В алгоритме выделения связных компонент задается входной параметр ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നുഎവിടെ ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു, и в графе ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു удаляются все ребра, для которых вес больше ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു. Соединенными остаются только наиболее близкие пары объектов. Смысл алгоритма заключается в том, чтобы подобрать такое значение ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു, при котором граф «развалится» на несколько связных компонент, где партии, принадлежащие этим компонентам, будут удовлетворять нашему критерию схожести, определяемому константой ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു. Полученные компоненты и есть кластеры.

Алгоритм минимального покрывающего дерева сначала строит на графе ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു минимальное покрывающее дерево, а затем последовательно удаляет ребра с наибольшим весом до тех пор, пока граф не «развалится» на несколько связных компонент, где партии, принадлежащие этим компонентам, будут также удовлетворять нашему критерию схожести. Полученные компоненты и будут кластерами.

При использовании таких алгоритмов для решения рассматриваемой задачи может возникнуть ситуация как на рисунке 3.

ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു
Рис 3. Применение алгоритмов кластеризации к решаемой задаче

Допустим у нас константа разницы дней партий равна 20 дней. Граф ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു был изображен в пространственном виде для удобства визуального восприятия. Оба алгоритма дали решение с 3-мя кластерами, которое можно легко улучшить, объединив партии, помещенные в отдельные кластеры, между собой! Очевидно, что такие алгоритмы необходимо дорабатывать под специфику решаемой задачи и их применение в чистом виде к решению нашей задачи будет давать плохие результаты.

ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു
Итак, прежде чем начинать писать код модифицированных под нашу задачу графовых алгоритмов и изобретать свой велосипед (в силуэтах которого уже угадывались очертания квадратных колес), мы, опять же, решили подойти к такой задаче научно, а именно: попробовать свести ее к другой задаче дискретной оптимизации, в надежде на то, что существующие алгоритмы для ее решения можно будет применить без модификаций.

Очередной поиск похожей классической задачи увенчался успехом! Удалось найти задачу дискретной оптимизации, постановка которой 1 в 1 совпадает с постановкой нашей задачи. Этой задачей оказалась задача о покрытии множества. Приведем постановку задачи применительно к нашей специфике.

Имеется конечное множество ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു и семейство ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു всех его непересекающихся подмножеств партий, таких что разница дат для всех пар партий каждого подмножества ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു കുടുംബത്തിൽ നിന്ന് ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു не превосходит константы ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു. Покрытием называют семейство ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു наименьшей мощности, элементы которого принадлежат ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു, такое что объединение множеств ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു കുടുംബത്തിൽ നിന്ന് ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു должно давать множество всех партий ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു.

Подробный разбор этой задачи можно найти ഇവിടെ и ഇവിടെ. Другие варианты практического применения задачи о покрытии и её модификаций можно найти ഇവിടെ.

Алгоритм решения задачи

С математической моделью решаемой задачи определились. Теперь приступим к рассмотрению алгоритма для ее решения. Подмножества ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു കുടുംബത്തിൽ നിന്ന് ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു можно легко найти следующей процедурой.

  1. Упорядочить партии из множества ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു в порядке убывания их дат.
  2. Найти минимальную и максимальную даты партий.
  3. Для каждого дня ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു от минимальной даты до максимальной найти все партии, даты которых отличаются от ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു не более чем на ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു (поэтому значение ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു лучше брать четное).

Логика работы процедуры формирования семейства множеств ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു at ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു дней представлена на рисунке 4.

ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു
Рис.4. Формирование подмножеств партий

В такой процедуре необязательно для каждого ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു перебирать все другие партии и проверять разность их дат, а можно от текущего значения ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു двигаться влево или право до тех пор, пока не нашли партию, дата которой отличается от ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു более чем на половинное значение константы. Все последующие элементы при движении как вправо, так и влево будут нам не интересны, так как для них различие в днях будет только увеличиваться, поскольку элементы в массиве были изначально упорядочены. Такой подход будет существенно экономить время, когда число партий и разброс их дат значительно большие.

Задача о покрытии множества является ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു-трудной, а значит для её решения не существует быстрого (с временем работы равному полиному от входных данных) и точного алгоритма. Поэтому для решения задачи о покрытии множества был выбран быстрый жадный алгоритм, который конечно не является точным, но обладает следующими достоинствами:

  • Для задач небольшой размерности (а это как раз наш случай) вычисляет решения достаточно близкие к оптимуму. С ростом размера задачи качество решения ухудшается, но всё же довольно медленно;
  • Очень прост в реализации;
  • Быстр, так как оценка его времени работы равна ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു.

Жадный алгоритм выбирает множества руководствуясь следующим правилом: на каждом этапе выбирается множество, покрывающее максимальное число ещё не покрытых элементов. Подробное описание алгоритма и его псевдокод можно найти ഇവിടെ.

Сравнение точности такого жадного алгоритма на тестовых данных решаемой задачи с другими известными алгоритмами, такими как вероятностный жадный алгоритм, алгоритм муравьиной колонии и т.д., не производилось. Результаты сравнения таких алгоритмов на сгенерированных случайных данных можно найти ജോലി.

Реализация и внедрение алгоритма

Такой алгоритм был реализован на языке 1C и был включен во внешнюю обработку под названием «Сжатие остатков», которая была подключена к WMS-системе. Мы не стали реализовывать алгоритм на языке സി ++ и использовать его из внешней Native компоненты, что было бы правильней, так как скорость работы кода на സി ++ в разы и на некоторых примерах даже в десятки раз превосходит скорость работы аналогичного кода на 1C. На языке 1C алгоритм был реализован для экономии времени на разработку и простоты отладки на рабочей базе заказчика. Результат работы алгоритма представлен на рисунке 5.

ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു
Рис.5. Обработка по «сжатию» остатков

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

Выводы и продолжение

Главный опыт, который мы получили от решения такой практической задачи – это подтверждение эффективности использования парадигмы: мат. формулировка задачи ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു известная мат. модель ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു известный алгоритм ഒരു ഡബ്ല്യുഎംഎസ് സിസ്റ്റം നടപ്പിലാക്കുന്നതിൽ വ്യതിരിക്തമായ ഗണിതശാസ്ത്രം: ഒരു വെയർഹൗസിൽ ധാരാളം സാധനങ്ങൾ ശേഖരിക്കുന്നു алгоритм с учетом специфики задачи. Дискретной оптимизации уже насчитывается более 300 лет и за это время люди успели рассмотреть очень много задач и накопить большой опыт по их решению. В первую очередь целесообразнее обратиться к этому опыту, а уж потом начинать изобретать свой велосипед.

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

ലേഖനം തയ്യാറാക്കി
റോമൻ ഷാംഗിൻ, പ്രോജക്ട് ഡിപ്പാർട്ട്‌മെന്റിന്റെ പ്രോഗ്രാമർ,
компания Первый БИТ, г. Челябинск

അവലംബം: www.habr.com

ഒരു അഭിപ്രായം ചേർക്കുക