Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1)

Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1)

I artikeln berÀttar vi hur vi löste problemet med bristen pÄ lediga lagerutrymmen och utvecklingen av en algoritm för diskret optimering för att hantera sÄdana uppgifter. Vi kommer att diskutera hur vi "byggde" den matematiska modellen för optimeringsproblemet och vilka ovÀntade svÄrigheter vi stötte pÄ vid bearbetningen av ingÄngsdata för algoritmen.

Om du Àr intresserad av matematikens tillÀmpningar inom affÀrer och inte Àr rÀdd för tuffa algebraiska transformationer pÄ 5:e klassnivÄ, sÄ Àr du varmt vÀlkommen att lÀsa vidare!

Artikeln kommer att vara till nytta för dem som implementerar WMS-system, arbetar inom lager- eller produktionslogistik, samt för programmerare som Àr intresserade av matematikens tillÀmpningar inom affÀrer och optimering av processer pÄ företaget.

Inledande del

Denna publikation fortsÀtter serien av artiklar dÀr vi delar med oss av vÄr framgÄngsrika erfarenhet av att implementera optimeringsalgoritmer i lagerprocesser.

I den föregÄende artikeln specifikationen av lagret dÀr vi implementerade WMS-systemet, samt varför vi behövde lösa problemet med klustring av partier av restlagret vid implementeringen av WMS-systemet, och hur vi gick tillvÀga.

NÀr vi var klara med att skriva artikeln om optimeringsalgoritmer blev den vÀldigt lÄng, sÄ vi beslutade att dela upp det insamlade materialet i tvÄ delar:

  • I den första delen (denna artikel) kommer vi att berĂ€tta hur vi "byggde" den matematiska modellen för problemet och vilka stora svĂ„righeter vi ovĂ€ntat stötte pĂ„ vid bearbetning och transformation av ingĂ„ngsdata för algoritmen.
  • I den andra delen kommer vi att gĂ„ in pĂ„ detaljer kring implementeringen av algoritmen pĂ„ sprĂ„ket C++, genomföra en berĂ€kningsmĂ€ssig experiment och sammanfatta den erfarenhet vi fĂ„tt under implementeringen av sĂ„dana "intelligenta teknologier" i kundens affĂ€rsprocesser.

Hur man lĂ€ser artikeln. Om du har lĂ€st den föregĂ„ende artikeln kan du gĂ„ direkt till kapitlet "Översikt över befintliga lösningar", om inte, sĂ„ finns beskrivningen av det problem som löses i spoilern nedan.

Beskrivning av det problem som löses pÄ kundens lager

Flaskhals i processerna

År 2018 genomförde vi ett projekt för att implementera WMS-systemet pĂ„ lagret "Handelshus "LD" i staden Tjeljabinsk. Vi implementerade produkten "1C-logistik: Lagerhantering 3" pĂ„ 20 arbetsplatser: operatörer WMS, lagerarbetare, truckförare. Lagret Ă€r medelstort, cirka 4 000 m2, med 5000 lagerplatser och 4500 SKU:er. I lagret lagras kulventiler av eget tillverkning i olika storlekar frĂ„n 1 kg till 400 kg. LagerbestĂ„nden lagras i partier eftersom det finns behov av att plocka varor enligt FIFO.

Under projekteringen av automatiseringsscheman för lagerprocesser stötte vi pÄ det befintliga problemet med suboptimalt lagerhÄllande. Specifikationen för lagring och stapling av ventiler Àr sÄdan att det i en enskild lagringsplats endast kan finnas produkter frÄn en partinomenklatur (se fig. 1). Produkterna anlÀnder till lagret dagligen och varje ankomst Àr ett separat parti. Totalt skapas under en mÄnads lagring 30 separata partier, dÀr varje mÄste lagras pÄ en separat plats. Varor plockas ofta inte i hela pallar utan styckvis, och resultatet blir att i plockzonen ser mÄnga lagringsplatser ut sÄ hÀr: i en plats med volym över 1 m3 ligger flera ventiler som tar upp mindre Àn 5-10 % av platsens volym.

Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1)
Fig. 1. Foto av flera enheter i en lagringsplats

Det Àr en uppenbar suboptimal anvÀndning av lagringskapaciteten. För att illustrera omfattningen av problemet kan jag ge siffror: i genomsnitt finns det mellan 100 och 300 sÄdana lagringsplatser med volym över 1 m3 och "minimal" kvarstÄende lager i olika perioder av lagrets drift. Eftersom lagret Àr relativt litet blir det under sÀsongerna av hög belastning en "flaskhals" som kraftigt bromsar lagrets mottagnings- och avlastningsprocesser.

Idén för att lösa problemet

Idén uppstod: att partierna med rester som har de nÀrmaste datumen samlas i ett enda parti, och dessa rester med det enhetliga partiet placeras kompakt tillsammans i en lagringsplats, eller i flera om platsen inte rÀcker för att rymma hela mÀngden rester. Ett exempel pÄ sÄdan "komprimering" visas i figur 2.

Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1)
Fig. 2. Schema för komprimering av rester i lagringsplatser

