
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 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.

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.

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 );
- 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
, dÀr lagret av vissa produkter finns. Dessa celler kommer vi att kalla donor-celler. LÄt oss ange
volymen av produkten som finns i cellen
$.
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 ), 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
, 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
. MÀngden Àr alltid ett delmÀngd av
För varje cell
.
frÄn mÀngden
Àr begrÀnsningar pÄ kapacitet angivna
det finns begrÀnsningar för kapacitet
, 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
i meter mellan varje par av celler
, dÀr
och
tillhör mÀngder
och
respektive.
LÄt oss beteckna
»kostnaderna« för att flytta varor frÄn en cell
till en cell
. LÄt oss beteckna
»kostnaderna« för att vÀlja en behÄllare
för att flytta rester frÄn andra celler. Hur exakt och i vilka enheter vÀrdena kommer att berÀknas
och
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
och
respektive.
LÄt oss beteckna med
en variabel som fÄr vÀrdet 1 om resterna frÄn cellen
flyttas till behÄllaren
, och 0 annars. LÄt oss beteckna med
en variabel som fÄr vÀrdet 1 om behÄllaren
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
och pÄ sÄ sÀtt »fÀsta« donorcellorna till behÄllarcellerna, sÄ att funktionen minimeras

med begrÀnsningar

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
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: och (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.

Fig. 3. a) Multi-Source Capacitated Facility Location Problem

Fig. 3. b) Single-Source Capacitated Facility Location Problem
BÄda problemen
-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
-À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
med varulager, - produktionsstĂ€der â celler-container
, dit det Ă€r tĂ€nkt att placera rester frĂ„n andra celler, - transportkostnader â tidskostnader
för lagerarbetares flyttningar av varuvolymen frÄn donatorcell
till container-cellen
; - kostnader för att starta verksamheten â kostnader för att vĂ€lja en container
, motsvarande volymen av container-cellen
, 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 uppgiften | Fördelar med varianten | Nackdelar med varianten |
|---|---|---|
| Single-Source | Flyttningsoperationerna för varor, berÀknade utifrÄn detta uppgiftsscenario:
| |
| Multi-Source | Kompresseringar 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:
|
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,
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
ligger pÄ första vÄningen, cellen
Àr placerad 30 meter bort och ligger pÄ andra vÄningen:
- Flytt frÄn
pÄ
Àr dyrare Àn flytt frÄn
pÄ
, 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
pÄ
À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
flyttas
st. av varan till behÄllaren
. LÄt oss kalla
den genomsnittliga hastigheten för en arbetare pÄ lagret, mÀtt i m/s. LÄt oss kalla
och
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
och
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
följande:

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 operation | Beteckning | Genomsnittligt vÀrde |
|---|---|---|
| Genomsnittlig hastighet för en arbetare pÄ lagret | ![]() | 1,5 m/s |
| Genomsnittlig hastighet för att utföra en operativ handling att lÀgga (för volymen av varan 4 dm3) | ![]() | 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.

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
, dÀr flyttning av varor frÄn donorcell Àr planerad och den totala tiden för denna flyttning Àr lika med
. 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.
, dÀr
<
och
, dÀr
>
.
FrÄgan stÀlls: vilken minimal vinst i volym
Àr acceptabel, givet ett förlustvÀrde i tid.
? ĐĐŸŃŃĐœĐžĐŒ ĐœĐ° ĐżŃĐžĐŒĐ”ŃĐ”. ĐĐ·ĐœĐ°ŃалŃĐœĐŸ ĐŸŃŃаŃĐșĐž ĐżĐŸĐ»Đ°ĐłĐ°Đ»ĐŸŃŃ ŃĐ°Đ·ĐŒĐ”ŃаŃŃ ĐČ ĐșĐŸĐœŃĐ”ĐčĐœĐ”Ń ĐŸĐ±ŃĐ”ĐŒĐ° 1000 ĐŽĐŒ3 (1 ĐŒ3) Đž ĐČŃĐ”ĐŒŃ ĐœĐ° пДŃĐ”ĐŒĐ”ŃĐ”ĐœĐžĐ” ŃĐŸŃŃаĐČĐžĐ»ĐŸ 70 ŃĐ”ĐșŃĐœĐŽ. ĐŃŃŃ ĐČаŃĐžĐ°ĐœŃ ŃĐ°Đ·ĐŒĐ”ŃĐ”ĐœĐžŃ ĐŸŃŃаŃĐșĐŸĐČ ĐČ ĐŽŃŃĐłĐŸĐč ĐșĐŸĐœŃĐ”ĐčĐœĐ”Ń ĐŸĐ±ŃĐ”ĐŒĐ° 500 ĐŽĐŒ3 Đž ĐČŃĐ”ĐŒĐ”ĐœĐ”ĐŒ 130 ŃĐ”ĐșŃĐœĐŽ. ĐĐŸĐżŃĐŸŃ: ĐłĐŸŃĐŸĐČŃ Đ»Đž ĐŒŃ ŃŃаŃĐžŃŃ Đ”ŃĐ” ĐŽĐŸĐżĐŸĐ»ĐœĐžŃДлŃĐœŃĐ” 60 ŃĐ”ĐșŃĐœĐŽ ĐČŃĐ”ĐŒĐ”ĐœĐž ĐșĐ»Đ°ĐŽĐŸĐČŃĐžĐșа ĐœĐ° ĐČŃĐżĐŸĐ»ĐœĐ”ĐœĐžĐ” пДŃĐ”ĐŒĐ”ŃĐ”ĐœĐžŃ ĐŽĐ»Ń ŃĐŸĐłĐŸ, ŃŃĐŸĐ±Ń ŃŃĐșĐŸĐœĐŸĐŒĐžŃŃ 500 ĐŽĐŒ3 ŃĐČĐŸĐ±ĐŸĐŽĐœĐŸĐłĐŸ ĐŸĐ±ŃĐ”ĐŒĐ°? ĐĐŸ ŃДзŃĐ»ŃŃаŃĐ°ĐŒ ĐŸĐżŃĐŸŃа ŃĐŸŃŃŃĐŽĐœĐžĐșĐŸĐČ ŃĐșлаЎа бŃла ŃĐŸŃŃаĐČĐ»Đ”ĐœĐ° ŃлДЎŃŃŃĐ°Ń ĐŽĐžĐ°ĐłŃĐ°ĐŒĐŒĐ°.

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.

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

Fig. 6. Alternativ (a): 2 behÄllare, total volym 400 dm3, total tid 150 sek.

Fig. 6. Alternativ (b): 2 behÄllare, total volym 600 dm3, total tid 190 sek.

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.
, och denna konstant mÄste endast lÀggas till nÀr antalet behÄllare minskar. LÄt oss pÄminna om att
â detta Ă€r en variabel som Ă€r lika med 1 nĂ€r behĂ„llaren
Àr vald, och 0 nÀr behÄllaren
inte valt. LÄt oss konkretisera,
â ett antal containrar i den ursprungliga lösningen och
â ett antal containrar i den nya lösningen. SĂ„ hĂ€r kommer den nya ojĂ€mlikheten att se ut:

Genom att omvandla ojÀmlikheten ovan fÄr vi

UtifrÄn detta har vi formeln för berÀkning av den totala kostnaden
för ett visst alternativ av problemlösningen:

Men nu uppstÄr frÄgan: vilket vÀrde bör en sÄdan konstant ha
? ĐŃĐ”ĐČĐžĐŽĐœĐŸ, ŃŃĐŸ ДД Đ·ĐœĐ°ŃĐ”ĐœĐžĐ” ĐŽĐŸĐ»Đ¶ĐœĐŸ бŃŃŃ ĐŽĐŸŃŃаŃĐŸŃĐœĐŸ Đ±ĐŸĐ»ŃŃĐžĐŒ, ĐŽĐ»Ń ŃĐŸĐłĐŸ, ŃŃĐŸĐ±Ń ĐČŃДгЎа ĐČŃĐżĐŸĐ»ĐœŃĐ»ĐŸŃŃ ĐżĐ”ŃĐČĐŸĐ” ŃŃĐ”Đ±ĐŸĐČĐ°ĐœĐžĐ” Đș ŃĐ”ŃĐ”ĐœĐžŃĐŒ заЎаŃĐž. ĐĐŸĐ¶ĐœĐŸ ĐșĐŸĐœĐ”ŃĐœĐŸ ĐČĐ·ŃŃŃ Đ·ĐœĐ°ŃĐ”ĐœĐžĐ” ĐșĐŸĐœŃŃĐ°ĐœŃŃ ŃаĐČĐœĐŸĐ” 103 ОлО 106, ĐœĐŸ Ń
ĐŸŃĐ”Đ»ĐŸŃŃ Đ±Ń ĐžĐ·Đ±Đ”Đ¶Đ°ŃŃ ŃаĐșĐžŃ
«magic numbers». ĐŃлО бŃĐŽĐ”ĐŒ ŃаŃŃĐŒĐ°ŃŃĐžĐČаŃŃ ŃпДŃĐžŃĐžĐșŃ ĐČŃĐżĐŸĐ»ĐœĐ”ĐœĐžŃ ŃĐșлаЎŃĐșĐžŃ
ĐŸĐżĐ”ŃаŃĐžĐč, ĐŒŃ ĐŒĐŸĐ¶Đ”ĐŒ ĐČŃŃĐžŃлОŃŃ ĐœĐ”ŃĐșĐŸĐ»ŃĐșĐŸ ĐČĐżĐŸĐ»ĐœĐ” ĐŸĐ±ĐŸŃĐœĐŸĐČĐ°ĐœĐœŃŃ
ŃĐžŃĐ»ĐŸĐČŃŃ
ĐŸŃĐ”ĐœĐŸĐș ĐČДлОŃĐžĐœŃ ŃаĐșĐŸĐč ĐșĐŸĐœŃŃĐ°ĐœŃŃ.
LÄt
â det maximala avstĂ„ndet mellan lagrets celler i en zon ABC, vilket i vĂ„rt fall Ă€r 100 m. LĂ„t
â 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
. 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
, 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
och
i ojÀmlikheten ovan, fÄr vi:

vilket innebÀr

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

Andra metoden för att berÀkna storleken
. LÄt oss övervÀga situationen dÀr det finns
cell-donatorer frÄn vilka varor planeras flyttas till container 1. LÄt oss beteckna
â avstĂ„ndet frĂ„n cell-donatorn
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
cell-donatorer. För enkelhetens skull antar vi att volymen av varorna som flyttas frÄn cell-donatorerna till containrarna Àr lika med
. Vi behöver hitta ett sÄdant vÀrde för konstanten
, dÀr placeringen av alla rester frÄn
cellerna i container 2 alltid skulle vara mer lönsam Àn placeringen av dem i olika containrar:

Genom att omvandla ojÀmlikheten fÄr vi

För att "stÀrka" vÀrdet av storleken
, antar vi att
= 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

Vi tar det största vÀrdet som berÀknats för varje alternativ, detta kommer att vara vÀrdet av storleken
för de angivna lagret parametrarna. Nu för fullstÀndighets skull skriver vi formeln för berÀkning av de totala kostnaderna
för en viss tillÄten lösning.
:

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

med varulager,
, dit det Àr tÀnkt att placera rester frÄn andra celler,
för lagerarbetares flyttningar av varuvolymen frÄn donatorcell
till container-cellen
;
, motsvarande volymen av container-cellen
, multiplicerad med en viss faktor av frihetsvolymernas besparing (vÀrdet pÄ faktorn Àr alltid > 1) (se avsnittet förberedelse av indata).
pÄ
Àr dyrare Àn flytt frÄn
pÄ
, 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;
pÄ
Àr lÀttare Àn att flytta 10 st. av samma vara, Àven om avstÄndet som ska passeras Àr detsamma.
