Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pÄ et lager

Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pÄ et lager

Artiklen beskriver, hvordan man implementerer WMS-system, stod vi over for behovet for at lÞse et ikke-standardiseret klyngeproblem, og hvilke algoritmer vi brugte til at lÞse det. Vi vil fortÊlle dig, hvordan vi anvendte en systematisk, videnskabelig tilgang til at lÞse problemet, hvilke vanskeligheder vi stÞdte pÄ, og hvilke erfaringer vi lÊrte.

Denne publikation indleder en rĂŠkke artikler, hvori vi deler vores succesfulde erfaring med implementering af optimeringsalgoritmer i lagerprocesser. FormĂ„let med serien af ​​artikler er at gĂžre publikum bekendt med de typer af optimeringsproblemer af lagerdrift, der opstĂ„r i nĂŠsten alle mellemstore og store varehuse, samt at fortĂŠlle om vores erfaring med at lĂžse sĂ„danne problemer og de faldgruber, man stĂžder pĂ„ undervejs. . Artiklerne vil vĂŠre nyttige for dem, der arbejder i lagerlogistikbranchen, implementere WMS-systemer, samt programmĂžrer, der er interesserede i anvendelser af matematik i erhvervslivet og optimering af processer i en virksomhed.

Flaskehals i processer

I 2018 afsluttede vi et projekt, der skulle implementeres WMS-systemer pĂ„ lageret i virksomheden “Trading House “LD” i Chelyabinsk. Vi implementerede produktet "1C-Logistics: Warehouse Management 3" til 20 arbejdspladser: operatĂžrer WMS, lagerholdere, gaffeltruckchauffĂžrer. Det gennemsnitlige lager er omkring 4 tusinde m2, antallet af celler er 5000 og antallet af SKU'er er 4500. Lageret opbevarer kugleventiler af vores egen produktion i forskellige stĂžrrelser fra 1 kg til 400 kg. Beholdningen pĂ„ lageret opbevares i partier, da der er behov for at udvĂŠlge varer efter FIFO.

Ved design af lagerprocesautomatiseringsordninger stod vi over for det eksisterende problem med ikke-optimal lageropbevaring. Specifikationerne for opbevaring og stuvning af kraner er sÄdan, at en enhedslagercelle kun kan indeholde varer fra én batch. Produkter ankommer til lageret dagligt, og hver ankomst er en separat batch. I alt, som et resultat af 1 mÄneds lagerdrift, oprettes 30 separate batches, pÄ trods af at hver skal opbevares i en separat celle. Produkter udvÊlges ofte ikke i hele paller, men i stykker, og som fÞlge heraf ses fÞlgende billede i stykvalgszonen i mange celler: I en celle med et volumen pÄ mere end 1 m3 er der flere stykker kraner, som optager mindre end 5-10% af cellevolumenet.

Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pÄ et lager Fig 1. Foto af flere stykker varer i en celle

Det er tydeligt, at lagerkapaciteten ikke bliver udnyttet optimalt. For at forestille mig omfanget af katastrofen kan jeg give tal: I gennemsnit er der fra 1 til 3 celler af sÄdanne celler med et volumen pÄ mere end 100 m300 med "minuskulÊre" balancer i forskellige perioder af lagerets drift. Da lageret er relativt lille, bliver denne faktor i de travle sÊsoner pÄ lageret en "flaskehals" og bremser lagerprocesserne kraftigt.

Idé til problemlÞsning

En idĂ© opstod: partier af rester med de nĂŠrmeste datoer skulle reduceres til Ă©n enkelt batch, og sĂ„danne rester med en samlet batch skulle placeres kompakt sammen i Ă©n celle eller i flere, hvis der ikke er plads nok i Ă©n til at rumme hele mĂŠngden af ​​rester.

Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pÄ et lager
Fig.2. Skema til komprimering af rester i celler

Dette giver dig mulighed for betydeligt at reducere den besatte lagerplads, der vil blive brugt til nye varer, der placeres. I en situation, hvor lagerkapaciteten er overbelastet, er en sĂ„dan foranstaltning yderst nĂždvendig, ellers kan der simpelthen ikke vĂŠre nok ledig plads til at rumme nye varer, hvilket vil fĂžre til et stop i lagerplacering og genopfyldningsprocesser. Tidligere fĂžr implementering WMS-systemer udfĂžrte denne operation manuelt, hvilket var ineffektivt, da processen med at sĂžge efter passende rester i cellerne var ret lang. Nu, med introduktionen af ​​et WMS-system, besluttede vi at automatisere processen, fremskynde den og gĂžre den intelligent.