Detta möjliggör en betydande minskning av det lagringsutrymme som kommer att anvÀndas för de nya varor som placeras. I situationer dÀr lagringskapaciteten Àr överbelastad Àr denna ÄtgÀrd ytterst nödvÀndig, annars kan det helt enkelt saknas utrymme för placering av nya varor, vilket leder till stopp i lagringsprocesserna för placering och pÄfyllning och, som följd, stopp i mottagning och leverans. Innan WMS-systemet infördes utfördes en sÄdan operation manuellt, vilket var ineffektivt, eftersom processen för att söka efter lÀmpliga lagrade varor i hyllorna tog ganska lÄng tid. Nu, med införandet av WMS-systemet, har vi beslutat att automatisera, pÄskynda och göra processen intelligent.

Processen för att lösa en sÄdan uppgift delas upp i tvÄ steg:

  • I det första steget hittar vi nĂ€rliggande grupper av partier för komprimering (denna uppgift Ă€gnas Ă„t föregĂ„ende artikel);
  • I det andra steget berĂ€knar vi för varje grupp partier den mest kompakta placeringen av lagrade varor i hyllorna.

I denna artikel kommer vi att fokusera pÄ det andra steget i algoritmen.

Översikt över befintliga lösningar

Innan vi övergÄr till beskrivningen av de algoritmer som vi har utvecklat, bör vi göra en kort översikt över de system som redan finns pÄ marknaden WMS, dÀr sÄdan funktionalitet för optimal komprimering har implementerats.

Först och frÀmst bör vi nÀmna produkten "1C: Företag 8. WMS Logistik. Lagerhantering 4", som tillhör och distribueras av företaget 1C och tillhör fjÀrde generationens WMS-system som utvecklats av företaget AXELOT. I detta system anges kompressionsfunktionalitet som syftar till att förena spridda lagrade varor i en gemensam hylla. Det bör nÀmnas att kompressionsfunktionaliteten i ett sÄdant system Àven inkluderar andra möjligheter, sÄsom korrigering av placering av varor i hyllor enligt deras ABC-klasser, men vi kommer inte att gÄ in pÄ dessa.

Om man analyserar koden för systemet "1C: Företag 8. WMS Logistik. Lagerhantering 4" (som i denna del av funktionen Àr öppen), kan man dra följande slutsats. Algoritmen för komprimering av lagret tillÀmpar en ganska primitiv linjÀr logik och det kan inte talas om nÄgon "optimal" komprimering. SjÀlvklart förutsÀtter den inte klustring av partier. NÄgra kunder som har implementerat ett sÄdant system har klagat pÄ resultaten av planeringen av komprimeringen. Till exempel uppstÄr det ofta i praktiken att 100 stycken av lagret frÄn en cell planeras att flyttas till en annan cell, dÀr det finns 1 styck produkt, Àven om det optimalt sett ur tidsperspektiv skulle vara bÀttre att göra tvÀrtom.

Funktionen för komprimering av lagret i celler har ocksÄ deklarerats i mÄnga utlÀndska WMS-system, men tyvÀrr har vi varken nÄgra verkliga Äsikter om effektiviteten av algoritmerna (detta Àr företagshemlighet) eller nÄgon uppfattning om djupet av deras logik (proprietÀr mjukvara med stÀngd kod), dÀrför kan vi inte döma.

Sökning efter en matematisk modell av uppgiften

För att kunna designa kvalitetsalgoritmer för att lösa uppgiften, Àr det nödvÀndigt att först klart formulera denna uppgift matematiskt, vilket vi kommer att göra.

Det finns mÄnga celler Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1), dÀr lagret av vissa produkter finns. Dessa celler kommer vi att kalla donor-celler. LÄt oss ange Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) volymen av produkten som finns i cellen Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1)$.

Det Àr viktigt att pÄpeka att endast en produkt av ett parti, eller flera partier som tidigare har sammanförts till ett kluster (lÀs den föregÄende artikeln), kan delta i komprimeringsproceduren, vilket beror pÄ specifikationen för lagring och placering av produkter. För olika produkter eller olika kluster av partier mÄste en separat komprimeringsprocedur startas.

Det finns mÄnga celler Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1), dÀr rester frÄn donor-celler potentiellt kan placeras. Dessa celler kommer vi fortsÀttningsvis att kalla behÄllarceller. Dessa kan vara bÄde lediga celler i lagret och donor-celler frÄn mÀngden Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1). MÀngden Àr alltid ett delmÀngd av Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) För varje cell Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1).

frÄn mÀngden Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) Àr begrÀnsningar pÄ kapacitet angivna Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) det finns begrÀnsningar för kapacitet Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1), mÀtt i dm3. En dm3 representerar en kub med sidor pÄ 10 cm. Produkterna som lagras pÄ lagret Àr tillrÀckligt stora, sÄ i detta fall Àr denna diskretisering helt tillrÀcklig.

En matris över de kortaste avstÄnden har angivits Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) i meter mellan varje par av celler Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1), dÀr Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) och Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) tillhör mÀngder Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) och Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) respektive.

