Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1)

Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1)

В тази статия ще ви разкажем как решихме проблема с липсата на свободни клетки в склада и разработването на дискретен алгоритъм за оптимизация за решаването на такъв проблем. Нека да поговорим за това как „изградихме“ математическия модел на проблема за оптимизация и за трудностите, които неочаквано срещнахме при обработката на входни данни за алгоритъма.

Ако се интересувате от приложения на математиката в бизнеса и не се страхувате от твърди трансформации на идентичност на формули на ниво 5-ти клас, тогава добре дошли в котката!

Статията ще бъде полезна за тези, които прилагат WMS-системи, работи в складовата или производствената логистична индустрия, както и програмисти, които се интересуват от приложения на математиката в бизнеса и оптимизиране на процесите в предприятието.

Уводна част

Тази публикация продължава поредицата от статии, в които споделяме нашия успешен опит в внедряването на оптимизационни алгоритми в складови процеси.

В предишна статия описва спецификата на склада, в който внедрихме WMS-система и също така обяснява защо трябваше да решим проблема с групирането на партиди от оставащи стоки по време на внедряването WMS-системи и как го направихме.

Когато приключихме с писането на статията за оптимизационните алгоритми, тя се оказа много голяма, затова решихме да разделим натрупания материал на 2 части:

  • В първата част (тази статия) ще говорим за това как „построихме” математическия модел на задачата и за големите трудности, които неочаквано срещнахме при обработката и трансформирането на входните данни за алгоритъма.
  • Във втората част ще разгледаме подробно изпълнението на алгоритъма в езика C + +, ще проведем изчислителен експеримент и ще обобщим опита, който натрупахме по време на внедряването на такива „интелигентни технологии“ в бизнес процесите на клиента.

Как се чете статия. Ако сте прочели предишната статия, можете незабавно да преминете към главата „Преглед на съществуващите решения“; ако не, тогава описанието на проблема, който се решава, е в спойлера по-долу.

Описание на проблема, който се решава в склада на клиента

Тесни места в процесите

През 2018 г. завършихме проект за изпълнение WMS-системи в склад „Търговска къща „LD“ в Челябинск. Внедрихме продукта „1C-Logistics: Warehouse Management 3” за 20 работни места: оператори WMS, склададжии, шофьори на мотокари. Средният склад е около 4 хиляди м2, броят на клетките е 5000, а броят на SKU е 4500. В склада се съхраняват сферични кранове собствено производство с различни размери от 1 кг до 400 кг. Наличностите в склада се съхраняват на партиди, тъй като има нужда от избор на стоки по FIFO.

По време на проектирането на схеми за автоматизация на складовите процеси се сблъскахме със съществуващия проблем с неоптималното съхранение на инвентара. Спецификата на складирането и полагането на кранове е такава, че една единична складова клетка може да съдържа само артикули от една партида (виж фиг. 1). Продуктите пристигат ежедневно в склада и всяко пристигане е отделна партида. Общо в резултат на 1 месец складова работа се създават 30 отделни партиди, въпреки факта, че всяка трябва да се съхранява в отделна клетка. Продуктите често се избират не в цели палети, а на парчета и в резултат на това в зоната за избор на парчета в много клетки се наблюдава следната картина: в клетка с обем над 1 m3 има няколко броя кранове, които заемат по-малко от 5-10% от обема на клетката.

Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1)
Фиг. 1. Снимка на няколко части в клетка

Ясно е, че капацитетът за съхранение не се използва оптимално. За да си представя мащаба на бедствието, мога да дам цифри: средно има от 1 до 3 клетки от такива клетки с обем над 100 m300 с „миниатюрни“ остатъци през различните периоди на работа на склада. Тъй като складът е сравнително малък, по време на натоварените складови сезони този фактор се превръща в „тясно място“ и значително забавя складовите процеси на приемане и експедиране.

Идея за решение на проблема

Възникна идея: партидите от остатъци с най-близки дати да се сведат до една единствена партида и такива остатъци с унифицирана партида да се поставят компактно заедно в една клетка или в няколко, ако в едната няма достатъчно място за побиране на цялото количество остатъци. Пример за такова „компресиране“ е показано на фигура 2.

Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1)
Фиг.2. Схема за компресиране на остатъците в клетките

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

Процесът на решаване на такъв проблем е разделен на 2 етапа:

  • на първия етап намираме групи от партиди, близки по дата за компресиране (посветени на тази задача предишна статия);
  • на втория етап за всяка група партиди изчисляваме най-компактното разположение на останалите стоки в клетките.

В настоящата статия ще се спрем на втория етап от алгоритъма.

Преглед на съществуващи решения

Преди да преминем към описанието на алгоритмите, които сме разработили, струва си да направим кратък преглед на системите, които вече съществуват на пазара WMS, които реализират подобна функционалност за оптимално компресиране.

На първо място, трябва да се отбележи продуктът „1C: Enterprise 8. WMS Logistics. Управление на склад 4", който е собственост и се копира от 1C и принадлежи към четвърто поколение WMS-системи, разработени от AXELOT. Тази система изисква функционалност за компресиране, която е предназначена да обедини остатъците от различни продукти в една обща клетка. Струва си да се отбележи, че функционалността за компресиране в такава система включва и други възможности, например коригиране на поставянето на стоки в клетки според техните ABC класове, но ние няма да се спираме на тях.

Ако анализирате кода на системата 1C: Enterprise 8. WMS Logistics. Warehouse management 4" (който е отворен в тази част от функционалността), можем да заключим следното. Алгоритъмът за остатъчна компресия прилага доста примитивна линейна логика и не може да се говори за никаква „оптимална“ компресия. Естествено, не предвижда групиране на партии. Няколко клиенти, които са внедрили такава система, се оплакаха от резултатите от планирането на компресията. Например, често в практиката по време на компресия се получаваше следната ситуация: 100 бр. Предвижда се преместването на останалите стоки от една клетка в друга клетка, където се намира 1 бр. стоки, въпреки че е оптимално от гледна точка на разхода на време да се направи обратното.

Също така, функционалността за компресиране на останалите стоки в клетките е декларирана в много чужди страни. WMS-системи, но, за съжаление, нямаме реална обратна връзка за ефективността на алгоритмите (това е търговска тайна), още по-малко представа за дълбочината на тяхната логика (патентован софтуер със затворен код), така че не можем да преценим.

Търсене на математически модел на проблема

За да се проектират висококачествени алгоритми за решаване на даден проблем, първо е необходимо този проблем да бъде ясно математически формулиран, което ще направим.

Има много клетки Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1), които съдържат останки от някакви стоки. По-нататък ще наричаме такива клетки донорни клетки. Нека обозначим Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) обем на стоките в клетката Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1)$.

Важно е да се каже, че само един продукт от една партида или няколко партиди, обединени преди това в клъстер (прочетете: предишна статия), което се дължи на спецификата на съхранение и складиране на стоките. Различните продукти или различните партидни клъстери трябва да изпълняват собствена отделна процедура за компресиране.

Има много клетки Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1), в които потенциално могат да бъдат поставени остатъци от донорни клетки. По-нататък ще наричаме такива клетки контейнерни клетки. Това могат да бъдат както свободни клетки в склада, така и донорни клетки от разнообразие Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1). Винаги в изобилие Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) е подмножество Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1).

За всяка клетка Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) от много Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) Зададени са ограничения на капацитета Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1), измерено в dm3. Един dm3 е куб със страна 10 см. Продуктите, съхранявани в склада, са доста големи, така че в този случай такава дискретност е напълно достатъчна.

Дадена е матрица на най-късите разстояния Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) в метри между всяка двойка клетки Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1)Където Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) и Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) принадлежат на множества Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) и Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) съответно.

Нека обозначим Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) „разходи“ за преместване на стоки от клеткатаДискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) в клетка Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1). Нека обозначим Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) „разходи“ за избор на контейнер Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) за преместване на остатъци от други клетки в него. Как точно и в какви мерни единици ще се изчисляват стойностите Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) и Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) ще разгледаме допълнително (вижте раздела за подготовка на входни данни), засега е достатъчно да кажем, че такива стойности ще бъдат пряко пропорционални на стойностите Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) и Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) съответно.

Нека означим с Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) променлива, която приема стойност 1, ако остатъкът е от клетката Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) преместен в контейнер Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1), и 0 в противен случай. Нека означим с Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) променлива, която приема стойност 1, ако контейнерът Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) съдържа останалите стоки и 0 в противен случай.

Задачата е формулирана по следния начин: трябва да намерите толкова много контейнери Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) и по този начин „прикрепете“ донорни клетки към контейнерни клетки, за да сведете до минимум функцията

Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1)

под ограничения

Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1)

Като цяло, когато изчисляваме решението на проблема, ние се стремим към:

  • първо, за запазване на капацитет за съхранение;
  • второ, за да спестите време на складодържателите.

Последното ограничение означава, че не можем да преместваме стоки в контейнер, който не сме избрали и следователно не сме „понесли разходи“ за избора му. Това ограничение също така означава, че обемът на стоките, преместени от клетките към контейнера, не трябва да надвишава капацитета на контейнера. Под решаване на проблем имаме предвид набор от контейнери Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) и методи за прикрепване на донорни клетки към контейнери.

Тази формулировка на задачата за оптимизация не е нова и е изучавана от много математици от началото на 80-те години на миналия век. В чуждестранната литература има 2 оптимизационни задачи с подходящ математически модел: Проблем с местоположението на съоръжението с капацитет от един източник и Проблем с местоположението на обекта с капацитет от множество източници (ще говорим за разликите в задачите по-късно). Струва си да се каже, че в математическата литература формулирането на такива два проблема за оптимизация е формулирано по отношение на местоположението на предприятията на земята, откъдето идва и името „Местоположение на съоръжението“. В по-голямата си част това е почит към традицията, тъй като за първи път необходимостта от решаване на такива комбинаторни задачи дойде от областта на логистиката, най-вече от военно-промишления сектор през 50-те години на миналия век. По отношение на местоположението на предприятието такива задачи се формулират, както следва:

  • Има ограничен брой градове, в които потенциално е възможно да се разположат производствени предприятия (наричани по-нататък производствени градове). За всеки производствен град са посочени разходите за откриване на предприятие в него, както и ограничение на производствения капацитет на откритото в него предприятие.
  • Има краен набор от градове, където клиентите действително се намират (наричани по-нататък градове клиенти). За всеки такъв клиентски град се посочва обемът на търсенето на продукти. За простота ще приемем, че има само един продукт, който се произвежда от предприятията и се консумира от клиентите.
  • За всяка двойка град-производител и град-клиент е посочена стойността на транспортните разходи за доставка на необходимия обем продукти от производителя до клиента.

Трябва да намерите в кои градове да отворите бизнес и как да привържете клиенти към такъв бизнес, за да:

  • Общите разходи за откриване на предприятия и транспортните разходи бяха минимални;
  • Обемът на търсенето от клиенти, приписани на всяко отворено предприятие, не надвишава производствения капацитет на това предприятие.

Сега си струва да споменем единствената разлика в тези два класически проблема:

  • Проблем с местоположението на съоръжението с капацитет от един източник – клиентът се захранва само от едно отворено съоръжение;
  • Проблем с местоположението на обекта с капацитет от няколко източника – клиентът може да бъде снабден от няколко открити съоръжения едновременно.

Такава разлика между двата проблема на пръв поглед е незначителна, но всъщност води до напълно различна комбинаторна структура на такива задачи и, като следствие, до напълно различни алгоритми за тяхното решаване. Разликите между задачите са показани на фигурата по-долу.

Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1)
Фиг.3. a) Проблем с местоположението на обекта с капацитет от множество източници

Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1)
Фиг.3. b) Проблем с местоположението на съоръжението с капацитет от един източник

И двете задачи Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1)-трудно, тоест няма точен алгоритъм, който да реши такъв проблем във времеви полином от размера на входните данни. С по-прости думи, всички точни алгоритми за решаване на проблем ще работят за експоненциално време, макар и може би по-бързо от пълно търсене на опции. Тъй като задачата Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1)-трудно, тогава ще разгледаме само приблизителни евристики, тоест алгоритми, които последователно ще изчисляват решения, много близки до оптималните, и ще работят доста бързо. Ако се интересувате от такава задача, можете да намерите добър преглед на руски тук.

Ако преминем към терминологията на нашия проблем за оптимално компресиране на стоки в клетките, тогава:

  • клиентските градове са донорски клетки Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) с останалите стоки,
  • производствени градове – контейнерни клетки Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1), в които се предполага, че се поставят остатъците от други клетки,
  • транспортни разходи - времеви разходи Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) складодържател за преместване на обема на стоките от клетката донор Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) в контейнерна клетка Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1);
  • разходи за откриване на бизнес - разходи за избор на контейнер Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1), равен на обема на контейнерната клетка Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1), умножен по определен коефициент за запазване на свободни обеми (стойността на коефициента винаги е > 1) (виж раздела за подготовка на входни данни).

След като е направена аналогията с добре познатите класически решения на проблема, е необходимо да се отговори на важен въпрос, от който зависи изборът на архитектурата на алгоритъма за решение: преместването на остатъците от донорната клетка е възможно само в една и само един контейнер (Single-Source), или е възможно да преместите остатъците в няколко контейнерни клетки (Multi-Source)?

Заслужава да се отбележи, че на практика се срещат и двете формулировки на проблема. Представяме всички плюсове и минуси за всяка такава настройка по-долу:

Проблемен вариант Плюсове на опцията Минуси на опцията
Един източник Операциите по движение на стоки, изчислени с помощта на този вариант на проблема:

  • изискват по-малък контрол от страна на складодържателя (взеха ВСИЧКО от една клетка, поставиха ВСИЧКО в друга контейнерна клетка), което елиминира рисковете от: грешки при преизчисляване на количеството стоки при извършване на операции „Поставяне в клетка“; грешки при въвеждане на преизчисленото количество в ДБД;
  • Не е необходимо време за преизчисляване на броя на стоките при извършване на операции „Поставяне в клетка“ и въвеждането им в TSD
Мултиизточник Компресиите, изчислени с помощта на тази версия на проблема, обикновено са с 10-15% по-компактни в сравнение с компресиите, изчислени с помощта на опцията „Един източник“. Но също така отбелязваме, че колкото по-малък е броят на остатъците в донорните клетки, толкова по-малка е разликата в компактността Операциите по движение на стоки, изчислени с помощта на този вариант на проблема:

  • изискват по-голям контрол от страна на склада (необходимо е да се преизчисли количеството стоки, преместени във всяка от планираните контейнерни клетки), което елиминира риска от грешки при преизчисляване на количеството стоки и въвеждане на данни в TSD при извършване на „ Поставете в клетка” операции
  • Отнема време за преизчисляване на броя на стоките при извършване на операции „Поставяне в клетка“.
  • Отнема време за „режим“ (спиране, отиване до палета, сканиране на баркода на контейнерната клетка) при извършване на операции „Поставяне в клетка“
  • Понякога алгоритъмът може да "раздели" количеството на почти пълен палет между голям брой контейнерни клетки, които вече имат подходящ продукт, което от гледна точка на клиента е неприемливо

Таблица 1. Плюсове и минуси на опциите с един източник и с няколко източника.

Тъй като вариантът с един източник има повече предимства, а също и като се вземе предвид фактът, че колкото по-малък е броят на остатъците в донорните клетки, толкова по-малка е разликата в степента на компактност на компресия, изчислена за двата варианта на проблема, нашият избор падна опцията Single-Source.

Струва си да се каже, че решението на опцията Multi-Source също се осъществява. Има голям брой ефективни алгоритми за решаването му, повечето от които се свеждат до решаването на редица транспортни проблеми. Освен това има не само ефективни алгоритми, но и елегантни, напр. тук.

Подготовка на входните данни

Преди да започнем да анализираме и разработваме алгоритъм за решаване на проблем, е необходимо да решим какви данни и под каква форма ще ги подадем като вход. Няма проблеми с обема на оставащите стоки в донорните клетки и капацитета на контейнерните клетки, тъй като това е тривиално - такива количества ще се измерват в m3, но с разходите за използване на контейнерна клетка и матрицата на подвижните разходи, не всичко е толкова просто!

Нека първо да разгледаме изчислението разходи за преместване на стоки от клетката донор към клетката контейнер. На първо място е необходимо да решим в какви мерни единици ще изчисляваме разходите за движение. Двете най-очевидни опции са метри и секунди. Няма смисъл да се изчисляват пътните разходи в „чисти“ метри. Нека покажем това с пример. Нека клетката Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) разположен на първия етаж, клетка Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) отстранени на 30 метра и разположени на втория етаж:

  • Преместване от Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) в Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) по-скъпо от преместване от Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) в Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1), тъй като слизането от второто ниво (1,5-2 метра от пода) е по-лесно, отколкото изкачването до второто, въпреки че разстоянието ще бъде същото;
  • Преместете 1 бр. стоки от клетката Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) в Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) Ще бъде по-лесно, отколкото да преместите 10 парчета. същият продукт, въпреки че разстоянието ще бъде същото.

По-добре е да вземете предвид разходите за преместване за секунди, тъй като това ви позволява да вземете предвид както разликата в нивата, така и разликата в количеството на преместените стоки. За да отчетем разходите за движение в секунди, трябва да разложим операцията на движение на елементарни компоненти и да вземем измервания на времето за изпълнение на всеки елементарен компонент.

Нека от клетката Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) се движи Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) НАСТОЛЕН КОМПЮТЪР. стоки в контейнер Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1), нека Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) – средната скорост на движение на работник в склада, измерена в м/сек. Позволявам Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) и Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) – средни скорости на еднократни операции съответно вземане и поставяне за обем стоки, равен на 4 dm3 (средният обем, който един служител приема наведнъж в склад при извършване на операции). Позволявам Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) и Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) височината на клетките, от които се извършват съответно операциите take и put. Например средната височина на първия слой (етаж) е 1 м, на втория слой е 2 м и т.н. Тогава формулата за изчисляване на общото време за извършване на операция по преместване е Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) следното:

Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1)

В таблица 2 са представени статистически данни за времето за изпълнение на всяка елементарна операция, събирани от складови служители, като се отчитат спецификите на складираните стоки.

името на операцията Предназначение Означава
Средна скорост на движение на работник в склада Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) 1,5 м/сек
Средна скорост на една операция за поставяне (за обем на продукта от 4 dm3) Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) 2,4 сек

Таблица 2. Средно време за извършване на складови операции

Избрахме метода за изчисляване на разходите за преместване. Сега трябва да разберем как да изчисляваме разходи за избор на контейнерна клетка. Тук всичко е много, много по-сложно, отколкото с разходите за преместване, защото:

  • първо, разходите трябва да зависят пряко от обема на клетката - същият обем остатъци, прехвърлени от донорни клетки, е по-добре да се постави в контейнер с по-малък обем, отколкото в голям контейнер, при условие че този обем напълно се побира в двата контейнера. По този начин, чрез минимизиране на общите разходи за избор на контейнери, ние се стремим да спестим „оскъдния“ свободен капацитет за съхранение в зоната за избор, за да извършим последващи операции по поставяне на стоки в клетките. Фигура 4 демонстрира опциите за прехвърляне на остатъци в големи и малки контейнери и последствията от тези опции за прехвърляне при последващи складови операции.
  • второ, тъй като при решаването на първоначалния проблем трябва да минимизираме точно общите разходи, а това е сумата както от разходите за преместване, така и от разходите за избор на контейнери, тогава обемите на клетките в кубични метри трябва по някакъв начин да бъдат свързани със секунди, което далеч не е тривиално.

Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1)
Ориз. 4. Възможности за преместване на остатъците в контейнери с различна вместимост.

Фигура 4 показва в червено обема на остатъците, които вече не се побират в контейнера на втория етап на поставяне на следващите стоки.

Това ще помогне да се свържат кубичните метри разходи за избор на контейнер със секундите разходи за преместване на следните изисквания за изчислени решения на проблема:

  • Необходимо е балансите от контейнера за донори да бъдат преместени в контейнера за всеки случай, ако това намалява общия брой контейнери за контейнери, съдържащи продукта.
  • Необходимо е да се поддържа баланс между обема на контейнерите и времето, прекарано в преместване: например, ако при ново решение на проблем в сравнение с предишното решение, печалбата в обема е голяма, но загубата на време е малка , тогава е необходимо да изберете нова опция.

Да започнем с последното изискване. За да изясним двусмислената дума „салдо“, проведохме проучване сред складови служители, за да разберем следното. Нека има контейнерна клетка с обем Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1), на който се приписва движението на оставащите стоки от донорните клетки и общото време на това движение е равно на Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1). Нека има няколко алтернативни варианта за поставяне на същото количество стоки от същите донорни клетки в други контейнери, където всяко поставяне има свои собствени оценки Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1)Където Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1)<Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) и Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1)Където Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1)>Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1).

Поставя се въпросът: каква е минималната печалба в обема Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) приемливо за дадена стойност на загуба на време Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1)? Нека обясним с пример. Първоначално останките трябваше да бъдат поставени в контейнер с обем 1000 dm3 (1 m3), а времето за прехвърляне беше 70 секунди. Има възможност за поставяне на остатъците в друг съд с обем 500 dm3 и време 130 секунди. Въпрос: готови ли сме да изразходваме допълнителни 60 секунди от времето на склададжия за преместване на стоките, за да спестим 500 dm3 свободен обем? Въз основа на резултатите от проучване на складови служители е съставена следната диаграма.

Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1)
Ориз. 5. Диаграма на зависимостта на минимално допустимите икономии на обем от увеличаването на разликата във времето на работа

Тоест, ако допълнителните разходи за време са 40 секунди, тогава сме готови да ги изразходваме само когато печалбата в обем е най-малко 500 dm3. Въпреки факта, че има лека нелинейност в зависимостта, за простота на по-нататъшните изчисления ще приемем, че зависимостта между величините е линейна и се описва от неравенството

Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1)

На фигурата по-долу разглеждаме следните методи за поставяне на стоки в контейнери.

Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1)
Ориз. 6. Вариант (а): 2 контейнера, общ обем 400 dm3, общо време 150 сек.
Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1)
Ориз. 6. Вариант (b): 2 контейнера, общ обем 600 dm3, общо време 190 сек.
Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1)
Ориз. 6. Вариант (c): 1 контейнер, общ обем 400 dm3, общо време 200 сек.

Вариант (a) за избор на контейнери е по-предпочитан от оригиналния вариант, тъй като неравенството е в сила: (800-400)/10>=150-120, което предполага 40 >= 30. Вариант (b) е по-малко за предпочитане от оригинала опция , тъй като неравенството не е валидно: (800-600)/10>=190-150, което предполага 20 >= 40. Но опция (c) не се вписва в такава логика! Нека разгледаме тази опция по-подробно. От една страна, неравенството (800-400)/10>=200-120, което означава, че неравенството 40 >= 80 не е изпълнено, което предполага, че печалбата в обем не си струва толкова голяма загуба във времето.

Но от друга страна, в тази опция (c) ние не само намаляваме общия зает обем, но също така намаляваме броя на заетите клетки, което е първото от двете важни изисквания за изчислими решения на изброените по-горе проблеми. Очевидно, за да започне това изискване да се изпълнява, е необходимо да добавим някаква положителна константа към лявата страна на неравенството Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1), и такава константа трябва да се добави само когато броят на контейнерите намалее. Нека ви го напомним Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) е променлива, равна на 1, когато контейнерът Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) избрано и 0, когато контейнер Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) не е избрано. Нека обозначим Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) – много контейнери в първоначалния разтвор и Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) – много контейнери в новото решение. Най-общо новото неравенство ще изглежда така:

Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1)

Трансформирайки горното неравенство, получаваме

Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1)

Въз основа на това имаме формула за изчисляване на общите разходи Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) малко решение на проблема:

Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1)

Но сега възниква въпросът: каква стойност трябва да има такава константа? Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1)? Очевидно стойността му трябва да е достатъчно голяма, така че винаги да е изпълнено първото изискване за решения на проблема. Можете, разбира се, да вземете стойността на константата равна на 103 или 106, но бих искал да избегна такива „магически числа“. Ако вземем предвид спецификата на извършване на складови операции, можем да изчислим няколко добре обосновани числени оценки на стойността на такава константа.

Нека Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) – максималното разстояние между складовите клетки на една зона ABC, равно в нашия случай на 100 м. Нека Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) – максималният обем на контейнерна клетка в склад, равен в нашия случай на 1000 dm3.

Първият начин за изчисляване на стойността Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1). Нека разгледаме ситуация, при която има 2 контейнера на първия слой, в които стоките вече са физически разположени, т.е. самите те са донорни клетки и разходите за преместване на стоките до същите клетки естествено са равни на 0. Това е необходимо да се намери такава стойност за константата Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1), в който би било изгодно винаги да премествате остатъците от контейнер 1 в контейнер 2. Заместване на стойностите Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) и Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) В даденото по-горе неравенство получаваме:

Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1)

от което следва

Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1)

Замествайки стойностите на средното време за извършване на елементарни операции във формулата по-горе, получаваме

Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1)

Вторият начин за изчисляване на стойността Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1). Нека разгледаме ситуация, в която има Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) донорни клетки, от които се планира да се преместят стоките в контейнер 1. Нека обозначим Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) – разстояние от донорната клетка Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) към контейнер 1. Има и контейнер 2, който вече съдържа стоки и чийто обем ви позволява да поберете остатъка от всички Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) клетки. За простота ще приемем, че обемът на стоките, преместени от донорни клетки към контейнери, е същият и равен на Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1). Изисква се да се намери такава стойност на константата Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1), в който поставянето на всички остатъци от Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) клетки в контейнер 2 винаги би било по-изгодно от поставянето им в различни контейнери:

Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1)

Трансформиране на неравенството, което получаваме

Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1)

За да се „укрепи” стойността на количеството Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1), нека приемем, че Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) = 0. Средният брой клетки, които обикновено участват в процедурата за компресиране на складови салда, е 10. Замествайки известните стойности на количествата, имаме следната стойност на константата

Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1)

Взимаме най-голямата стойност, изчислена за всяка опция, това ще бъде стойността на количеството Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) за зададените параметри на склада. Сега, за пълнота, нека запишем формулата за изчисляване на общите разходи Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1) за някакво осъществимо решение Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1):

Дискретна математика за WMS: алгоритъм за компресиране на стоки в клетки (част 1)

Сега, в крайна сметка титанични усилия Чрез трансформиране на входните данни можем да кажем, че всички входни данни са преобразувани в желаната форма и са готови за използване в алгоритъма за оптимизация.

Заключение

Както показва практиката, сложността и важността на етапа на подготовка и трансформиране на входни данни за алгоритъм често се подценяват. В тази статия специално обърнахме много внимание на този етап, за да покажем, че само висококачествени и интелигентно подготвени входни данни могат да направят изчислените от алгоритъма решения наистина ценни за клиента. Да, имаше много изводи на формули, но ви предупредихме още преди ката :)

В следващата статия най-накрая ще стигнем до това, за което бяха предназначени предишните 2 публикации - алгоритъм за дискретна оптимизация.

Подготви статията
Роман Шангин, програмист на отдела за проекти,
Фирма First Bit, Челябинск


Източник: www.habr.com

Добавяне на нов коментар