Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču

Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču

В статье рассказывается как при внедрении WMS-sistema smo se soočili s potrebo po rešitvi nestandardnega problema združevanja v gruče in kakšne algoritme smo uporabili za njegovo rešitev. Povedali vam bomo, kako smo uporabili sistematičen, znanstveni pristop k reševanju problema, na kakšne težave smo naleteli in kaj smo se naučili.

Ta publikacija začenja serijo člankov, v katerih delimo naše uspešne izkušnje pri implementaciji optimizacijskih algoritmov v skladiščne procese. Namen serije člankov je seznaniti občinstvo z vrstami problemov optimizacije skladiščnega poslovanja, ki se pojavljajo v skoraj vsakem srednjem in velikem skladišču, ter povedati o naših izkušnjah pri reševanju takšnih problemov in pasteh, s katerimi se srečujemo na poti. . Članki bodo koristni za tiste, ki delajo v skladiščni logistični industriji, izvajajo WMS-sistemov, pa tudi programerjev, ki jih zanimajo aplikacije matematike v poslovanju in optimizacija procesov v podjetju.

Ozko grlo v procesih

V letu 2018 smo zaključili projekt za izvedbo WMS-sistemi v skladišču podjetja “Trading House “LD” v Čeljabinsku. Implementirali smo produkt »1C-Logistika: Warehouse Management 3« za 20 delovnih mest: operaterji WMS, skladiščniki, viličaristi. Povprečno skladišče je približno 4 tisoč m2, število celic 5000 in število SKU 4500. V skladišču hranimo krogelne ventile lastne proizvodnje različnih velikosti od 1 kg do 400 kg. Zaloga v skladišču je shranjena v serijah, saj je treba izbrati blago po FIFO.

Pri načrtovanju shem avtomatizacije skladiščnih procesov smo se soočili z obstoječim problemom neoptimalnega skladiščenja zalog. Specifičnost skladiščenja in odlaganja žerjavov je takšna, da lahko ena enota skladiščne celice vsebuje le artikle iz ene serije. Izdelki dnevno prihajajo v skladišče in vsak prihod je posebna serija. Skupno se kot rezultat 1 meseca delovanja skladišča ustvari 30 ločenih serij, kljub dejstvu, da bi morala biti vsaka shranjena v ločeni celici. Izdelki se pogosto izbirajo ne v celih paletah, ampak v kosih, zato je v območju izbire kosov v številnih celicah opažena naslednja slika: v celici s prostornino več kot 1 m3 je več kosov žerjavov, ki zavzemajo manj kot 5-10% volumna celice.

Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču Slika 1. Fotografija več kosov blaga v celici

Jasno je, da skladiščne zmogljivosti niso optimalno izkoriščene. Da bi si predstavljal obseg katastrofe, lahko navedem številke: v različnih obdobjih delovanja skladišča je v povprečju od 1 do 3 celic takšnih celic s prostornino več kot 100 m300 z "minimalnimi" bilancami. Ker je skladišče razmeroma majhno, postane ta dejavnik v času skladiščne zasedenosti »ozko grlo« in močno upočasni skladiščne procese.

Ideja za rešitev problema

Pojavila se je ideja: serije ostankov z najbližjimi datumi zmanjšati na eno samo serijo in takšne ostanke z enotno serijo strniti skupaj v eno celico ali v več, če v eni ni dovolj prostora za sprejem celotno količino ostankov.

Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču
Slika 2. Shema za stiskanje ostankov v celicah

To vam omogoča znatno zmanjšanje zasedenega skladiščnega prostora, ki se bo uporabljal za vlaganje novega blaga. V situaciji, ko so skladiščne zmogljivosti preobremenjene, je takšen ukrep izjemno potreben, sicer lahko preprosto ne bo dovolj prostega prostora za sprejem novega blaga, kar bo povzročilo zaustavitev procesov postavitve in dopolnjevanja skladišča. Prej pred izvedbo WMS-sistemi so to operacijo izvajali ročno, kar je bilo neučinkovito, saj je bil proces iskanja ustreznih ostankov v celicah precej dolg. Sedaj, z uvedbo sistema WMS, smo se odločili proces avtomatizirati, ga pohitriti in narediti inteligentnega.

Postopek reševanja takšnega problema je razdeljen na 2 stopnji:

  • na prvi stopnji najdemo skupine serij, ki so si blizu datuma za stiskanje;
  • na drugi stopnji pa za vsako skupino serij izračunamo najbolj kompaktno postavitev preostalega blaga v celice.

V tem članku se bomo osredotočili na prvo stopnjo algoritma, drugo stopnjo pa bomo pustili za naslednji članek.

Poiščite matematični model problema

Preden smo se usedli k pisanju kode in na novo izumili svoje kolo, smo se odločili, da bomo k temu problemu pristopili znanstveno, in sicer: formulirali ga matematično, reducirali na dobro znani problem diskretne optimizacije in za njegovo rešitev uporabili učinkovite obstoječe algoritme ali vzeli te obstoječe algoritme kot osnovo in jih prilagoditi specifiki praktičnega problema, ki ga rešujemo.

Ker iz poslovne postavitve problema jasno izhaja, da imamo opravka z množicami, bomo tak problem formulirali v smislu teorije množic.

Naj Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču – množica vseh serij ostanka določenega proizvoda v skladišču. Pustiti Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču – dana konstanta dni. Pustiti Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču – podmnožica serij, kjer razlika v datumih za vse pare serij v podmnožici ne presega konstante Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču. Najti moramo najmanjše število disjunktnih podmnožic Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču, tako da vse podmnožice Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču skupaj bi dali veliko Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču.

Z drugimi besedami, poiskati moramo skupine ali grozde podobnih strank, kjer je kriterij podobnosti določen s konstanto Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču. Ta naloga nas spomni na dobro znani problem združevanja v gruče. Pomembno je povedati, da se obravnavani problem razlikuje od problema grozdenja v tem, da ima naš problem strogo definiran pogoj za kriterij podobnosti elementov grozda, ki ga določa konstanta Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču, vendar v problemu združevanja v gruče tega pogoja ni. Izjavo o problemu združevanja v gruče in informacije o tem problemu lahko najdete tukaj.

Tako nam je uspelo formulirati problem in najti klasičen problem s podobno formulacijo. Zdaj je treba razmisliti o dobro znanih algoritmih za njegovo reševanje, da ne bi znova izumljali kolesa, ampak vzeli najboljše prakse in jih uporabili. Za rešitev problema združevanja v gruče smo upoštevali najbolj priljubljene algoritme, in sicer: Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču- pomeni Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču-sredstva, algoritem za identifikacijo povezanih komponent, algoritem minimalnega vpetega drevesa. Opis in analizo takih algoritmov lahko najdete tukaj.

Za rešitev našega problema, algoritmi združevanja v gruče Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču- pomeni in Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču-sredstva sploh niso uporabna, saj število grozdov ni nikoli vnaprej znano Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču in takšni algoritmi ne upoštevajo omejitve stalnih dni. Takšni algoritmi so bili sprva zavrženi iz obravnave.
Za rešitev našega problema sta sicer primernejša algoritem za identifikacijo povezanih komponent in algoritem minimalnega vpetega drevesa, ki pa ju, kot se je izkazalo, ne moremo uporabiti “čelno” pri rešenem problemu in dobiti dobro rešitev. Da bi to pojasnili, razmislimo o logiki delovanja takih algoritmov v povezavi z našo težavo.

Razmislite o grafu Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču, v kateri so vozlišča množica strank Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču, in rob med oglišči Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču и Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču ima težo, ki je enaka razliki dni med serijami Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču и Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču. V algoritmu za identifikacijo povezanih komponent je določen vhodni parameter Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladiščuČe Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču, in v grafu Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču odstranimo vse robove, za katere je teža večja Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču. Samo najbližji pari predmetov ostanejo povezani. Bistvo algoritma je izbrati takšno vrednost Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču, pri katerem graf »razpade« na več povezanih komponent, pri čemer bodo strani, ki pripadajo tem komponentam, zadostile našemu kriteriju podobnosti, ki ga določa konstanta Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču. Nastale komponente so grozdi.

Algoritem minimalnega vpetega drevesa najprej gradi na grafu Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču minimalno vpeto drevo, nato pa zaporedno odstranjuje robove z največjo težo, dokler graf ne »razpade« na več povezanih komponent, pri čemer bodo stranke, ki pripadajo tem komponentam, prav tako zadovoljile naš kriterij podobnosti. Nastale komponente bodo grozdi.

Pri uporabi takšnih algoritmov za reševanje obravnavanega problema lahko pride do situacije, kot je na sliki 3.

Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču
Slika 3. Uporaba algoritmov za združevanje v skupine pri problemu, ki ga rešujemo

Recimo, da je naša konstanta za razliko med paketnimi dnevi 20 dni. Graf Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču je bil upodobljen v prostorski obliki za lažjo vizualno percepcijo. Oba algoritma sta ustvarila rešitev s 3 gručami, ki jo je mogoče enostavno izboljšati s kombiniranjem serij, ki so med seboj postavljene v ločene gruče! Očitno je, da je treba takšne algoritme prilagoditi specifiki problema, ki ga rešujemo, njihova uporaba v čisti obliki za rešitev našega problema pa bo dala slabe rezultate.

Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču
Preden smo torej začeli pisati kodo za grafične algoritme, prirejene za našo nalogo, in na novo izumljati lastno kolo (v silhuetah katerega smo že lahko razbrali obrise kvadratnih koles), smo se ponovno odločili, da se takšnega problema lotimo znanstveno, in sicer: poskusite ga zmanjšati na drugo optimizacijo diskretnega problema, v upanju, da bo obstoječe algoritme za njegovo reševanje mogoče uporabiti brez sprememb.

Še eno iskanje podobnega klasičnega problema je bilo uspešno! Uspelo nam je najti diskretni optimizacijski problem, katerega formulacija 1 v 1 sovpada s formulacijo našega problema. Ta naloga se je izkazala za težava s pokrivanjem. Predstavimo formulacijo problema glede na našo specifiko.

Obstaja končna množica Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču и семейство Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču vseh svojih ločenih podmnožic strank, tako da je razlika v datumih za vse pare strank vsake podmnožice Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču od družine Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču ne presega konstante Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču. Покрытием называют семейство Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču najmanjše moči, katere elementi pripadajo Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču, tako da je unija množic Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču od družine Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču mora podati nabor vseh strank Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču.

Podrobno analizo tega problema lahko najdete tukaj и tukaj. Najdete lahko tudi druge možnosti za praktično uporabo problema pokrivanja in njegovih sprememb tukaj.

Algoritem za rešitev problema

Odločili smo se za matematični model problema, ki ga želimo rešiti. Zdaj pa poglejmo algoritem za njegovo rešitev. Podmnožice Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču od družine Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču zlahka najdete z naslednjim postopkom.

  1. Razporedite serije iz kompleta Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču v padajočem vrstnem redu njihovih datumov.
  2. Poiščite najmanjši in največji datum serije.
  3. Za vsak dan Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču od najnižjega datuma do največjega, poiščite vse serije, katerih datumi se razlikujejo od Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču ne več kot Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču (torej vrednost Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču Bolje je vzeti sodo število).

Logika postopka za oblikovanje družine množic Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču na Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču dni je prikazano na sliki 4.

Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču
Slika 4. Oblikovanje podmnožic strank

Ta postopek ni potreben za vse Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču preglejte vse druge serije in preverite razliko v njihovih datumih ali glede na trenutno vrednost Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču premikajte levo ali desno, dokler ne najdete serije, katere datum se razlikuje od Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču za več kot polovico vrednosti konstante. Vsi nadaljnji elementi, ko se premikamo tako v desno kot v levo, nam ne bodo zanimivi, saj se bo zanje razlika v dnevih samo povečala, saj so bili elementi v nizu prvotno urejeni. Ta pristop bo znatno prihranil čas, ko sta število strank in razpon njihovih datumov precej velika.

Задача о покрытии множества является Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču-трудной, а значит для её решения не существует быстрого (с временем работы равному полиному от входных данных) и точного алгоритма. Поэтому для решения задачи о покрытии множества был выбран быстрый жадный алгоритм, который конечно не является точным, но обладает следующими достоинствами:

  • Za manjše probleme (in to je prav naš primer) izračuna rešitve, ki so precej blizu optimumu. Z večanjem velikosti problema se kakovost rešitve slabša, a še vedno precej počasi;
  • Zelo enostaven za izvedbo;
  • Hiter, saj je njegov čas delovanja ocenjen Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču.

Pohlepni algoritem izbira nize na podlagi naslednjega pravila: na vsaki stopnji se izbere niz, ki pokriva največje število elementov, ki še niso zajeti. Podroben opis algoritma in njegove psevdokode lahko najdete tukaj.

Primerjava natančnosti takega požrešnega algoritma na testnih podatkih problema, ki se rešuje, z drugimi znanimi algoritmi, kot je verjetnostni pohlepni algoritem, algoritem kolonije mravelj itd., ni bila narejena. Najdemo lahko rezultate primerjave takih algoritmov na generiranih naključnih podatkih na delu.

Implementacija in implementacija algoritma

Ta algoritem je bil implementiran v jezik 1S in je bil vključen v zunanjo obdelavo, imenovano "Residue Compression", ki je bila povezana z WMS-sistem. Algoritma nismo implementirali v jezik C ++ in ga uporabite iz zunanje Native komponente, kar bi bilo bolj pravilno, saj je hitrost kode manjša C + + krat in v nekaterih primerih celo desetkrat hitreje od hitrosti podobne kode na 1S. Na jeziku 1S Algoritem je bil implementiran, da bi prihranil razvojni čas in olajšal odpravljanje napak v proizvodni bazi stranke. Rezultat algoritma je predstavljen na sliki 5.

Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču
Slika 5. Obdelava za "stiskanje" ostankov

Iz slike 5 je razvidno, da so v navedenem skladišču trenutna stanja blaga v skladiščnih celicah razdeljena na grozde, znotraj katerih se datumi serij blaga med seboj razlikujejo za največ 30 dni. Ker kupec proizvaja in skladišči v skladišču kovinske krogelne ventile, katerih rok trajanja se izračuna v letih, lahko takšno datumsko razliko zanemarimo. Upoštevajte, da se taka obdelava trenutno sistematično uporablja v proizvodnji in operaterjih WMS potrditi dobro kakovost združevanja strank.

Sklepi in nadaljevanje

Glavna izkušnja, ki smo jo pridobili pri reševanju takega praktičnega problema, je potrditev učinkovitosti uporabe paradigme: matematika. izjava o težavi Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču slavni mat. model Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču znani algoritem Diskretna matematika pri implementaciji sistema WMS: združevanje serij blaga v skladišču algoritem ob upoštevanju specifike problema. Diskretna optimizacija obstaja že več kot 300 let in v tem času je ljudem uspelo razmisliti o številnih problemih in nabrati veliko izkušenj pri njihovem reševanju. Najprej se je bolj priporočljivo obrniti na to izkušnjo in šele nato začeti na novo izumljati kolo.

В следующей статье мы продолжим рассказ о алгоритмах оптимизации и рассмотрим самое интересное и гораздо более сложное: алгоритм оптимального «сжатия» остатков в ячейках, который использует на входе данные, полученные от алгоритма кластеризации партий.

Pripravil članek
Roman Šangin, programer oddelka za projekte,
Prvo podjetje BIT, Čeljabinsk

Vir: www.habr.com

Dodaj komentar