Processen med at lÞse et sÄdant problem er opdelt i 2 faser:

  • i det fĂžrste trin finder vi grupper af batches tĂŠt pĂ„ dato for komprimering;
  • i anden fase beregner vi for hver gruppe af partier den mest kompakte placering af de resterende varer i cellerne.

I den aktuelle artikel vil vi fokusere pĂ„ den fĂžrste fase af algoritmen og lade dĂŠkningen af ​​den anden fase blive til den nĂŠste artikel.

SĂžg efter en matematisk model af problemet

FĂžr vi satte os ned for at skrive kode og genopfinde vores hjul, besluttede vi at gribe dette problem videnskabeligt an, nemlig: formulere det matematisk, reducere det til et velkendt diskret optimeringsproblem og bruge effektive eksisterende algoritmer til at lĂžse det, eller tage disse eksisterende algoritmer som grundlag og modificere dem til detaljerne i det praktiske problem, der skal lĂžses.

Da det klart fÞlger af problemformuleringens forretningsmÊssige formulering, at vi har med mÊngder at gÞre, vil vi formulere en sÄdan problemstilling ud fra mÊngdelÊre.

Lad Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pĂ„ et lager – sĂŠttet af alle partier af resten af ​​et bestemt produkt pĂ„ et lager. Lade Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pĂ„ et lager – givet konstant af dage. Lade Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pĂ„ et lager – en delmĂŠngde af batches, hvor forskellen i datoer for alle par af batches i delmĂŠngden ikke overstiger en konstant Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pĂ„ et lager. Vi skal finde det mindste antal usammenhĂŠngende delmĂŠngder Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pĂ„ et lager, sĂ„dan at alle delmĂŠngder Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pĂ„ et lager tilsammen ville give mange Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pĂ„ et lager.

Vi skal med andre ord finde grupper eller klynger af lignende parter, hvor lighedskriteriet er bestemt af konstanten Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pĂ„ et lager. Denne opgave minder os om det velkendte klyngeproblem. Det er vigtigt at sige, at problemet under overvejelse adskiller sig fra klyngeproblemet ved, at vores problem har en strengt defineret betingelse for kriteriet om lighed mellem klyngeelementer, bestemt af den konstante Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pĂ„ et lager, men i klyngeproblemet er der ingen sĂ„dan betingelse. RedegĂžrelsen af ​​klyngeproblemet og oplysninger om dette problem kan findes her.

SÄ det lykkedes os at formulere problemet og finde et klassisk problem med en lignende formulering. Nu er det nÞdvendigt at overveje velkendte algoritmer til at lÞse det, for ikke at genopfinde hjulet, men for at tage den bedste praksis og anvende dem. For at lÞse klyngeproblemet overvejede vi de mest populÊre algoritmer, nemlig: Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pÄ et lager-midler, Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pÄ et lager-midler, algoritme til at identificere forbundne komponenter, minimum spÊndingstrÊ-algoritme. En beskrivelse og analyse af sÄdanne algoritmer kan findes her.

For at lÞse vores problem, klynge algoritmer Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pÄ et lager- betyder og Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pÄ et lager-midler er slet ikke anvendelige, da antallet af klynger aldrig kendes pÄ forhÄnd Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pÄ et lager og sÄdanne algoritmer tager ikke hÞjde for den konstante dages begrÊnsning. SÄdanne algoritmer blev oprindeligt kasseret fra overvejelse.
For at lĂžse vores problem er algoritmen til at identificere forbundne komponenter og minimum spanning tree-algoritmen mere egnede, men som det viste sig, kan de ikke anvendes "head-on" pĂ„ det problem, der skal lĂžses, og opnĂ„ en god lĂžsning. For at forklare dette, lad os overveje logikken i driften af ​​sĂ„danne algoritmer i forhold til vores problem.

Overvej grafen Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pÄ et lager, hvor hjÞrnerne er sÊttet af partier Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pÄ et lager, og kanten mellem hjÞrnerne Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pÄ et lager О Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pÄ et lager har en vÊgt svarende til forskellen pÄ dage mellem batch Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pÄ et lager О Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pÄ et lager. I algoritmen til at identificere tilsluttede komponenter er inputparameteren angivet Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pÄ et lagerHvor Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pÄ et lager, og i grafen Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pÄ et lager alle kanter, hvor vÊgten er stÞrre, fjernes Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pÄ et lager. Kun de nÊrmeste par af objekter forbliver forbundet. Pointen med algoritmen er at vÊlge en sÄdan vÊrdi Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pÄ et lager, hvor grafen "falder fra hinanden" i flere forbundne komponenter, hvor parterne, der tilhÞrer disse komponenter, vil opfylde vores lighedskriterium, bestemt af konstanten Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pÄ et lager. De resulterende komponenter er klynger.

MinimumspÊndingstrÊ-algoritmen bygger fÞrst pÄ en graf Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pÄ et lager minimum spanning tree, og derefter sekventielt fjerner kanter med den hÞjeste vÊgt, indtil grafen "falder fra hinanden" i flere forbundne komponenter, hvor parterne, der tilhÞrer disse komponenter, ogsÄ vil opfylde vores lighedskriterium. De resulterende komponenter vil vÊre klynger.

NÄr man bruger sÄdanne algoritmer til at lÞse det pÄgÊldende problem, kan der opstÄ en situation som i figur 3.

Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pÄ et lager
Fig. 3. Anvendelse af klyngealgoritmer til det problem, der skal lĂžses

Lad os sige, at vores konstant for forskellen mellem batchdage er 20 dage. Kurve Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pĂ„ et lager blev afbildet i rumlig form for at lette visuel opfattelse. Begge algoritmer producerede en 3-klynge lĂžsning, som nemt kan forbedres ved at kombinere batchene placeret i separate klynger med hinanden! Det er indlysende, at sĂ„danne algoritmer skal modificeres for at passe til det specifikke problem, der lĂžses, og deres anvendelse i sin rene form til lĂžsningen af ​​vores problem vil give dĂ„rlige resultater.

Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pÄ et lager
SÄ fÞr vi begyndte at skrive kode til grafalgoritmer modificeret til vores opgave og genopfinde vores egen cykel (i hvis silhuetter vi allerede kunne skelne konturerne af firkantede hjul), besluttede vi igen at nÊrme os et sÄdant problem videnskabeligt, nemlig: prÞv at reducere det til en anden diskret problemoptimering i hÄb om, at eksisterende algoritmer til at lÞse det kan anvendes uden Êndringer.

Endnu en sþgning efter et lignende klassisk problem har véret vellykket! Det lykkedes os at finde et diskret optimeringsproblem, hvis formulering falder 1 i 1 sammen med formuleringen af ​​vores problem. Denne opgave viste sig at vére sét dékningsproblem. Lad os présentere problemformuleringen i forhold til vores detaljer.

Der er et begrĂŠnset sĂŠt Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pĂ„ et lager og familie Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pĂ„ et lager af alle dets usammenhĂŠngende delmĂŠngder af parter, sĂ„ledes at forskellen i datoer for alle par af parter i hver delmĂŠngde Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pĂ„ et lager fra familien Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pĂ„ et lager ikke overstiger konstanter Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pĂ„ et lager. En dĂŠkning kaldes en familie Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pĂ„ et lager af den mindste magt, hvis elementer hĂžrer til Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pĂ„ et lager, sĂ„dan at foreningen af ​​sĂŠt Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pĂ„ et lager fra familien Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pĂ„ et lager bĂžr give sĂŠt af alle parter Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pĂ„ et lager.

En detaljeret analyse af dette problem kan findes her Đž her. Andre muligheder for den praktiske anvendelse af dĂŠkningsproblemet og dets modifikationer kan findes her.

Algoritme til at lĂžse problemet

Vi har besluttet os for den matematiske model for det problem, der skal lÞses. Lad os nu se pÄ algoritmen til at lÞse det. UndersÊt Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pÄ et lager fra familien Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pÄ et lager kan nemt findes ved fÞlgende procedure.

  1. Arranger batches fra et sÊt Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pÄ et lager i faldende rÊkkefÞlge efter deres datoer.
  2. Find minimum og maksimum batchdatoer.
  3. For hver dag Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pÄ et lager fra minimumsdatoen til maksimum, find alle batches, hvis datoer afviger fra Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pÄ et lager ikke mere end Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pÄ et lager (altsÄ vÊrdien Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pÄ et lager Det er bedre at tage det lige tal).

Logikken i proceduren til at danne en familie af sĂŠt Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pĂ„ et lager про Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pĂ„ et lager dage er vist i figur 4.

Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pÄ et lager
Fig.4. Dannelse af undergrupper af partier

Denne procedure er ikke nĂždvendig for alle Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pĂ„ et lager gĂ„ gennem alle andre batches og kontroller forskellen i deres datoer eller fra den aktuelle vĂŠrdi Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pĂ„ et lager flyt til venstre eller hĂžjre, indtil du finder en batch, hvis dato er forskellig fra Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pĂ„ et lager med mere end halvdelen af ​​vĂŠrdien af ​​konstanten. Alle efterfĂžlgende elementer, nĂ„r de flyttes bĂ„de til hĂžjre og venstre, vil ikke vĂŠre interessante for os, da forskellen i dage kun vil stige for dem, da elementerne i arrayet oprindeligt blev bestilt. Denne tilgang vil betydeligt spare tid, nĂ„r antallet af fester og spredningen af ​​deres datoer er vĂŠsentligt stort.

SÊttets dÊkningsproblem er Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pÄ et lager-svÊrt, hvilket betyder, at der ikke er nogen hurtig (med driftstid svarende til et polynomium af inputdataene) og nÞjagtig algoritme til at lÞse det. Derfor blev der valgt en hurtig grÄdig algoritme for at lÞse det sÊt dÊkkende problem, som selvfÞlgelig ikke er nÞjagtig, men har fÞlgende fordele:

  • For smĂ„ problemer (og det er netop vores tilfĂŠlde) beregner den lĂžsninger, der er ret tĂŠt pĂ„ det optimale. EfterhĂ„nden som problemets stĂžrrelse Ăžges, forringes kvaliteten af ​​lĂžsningen, men stadig ret langsomt;
  • Meget let at implementere;
  • Hurtig, da dens kĂžretidsestimat er Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pĂ„ et lager.

Den grÄdige algoritme udvÊlger sÊt baseret pÄ fÞlgende regel: PÄ hvert trin vÊlges et sÊt, der dÊkker det maksimale antal elementer, der endnu ikke er dÊkket. En detaljeret beskrivelse af algoritmen og dens pseudokode kan findes her.

En sammenligning af nĂžjagtigheden af ​​en sĂ„dan grĂ„dig algoritme pĂ„ testdata af problemet, der lĂžses, med andre kendte algoritmer, sĂ„som den sandsynlige grĂ„dige algoritme, myrekolonialgoritmen osv., er ikke blevet foretaget. Resultaterne af at sammenligne sĂ„danne algoritmer pĂ„ genererede tilfĂŠldige data kan findes pĂ„ arbejde.

Implementering og implementering af algoritmen

Denne algoritme blev implementeret i sproget 1ĐĄ og indgik i en ekstern behandling kaldet "Residue Compression", som var forbundet med WMS-system. Vi implementerede ikke algoritmen i sproget C++ og brug det fra en ekstern Native-komponent, hvilket ville vĂŠre mere korrekt, da kodens hastighed er lavere C + + gange og i nogle eksempler endda titusinder gange hurtigere end hastigheden af ​​lignende kode pĂ„ 1ĐĄ. PĂ„ tungen 1ĐĄ Algoritmen blev implementeret for at spare udviklingstid og nem fejlfinding i kundens produktionsbase. Resultatet af algoritmen er vist i figur 5.

Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pÄ et lager
Fig.5. Behandling for at "komprimere" rester

Figur 5 viser, at i det angivne lager er de aktuelle saldi af varer i lagerceller opdelt i klynger, inden for hvilke datoerne for varepartierne afviger fra hinanden med hÞjst 30 dage. Da kunden producerer og opbevarer metalkugleventiler pÄ lageret, hvis holdbarhed er beregnet i Är, kan en sÄdan datoforskel negligeres. BemÊrk, at en sÄdan forarbejdning i Þjeblikket bruges systematisk i produktion og operatÞrer WMS bekrÊfte den gode kvalitet af festklynger.

Konklusioner og fortsĂŠttelse

Den vigtigste erfaring, vi fik fra at lĂžse et sĂ„dant praktisk problem, er bekrĂŠftelse af effektiviteten af ​​at bruge paradigmet: matematik. problemformulering Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pĂ„ et lager berĂžmt mĂ„tte. model Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pĂ„ et lager berĂžmte algoritme Diskret matematik ved implementering af et WMS-system: gruppering af partier af varer pĂ„ et lager algoritme, der tager hĂžjde for problemets detaljer. Diskret optimering har eksisteret i mere end 300 Ă„r, og i lĂžbet af denne tid har folk formĂ„et at overveje en masse problemer og akkumulere en masse erfaring med at lĂžse dem. FĂžrst og fremmest er det mere tilrĂ„deligt at vende sig til denne oplevelse, og fĂžrst derefter begynde at genopfinde dit hjul.

I den nÊste artikel vil vi fortsÊtte historien om optimeringsalgoritmer og se pÄ det mest interessante og meget mere komplekse: en algoritme til optimal "komprimering" af cellerester, som bruger data modtaget fra batch-klyngealgoritmen som input.

Forberedte artiklen
Roman Shangin, programmĂžr for projektafdelingen,
FĂžrste BIT-selskab, Chelyabinsk

Kilde: www.habr.com

KĂžb pĂ„lidelig hosting til websteder med DDoS-beskyttelse, VPS VDS-servere đŸ”„ KĂžb pĂ„lidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster