{"id":37108,"date":"2019-10-31T22:15:47","date_gmt":"2019-10-31T19:15:47","guid":{"rendered":"https:\/\/prohoster.info\/blog\/diskretnaya-matematika-dlya-wms-algoritm-szhatiya-tovarov-v-yachejkah-chast-1\/"},"modified":"2019-10-31T22:15:47","modified_gmt":"2019-10-31T19:15:47","slug":"diskretnaya-matematika-dlya-wms-algoritm-szhatiya-tovarov-v-yachejkah-chast-1","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sv\/blog\/news\/diskretnaya-matematika-dlya-wms-algoritm-szhatiya-tovarov-v-yachejkah-chast-1","title":{"rendered":"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/89e9927c86cd36ee5b4ab37b5c0753c9.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nI artikeln ber\u00e4ttar vi hur vi l\u00f6ste problemet med bristen p\u00e5 lediga lagerutrymmen och utvecklingen av en algoritm f\u00f6r diskret optimering f\u00f6r att hantera s\u00e5dana uppgifter. Vi kommer att diskutera hur vi \"byggde\" den matematiska modellen f\u00f6r optimeringsproblemet och vilka ov\u00e4ntade sv\u00e5righeter vi st\u00f6tte p\u00e5 vid bearbetningen av ing\u00e5ngsdata f\u00f6r algoritmen.<\/p>\n<p>Om du \u00e4r intresserad av matematikens till\u00e4mpningar inom aff\u00e4rer och inte \u00e4r r\u00e4dd f\u00f6r tuffa algebraiska transformationer p\u00e5 5:e klassniv\u00e5, s\u00e5 \u00e4r du varmt v\u00e4lkommen att l\u00e4sa vidare!<\/p>\n<p>Artikeln kommer att vara till nytta f\u00f6r dem som implementerar <i>WMS<\/i>-system, arbetar inom lager- eller produktionslogistik, samt f\u00f6r programmerare som \u00e4r intresserade av matematikens till\u00e4mpningar inom aff\u00e4rer och optimering av processer p\u00e5 f\u00f6retaget.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h4>Inledande del<\/h4>\n<p>\nDenna publikation forts\u00e4tter serien av artiklar d\u00e4r vi delar med oss av v\u00e5r framg\u00e5ngsrika erfarenhet av att implementera optimeringsalgoritmer i lagerprocesser. <\/p>\n<p>I <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/463289\/\">den f\u00f6reg\u00e5ende artikeln<\/a><\/noindex> specifikationen av lagret d\u00e4r vi implementerade <i>WMS<\/i>-systemet, samt varf\u00f6r vi beh\u00f6vde l\u00f6sa problemet med klustring av partier av restlagret vid implementeringen av <i>WMS<\/i>-systemet, och hur vi gick tillv\u00e4ga.<\/p>\n<p>N\u00e4r vi var klara med att skriva artikeln om optimeringsalgoritmer blev den v\u00e4ldigt l\u00e5ng, s\u00e5 vi beslutade att dela upp det insamlade materialet i tv\u00e5 delar:<\/p>\n<ul>\n<li>I den f\u00f6rsta delen (denna artikel) kommer vi att ber\u00e4tta hur vi \"byggde\" den matematiska modellen f\u00f6r problemet och vilka stora sv\u00e5righeter vi ov\u00e4ntat st\u00f6tte p\u00e5 vid bearbetning och transformation av ing\u00e5ngsdata f\u00f6r algoritmen.<\/li>\n<li>I den andra delen kommer vi att g\u00e5 in p\u00e5 detaljer kring implementeringen av algoritmen p\u00e5 spr\u00e5ket <i>C++<\/i>, genomf\u00f6ra en ber\u00e4kningsm\u00e4ssig experiment och sammanfatta den erfarenhet vi f\u00e5tt under implementeringen av s\u00e5dana \"intelligenta teknologier\" i kundens aff\u00e4rsprocesser.<\/li>\n<\/ul>\n<p>\nHur man l\u00e4ser artikeln. Om du har l\u00e4st den f\u00f6reg\u00e5ende artikeln kan du g\u00e5 direkt till kapitlet \"\u00d6versikt \u00f6ver befintliga l\u00f6sningar\", om inte, s\u00e5 finns beskrivningen av det problem som l\u00f6ses i spoilern nedan.<\/p>\n<p><b class=\"spoiler_title\">Beskrivning av det problem som l\u00f6ses p\u00e5 kundens lager<\/b><\/p>\n<h4>Flaskhals i processerna<\/h4>\n<p>\n\u00c5r 2018 genomf\u00f6rde vi ett projekt f\u00f6r att implementera <i>WMS<\/i>-systemet p\u00e5 lagret \"Handelshus \"LD\" i staden Tjeljabinsk. Vi implementerade produkten \"1C-logistik: Lagerhantering 3\" p\u00e5 20 arbetsplatser: operat\u00f6rer <i>WMS<\/i>, lagerarbetare, truckf\u00f6rare. Lagret \u00e4r medelstort, cirka 4 000 m2, med 5000 lagerplatser och 4500 SKU:er. I lagret lagras kulventiler av eget tillverkning i olika storlekar fr\u00e5n 1 kg till 400 kg. Lagerbest\u00e5nden lagras i partier eftersom det finns behov av att plocka varor enligt FIFO.<\/p>\n<p>Under projekteringen av automatiseringsscheman f\u00f6r lagerprocesser st\u00f6tte vi p\u00e5 det befintliga problemet med suboptimalt lagerh\u00e5llande. Specifikationen f\u00f6r lagring och stapling av ventiler \u00e4r s\u00e5dan att det i en enskild lagringsplats endast kan finnas produkter fr\u00e5n en partinomenklatur (se fig. 1). Produkterna anl\u00e4nder till lagret dagligen och varje ankomst \u00e4r ett separat parti. Totalt skapas under en m\u00e5nads lagring 30 separata partier, d\u00e4r varje m\u00e5ste lagras p\u00e5 en separat plats. Varor plockas ofta inte i hela pallar utan styckvis, och resultatet blir att i plockzonen ser m\u00e5nga lagringsplatser ut s\u00e5 h\u00e4r: i en plats med volym \u00f6ver 1 m3 ligger flera ventiler som tar upp mindre \u00e4n 5-10 % av platsens volym. <\/p>\n<p><img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/a7c03f2302c3be02c00c670453353f16.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fig. 1. Foto av flera enheter i en lagringsplats<\/i><\/p>\n<p>Det \u00e4r en uppenbar suboptimal anv\u00e4ndning av lagringskapaciteten. F\u00f6r att illustrera omfattningen av problemet kan jag ge siffror: i genomsnitt finns det mellan 100 och 300 s\u00e5dana lagringsplatser med volym \u00f6ver 1 m3 och \"minimal\" kvarst\u00e5ende lager i olika perioder av lagrets drift. Eftersom lagret \u00e4r relativt litet blir det under s\u00e4songerna av h\u00f6g belastning en \"flaskhals\" som kraftigt bromsar lagrets mottagnings- och avlastningsprocesser.<\/p>\n<h4>Id\u00e9n f\u00f6r att l\u00f6sa problemet<\/h4>\n<p>\nId\u00e9n uppstod: att partierna med rester som har de n\u00e4rmaste 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\u00e4cker f\u00f6r att rymma hela m\u00e4ngden rester. Ett exempel p\u00e5 s\u00e5dan \"komprimering\" visas i figur 2.<\/p>\n<p><img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/792f114a7afa6272a6d152a784650681.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fig. 2. Schema f\u00f6r komprimering av rester i lagringsplatser<\/i><\/p>\n<p>Detta m\u00f6jligg\u00f6r en betydande minskning av det lagringsutrymme som kommer att anv\u00e4ndas f\u00f6r de nya varor som placeras. I situationer d\u00e4r lagringskapaciteten \u00e4r \u00f6verbelastad \u00e4r denna \u00e5tg\u00e4rd ytterst n\u00f6dv\u00e4ndig, annars kan det helt enkelt saknas utrymme f\u00f6r placering av nya varor, vilket leder till stopp i lagringsprocesserna f\u00f6r placering och p\u00e5fyllning och, som f\u00f6ljd, stopp i mottagning och leverans. Innan WMS-systemet inf\u00f6rdes utf\u00f6rdes en s\u00e5dan operation manuellt, vilket var ineffektivt, eftersom processen f\u00f6r att s\u00f6ka efter l\u00e4mpliga lagrade varor i hyllorna tog ganska l\u00e5ng tid. Nu, med inf\u00f6randet av WMS-systemet, har vi beslutat att automatisera, p\u00e5skynda och g\u00f6ra processen intelligent.<\/p>\n<p>Processen f\u00f6r att l\u00f6sa en s\u00e5dan uppgift delas upp i tv\u00e5 steg: <\/p>\n<ul>\n<li>I det f\u00f6rsta steget hittar vi n\u00e4rliggande grupper av partier f\u00f6r komprimering (denna uppgift \u00e4gnas \u00e5t <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/463289\/\">f\u00f6reg\u00e5ende artikel<\/a><\/noindex>);<\/li>\n<li>I det andra steget ber\u00e4knar vi f\u00f6r varje grupp partier den mest kompakta placeringen av lagrade varor i hyllorna. <\/li>\n<\/ul>\n<p>\nI denna artikel kommer vi att fokusera p\u00e5 det andra steget i algoritmen.<\/p>\n<h4>\u00d6versikt \u00f6ver befintliga l\u00f6sningar<\/h4>\n<p>\nInnan vi \u00f6verg\u00e5r till beskrivningen av de algoritmer som vi har utvecklat, b\u00f6r vi g\u00f6ra en kort \u00f6versikt \u00f6ver de system som redan finns p\u00e5 marknaden <i>WMS<\/i>, d\u00e4r s\u00e5dan funktionalitet f\u00f6r optimal komprimering har implementerats.<\/p>\n<p>F\u00f6rst och fr\u00e4mst b\u00f6r vi n\u00e4mna produkten \"1C: F\u00f6retag 8. WMS Logistik. Lagerhantering 4\", som tillh\u00f6r och distribueras av f\u00f6retaget 1C och tillh\u00f6r fj\u00e4rde generationens <i>WMS<\/i>-system som utvecklats av f\u00f6retaget AXELOT. I detta system anges kompressionsfunktionalitet som syftar till att f\u00f6rena spridda lagrade varor i en gemensam hylla. Det b\u00f6r n\u00e4mnas att kompressionsfunktionaliteten i ett s\u00e5dant system \u00e4ven inkluderar andra m\u00f6jligheter, s\u00e5som korrigering av placering av varor i hyllor enligt deras ABC-klasser, men vi kommer inte att g\u00e5 in p\u00e5 dessa. <\/p>\n<p>Om man analyserar koden f\u00f6r systemet \"1C: F\u00f6retag 8. WMS Logistik. Lagerhantering 4\" (som i denna del av funktionen \u00e4r \u00f6ppen), kan man dra f\u00f6ljande slutsats. Algoritmen f\u00f6r komprimering av lagret till\u00e4mpar en ganska primitiv linj\u00e4r logik och det kan inte talas om n\u00e5gon \"optimal\" komprimering. Sj\u00e4lvklart f\u00f6ruts\u00e4tter den inte klustring av partier. N\u00e5gra kunder som har implementerat ett s\u00e5dant system har klagat p\u00e5 resultaten av planeringen av komprimeringen. Till exempel uppst\u00e5r det ofta i praktiken att 100 stycken av lagret fr\u00e5n en cell planeras att flyttas till en annan cell, d\u00e4r det finns 1 styck produkt, \u00e4ven om det optimalt sett ur tidsperspektiv skulle vara b\u00e4ttre att g\u00f6ra tv\u00e4rtom.<\/p>\n<p>Funktionen f\u00f6r komprimering av lagret i celler har ocks\u00e5 deklarerats i m\u00e5nga utl\u00e4ndska <i>WMS<\/i>-system, men tyv\u00e4rr har vi varken n\u00e5gra verkliga \u00e5sikter om effektiviteten av algoritmerna (detta \u00e4r f\u00f6retagshemlighet) eller n\u00e5gon uppfattning om djupet av deras logik (propriet\u00e4r mjukvara med st\u00e4ngd kod), d\u00e4rf\u00f6r kan vi inte d\u00f6ma.<\/p>\n<h4>S\u00f6kning efter en matematisk modell av uppgiften<\/h4>\n<p>\nF\u00f6r att kunna designa kvalitetsalgoritmer f\u00f6r att l\u00f6sa uppgiften, \u00e4r det n\u00f6dv\u00e4ndigt att f\u00f6rst klart formulera denna uppgift matematiskt, vilket vi kommer att g\u00f6ra.<\/p>\n<p>Det finns m\u00e5nga celler <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/bfff1fb95dd0c633ada02b9398778eab.jpeg\" style=\"display:block;margin: 0 auto;\" \/>, d\u00e4r lagret av vissa produkter finns. Dessa celler kommer vi att kalla donor-celler. L\u00e5t oss ange <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/50ef693482cd4cb27410b30b0bc107b1.jpeg\" style=\"display:block;margin: 0 auto;\" \/> volymen av produkten som finns i cellen <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/dc7faf1656fb12c8e467fe3a5b8977fa.jpeg\" style=\"display:block;margin: 0 auto;\" \/>$.<\/p>\n<p>Det \u00e4r viktigt att p\u00e5peka att endast en produkt av ett parti, eller flera partier som tidigare har sammanf\u00f6rts till ett kluster (l\u00e4s <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/463289\/\">den f\u00f6reg\u00e5ende artikeln<\/a><\/noindex>), kan delta i komprimeringsproceduren, vilket beror p\u00e5 specifikationen f\u00f6r lagring och placering av produkter. F\u00f6r olika produkter eller olika kluster av partier m\u00e5ste en separat komprimeringsprocedur startas.<\/p>\n<p>Det finns m\u00e5nga celler <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/b9aafca691626263d8ecc2faed8dfcfe.jpeg\" style=\"display:block;margin: 0 auto;\" \/>, d\u00e4r rester fr\u00e5n donor-celler potentiellt kan placeras. Dessa celler kommer vi forts\u00e4ttningsvis att kalla beh\u00e5llarceller. Dessa kan vara b\u00e5de lediga celler i lagret och donor-celler fr\u00e5n m\u00e4ngden <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/25731bc72091e2284e76c434d2abdcfd.jpeg\" style=\"display:block;margin: 0 auto;\" \/>. M\u00e4ngden \u00e4r alltid ett delm\u00e4ngd av <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/d407f97344131a3056b1eab1d3dd7dcd.jpeg\" style=\"display:block;margin: 0 auto;\" \/> F\u00f6r varje cell <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/581806d446f3d8c91927045249698e71.jpeg\" style=\"display:block;margin: 0 auto;\" \/>.<\/p>\n<p>fr\u00e5n m\u00e4ngden <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/b084d5852a1e4f00d2498640534d66e9.jpeg\" style=\"display:block;margin: 0 auto;\" \/> \u00e4r begr\u00e4nsningar p\u00e5 kapacitet angivna <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/236efb40a21865f78240c8e14303cc2e.jpeg\" style=\"display:block;margin: 0 auto;\" \/> det finns begr\u00e4nsningar f\u00f6r kapacitet <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/fe253cfe5f2aa39bc8e064674fb206f8.jpeg\" style=\"display:block;margin: 0 auto;\" \/>, m\u00e4tt i dm3. En dm3 representerar en kub med sidor p\u00e5 10 cm. Produkterna som lagras p\u00e5 lagret \u00e4r tillr\u00e4ckligt stora, s\u00e5 i detta fall \u00e4r denna diskretisering helt tillr\u00e4cklig. <\/p>\n<p>En matris \u00f6ver de kortaste avst\u00e5nden har angivits <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/48c133b0affa17f6a2367a02241d5f17.jpeg\" style=\"display:block;margin: 0 auto;\" \/> i meter mellan varje par av celler <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/8fd860e331a8e42dd258857bdf580c05.jpeg\" style=\"display:block;margin: 0 auto;\" \/>, d\u00e4r <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/feb9a48c6e9e4ccd8e9fa1db5565e96e.jpeg\" style=\"display:block;margin: 0 auto;\" \/> och <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/d9a48a8a22ea984d0769373c5620c99a.jpeg\" style=\"display:block;margin: 0 auto;\" \/> tillh\u00f6r m\u00e4ngder <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/e2dd20fda8a8b0b5ea2173c14f04fe00.jpeg\" style=\"display:block;margin: 0 auto;\" \/> och <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/0dabafdb55ac6b8495f6d5f657d6c01d.jpeg\" style=\"display:block;margin: 0 auto;\" \/> respektive. <\/p>\n<p>L\u00e5t oss beteckna <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/2994defad9bb0a44741f31a85273abf2.jpeg\" style=\"display:block;margin: 0 auto;\" \/> \u00bbkostnaderna\u00ab f\u00f6r att flytta varor fr\u00e5n en cell<img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/a2e54425ec786d3a88290dda47f4b9cb.jpeg\" style=\"display:block;margin: 0 auto;\" \/> till en cell <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/bf4a9f1a1f396a9b7b6244cf8c77ecc8.jpeg\" style=\"display:block;margin: 0 auto;\" \/>. L\u00e5t oss beteckna <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/6f4c10386fc638f6ca37e0ccdcf4ccb4.jpeg\" style=\"display:block;margin: 0 auto;\" \/> \u00bbkostnaderna\u00ab f\u00f6r att v\u00e4lja en beh\u00e5llare <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/613d619ea5951551427f0cd45c7f79bf.jpeg\" style=\"display:block;margin: 0 auto;\" \/> f\u00f6r att flytta rester fr\u00e5n andra celler. Hur exakt och i vilka enheter v\u00e4rdena kommer att ber\u00e4knas <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/22130f203fde6271e33cba0db14d6a80.jpeg\" style=\"display:block;margin: 0 auto;\" \/> och <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/d75c50be3ee4f8e02a9523f2d2109f0d.jpeg\" style=\"display:block;margin: 0 auto;\" \/> kommer att diskuteras senare (se avsnittet f\u00f6rberedelse av ing\u00e5ngsdata), just nu r\u00e4cker det att s\u00e4ga att s\u00e5dana storheter kommer att vara direkt proportionella mot v\u00e4rdena <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/5e4e80f122ac1fe43f94de2726c0d3b7.jpeg\" style=\"display:block;margin: 0 auto;\" \/> och <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/1b6a9d41ba4ad68d5a5fbae883b80596.jpeg\" style=\"display:block;margin: 0 auto;\" \/> respektive.<\/p>\n<p>L\u00e5t oss beteckna med <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/1ebfe4179740aff474a78d11a004aaa7.jpeg\" style=\"display:block;margin: 0 auto;\" \/> en variabel som f\u00e5r v\u00e4rdet 1 om resterna fr\u00e5n cellen <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/48f9789788c38746ba4ac0c947e0a4ca.jpeg\" style=\"display:block;margin: 0 auto;\" \/> flyttas till beh\u00e5llaren <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/58ce0b4c9bfb946c00bffdc0c50a05d6.jpeg\" style=\"display:block;margin: 0 auto;\" \/>, och 0 annars. L\u00e5t oss beteckna med <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/642d5627193c55922be5274826b75cb4.jpeg\" style=\"display:block;margin: 0 auto;\" \/> en variabel som f\u00e5r v\u00e4rdet 1 om beh\u00e5llaren <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/6939c9f4daf2ecd531d9c2518c03401d.jpeg\" style=\"display:block;margin: 0 auto;\" \/> inneh\u00e5ller rester av varor, och 0 annars.<\/p>\n<p><b>Problemet formuleras s\u00e5<\/b>: det \u00e4r n\u00f6dv\u00e4ndigt att hitta en s\u00e5dan upps\u00e4ttning beh\u00e5llare <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/d6065db66f210083181dabb39f0e9e16.jpeg\" style=\"display:block;margin: 0 auto;\" \/> och p\u00e5 s\u00e5 s\u00e4tt \u00bbf\u00e4sta\u00ab donorcellorna till beh\u00e5llarcellerna, s\u00e5 att funktionen minimeras<\/p>\n<p><img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/68d7f0271f9761fff2c762e0fe6f5207.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>med begr\u00e4nsningar<\/p>\n<p><img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/d57b8752aa4a8140e239dfa7fdc9ec36.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Sammanfattningsvis, i processen att ber\u00e4kna l\u00f6sningen till problemet str\u00e4var vi efter att: <\/p>\n<ul>\n<li>f\u00f6r det f\u00f6rsta, spara lagringskapacitet; <\/li>\n<li>f\u00f6r det andra, spara tid f\u00f6r lagerarbetarna. <\/li>\n<\/ul>\n<p>\nDen sista begr\u00e4nsningen inneb\u00e4r att vi inte kan flytta varor till en beh\u00e5llare som vi inte har valt, och d\u00e4rf\u00f6r inte har \u00bb\u00e5dragit oss kostnader\u00ab f\u00f6r dess val. Denna begr\u00e4nsning inneb\u00e4r ocks\u00e5 att volymen av de flyttade varorna fr\u00e5n cellerna till beh\u00e5llaren inte f\u00e5r \u00f6verskrida beh\u00e5llarens kapacitet. Med l\u00f6sningen till problemet menar vi m\u00e4ngden beh\u00e5llare <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/db0f987f2d388ad1394d21404e183c93.jpeg\" style=\"display:block;margin: 0 auto;\" \/> och s\u00e4tt att f\u00e4sta donorcellorna till beh\u00e5llarna.<\/p>\n<p>Denna formulering av optimeringsproblemet \u00e4r inte ny och har studerats av m\u00e5nga matematiker sedan b\u00f6rjan av 1980-talet. I utl\u00e4ndsk litteratur finns det 2 optimeringsproblem med en l\u00e4mplig matematisk modell: <noindex><a rel=\"nofollow\" href=\"http:\/\/www.math.nsc.ru\/AP\/benchmarks\/CFLP\/cflp.html\">Single-Source Capacitated Facility Location Problem<\/a><\/noindex> och <noindex><a rel=\"nofollow\" href=\"https:\/\/waset.org\/publications\/10002290\/a-survey-of-discrete-facility-location-problems\">Multi-Source Capacitated Facility Location Problem<\/a><\/noindex> (om skillnaderna mellan uppgifterna ska vi prata mer senare). Det \u00e4r v\u00e4rt att n\u00e4mna att i matematisk litteratur formuleras dessa tv\u00e5 typer av optimeringsproblem i termer av placering av f\u00f6retag p\u00e5 en plats, d\u00e4rav namnet \"Facility Location\". St\u00f6rsta delen av detta \u00e4r en hyllning till traditionen, eftersom behovet av att l\u00f6sa s\u00e5dana kombinationella problem f\u00f6rst uppstod inom logistikomr\u00e5det, fr\u00e4mst inom den milit\u00e4r-industriella sektorn p\u00e5 50-talet av f\u00f6rra seklet. I termer av f\u00f6retagsplacering formuleras s\u00e5dana problem s\u00e5 h\u00e4r: <\/p>\n<ul>\n<li>Det finns ett \u00e4ndligt antal st\u00e4der d\u00e4r det potentiellt \u00e4r m\u00f6jligt att placera produktionsanl\u00e4ggningar (d\u00e4refter st\u00e4der-producenter). F\u00f6r varje stad-producent anges kostnaderna f\u00f6r att \u00f6ppna ett f\u00f6retag d\u00e4r samt begr\u00e4nsningen f\u00f6r produktionskapaciteten hos det f\u00f6retag som \u00f6ppnas d\u00e4r.<\/li>\n<li>Det finns ett \u00e4ndligt antal st\u00e4der d\u00e4r kunderna faktiskt befinner sig (d\u00e4refter st\u00e4der-kunder). F\u00f6r varje s\u00e5dan stad-kund anges efterfr\u00e5gevolymen p\u00e5 produkten. F\u00f6r enkelhetens skull ska vi anta att produkten som produceras av f\u00f6retagen och konsumeras av kunderna \u00e4r densamma.<\/li>\n<li>F\u00f6r varje par stad-producent och stad-kund anges beloppet p\u00e5 transportkostnaderna f\u00f6r att leverera den n\u00f6dv\u00e4ndiga volymen av produkten fr\u00e5n producenten till kunden.<\/li>\n<\/ul>\n<p>\nDet kr\u00e4vs att ta reda p\u00e5 i vilka st\u00e4der som f\u00f6retag ska \u00f6ppnas och hur kunder ska kopplas till dessa f\u00f6retag, s\u00e5 att:<\/p>\n<ul>\n<li>De totala kostnaderna f\u00f6r att \u00f6ppna f\u00f6retagen och transportkostnaderna \u00e4r minimerade;<\/li>\n<li>Efterfr\u00e5gevolymen fr\u00e5n kunderna kopplade till n\u00e5got \u00f6ppet f\u00f6retag inte \u00f6verstiger produktionskapaciteten hos det f\u00f6retaget.<\/li>\n<\/ul>\n<p>\nNu \u00e4r det v\u00e4rt att n\u00e4mna den enda skillnaden mellan dessa tv\u00e5 klassiska problem:<\/p>\n<ul>\n<li>Single-Source Capacitated Facility Location Problem \u2013 kunden f\u00e5r leverans endast fr\u00e5n ett \u00f6ppet f\u00f6retag;<\/li>\n<li>Multi-Source Capacitated Facility Location Problem \u2013 kunden kan f\u00e5 leverans fr\u00e5n flera \u00f6ppna f\u00f6retag samtidigt.<\/li>\n<\/ul>\n<p>\nDenna skillnad mellan de tv\u00e5 problemen verkar vid f\u00f6rsta \u00f6gonkastet vara obetydlig, men i sj\u00e4lva verket leder den till helt olika kombinationella strukturer f\u00f6r dessa problem och d\u00e4rmed till helt olika algoritmer f\u00f6r deras l\u00f6sning. Skillnaden mellan problemen demonstreras i bilden nedan.<\/p>\n<p><img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/77962906c7de2fced174d4a2b7785cc2.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fig. 3. a) Multi-Source Capacitated Facility Location Problem<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/0242437e488a1aea0f00ce9ede02886d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fig. 3. b) Single-Source Capacitated Facility Location Problem<\/i><\/p>\n<p>B\u00e5da problemen <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/b16678811fceca32d18c94e71cfaa603.jpeg\" style=\"display:block;margin: 0 auto;\" \/>-sv\u00e5ra, det finns ingen exakt algoritm som skulle kunna l\u00f6sa ett s\u00e5dant problem p\u00e5 polynomisk tid beroende p\u00e5 storleken av indata. Enklare uttryckt kommer alla exakta algoritmer f\u00f6r att l\u00f6sa problemet att arbeta med exponetiell tid, \u00e4ven om de m\u00f6jligen kan vara snabbare \u00e4n en bruteforce-l\u00f6sning. Eftersom uppgiften <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/09f42b4b905d9bdc3f00f21098f84ad7.jpeg\" style=\"display:block;margin: 0 auto;\" \/>-\u00e4r sv\u00e5r, s\u00e5 kommer vi att betrakta endast approximativa heuristik, det vill s\u00e4ga algoritmer som kommer att r\u00e4kna ut stabila l\u00f6sningar mycket n\u00e4ra de optimala och som kommer att fungera tillr\u00e4ckligt snabbt. Om det finns intresse f\u00f6r s\u00e5dana problem kan man h\u00e4r hitta en bra \u00f6versikt p\u00e5 ryska.<\/p>\n<p>Om vi \u00f6vers\u00e4tter till terminologin av v\u00e5r uppgift med optimal komprimering av varor i celler, blir f\u00f6ljande:<\/p>\n<ul>\n<li>klientst\u00e4der \u2013 celler-donatorer <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/e6db70dbb85d1c7249f4c30e97e2942e.jpeg\" style=\"display:block;margin: 0 auto;\" \/> med varulager, <\/li>\n<li>produktionsst\u00e4der \u2013 celler-container <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/5ef31fe0483d2bc9a0c18b5dc25e9867.jpeg\" style=\"display:block;margin: 0 auto;\" \/>, dit det \u00e4r t\u00e4nkt att placera rester fr\u00e5n andra celler,<\/li>\n<li>transportkostnader \u2013 tidskostnader <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/afac567e9057a46de6e0f3d29df9315a.jpeg\" style=\"display:block;margin: 0 auto;\" \/> f\u00f6r lagerarbetares flyttningar av varuvolymen fr\u00e5n donatorcell <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/829df82255e40cb99024d7c8dd408d41.jpeg\" style=\"display:block;margin: 0 auto;\" \/> till container-cellen <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/b87c9d9260adb26ce623dbe80b4f22c2.jpeg\" style=\"display:block;margin: 0 auto;\" \/>; <\/li>\n<li>kostnader f\u00f6r att starta verksamheten \u2013 kostnader f\u00f6r att v\u00e4lja en container <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/db4d21fc2067a23b5af5bb01c412323a.jpeg\" style=\"display:block;margin: 0 auto;\" \/>, motsvarande volymen av container-cellen <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/b631a01a65f1ffd3348cbcaeeab11f0d.jpeg\" style=\"display:block;margin: 0 auto;\" \/>, multiplicerad med en viss faktor av frihetsvolymernas besparing (v\u00e4rdet p\u00e5 faktorn \u00e4r alltid &gt; 1) (se avsnittet f\u00f6rberedelse av indata).<\/li>\n<\/ul>\n<p>\nEfter att analogin med de k\u00e4nda klassiska leveransproblemen har gjorts, \u00e4r det viktigt att svara p\u00e5 en viktig fr\u00e5ga som p\u00e5verkar valet av algoritmarkitektur: \u00e4r flyttning av rester fr\u00e5n donatorcellen endast m\u00f6jligt till en enda container (Single-Source), eller \u00e4r det m\u00f6jligt att flytta rester till flera container-celler (Multi-Source)?<\/p>\n<p>Det b\u00f6r noteras att b\u00e5da uppl\u00e4ggen i praktiken \u00e4r f\u00f6rekommande. Vi kommer att lista alla 'f\u00f6r' och 'emot' f\u00f6r varje s\u00e5dan uppl\u00e4gg nedan:<\/p>\n<table>\n<tr>\n<th>Variant av uppgiften<\/th>\n<th>F\u00f6rdelar med varianten<\/th>\n<th>Nackdelar med varianten<\/th>\n<\/tr>\n<tr>\n<td>Single-Source<\/td>\n<td>Flyttningsoperationerna f\u00f6r varor, ber\u00e4knade utifr\u00e5n detta uppgiftsscenario:<\/p>\n<ul>\n<li>kr\u00e4ver mindre kontroll fr\u00e5n lagerarbetarens sida (tog ALLT fr\u00e5n en cell, la ALLT i en annan container-cell), vilket eliminerar riskerna: fel vid omr\u00e4kning av varornas antal vid operationerna \"L\u00e4gg i cell\"; fel vid inmatning av det omr\u00e4knade antalet i TSD;<\/li>\n<li>Ingen tids\u00e5tg\u00e5ng kr\u00e4vs f\u00f6r att r\u00e4kna antalet varor vid utf\u00f6rande av operationer som \"L\u00e4gg i fack\" och f\u00f6r att ange dem i TSD.<\/li>\n<\/ul>\n<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>Multi-Source<\/td>\n<td>Kompresseringar som ber\u00e4knas enligt det h\u00e4r alternativet \u00e4r vanligtvis mer kompakta med 10-15% j\u00e4mf\u00f6rt med kompressiorer som ber\u00e4knas enligt alternativet \"Single-Source\". Men vi b\u00f6r ocks\u00e5 notera att ju f\u00e4rre restposter som finns i donorfacken, desto mindre blir denna skillnad i kompaktitet.<\/td>\n<td>Flyttningsoperationerna f\u00f6r varor, ber\u00e4knade utifr\u00e5n detta uppgiftsscenario:<\/p>\n<ul>\n<li>kr\u00e4ver st\u00f6rre kontroll fr\u00e5n lagerarbetarens sida (det \u00e4r n\u00f6dv\u00e4ndigt att r\u00e4kna antalet varor som flyttas till varje av de planerade containerfacken), vilket eliminerar risken f\u00f6r fel vid r\u00e4kning av varor och inmatning av data i TSD vid utf\u00f6rande av operationer \"L\u00e4gg i fack\".<\/li>\n<li>Tid kr\u00e4vs f\u00f6r att r\u00e4kna antalet varor vid utf\u00f6rande av operationer \"L\u00e4gg i fack\".<\/li>\n<li>Tid kr\u00e4vs f\u00f6r \"indirekta kostnader\" (stoppa, g\u00e5 till pallen, skanna QR-koden f\u00f6r containerfacket) vid utf\u00f6rande av operationer \"L\u00e4gg i fack\".<\/li>\n<li>Ibland kan algoritmen \"splittra\" antalet n\u00e4stan fulla pallar mellan ett stort antal containerfack d\u00e4r det redan finns l\u00e4mpliga varor, vilket ur kundens perspektiv \u00e4r oacceptabelt.<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<\/table>\n<p><i>Tabell 1. F\u00f6r- och nackdelar med alternativen Single-Source och Multi-Source.<\/i><\/p>\n<p>Eftersom antalet f\u00f6rdelar med alternativet Single-Source \u00e4r st\u00f6rre, samt med h\u00e4nsyn till det faktum att ju f\u00e4rre restposter som finns i donorfacken, desto mindre skillnad blir det i graden av kompaktitet av komprimeringen ber\u00e4knad enligt b\u00e5da alternativ, har vi valt att g\u00e5 med alternativet Single-Source.<\/p>\n<p>Det b\u00f6r n\u00e4mnas att alternativet Multi-Source ocks\u00e5 har sin plats. Det finns ett stort antal effektiva algoritmer f\u00f6r att l\u00f6sa det, de flesta av vilka reduceras till att l\u00f6sa en serie transportproblem. Det finns ocks\u00e5 inte bara effektiva algoritmer utan \u00e4ven eleganta, till exempel,<noindex><a rel=\"nofollow\" href=\"http:\/\/www.mathnet.ru\/php\/archive.phtml?wshow=paper&amp;jrnid=da&amp;paperid=791&amp;option_lang=rus\"> h\u00e4r.<\/a><\/noindex><\/p>\n<h4>F\u00f6rberedelse av indata<\/h4>\n<p>\nInnan vi p\u00e5b\u00f6rjar analys och utveckling av algoritmen f\u00f6r att l\u00f6sa uppgiften, m\u00e5ste vi best\u00e4mma 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 \u00e4r trivialt \u2013 s\u00e5dana storheter kommer att m\u00e4tas i m\u00b3, men n\u00e4r det g\u00e4ller kostnader f\u00f6r anv\u00e4ndningen av containerfacket och kostnadsmatrisen f\u00f6r flyttning \u00e4r det inte s\u00e5 enkelt!<\/p>\n<p>L\u00e5t oss f\u00f6rst se p\u00e5 ber\u00e4kningen. <b>kostnader f\u00f6r flytt av varor<\/b> fr\u00e5n cell-donor till cell-beh\u00e5llare. F\u00f6rst och fr\u00e4mst m\u00e5ste vi best\u00e4mma i vilka m\u00e5ttenheter vi kommer att ber\u00e4kna kostnaderna f\u00f6r flytten. De tv\u00e5 mest uppenbara alternativen \u00e4r meter och sekunder. Det \u00e4r meningsl\u00f6st att r\u00e4kna kostnader i \"rena\" meter. L\u00e5t oss visa detta med ett exempel. Anta att cellen <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/990a5fae8988ddf41395483263de2bcc.jpeg\" style=\"display:block;margin: 0 auto;\" \/> ligger p\u00e5 f\u00f6rsta v\u00e5ningen, cellen <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/9d17b98e807444f431d01f2e77fc96f7.jpeg\" style=\"display:block;margin: 0 auto;\" \/> \u00e4r placerad 30 meter bort och ligger p\u00e5 andra v\u00e5ningen:<\/p>\n<ul>\n<li>Flytt fr\u00e5n <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/3188fd9853d5cda2834a5083539ac11d.jpeg\" style=\"display:block;margin: 0 auto;\" \/> p\u00e5 <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/e212a0be19ea687b1017c3aacec3df19.jpeg\" style=\"display:block;margin: 0 auto;\" \/> \u00e4r dyrare \u00e4n flytt fr\u00e5n <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/d65e60dec37fb3b83c83ca1c566f1ee9.jpeg\" style=\"display:block;margin: 0 auto;\" \/> p\u00e5 <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/4168198a4c90bdd3dd4b7f0c904b06e0.jpeg\" style=\"display:block;margin: 0 auto;\" \/>, eftersom det \u00e4r l\u00e4ttare att s\u00e4nka ner fr\u00e5n andra v\u00e5ningen (1,5-2 meter fr\u00e5n golvet) \u00e4n att lyfta upp till andra, \u00e4ven om det str\u00e4cka som ska tillryggal\u00e4ggas \u00e4r densamma;<\/li>\n<li>Att flytta 1 st. vara fr\u00e5n cellen <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/039864ccd0a2bd14a99a83494f056fa3.jpeg\" style=\"display:block;margin: 0 auto;\" \/> p\u00e5 <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/9f9bc7a256119b110f47760b145e174b.jpeg\" style=\"display:block;margin: 0 auto;\" \/> \u00e4r l\u00e4ttare \u00e4n att flytta 10 st. av samma vara, \u00e4ven om avst\u00e5ndet som ska passeras \u00e4r detsamma.<\/li>\n<\/ul>\n<p>\nKostnaderna f\u00f6r flytt \u00e4r b\u00e4ttre att beakta i sekunder, eftersom detta g\u00f6r att vi kan ta h\u00e4nsyn till b\u00e5de skillnaden i v\u00e5ningar och skillnaden i flyttad m\u00e4ngd av varor. F\u00f6r att beakta kostnaderna f\u00f6r flytt i sekunder m\u00e5ste vi bryta ner flyttoperationen i element\u00e4ra best\u00e5ndsdelar och g\u00f6ra tidm\u00e4tningar f\u00f6r att utf\u00f6ra varje element\u00e4r komponent.<\/p>\n<p>Anta att fr\u00e5n cellen <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/538c4304e37f340a5a5a8e47e0ee2865.jpeg\" style=\"display:block;margin: 0 auto;\" \/> flyttas <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/6c7e32728f4771726f8ef9b2d78111d6.jpeg\" style=\"display:block;margin: 0 auto;\" \/> st. av varan till beh\u00e5llaren <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/fc2ad051b500eae5884404f4b9419841.jpeg\" style=\"display:block;margin: 0 auto;\" \/>. L\u00e5t oss kalla <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/6733192a31618a03e51e8e3133cb96ee.jpeg\" style=\"display:block;margin: 0 auto;\" \/> den genomsnittliga hastigheten f\u00f6r en arbetare p\u00e5 lagret, m\u00e4tt i m\/s. L\u00e5t oss kalla <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/97f7e9c65c2196fa586f957618d1c8a2.jpeg\" style=\"display:block;margin: 0 auto;\" \/> och <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/bbe48d987f180e2f9ccec6e090e6f942.jpeg\" style=\"display:block;margin: 0 auto;\" \/> de genomsnittliga hastigheterna f\u00f6r att utf\u00f6ra operationer att ta och l\u00e4gga ner f\u00f6r en varav volymen \u00e4r 4 dm3 (genomsnittlig volym som en anst\u00e4lld p\u00e5 lagret tar i ett enda grepp n\u00e4r operationerna utf\u00f6rs). L\u00e5t oss kalla <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/267d74648f49d5a2d063b1377c6d2fe6.jpeg\" style=\"display:block;margin: 0 auto;\" \/> och <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/fefdd606d5a81ba4e2ce57b107dfe1e6.jpeg\" style=\"display:block;margin: 0 auto;\" \/> h\u00f6jden p\u00e5 cellerna fr\u00e5n vilka operationerna tas och l\u00e4ggs ner. Till exempel, den genomsnittliga h\u00f6jden p\u00e5 f\u00f6rsta v\u00e5ningen (golvet) \u00e4r 1 m, andra v\u00e5ningen 2 m och s\u00e5 vidare. D\u00e5 \u00e4r formeln f\u00f6r att ber\u00e4kna den totala tiden f\u00f6r att utf\u00f6ra flyttoperationen <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/a48ae3c2e9dc8f2c3108cb2be1f96c40.jpeg\" style=\"display:block;margin: 0 auto;\" \/> f\u00f6ljande:<\/p>\n<p><img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/55afb96b1141bb5656351bdaeba31ae4.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Tabell 2 visar statistiken f\u00f6r tiden f\u00f6r att utf\u00f6ra varje element\u00e4r operation, insamlad av lagermedarbetare med h\u00e4nsyn till det specifika lagrade godset.<\/p>\n<table>\n<tr>\n<th>Beteckning av operation<\/th>\n<th>Beteckning<\/th>\n<th>Genomsnittligt v\u00e4rde<\/th>\n<\/tr>\n<tr>\n<td>Genomsnittlig hastighet f\u00f6r en arbetare p\u00e5 lagret<\/td>\n<td><img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/dadbfb13d2b84b95ab2c5d653a21668b.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/td>\n<td>1,5 m\/s<\/td>\n<\/tr>\n<tr>\n<td>Genomsnittlig hastighet f\u00f6r att utf\u00f6ra en operativ handling att l\u00e4gga (f\u00f6r volymen av varan 4 dm3)<\/td>\n<td><img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/aa619b43a70a7cf646ad35d5c8883329.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/td>\n<td>2,4 sek<\/td>\n<\/tr>\n<\/table>\n<p><i>Tabell 2. Genomsnittlig tid f\u00f6r att utf\u00f6ra lageroperationer<\/i><\/p>\n<p>Vi har best\u00e4mt oss f\u00f6r s\u00e4ttet att ber\u00e4kna kostnader f\u00f6r flytt. Nu m\u00e5ste vi ta reda p\u00e5 hur man ber\u00e4knar <b>kostnaderna f\u00f6r valet av cell-beh\u00e5llare<\/b>H\u00e4r \u00e4r allt mycket, mycket mer komplicerat \u00e4n kostnaderna f\u00f6r f\u00f6rflyttning, eftersom: <\/p>\n<ul>\n<li>f\u00f6r det f\u00f6rsta m\u00e5ste kostnaderna st\u00e5 i direkt f\u00f6rh\u00e5llande till volymen p\u00e5 cellen \u2013 samma volym av rester, som flyttas fr\u00e5n donorcell, b\u00f6r b\u00e4st placeras i en beh\u00e5llare med mindre volym \u00e4n i en stor container, f\u00f6rutsatt att s\u00e5dant volym helt rymms i b\u00e5da beh\u00e5llarna. Genom att minimera de totala kostnaderna f\u00f6r valet av beh\u00e5llare str\u00e4var vi efter att spara \"bristf\u00e4lliga\" lediga lagringsutrymmen inom plockningsomr\u00e5det f\u00f6r att genomf\u00f6ra efterf\u00f6ljande placering av varor i cellerna. I figur 4 visas alternativ f\u00f6r flyttning av rester i stora och sm\u00e5 beh\u00e5llare samt konsekvenserna av s\u00e5dana flyttningsalternativ vid genomf\u00f6randet av efterf\u00f6ljande lageroperationer.<\/li>\n<li>f\u00f6r det andra, eftersom vi i l\u00f6sningen av det ursprungliga problemet m\u00e5ste minimera just de totala kostnaderna, vilket \u00e4r summan av b\u00e5de flyttkostnader och kostnader f\u00f6r valet av beh\u00e5llare, s\u00e5 m\u00e5ste volymerna p\u00e5 cellerna i kubikmeter p\u00e5 n\u00e5got s\u00e4tt kopplas till sekunder, vilket inte \u00e4r trivialt.<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/2c906f9e80b32fcb111fcba7000ea2ba.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fig. 4. Alternativ f\u00f6r flyttning av rester till beh\u00e5llare med olika kapacitet.<\/i><\/p>\n<p>I figur 4 visas den r\u00f6da f\u00e4rgen f\u00f6r volymen av rester som redan inte f\u00e5r plats i beh\u00e5llaren p\u00e5 det andra steget av placeringen av efterf\u00f6ljande varor. <\/p>\n<p>F\u00f6r att koppla kubikmeter kostnader f\u00f6r valet av beh\u00e5llare med sekunder f\u00f6r flyttkostnader kommer f\u00f6ljande krav p\u00e5 de ber\u00e4knade l\u00f6sningarna av uppgiften att vara till hj\u00e4lp:<\/p>\n<ul>\n<li>Det \u00e4r n\u00f6dv\u00e4ndigt att resterna fr\u00e5n donorcell flyttas till beh\u00e5llarcellen i alla fall, om detta minskar det totala antalet beh\u00e5llarceller d\u00e4r varan finns.<\/li>\n<li>Det \u00e4r n\u00f6dv\u00e4ndigt att uppr\u00e4tth\u00e5lla balans mellan volymerna av beh\u00e5llarna och kostnaderna f\u00f6r flyttning: till exempel, om vinsten i volym i den nya l\u00f6sningen j\u00e4mf\u00f6rt med den f\u00f6reg\u00e5ende l\u00f6sningen \u00e4r stor, men f\u00f6rlusten av tidskostnader \u00e4r liten, s\u00e5 b\u00f6r det nya alternativet v\u00e4ljas.<\/li>\n<\/ul>\n<p>\nL\u00e5t oss b\u00f6rja med det senaste kravet. F\u00f6r att specificera det flertydiga ordet \u201ebalans\u201c har vi genomf\u00f6rt en unders\u00f6kning bland lageranst\u00e4llda f\u00f6r att ta reda p\u00e5 f\u00f6ljande. L\u00e5t oss s\u00e4ga att det finns en beh\u00e5llarecell av volym <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/2b831b12448ccaee33c528ac622b7ee3.jpeg\" style=\"display:block;margin: 0 auto;\" \/>, d\u00e4r flyttning av varor fr\u00e5n donorcell \u00e4r planerad och den totala tiden f\u00f6r denna flyttning \u00e4r lika med <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/8050f4b02464164d334048bda86b3923.jpeg\" style=\"display:block;margin: 0 auto;\" \/>. L\u00e5t oss \u00f6verv\u00e4ga n\u00e5gra alternativa s\u00e4tt att placera samma m\u00e4ngd varor fr\u00e5n samma donorboxar i andra beh\u00e5llare, d\u00e4r varje placering har sina egna bed\u00f6mningar. <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/76f11cd5ab85f9092c8f458d01ac347b.jpeg\" style=\"display:block;margin: 0 auto;\" \/>, d\u00e4r <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/9e735d8a9c4cff3c69fd926eac8c85aa.jpeg\" style=\"display:block;margin: 0 auto;\" \/>&lt;<img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/d963e193a263a1505467c19e874f0aab.jpeg\" style=\"display:block;margin: 0 auto;\" \/> och <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/ff5d990cf5a1752d7bb45da9fd58cd7a.jpeg\" style=\"display:block;margin: 0 auto;\" \/>, d\u00e4r <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/485f34b3e720011c38740712cdb8edd9.jpeg\" style=\"display:block;margin: 0 auto;\" \/>&gt;<img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/c66b20d93fd1791e9f186f707b1517bb.jpeg\" style=\"display:block;margin: 0 auto;\" \/>. <\/p>\n<p>Fr\u00e5gan st\u00e4lls: vilken minimal vinst i volym <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/86861ad2236d827efdc683d759d4c120.jpeg\" style=\"display:block;margin: 0 auto;\" \/> \u00e4r acceptabel, givet ett f\u00f6rlustv\u00e4rde i tid. <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/3d49171042fd83244c054dfd84e5c6bb.jpeg\" style=\"display:block;margin: 0 auto;\" \/>? \u041f\u043e\u044f\u0441\u043d\u0438\u043c \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435. \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043e\u0441\u0442\u0430\u0442\u043a\u0438 \u043f\u043e\u043b\u0430\u0433\u0430\u043b\u043e\u0441\u044c \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0442\u044c \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u043e\u0431\u044a\u0435\u043c\u0430 1000 \u0434\u043c3 (1 \u043c3) \u0438 \u0432\u0440\u0435\u043c\u044f \u043d\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u043e 70 \u0441\u0435\u043a\u0443\u043d\u0434. \u0415\u0441\u0442\u044c \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u043e\u0441\u0442\u0430\u0442\u043a\u043e\u0432 \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u043e\u0431\u044a\u0435\u043c\u0430 500 \u0434\u043c3 \u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c 130 \u0441\u0435\u043a\u0443\u043d\u0434. \u0412\u043e\u043f\u0440\u043e\u0441: \u0433\u043e\u0442\u043e\u0432\u044b \u043b\u0438 \u043c\u044b \u0442\u0440\u0430\u0442\u0438\u0442\u044c \u0435\u0449\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 60 \u0441\u0435\u043a\u0443\u043d\u0434 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043a\u043b\u0430\u0434\u043e\u0432\u0449\u0438\u043a\u0430 \u043d\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442\u044c 500 \u0434\u043c3 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043c\u0430? \u041f\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c \u043e\u043f\u0440\u043e\u0441\u0430 \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u043e\u0432 \u0441\u043a\u043b\u0430\u0434\u0430 \u0431\u044b\u043b\u0430 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0430.<\/p>\n<p><img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/283289c63fe1232e95b73d1dffdaa030.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fig. 5. Diagrammet visar beroendet av den minimi acceptabla volymbesparingen fr\u00e5n \u00f6kningen av tidsdifferensen f\u00f6r operationens genomf\u00f6rande.<\/i><\/p>\n<p>Det vill s\u00e4ga, om de extra tidskostnaderna \u00e4r 40 sekunder, s\u00e5 \u00e4r vi beredda att investera denna tid endast om vinsten i volym \u00e4r minst 500 dm3. Trots att det finns en liten icke-linj\u00e4ritet i beroendet, kommer vi f\u00f6r enkelhetens skull anta att sambandet mellan m\u00e4ngderna \u00e4r linj\u00e4rt och kan beskrivas av en oj\u00e4mlikhet.<\/p>\n<p><img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/666802648033d918a1119e58963feffe.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Nedan i bilden kommer vi att \u00f6verv\u00e4ga f\u00f6ljande s\u00e4tt att placera varor i beh\u00e5llare.<\/p>\n<p><img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/a1cb3a5bce4c369f63b3ebeebb738911.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fig. 6. Alternativ (a): 2 beh\u00e5llare, total volym 400 dm3, total tid 150 sek.<\/i><br \/>\n<img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/a13f35b0e2a188e9a8cbf27bcfbf0292.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fig. 6. Alternativ (b): 2 beh\u00e5llare, total volym 600 dm3, total tid 190 sek.<\/i><br \/>\n<img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/35699c8bd00546c9828dbe50d4b53c46.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fig. 6. Alternativ (c): 1 beh\u00e5llare, total volym 400 dm3, total tid 200 sek.<\/i><\/p>\n<p>Alternativ (a) f\u00f6r val av beh\u00e5llare \u00e4r mer f\u00f6rdelaktigt \u00e4n det ursprungliga alternativet, eftersom oj\u00e4mlikheten uppfylls: (800-400)\/10 &gt;= 150-120 vilket ger 40 &gt;= 30. Alternativ (b) \u00e4r mindre f\u00f6rdelaktigt \u00e4n det ursprungliga alternativet, eftersom oj\u00e4mlikheten inte uppfylls: (800-600)\/10 &gt;= 190-150 vilket ger 20 &gt;= 40. Men alternativ (c) f\u00f6ljer inte denna logik! L\u00e5t oss titta n\u00e4rmare p\u00e5 detta alternativ. \u00c5 ena sidan g\u00e4ller oj\u00e4mlikheten (800-400)\/10 &gt;= 200-120, allts\u00e5 att oj\u00e4mlikheten 40 &gt;= 80 inte uppfylls, vilket indikerar att volymvinsten inte motiverar den stora tidsf\u00f6rlusten. <\/p>\n<p>Men \u00e5 andra sidan, i detta alternativ (c) minskar vi inte bara den totala upptagna volymen, utan vi minskar ocks\u00e5 antalet upptagna boxar, vilket \u00e4r det f\u00f6rsta av tv\u00e5 viktiga krav p\u00e5 de ber\u00e4knade l\u00f6sningarna till de uppgifter som n\u00e4mndes tidigare. Uppenbarligen, f\u00f6r att detta krav ska b\u00f6rja uppfyllas m\u00e5ste vi l\u00e4gga till en viss positiv konstant i v\u00e4nsterledet p\u00e5 oj\u00e4mlikheten. <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/61d6b2cb21474a2f4512d6a130a15a0a.jpeg\" style=\"display:block;margin: 0 auto;\" \/>, och denna konstant m\u00e5ste endast l\u00e4ggas till n\u00e4r antalet beh\u00e5llare minskar. L\u00e5t oss p\u00e5minna om att <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/d80d33679896035041d0ca9a78e8177a.jpeg\" style=\"display:block;margin: 0 auto;\" \/> \u2014 detta \u00e4r en variabel som \u00e4r lika med 1 n\u00e4r beh\u00e5llaren <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/a83cd6273e544b63099939e6845740fb.jpeg\" style=\"display:block;margin: 0 auto;\" \/> \u00e4r vald, och 0 n\u00e4r beh\u00e5llaren <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/bc94d9e952782e630125a6e8919ba5ad.jpeg\" style=\"display:block;margin: 0 auto;\" \/> inte valt. L\u00e5t oss konkretisera, <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/1e3fb5d7013e60f67c56a56899630852.jpeg\" style=\"display:block;margin: 0 auto;\" \/> \u2013 ett antal containrar i den ursprungliga l\u00f6sningen och <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/26ac9732af37e865cea1bb10a343175c.jpeg\" style=\"display:block;margin: 0 auto;\" \/> \u2013 ett antal containrar i den nya l\u00f6sningen. S\u00e5 h\u00e4r kommer den nya oj\u00e4mlikheten att se ut:<\/p>\n<p><img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/1237914e5fdafcc6013203e2624009d0.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Genom att omvandla oj\u00e4mlikheten ovan f\u00e5r vi <\/p>\n<p><img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/80b039f9ef44301c3b624ada42c28db8.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Utifr\u00e5n detta har vi formeln f\u00f6r ber\u00e4kning av den totala kostnaden <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/cb5bce584fee0156b23adbab83f66b33.jpeg\" style=\"display:block;margin: 0 auto;\" \/> f\u00f6r ett visst alternativ av probleml\u00f6sningen:<\/p>\n<p><img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/34f382d40368a980674914916c65b4ec.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><b>Men nu uppst\u00e5r fr\u00e5gan<\/b>: vilket v\u00e4rde b\u00f6r en s\u00e5dan konstant ha <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/e4754f88bcddfba85b3c785512bee697.jpeg\" style=\"display:block;margin: 0 auto;\" \/>? \u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0438\u043c, \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b\u043e\u0441\u044c \u043f\u0435\u0440\u0432\u043e\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 \u043a \u0440\u0435\u0448\u0435\u043d\u0438\u044f\u043c \u0437\u0430\u0434\u0430\u0447\u0438. \u041c\u043e\u0436\u043d\u043e \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0432\u0437\u044f\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b \u0440\u0430\u0432\u043d\u043e\u0435 103 \u0438\u043b\u0438 106, \u043d\u043e \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0442\u0430\u043a\u0438\u0445 \u00abmagic numbers\u00bb. \u0415\u0441\u043b\u0438 \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0443 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0441\u043a\u043b\u0430\u0434\u0441\u043a\u0438\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u043f\u043e\u043b\u043d\u0435 \u043e\u0431\u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0447\u0438\u0441\u043b\u043e\u0432\u044b\u0445 \u043e\u0446\u0435\u043d\u043e\u043a \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u044b \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b.<\/p>\n<p>L\u00e5t <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/50deefe99bf1d5f948a49591904a8bfe.jpeg\" style=\"display:block;margin: 0 auto;\" \/> \u2013 det maximala avst\u00e5ndet mellan lagrets celler i en zon ABC, vilket i v\u00e5rt fall \u00e4r 100 m. L\u00e5t <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/466892dd75279d08b4835a42e62444d4.jpeg\" style=\"display:block;margin: 0 auto;\" \/> \u2013 det maximala volymen f\u00f6r en cell-container i lagret, vilket i v\u00e5rt fall \u00e4r 1000 dm3.<\/p>\n<p><b>F\u00f6rsta metoden f\u00f6r att ber\u00e4kna storleken<\/b> <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/29b94b534da709020cbef206cb0d7dac.jpeg\" style=\"display:block;margin: 0 auto;\" \/>. L\u00e5t oss \u00f6verv\u00e4ga situationen d\u00e4r det finns 2 containrar p\u00e5 den f\u00f6rsta niv\u00e5n, d\u00e4r varor redan fysiskt finns, det vill s\u00e4ga de sj\u00e4lva \u00e4r cell-donatorer, och kostnaderna f\u00f6r att flytta varorna till dessa celler \u00e4r uppenbarligen lika med 0. Vi beh\u00f6ver hitta ett v\u00e4rde f\u00f6r konstanten <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/5cf81db57dd2a18cc0ec29bb7ca3da62.jpeg\" style=\"display:block;margin: 0 auto;\" \/>, d\u00e4r det alltid skulle vara f\u00f6rdelaktigt att flytta rester fr\u00e5n container 1 till container 2. Genom att s\u00e4tta in v\u00e4rdena <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/20bbd09e167edc3eb1ed49d8078ecf19.jpeg\" style=\"display:block;margin: 0 auto;\" \/> och <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/605017af48e7b3ca4a323642db4227cd.jpeg\" style=\"display:block;margin: 0 auto;\" \/> i oj\u00e4mlikheten ovan, f\u00e5r vi:<\/p>\n<p><img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/2794955b8f9f3d64ffe4e2b449547555.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>vilket inneb\u00e4r<\/p>\n<p><img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/292a6e80c646c7eed80e888c8805990c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Genom att s\u00e4tta in v\u00e4rdena f\u00f6r den genomsnittliga tiden f\u00f6r att utf\u00f6ra element\u00e4ra operationer i formeln ovan f\u00e5r vi<\/p>\n<p><img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/1f56bf1f98c1a3bbd65a4cea99da7efb.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><b>Andra metoden f\u00f6r att ber\u00e4kna storleken<\/b> <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/78e3dff7183b15136d9e03f4a5724479.jpeg\" style=\"display:block;margin: 0 auto;\" \/>. L\u00e5t oss \u00f6verv\u00e4ga situationen d\u00e4r det finns <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/02daff1eff70a2963ab8eaa067f15584.jpeg\" style=\"display:block;margin: 0 auto;\" \/> cell-donatorer fr\u00e5n vilka varor planeras flyttas till container 1. L\u00e5t oss beteckna <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/df20c3f27815f2060aae20d260210893.jpeg\" style=\"display:block;margin: 0 auto;\" \/> \u2013 avst\u00e5ndet fr\u00e5n cell-donatorn <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/a29ace66656cf1680c9e00258a9ff597.jpeg\" style=\"display:block;margin: 0 auto;\" \/> till container 1. Det finns ocks\u00e5 en container 2, d\u00e4r varor redan finns, och vars volym till\u00e5ter att rymma rester fr\u00e5n alla <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/e25f0828e7d794f8d804528395f6dc7e.jpeg\" style=\"display:block;margin: 0 auto;\" \/> cell-donatorer. F\u00f6r enkelhetens skull antar vi att volymen av varorna som flyttas fr\u00e5n cell-donatorerna till containrarna \u00e4r lika med <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/35c3392a83fc3b7eef928ddb5e93961a.jpeg\" style=\"display:block;margin: 0 auto;\" \/>. Vi beh\u00f6ver hitta ett s\u00e5dant v\u00e4rde f\u00f6r konstanten <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/c9bc10aade46cc3c63628c0ba100b364.jpeg\" style=\"display:block;margin: 0 auto;\" \/>, d\u00e4r placeringen av alla rester fr\u00e5n <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/e610d9981da2857a541f028a217f2306.jpeg\" style=\"display:block;margin: 0 auto;\" \/> cellerna i container 2 alltid skulle vara mer l\u00f6nsam \u00e4n placeringen av dem i olika containrar:<\/p>\n<p><img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/27f4f99a920799fba9725f30a04c8ebc.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Genom att omvandla oj\u00e4mlikheten f\u00e5r vi<\/p>\n<p><img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/56abddb4fc3e54eeb1fe466c68e5d8d7.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>F\u00f6r att \"st\u00e4rka\" v\u00e4rdet av storleken <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/d77359ea816f9d45a8910cb26649f717.jpeg\" style=\"display:block;margin: 0 auto;\" \/>, antar vi att <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/9edf13fb4e34b5da26957e451300046f.jpeg\" style=\"display:block;margin: 0 auto;\" \/> = 0. Det genomsnittliga antalet celler som vanligtvis deltar i proceduren med att komprimera rester i lagret \u00e4r 10. Genom att s\u00e4tta in de k\u00e4nda v\u00e4rdena f\u00f6r storheterna har vi f\u00f6ljande v\u00e4rde f\u00f6r konstanten<\/p>\n<p><img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/40323791fd8cd2be3f29a2becf78e175.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Vi tar det st\u00f6rsta v\u00e4rdet som ber\u00e4knats f\u00f6r varje alternativ, detta kommer att vara v\u00e4rdet av storleken <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/fd018460792c79b8a7953c06b839711d.jpeg\" style=\"display:block;margin: 0 auto;\" \/> f\u00f6r de angivna lagret parametrarna. Nu f\u00f6r fullst\u00e4ndighets skull skriver vi formeln f\u00f6r ber\u00e4kning av de totala kostnaderna <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/d4cb2c81bcc788380f1f0c1123b0eeda.jpeg\" style=\"display:block;margin: 0 auto;\" \/> f\u00f6r en viss till\u00e5ten l\u00f6sning. <img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/052e710199e9417aaea94b16dbed47d3.jpeg\" style=\"display:block;margin: 0 auto;\" \/>:<\/p>\n<p><img decoding=\"async\" alt=\"Diskret matematik f\u00f6r WMS: algoritm f\u00f6r att komprimera varor i fack (del 1)\" src=\"\/wp-content\/uploads\/2019\/08\/8dd672c7b91639fe1872ef50dca7a220.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Nu, efter all <b>titanisk anstr\u00e4ngning<\/b> f\u00f6r att omvandla indata, kan vi s\u00e4ga att all indata har omvandlats till r\u00e4tt format och \u00e4r redo att anv\u00e4ndas i optimeringsalgoritmen.<\/p>\n<h4>Slutsats<\/h4>\n<p>\nSom praktiken visar, underskattas ofta arbetsinsatsen och betydelsen av f\u00f6rberedelse- och omvandlingsfasen f\u00f6r algoritmen. I denna artikel har vi s\u00e4rskilt \u00e4gnat mycket uppm\u00e4rksamhet \u00e5t denna fas f\u00f6r att visa att endast kvalitativt och genomt\u00e4nkt f\u00f6rberedda indata kan g\u00f6ra de av algoritmen ber\u00e4knade l\u00f6sningarna verkligt v\u00e4rdefulla f\u00f6r kunden. Ja, det har funnits m\u00e5nga slutsatser av formler, men vi varnade er redan innan katten \ud83d\ude42<\/p>\n<p>I n\u00e4sta artikel kommer vi \u00e4ntligen att n\u00e5 det som de tv\u00e5 f\u00f6reg\u00e5ende publikationerna handlade om \u2013 algoritmen f\u00f6r diskret optimering.<\/p>\n<p><i>Artikel f\u00f6rfattad av<br \/>\nRoman Shangin, programmerare vid projektavdelningen,<br \/>\nf\u00f6retaget F\u00f6rsta Bit, Chelyabinsk<\/i><br \/>\n<br \/>K\u00e4lla: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/463481\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0435\u043c, \u043a\u0430\u043a \u0440\u0435\u0448\u0430\u043b\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u043d\u0435\u0445\u0432\u0430\u0442\u043a\u0438 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0445 \u044f\u0447\u0435\u0435\u043a \u043d\u0430 \u0441\u043a\u043b\u0430\u0434\u0435 \u0438 \u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0442\u0430\u043a\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438. \u0420\u0430\u0441\u0441\u043a\u0430\u0436\u0435\u043c \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043c\u044b \u00ab\u0441\u0442\u0440\u043e\u0438\u043b\u0438\u00bb \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c \u0437\u0430\u0434\u0430\u0447\u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438, \u0438 \u043e \u0442\u043e\u043c \u0441 \u043a\u0430\u043a\u0438\u043c\u0438 \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u043c\u044b \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u043e \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438\u0441\u044c \u043f\u0440\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430. \u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0438 \u0432 \u0431\u0438\u0437\u043d\u0435\u0441\u0435 \u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":27819,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-37108","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sv\/blog\/news\/diskretnaya-matematika-dlya-wms-algoritm-szhatiya-tovarov-v-yachejkah-chast-1\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sv_SE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0414\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u0430\u044f \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0430 \u0434\u043b\u044f WMS: \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0441\u0436\u0430\u0442\u0438\u044f \u0442\u043e\u0432\u0430\u0440\u043e\u0432 \u0432 \u044f\u0447\u0435\u0439\u043a\u0430\u0445 (\u0447\u0430\u0441\u0442\u044c 1) | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sv\/blog\/news\/diskretnaya-matematika-dlya-wms-algoritm-szhatiya-tovarov-v-yachejkah-chast-1\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:15:47+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:15:47+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Diskret matematik f\u00f6r WMS: algoritm f\u00f6r komprimering av varor i celler (del 1) | ProHoster","description":"I artikeln diskuterar vi.","canonical_url":"https:\/\/prohoster.info\/sv\/blog\/news\/diskretnaya-matematika-dlya-wms-algoritm-szhatiya-tovarov-v-yachejkah-chast-1","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sv_SE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0414\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u0430\u044f \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0430 \u0434\u043b\u044f WMS: \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0441\u0436\u0430\u0442\u0438\u044f \u0442\u043e\u0432\u0430\u0440\u043e\u0432 \u0432 \u044f\u0447\u0435\u0439\u043a\u0430\u0445 (\u0447\u0430\u0441\u0442\u044c 1) | ProHoster","og:description":"\u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b.","og:url":"https:\/\/prohoster.info\/sv\/blog\/news\/diskretnaya-matematika-dlya-wms-algoritm-szhatiya-tovarov-v-yachejkah-chast-1","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:15:47+00:00","article:modified_time":"2019-10-31T19:15:47+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"37108","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-22 06:08:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:33:24","updated":"2026-01-22 06:08:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/37108","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=37108"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/37108\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media\/27819"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=37108"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=37108"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=37108"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}