LÄt oss beteckna Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) »kostnaderna« för att flytta varor frÄn en cellDiskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) till en cell Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1). LÄt oss beteckna Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) »kostnaderna« för att vÀlja en behÄllare Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) för att flytta rester frÄn andra celler. Hur exakt och i vilka enheter vÀrdena kommer att berÀknas Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) och Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) kommer att diskuteras senare (se avsnittet förberedelse av ingÄngsdata), just nu rÀcker det att sÀga att sÄdana storheter kommer att vara direkt proportionella mot vÀrdena Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) och Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) respektive.

LÄt oss beteckna med Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) en variabel som fÄr vÀrdet 1 om resterna frÄn cellen Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) flyttas till behÄllaren Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1), och 0 annars. LÄt oss beteckna med Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) en variabel som fÄr vÀrdet 1 om behÄllaren Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) innehÄller rester av varor, och 0 annars.

Problemet formuleras sÄ: det Àr nödvÀndigt att hitta en sÄdan uppsÀttning behÄllare Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) och pÄ sÄ sÀtt »fÀsta« donorcellorna till behÄllarcellerna, sÄ att funktionen minimeras

Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1)

med begrÀnsningar

Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1)

Sammanfattningsvis, i processen att berÀkna lösningen till problemet strÀvar vi efter att:

  • för det första, spara lagringskapacitet;
  • för det andra, spara tid för lagerarbetarna.

Den sista begrÀnsningen innebÀr att vi inte kan flytta varor till en behÄllare som vi inte har valt, och dÀrför inte har »Ädragit oss kostnader« för dess val. Denna begrÀnsning innebÀr ocksÄ att volymen av de flyttade varorna frÄn cellerna till behÄllaren inte fÄr överskrida behÄllarens kapacitet. Med lösningen till problemet menar vi mÀngden behÄllare Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) och sÀtt att fÀsta donorcellorna till behÄllarna.

Denna formulering av optimeringsproblemet Àr inte ny och har studerats av mÄnga matematiker sedan början av 1980-talet. I utlÀndsk litteratur finns det 2 optimeringsproblem med en lÀmplig matematisk modell: Single-Source Capacitated Facility Location Problem och Multi-Source Capacitated Facility Location Problem (om skillnaderna mellan uppgifterna ska vi prata mer senare). Det Àr vÀrt att nÀmna att i matematisk litteratur formuleras dessa tvÄ typer av optimeringsproblem i termer av placering av företag pÄ en plats, dÀrav namnet "Facility Location". Största delen av detta Àr en hyllning till traditionen, eftersom behovet av att lösa sÄdana kombinationella problem först uppstod inom logistikomrÄdet, frÀmst inom den militÀr-industriella sektorn pÄ 50-talet av förra seklet. I termer av företagsplacering formuleras sÄdana problem sÄ hÀr:

  • Det finns ett Ă€ndligt antal stĂ€der dĂ€r det potentiellt Ă€r möjligt att placera produktionsanlĂ€ggningar (dĂ€refter stĂ€der-producenter). För varje stad-producent anges kostnaderna för att öppna ett företag dĂ€r samt begrĂ€nsningen för produktionskapaciteten hos det företag som öppnas dĂ€r.
  • Det finns ett Ă€ndligt antal stĂ€der dĂ€r kunderna faktiskt befinner sig (dĂ€refter stĂ€der-kunder). För varje sĂ„dan stad-kund anges efterfrĂ„gevolymen pĂ„ produkten. För enkelhetens skull ska vi anta att produkten som produceras av företagen och konsumeras av kunderna Ă€r densamma.
  • För varje par stad-producent och stad-kund anges beloppet pĂ„ transportkostnaderna för att leverera den nödvĂ€ndiga volymen av produkten frĂ„n producenten till kunden.

Det krÀvs att ta reda pÄ i vilka stÀder som företag ska öppnas och hur kunder ska kopplas till dessa företag, sÄ att:

  • De totala kostnaderna för att öppna företagen och transportkostnaderna Ă€r minimerade;
  • EfterfrĂ„gevolymen frĂ„n kunderna kopplade till nĂ„got öppet företag inte överstiger produktionskapaciteten hos det företaget.

Nu Àr det vÀrt att nÀmna den enda skillnaden mellan dessa tvÄ klassiska problem:

  • Single-Source Capacitated Facility Location Problem – kunden fĂ„r leverans endast frĂ„n ett öppet företag;
  • Multi-Source Capacitated Facility Location Problem – kunden kan fĂ„ leverans frĂ„n flera öppna företag samtidigt.

Denna skillnad mellan de tvÄ problemen verkar vid första ögonkastet vara obetydlig, men i sjÀlva verket leder den till helt olika kombinationella strukturer för dessa problem och dÀrmed till helt olika algoritmer för deras lösning. Skillnaden mellan problemen demonstreras i bilden nedan.

Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1)
Fig. 3. a) Multi-Source Capacitated Facility Location Problem

Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1)
Fig. 3. b) Single-Source Capacitated Facility Location Problem

BÄda problemen Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1)-svÄra, det finns ingen exakt algoritm som skulle kunna lösa ett sÄdant problem pÄ polynomisk tid beroende pÄ storleken av indata. Enklare uttryckt kommer alla exakta algoritmer för att lösa problemet att arbeta med exponetiell tid, Àven om de möjligen kan vara snabbare Àn en bruteforce-lösning. Eftersom uppgiften Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1)-Àr svÄr, sÄ kommer vi att betrakta endast approximativa heuristik, det vill sÀga algoritmer som kommer att rÀkna ut stabila lösningar mycket nÀra de optimala och som kommer att fungera tillrÀckligt snabbt. Om det finns intresse för sÄdana problem kan man hÀr hitta en bra översikt pÄ ryska.

Om vi översÀtter till terminologin av vÄr uppgift med optimal komprimering av varor i celler, blir följande:

  • klientstĂ€der – celler-donatorer Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) med varulager,
  • produktionsstĂ€der – celler-container Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1), dit det Ă€r tĂ€nkt att placera rester frĂ„n andra celler,
  • transportkostnader – tidskostnader Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) för lagerarbetares flyttningar av varuvolymen frĂ„n donatorcell Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) till container-cellen Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1);
  • kostnader för att starta verksamheten – kostnader för att vĂ€lja en container Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1), motsvarande volymen av container-cellen Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1), multiplicerad med en viss faktor av frihetsvolymernas besparing (vĂ€rdet pĂ„ faktorn Ă€r alltid > 1) (se avsnittet förberedelse av indata).

Efter att analogin med de kÀnda klassiska leveransproblemen har gjorts, Àr det viktigt att svara pÄ en viktig frÄga som pÄverkar valet av algoritmarkitektur: Àr flyttning av rester frÄn donatorcellen endast möjligt till en enda container (Single-Source), eller Àr det möjligt att flytta rester till flera container-celler (Multi-Source)?

Det bör noteras att bÄda upplÀggen i praktiken Àr förekommande. Vi kommer att lista alla 'för' och 'emot' för varje sÄdan upplÀgg nedan:

Variant av uppgiftenFördelar med variantenNackdelar med varianten
Single-SourceFlyttningsoperationerna för varor, berÀknade utifrÄn detta uppgiftsscenario:
  • krĂ€ver mindre kontroll frĂ„n lagerarbetarens sida (tog ALLT frĂ„n en cell, la ALLT i en annan container-cell), vilket eliminerar riskerna: fel vid omrĂ€kning av varornas antal vid operationerna "LĂ€gg i cell"; fel vid inmatning av det omrĂ€knade antalet i TSD;
  • Ingen tidsĂ„tgĂ„ng krĂ€vs för att rĂ€kna antalet varor vid utförande av operationer som "LĂ€gg i fack" och för att ange dem i TSD.
Multi-SourceKompresseringar som berÀknas enligt det hÀr alternativet Àr vanligtvis mer kompakta med 10-15% jÀmfört med kompressiorer som berÀknas enligt alternativet "Single-Source". Men vi bör ocksÄ notera att ju fÀrre restposter som finns i donorfacken, desto mindre blir denna skillnad i kompaktitet.Flyttningsoperationerna för varor, berÀknade utifrÄn detta uppgiftsscenario:
  • krĂ€ver större kontroll frĂ„n lagerarbetarens sida (det Ă€r nödvĂ€ndigt att rĂ€kna antalet varor som flyttas till varje av de planerade containerfacken), vilket eliminerar risken för fel vid rĂ€kning av varor och inmatning av data i TSD vid utförande av operationer "LĂ€gg i fack".
  • Tid krĂ€vs för att rĂ€kna antalet varor vid utförande av operationer "LĂ€gg i fack".
  • Tid krĂ€vs för "indirekta kostnader" (stoppa, gĂ„ till pallen, skanna QR-koden för containerfacket) vid utförande av operationer "LĂ€gg i fack".
  • Ibland kan algoritmen "splittra" antalet nĂ€stan fulla pallar mellan ett stort antal containerfack dĂ€r det redan finns lĂ€mpliga varor, vilket ur kundens perspektiv Ă€r oacceptabelt.

Tabell 1. För- och nackdelar med alternativen Single-Source och Multi-Source.

Eftersom antalet fördelar med alternativet Single-Source Àr större, samt med hÀnsyn till det faktum att ju fÀrre restposter som finns i donorfacken, desto mindre skillnad blir det i graden av kompaktitet av komprimeringen berÀknad enligt bÄda alternativ, har vi valt att gÄ med alternativet Single-Source.

Det bör nÀmnas att alternativet Multi-Source ocksÄ har sin plats. Det finns ett stort antal effektiva algoritmer för att lösa det, de flesta av vilka reduceras till att lösa en serie transportproblem. Det finns ocksÄ inte bara effektiva algoritmer utan Àven eleganta, till exempel, hÀr.

Förberedelse av indata

Innan vi pĂ„börjar analys och utveckling av algoritmen för att lösa uppgiften, mĂ„ste vi bestĂ€mma vilka data och i vilken form vi ska mata in dem. Det finns inga problem med volymerna av restvaror i donorfacken och kapaciteten hos containerfacken, eftersom det Ă€r trivialt – sĂ„dana storheter kommer att mĂ€tas i mÂł, men nĂ€r det gĂ€ller kostnader för anvĂ€ndningen av containerfacket och kostnadsmatrisen för flyttning Ă€r det inte sĂ„ enkelt!

LÄt oss först se pÄ berÀkningen. kostnader för flytt av varor frÄn cell-donor till cell-behÄllare. Först och frÀmst mÄste vi bestÀmma i vilka mÄttenheter vi kommer att berÀkna kostnaderna för flytten. De tvÄ mest uppenbara alternativen Àr meter och sekunder. Det Àr meningslöst att rÀkna kostnader i "rena" meter. LÄt oss visa detta med ett exempel. Anta att cellen Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) ligger pÄ första vÄningen, cellen Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) Àr placerad 30 meter bort och ligger pÄ andra vÄningen:

  • Flytt frĂ„n Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) pĂ„ Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) Ă€r dyrare Ă€n flytt frĂ„n Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) pĂ„ Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1), eftersom det Ă€r lĂ€ttare att sĂ€nka ner frĂ„n andra vĂ„ningen (1,5-2 meter frĂ„n golvet) Ă€n att lyfta upp till andra, Ă€ven om det strĂ€cka som ska tillryggalĂ€ggas Ă€r densamma;
  • Att flytta 1 st. vara frĂ„n cellen Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) pĂ„ Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) Ă€r lĂ€ttare Ă€n att flytta 10 st. av samma vara, Ă€ven om avstĂ„ndet som ska passeras Ă€r detsamma.

Kostnaderna för flytt Àr bÀttre att beakta i sekunder, eftersom detta gör att vi kan ta hÀnsyn till bÄde skillnaden i vÄningar och skillnaden i flyttad mÀngd av varor. För att beakta kostnaderna för flytt i sekunder mÄste vi bryta ner flyttoperationen i elementÀra bestÄndsdelar och göra tidmÀtningar för att utföra varje elementÀr komponent.

Anta att frÄn cellen Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) flyttas Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) st. av varan till behÄllaren Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1). LÄt oss kalla Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) den genomsnittliga hastigheten för en arbetare pÄ lagret, mÀtt i m/s. LÄt oss kalla Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) och Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) de genomsnittliga hastigheterna för att utföra operationer att ta och lÀgga ner för en varav volymen Àr 4 dm3 (genomsnittlig volym som en anstÀlld pÄ lagret tar i ett enda grepp nÀr operationerna utförs). LÄt oss kalla Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) och Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) höjden pÄ cellerna frÄn vilka operationerna tas och lÀggs ner. Till exempel, den genomsnittliga höjden pÄ första vÄningen (golvet) Àr 1 m, andra vÄningen 2 m och sÄ vidare. DÄ Àr formeln för att berÀkna den totala tiden för att utföra flyttoperationen Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) följande:

Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1)

Tabell 2 visar statistiken för tiden för att utföra varje elementÀr operation, insamlad av lagermedarbetare med hÀnsyn till det specifika lagrade godset.

Beteckning av operationBeteckningGenomsnittligt vÀrde
Genomsnittlig hastighet för en arbetare pÄ lagretDiskret matematik för WMS: algoritm för att komprimera varor i fack (del 1)1,5 m/s
Genomsnittlig hastighet för att utföra en operativ handling att lÀgga (för volymen av varan 4 dm3)Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1)2,4 sek

Tabell 2. Genomsnittlig tid för att utföra lageroperationer

Vi har bestÀmt oss för sÀttet att berÀkna kostnader för flytt. Nu mÄste vi ta reda pÄ hur man berÀknar kostnaderna för valet av cell-behÄllareHÀr Àr allt mycket, mycket mer komplicerat Àn kostnaderna för förflyttning, eftersom:

  • för det första mĂ„ste kostnaderna stĂ„ i direkt förhĂ„llande till volymen pĂ„ cellen – samma volym av rester, som flyttas frĂ„n donorcell, bör bĂ€st placeras i en behĂ„llare med mindre volym Ă€n i en stor container, förutsatt att sĂ„dant volym helt rymms i bĂ„da behĂ„llarna. Genom att minimera de totala kostnaderna för valet av behĂ„llare strĂ€var vi efter att spara "bristfĂ€lliga" lediga lagringsutrymmen inom plockningsomrĂ„det för att genomföra efterföljande placering av varor i cellerna. I figur 4 visas alternativ för flyttning av rester i stora och smĂ„ behĂ„llare samt konsekvenserna av sĂ„dana flyttningsalternativ vid genomförandet av efterföljande lageroperationer.
  • för det andra, eftersom vi i lösningen av det ursprungliga problemet mĂ„ste minimera just de totala kostnaderna, vilket Ă€r summan av bĂ„de flyttkostnader och kostnader för valet av behĂ„llare, sĂ„ mĂ„ste volymerna pĂ„ cellerna i kubikmeter pĂ„ nĂ„got sĂ€tt kopplas till sekunder, vilket inte Ă€r trivialt.

Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1)
Fig. 4. Alternativ för flyttning av rester till behÄllare med olika kapacitet.

I figur 4 visas den röda fÀrgen för volymen av rester som redan inte fÄr plats i behÄllaren pÄ det andra steget av placeringen av efterföljande varor.

För att koppla kubikmeter kostnader för valet av behÄllare med sekunder för flyttkostnader kommer följande krav pÄ de berÀknade lösningarna av uppgiften att vara till hjÀlp:

  • Det Ă€r nödvĂ€ndigt att resterna frĂ„n donorcell flyttas till behĂ„llarcellen i alla fall, om detta minskar det totala antalet behĂ„llarceller dĂ€r varan finns.
  • Det Ă€r nödvĂ€ndigt att upprĂ€tthĂ„lla balans mellan volymerna av behĂ„llarna och kostnaderna för flyttning: till exempel, om vinsten i volym i den nya lösningen jĂ€mfört med den föregĂ„ende lösningen Ă€r stor, men förlusten av tidskostnader Ă€r liten, sĂ„ bör det nya alternativet vĂ€ljas.

LĂ„t oss börja med det senaste kravet. För att specificera det flertydiga ordet „balans“ har vi genomfört en undersökning bland lageranstĂ€llda för att ta reda pĂ„ följande. LĂ„t oss sĂ€ga att det finns en behĂ„llarecell av volym Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1), dĂ€r flyttning av varor frĂ„n donorcell Ă€r planerad och den totala tiden för denna flyttning Ă€r lika med Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1). LĂ„t oss övervĂ€ga nĂ„gra alternativa sĂ€tt att placera samma mĂ€ngd varor frĂ„n samma donorboxar i andra behĂ„llare, dĂ€r varje placering har sina egna bedömningar. Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1), dĂ€r Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1)<Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) och Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1), dĂ€r Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1)>Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1).

FrĂ„gan stĂ€lls: vilken minimal vinst i volym Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) Ă€r acceptabel, givet ett förlustvĂ€rde i tid. Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1)? ĐŸĐŸŃŃĐœĐžĐŒ ĐœĐ° ĐżŃ€ĐžĐŒĐ”Ń€Đ”. Đ˜Đ·ĐœĐ°Ń‡Đ°Đ»ŃŒĐœĐŸ ĐŸŃŃ‚Đ°Ń‚ĐșĐž ĐżĐŸĐ»Đ°ĐłĐ°Đ»ĐŸŃŃŒ Ń€Đ°Đ·ĐŒĐ”Ń‰Đ°Ń‚ŃŒ ĐČ ĐșĐŸĐœŃ‚Đ”ĐčĐœĐ”Ń€ ĐŸĐ±ŃŠĐ”ĐŒĐ° 1000 ĐŽĐŒ3 (1 ĐŒ3) Đž ĐČŃ€Đ”ĐŒŃ ĐœĐ° ĐżĐ”Ń€Đ”ĐŒĐ”Ń‰Đ”ĐœĐžĐ” ŃĐŸŃŃ‚Đ°ĐČĐžĐ»ĐŸ 70 сДĐșŃƒĐœĐŽ. Есть ĐČĐ°Ń€ĐžĐ°ĐœŃ‚ Ń€Đ°Đ·ĐŒĐ”Ń‰Đ”ĐœĐžŃ ĐŸŃŃ‚Đ°Ń‚ĐșĐŸĐČ ĐČ ĐŽŃ€ŃƒĐłĐŸĐč ĐșĐŸĐœŃ‚Đ”ĐčĐœĐ”Ń€ ĐŸĐ±ŃŠĐ”ĐŒĐ° 500 ĐŽĐŒ3 Đž ĐČŃ€Đ”ĐŒĐ”ĐœĐ”ĐŒ 130 сДĐșŃƒĐœĐŽ. Đ’ĐŸĐżŃ€ĐŸŃ: ĐłĐŸŃ‚ĐŸĐČы лО ĐŒŃ‹ тратоть ДщД ĐŽĐŸĐżĐŸĐ»ĐœĐžŃ‚Đ”Đ»ŃŒĐœŃ‹Đ” 60 сДĐșŃƒĐœĐŽ ĐČŃ€Đ”ĐŒĐ”ĐœĐž ĐșĐ»Đ°ĐŽĐŸĐČщоĐșа ĐœĐ° ĐČŃ‹ĐżĐŸĐ»ĐœĐ”ĐœĐžĐ” ĐżĐ”Ń€Đ”ĐŒĐ”Ń‰Đ”ĐœĐžŃ ĐŽĐ»Ń Ń‚ĐŸĐłĐŸ, Ń‡Ń‚ĐŸĐ±Ń‹ сэĐșĐŸĐœĐŸĐŒĐžŃ‚ŃŒ 500 ĐŽĐŒ3 сĐČĐŸĐ±ĐŸĐŽĐœĐŸĐłĐŸ ĐŸĐ±ŃŠĐ”ĐŒĐ°? ĐŸĐŸ Ń€Đ”Đ·ŃƒĐ»ŃŒŃ‚Đ°Ń‚Đ°ĐŒ ĐŸĐżŃ€ĐŸŃĐ° ŃĐŸŃ‚Ń€ŃƒĐŽĐœĐžĐșĐŸĐČ ŃĐșлаЎа была ŃĐŸŃŃ‚Đ°ĐČĐ»Đ”ĐœĐ° ŃĐ»Đ”ĐŽŃƒŃŽŃ‰Đ°Ń ĐŽĐžĐ°ĐłŃ€Đ°ĐŒĐŒĐ°.

Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1)
Fig. 5. Diagrammet visar beroendet av den minimi acceptabla volymbesparingen frÄn ökningen av tidsdifferensen för operationens genomförande.

Det vill sÀga, om de extra tidskostnaderna Àr 40 sekunder, sÄ Àr vi beredda att investera denna tid endast om vinsten i volym Àr minst 500 dm3. Trots att det finns en liten icke-linjÀritet i beroendet, kommer vi för enkelhetens skull anta att sambandet mellan mÀngderna Àr linjÀrt och kan beskrivas av en ojÀmlikhet.

Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1)

Nedan i bilden kommer vi att övervÀga följande sÀtt att placera varor i behÄllare.

Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1)
Fig. 6. Alternativ (a): 2 behÄllare, total volym 400 dm3, total tid 150 sek.
Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1)
Fig. 6. Alternativ (b): 2 behÄllare, total volym 600 dm3, total tid 190 sek.
Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1)
Fig. 6. Alternativ (c): 1 behÄllare, total volym 400 dm3, total tid 200 sek.

Alternativ (a) för val av behĂ„llare Ă€r mer fördelaktigt Ă€n det ursprungliga alternativet, eftersom ojĂ€mlikheten uppfylls: (800-400)/10 >= 150-120 vilket ger 40 >= 30. Alternativ (b) Ă€r mindre fördelaktigt Ă€n det ursprungliga alternativet, eftersom ojĂ€mlikheten inte uppfylls: (800-600)/10 >= 190-150 vilket ger 20 >= 40. Men alternativ (c) följer inte denna logik! LĂ„t oss titta nĂ€rmare pĂ„ detta alternativ. Å ena sidan gĂ€ller ojĂ€mlikheten (800-400)/10 >= 200-120, alltsĂ„ att ojĂ€mlikheten 40 >= 80 inte uppfylls, vilket indikerar att volymvinsten inte motiverar den stora tidsförlusten.

Men Ă„ andra sidan, i detta alternativ (c) minskar vi inte bara den totala upptagna volymen, utan vi minskar ocksĂ„ antalet upptagna boxar, vilket Ă€r det första av tvĂ„ viktiga krav pĂ„ de berĂ€knade lösningarna till de uppgifter som nĂ€mndes tidigare. Uppenbarligen, för att detta krav ska börja uppfyllas mĂ„ste vi lĂ€gga till en viss positiv konstant i vĂ€nsterledet pĂ„ ojĂ€mlikheten. Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1), och denna konstant mĂ„ste endast lĂ€ggas till nĂ€r antalet behĂ„llare minskar. LĂ„t oss pĂ„minna om att Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) — detta Ă€r en variabel som Ă€r lika med 1 nĂ€r behĂ„llaren Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) Ă€r vald, och 0 nĂ€r behĂ„llaren Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) inte valt. LĂ„t oss konkretisera, Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) – ett antal containrar i den ursprungliga lösningen och Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) – ett antal containrar i den nya lösningen. SĂ„ hĂ€r kommer den nya ojĂ€mlikheten att se ut:

Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1)

Genom att omvandla ojÀmlikheten ovan fÄr vi

Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1)

UtifrÄn detta har vi formeln för berÀkning av den totala kostnaden Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) för ett visst alternativ av problemlösningen:

Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1)

Men nu uppstĂ„r frĂ„gan: vilket vĂ€rde bör en sĂ„dan konstant ha Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1)? ОчДĐČĐžĐŽĐœĐŸ, Ń‡Ń‚ĐŸ ДД Đ·ĐœĐ°Ń‡Đ”ĐœĐžĐ” ĐŽĐŸĐ»Đ¶ĐœĐŸ Đ±Ń‹Ń‚ŃŒ ĐŽĐŸŃŃ‚Đ°Ń‚ĐŸŃ‡ĐœĐŸ Đ±ĐŸĐ»ŃŒŃˆĐžĐŒ, ĐŽĐ»Ń Ń‚ĐŸĐłĐŸ, Ń‡Ń‚ĐŸĐ±Ń‹ ĐČсДгЎа ĐČŃ‹ĐżĐŸĐ»ĐœŃĐ»ĐŸŃŃŒ пДрĐČĐŸĐ” Ń‚Ń€Đ”Đ±ĐŸĐČĐ°ĐœĐžĐ” Đș Ń€Đ”ŃˆĐ”ĐœĐžŃĐŒ заЎачО. ĐœĐŸĐ¶ĐœĐŸ ĐșĐŸĐœĐ”Ń‡ĐœĐŸ ĐČĐ·ŃŃ‚ŃŒ Đ·ĐœĐ°Ń‡Đ”ĐœĐžĐ” ĐșĐŸĐœŃŃ‚Đ°ĐœŃ‚Ń‹ раĐČĐœĐŸĐ” 103 ОлО 106, ĐœĐŸ Ń…ĐŸŃ‚Đ”Đ»ĐŸŃŃŒ бы ĐžĐ·Đ±Đ”Đ¶Đ°Ń‚ŃŒ таĐșох «magic numbers». ЕслО Đ±ŃƒĐŽĐ”ĐŒ Ń€Đ°ŃŃĐŒĐ°Ń‚Ń€ĐžĐČать спДцОфОĐșу ĐČŃ‹ĐżĐŸĐ»ĐœĐ”ĐœĐžŃ сĐșлаЎсĐșох ĐŸĐżĐ”Ń€Đ°Ń†ĐžĐč, ĐŒŃ‹ ĐŒĐŸĐ¶Đ”ĐŒ ĐČŃ‹Ń‡ĐžŃĐ»ĐžŃ‚ŃŒ ĐœĐ”ŃĐșĐŸĐ»ŃŒĐșĐŸ ĐČĐżĐŸĐ»ĐœĐ” ĐŸĐ±ĐŸŃĐœĐŸĐČĐ°ĐœĐœŃ‹Ń… Ń‡ĐžŃĐ»ĐŸĐČых ĐŸŃ†Đ”ĐœĐŸĐș ĐČĐ”Đ»ĐžŃ‡ĐžĐœŃ‹ таĐșĐŸĐč ĐșĐŸĐœŃŃ‚Đ°ĐœŃ‚Ń‹.

LĂ„t Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) – det maximala avstĂ„ndet mellan lagrets celler i en zon ABC, vilket i vĂ„rt fall Ă€r 100 m. LĂ„t Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) – det maximala volymen för en cell-container i lagret, vilket i vĂ„rt fall Ă€r 1000 dm3.

Första metoden för att berÀkna storleken Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1). LÄt oss övervÀga situationen dÀr det finns 2 containrar pÄ den första nivÄn, dÀr varor redan fysiskt finns, det vill sÀga de sjÀlva Àr cell-donatorer, och kostnaderna för att flytta varorna till dessa celler Àr uppenbarligen lika med 0. Vi behöver hitta ett vÀrde för konstanten Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1), dÀr det alltid skulle vara fördelaktigt att flytta rester frÄn container 1 till container 2. Genom att sÀtta in vÀrdena Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) och Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) i ojÀmlikheten ovan, fÄr vi:

Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1)

vilket innebÀr

Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1)

Genom att sÀtta in vÀrdena för den genomsnittliga tiden för att utföra elementÀra operationer i formeln ovan fÄr vi

Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1)

Andra metoden för att berĂ€kna storleken Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1). LĂ„t oss övervĂ€ga situationen dĂ€r det finns Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) cell-donatorer frĂ„n vilka varor planeras flyttas till container 1. LĂ„t oss beteckna Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) – avstĂ„ndet frĂ„n cell-donatorn Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) till container 1. Det finns ocksĂ„ en container 2, dĂ€r varor redan finns, och vars volym tillĂ„ter att rymma rester frĂ„n alla Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) cell-donatorer. För enkelhetens skull antar vi att volymen av varorna som flyttas frĂ„n cell-donatorerna till containrarna Ă€r lika med Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1). Vi behöver hitta ett sĂ„dant vĂ€rde för konstanten Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1), dĂ€r placeringen av alla rester frĂ„n Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) cellerna i container 2 alltid skulle vara mer lönsam Ă€n placeringen av dem i olika containrar:

Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1)

Genom att omvandla ojÀmlikheten fÄr vi

Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1)

För att "stÀrka" vÀrdet av storleken Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1), antar vi att Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) = 0. Det genomsnittliga antalet celler som vanligtvis deltar i proceduren med att komprimera rester i lagret Àr 10. Genom att sÀtta in de kÀnda vÀrdena för storheterna har vi följande vÀrde för konstanten

Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1)

Vi tar det största vÀrdet som berÀknats för varje alternativ, detta kommer att vara vÀrdet av storleken Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) för de angivna lagret parametrarna. Nu för fullstÀndighets skull skriver vi formeln för berÀkning av de totala kostnaderna Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1) för en viss tillÄten lösning. Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1):

Diskret matematik för WMS: algoritm för att komprimera varor i fack (del 1)

Nu, efter all titanisk anstrÀngning för att omvandla indata, kan vi sÀga att all indata har omvandlats till rÀtt format och Àr redo att anvÀndas i optimeringsalgoritmen.

Slutsats

Som praktiken visar, underskattas ofta arbetsinsatsen och betydelsen av förberedelse- och omvandlingsfasen för algoritmen. I denna artikel har vi sĂ€rskilt Ă€gnat mycket uppmĂ€rksamhet Ă„t denna fas för att visa att endast kvalitativt och genomtĂ€nkt förberedda indata kan göra de av algoritmen berĂ€knade lösningarna verkligt vĂ€rdefulla för kunden. Ja, det har funnits mĂ„nga slutsatser av formler, men vi varnade er redan innan katten 🙂

I nĂ€sta artikel kommer vi Ă€ntligen att nĂ„ det som de tvĂ„ föregĂ„ende publikationerna handlade om – algoritmen för diskret optimering.

Artikel författad av
Roman Shangin, programmerare vid projektavdelningen,
företaget Första Bit, Chelyabinsk


KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster