Univerzita Karlova v Praze Matematicko-fyzikální fakulta
BAKALÁŘSKÁ PRÁCE
Jan Kolárik Optimalizace provozu ve velkoobchodním skladu Katedra aplikované matematiky
Vedoucí bakalářské práce: RNDr. Ondřej Pangrác, Ph.D. Studijní program: Informatika Studijní obor: Obecná informatika
Praha 2012
Děkuji RNDr. Ondřeji Pangrácovi, Ph.D. za vedení mé práce, cenné rady a čas, který mi při vypracovávání této práce věnoval.
Prohlašuji, že jsem tuto bakalářskou práci vypracoval samostatně a výhradně s použitím citovaných pramenů, literatury a dalších odborných zdrojů. Beru na vědomí, že se na moji práci vztahují práva a povinnosti vyplývající ze zákona č. 121/2000 Sb., autorského zákona v platném znění, zejména skutečnost, že Univerzita Karlova v Praze má právo na uzavření licenční smlouvy o užití této práce jako školního díla podle §60 odst. 1 autorského zákona.
V ........ dne ............
Podpis autora
Název práce: Optimalizace provozu ve velkoobchodním skladu Autor: Jan Kolárik Katedra: Katedra aplikované matematiky Vedoucí bakalářské práce: RNDr. Ondřej Pangrác, Ph.D. - Informatický ústav Univerzity Karlovy Abstrakt: Cílem práce je navrhnout pro daný velkoobchodní sklad strategii, která zefektivní jeho provoz. Jedná se především o zkrácení prostojů zákazníka a minimalizaci najetých vzdáleností manipulační techniky. Finální program umožňuje vygenerování struktury skladu podle zadaných parametrů a na tomto skladu poté vyhodnocení výsledků sledovaných veličin z nasimulovaných provozů založených na použitých optimalizačních technikách. Dále je k dispozici rovinný a prostorový model skladu, který přibližuje představu o dění ve skladu. Program může posloužit jako pomůcka při organizaci fungování velkoobchodního skladu a snížit náklady potřebné pro jeho provoz. Klíčová slova: velkoobchodní sklad, optimalizace, logistika
Title: Operation optimization in wholesale warehouses Author: Jan Kolárik Department: Department of Applied Mathematics Supervisor: RNDr. Ondřej Pangrác, Ph.D. - Computer Science Institute of Charles University Abstract: The goal of this work is to choose a strategy for given warehouse that will increase the efficiency of its operation. This is primarily about reducing customer downtime and minimizing the distance travelled by handling machines. The final program can generate warehouse structure according to given parameters and then evaluate monitored variables from simulated operations based on optimization techniques used. There is also a planar and spatial warehouse model available, which helps to visualize what is actually happening in the warehouse. The program could serve as an auxiliary tool in the organizing of wholesale warehouse operations and reduce costs required for its operation. Keywords: wholesale warehouse, optimization, heuristics, logistics
Obsah Úvod
3
1 Provoz skladu 1.1 Popis organizace . . . . . . . . . . 1.1.1 Struktura skladu . . . . . . 1.1.2 Systém nakládek a vykládek 1.1.3 Profil denního provozu . . . 1.2 Optimalizační metody . . . . . . . 1.2.1 Hladová metoda . . . . . . . 1.2.2 Prioritní metoda . . . . . . 1.2.3 Dynamická metoda . . . . .
. . . . . . . .
2 Srovnání statistik 2.1 Základní parametry . . . . . . . . . . 2.2 Výsledky . . . . . . . . . . . . . . . . 2.2.1 Klasický sklad . . . . . . . . . 2.2.2 Členitý nízkokapacitní sklad . 2.2.3 Protáhlý a velmi členitý sklad 2.2.4 Úzký sklad s dlouhými regály 2.3 Zhodnocení . . . . . . . . . . . . . . 3 Implementace 3.1 Struktura aplikace . . . . 3.1.1 Použité technologie 3.1.2 Stěžejní třídy . . . 3.2 Databázový model . . . . 3.3 Generátor provozu . . . . 3.4 Simulátor . . . . . . . . . 3.5 Vyhledávač cest . . . . . . 3.6 Grafické rozhraní . . . . .
. . . . . . . .
. . . . . . .
. . . . . . . .
. . . . . . .
. . . . . . . .
. . . . . . .
. . . . . . . .
. . . . . . .
. . . . . . . .
. . . . . . .
. . . . . . . .
. . . . . . .
. . . . . . . .
. . . . . . .
. . . . . . . .
. . . . . . .
. . . . . . . .
. . . . . . .
. . . . . . . .
. . . . . . .
. . . . . . . .
. . . . . . .
. . . . . . . .
. . . . . . .
. . . . . . . .
. . . . . . .
. . . . . . . .
. . . . . . .
. . . . . . . .
. . . . . . .
. . . . . . . .
4 4 4 4 5 7 7 7 7
. . . . . . .
9 9 10 10 12 13 14 15
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
16 16 16 16 17 18 19 20 22
4 Uživatelská dokumentace 4.1 Instalace programu . . . . . . . . . 4.2 Spuštění programu . . . . . . . . . 4.3 Grafické rozhraní . . . . . . . . . . 4.3.1 Struktura prostředí . . . . . 4.3.2 Karta Správa modelu . . . . 4.3.3 Karta Manipulace se zbožím 4.3.4 Karta Průběh provozu . . . 4.3.5 Karta Grafy z průběhu . . . 4.3.6 Karta Nastavení . . . . . . . 4.3.7 Model skladu . . . . . . . . 4.4 Generátor struktury skladu . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
23 23 23 23 23 24 25 25 26 26 27 28
. . . . . . . .
. . . . . . . .
. . . . . . . .
Závěr
. . . . . . . .
29
1
Seznam použité literatury
30
2
Úvod Logistika je v dnešní době velice významný pojem, který je nedílnou součástí prakticky každého procesu. Bavíme se hlavně o materiálovém toku mezi dodavatelem a odběratelem, organizaci, plánování a řízení činností. Potřeba organizace zásobování a toků zboží se do obchodu dostala již v 50. letech v USA, kdy bylo potřeba snížit skladovací náklady a od té doby logistika dostála obrovského rozkvětu. V dnešní době vládne logistice silniční doprava, která představuje v Evropě zhruba 80 % z celkové vnitrozemské dopravy [1]. Zaměříme-li se na obchodní logistiku, významnou roli v zásobovacím systému hrají velkoobchodní sklady. Jejich hlavní funkcí je udržování dostatečných zásob zboží a jeho dodávka zákazníkům. Ačkoli v dnešní době zaznamenáváme vzestup automatizovaných skladů, stále jsou hojně rozšířeny sklady mechanizované, a to jak u menších dodavatelů, tak u distributorů regionálního charakteru. Provozovatelé nemusí mít prostředky, ani dispozice k automatizaci provozu a hledají možnost úspory na jiných místech. V dnešní době počítačů lze k optimalizaci fungování skladu použít simulační metody, které umožňují uživateli vytvořit model, který odpovídá skutečnosti a na něm odzkoušet různé varianty řízení provozu a vyhodnocovat výsledky. Je to laciné, rychlé a je možné namodelovat stovky variant provozu a srovnat je mezi sebou bez vlivu lidského činitele. Úkolem programu, který je součástí této práce je pomoci zorganizovat provoz ve velkoobchodním skladu a snížit časové prodlevy zákazníků s ohledem na minimalizaci vytížení manipulační techniky. Program umožňuje vytvořit strukturu skladu a na něm poté nakonfigurovat denní provoz s použitím jedné z dostupných optimalizačních metod. Nabízí informace a diagramy z průběhu nasimulovaného provozu a tedy i možnost srovnání rozdílných konfigurací. Dále je k dispozici plošný a prostorový model skladu, který uživateli nabízí pohled na dění v rámci budovy. V první kapitole práce je popsáno, jak je velkoobchodní sklad znázorněn v přiložené aplikaci, jakým způsobem je zpracován tok zboží a dále je zde popis použitých optimalizačních metod. Druhá kapitola se zabývá rozborem výsledků z nasimulovaných provozů v různých typech skladů. V třetí kapitole je rozebrána struktura aplikace a způsob řešení implementačních problémů. Poslední čtvrtá kapitola obsahuje příručku k programu, která uživatele provede instalací a ovládacími prvky v celé aplikaci.
3
1. Provoz skladu 1.1 1.1.1
Popis organizace Struktura skladu
Velkoobchodní sklad je reprezentován jednou budovou. Ta je tvořena bloky s kójemi (sektory), do nichž se ukládají palety se zbožím, dále sítí cest, která je propojuje a vysokozdvižnými vozíky, které se starají o veškerý tok zboží. Budova skladu má vždy obdélníkový tvar. V levém dolním rohu je hlavní vchod, u kterého je počátek sítě cest, což je výchozí pozice vozíků, kam se po provedené manipulaci se zbožím vždy vracejí. Každá buňka na palety má několik pater, v každém z nich může být umístěna právě jedna paleta.
1.1.2
Systém nakládek a vykládek
Dovoz a odvoz palet se zbožím mají na starost kamiony, které přijíždějí vždy v předem domluvený čas. Na začátku dne se vytvoří časový plán, podle kterého pak kamiony dováží zboží nebo si na daný čas přijíždí vyzvednout objednávku. Ve druhém případě navíc nahlásí, jaký druh zboží si přijedou vyzvednout. Nakládka a vykládka kamionu v praxi nějaký čas trvá, zpravidla kolem jedné až dvou hodin. Záleží, jak velký je kamion, zda se pro manipulaci využívá ruční či elektricky poháněný vozík, jestli je kamion plný či poloprázdný, jak jsou v kamionu uspořádané palety apod. Na tyto operace se však nezaměřujeme, a proto se v našem modelu přesun palet mezi kamionem a nakládací rampou u skladu neřeší a je realizován okamžitě. Po vyložení kamionu, který přivezl zboží, začne tyto palety zpracovávat manipulační technika. Vyhledá se nejbližší volná kóje, do které se může paleta umístit a naloží se na vysokozdvižný vozík, který operaci následně vykoná a poté se vrací na výchozí pozici. K dispozici je i možnost, při které může vozík místo návratu na své iniciální umístění zpracovat další požadavek. V tomto případě se zkouší zatím nevyřízené požadavky na odběr zboží přiřadit vozíkům, které momentálně zpracovávají příchozí zásilky. Z těchto adeptů se navíc vybírají ty vozíky, které budou ve chvíli vyřízení svého úkolu nejblíže paletě, na kterou zákazník čeká. Kamiony, které si zboží přijely odvézt přijedou k rampě u hlavního vchodu a čekají na vyřízení nakládky. Podle soupisu zboží, které si přijel kamion vyzvednout se vyhledají nejbližší palety ve skladu, které tomuto druhu odpovídají a dostupné vozíky je odjíždí naložit. Ve skutečnosti se objednané zboží pro kamiony blokuje a při objednávce se již většinou ví, jaké palety dostanou. V našem případě však chceme využít všechny palety, co jsou při příjezdu kamionu na skladu, abychom mohli vydat zboží, které je aktuálně v nejbližší vzdálenosti od vchodu. Může tedy u menších skladů nebo objemných objednávek dojít k situaci, kdy ve chvíli co si kamiony zboží objednaly, není zrovna skladem nebo bylo odebráno před jejich přijezdem jiným kamionem. Předcházet tomuto by bylo možné vytvořením seznamu s počtem jednotlivých typů zboží, které jsou aktuálně skladem. Tento seznam by byl průběžně aktualizován podle provozu na skladu a kamionům by
4
se generovaly objednávky pouze z toho seznamu. Jakmile by byla objednávka vygenerována, snížily by se hodnoty v seznamu u příslušného zboží. Tato varianta ovšem v této aplikaci nebyla řešena. Pokud se pro paletu nenajde ve skladu volný regál, je zařazena mezi nevyřízené palety a zpracuje se, jakmile se někde místo uvolní. Do té doby je uložena na provizorním místě (mimo skladové prostory) a nemůže být vydána zákazníkovi, ani s ní nemůže být jakkoliv manipulováno. Kdybychom se podívali na to, jak je to v realitě, zjistili bychom, že mnohdy ani sklady takové místo pro odklad palet nemají. Toto řešení tedy situaci poněkud zjednodušuje, ovšem běžně k ní u rozumně velkých skladů dochází málokdy. Stejně tak se může stát, že zboží, které si přijel kamion vyzvednout, není aktuálně na skladě. Příčinou může být například odebrání tohoto zboží jiným kamionem, který přijel bezprostředně před ním.
1.1.3
Profil denního provozu
Četnost příjezdů kamionů je zpravidla v několika časových úsecích dne zvýšená a ve zbytku dne spíše nepravidelná a nižší. Častým jevem je, že se více objednávek realizuje na začátku a ke konci dne. Vhodným prostředkem pro popis takového provozu by proto mohlo být Poissonovo rozdělení [2], které je v místech vyšší četnosti proloženo normálním rozdělením [3] Pro generování denního rozvrhu je tedy použito Poissonovo rozdělení s parametrem 60, který udává střední hodnotu časového rozpětí mezi dvěma příjezdy kamionů v minutách. Dále dvě normální rozdělení, jejichž střední hodnoty charakterizují nejfrekventovanější časovou dobu v dopolední resp. odpolední části a směrodatné odchylky popisují jak blízko těchto časových špiček kamiony příjíždějí. K výslednému výpočtu časové mezery před následující objednávkou se pak využívají dvě hodnoty, které se mezi sebou vydělí. Dělenec představuje náhodně vygenerovanou hodnotu z distribuční funkce našeho Poissonova rozdělení a dělitel je absolutní hodnota rozdílu dvou distribučních funkcí uvedených normálních rozdělení, ve kterých je argumentem aktuální časový údaj v rámci dne. Dělitel je ještě zdola omezen konstantou, aby nedocházelo k dělení příliš malým číslem. Při konfiguraci použité pro vyhodnocování statistik použitých optimalizačních metod vypadá denní provoz jako na následujících histogramech (zobrazen je počet do uvedeného času).
5
4
Počet kamionů
3
2
1
0 07:00 08:00 09:00 10:00 11:00 12:00 13:00 14:00 15:00 16:00 17:00 18:00 19:00 20:00 Čas příjezdu
Obrázek 1.1: Rozvrh příjezdů dovážejících kamionů
Počet kamionů
3
2
1
0 07:00 08:00 09:00 10:00 11:00 12:00 13:00 14:00 15:00 16:00 17:00 18:00 19:00 20:00 Čas příjezdu
Obrázek 1.2: Rozvrh příjezdů vyvážejících kamionů
6
7 6
Počet kamionů
5 4 3 2 1 0 08:00
10:00
12:00
14:00
16:00
18:00
20:00
Čas příjezdu
Obrázek 1.3: Celkový průběh příjezdů kamionů
1.2 1.2.1
Optimalizační metody Hladová metoda
První způsob organizace palet v rámci skladu je poměrně intuitivní. Poté, co se vyloží kamion s dovezenými paletami, se postupně pro jednotlivé palety vyhledá nejbližší volná kóje, do které se odveze. Zboží se tedy hromadí v blízkosti hlavního vchodu bez ohledu na jeho druh.
1.2.2
Prioritní metoda
Typicky se s některým druhem zboží manipuluje častěji než s ostatními, proto by bylo vhodné pro frekventovanější artikly vyhradit více místa v blízkosti vchodu skladu. Prioritní metoda pracuje se skladem rozděleným do několika oblastí podle vzdálenosti od vchodu. Pro každý typ zboží se uvažuje váhový koeficient, na jehož základě se v každé oblasti vyhradí pro tento druh určitý počet kójí. U každé příchozí palety pak hledáme nejbližší oblast, ve které ještě není pro tento typ zboží vyčerpaná kapacita. Zboží, které si zákazníci objednávají častěji dostává tedy ve skladu více prostoru na úkor méně frekventovaného. Tento způsob je inspirován diagonální metodou, která je zmíněna ve článku zabývajícím se ekologií skladování [4, str. 5].
1.2.3
Dynamická metoda
V dnešní době platí, že čas jsou peníze, a proto, abychom ušetřili zákazníkům čas, můžeme se zboží, pro které si přijedou, snažit přichystat blíže vchodu na danou dobu jejich příjezdu. S určitým předstihem se podíváme na objednávku zákazníka a zaznamenáme si, pro jaké zboží si přijede. Podíváme se do skladu, kde se tyto artikly nachází a 7
palety, na kterých jsou naložené si zablokujeme. Poté procházíme postupně palety od nejvzdálenější zablokované a zkoušíme najít v bližší vzdálenosti vchodu paletu, která zablokovaná není nebo dokonce buňku, kde je prázdný regál. Pokud se nám to podaří, vyměníme tyto palety navzájem, resp. přesuneme naší zablokovanou paletu na volné místo. Tímto způsobem si přichystáváme zboží před každou následující objednávkou. Umístění dovezených palet probíhá stejně jako u hladové metody. V praxi samozřejmě dopředu nevíme, kdy přesně kamiony přijíždí, avšak zákazníci si samozřejmě musí zboží dopředu zamluvit a dát vědět, kdy zhruba kontrakt proběhne, a proto si můžeme tyto předpřípravy dovolit.
8
2. Srovnání statistik 2.1
Základní parametry
Jednotlivé optimalizační metody bylo potřeba vyzkoušet na různých strukturách skladu, s různými parametry, aby se dalo usoudit, kde se dá která použít, jestli mají stabilní chování nebo zda na některých skladech selhávají. Pro porovnání je vybráno několik struktur skladů, které se více či méně vyskytují v běžném prostředí. Sledovány jsou dvě hlavní veličiny: najetá vzdálenost vysokozdvižnými vozíky a čekací doba kamionů. Uvažujeme celkové hodnoty po skončení denního provozu skladu. Ve výsledcích je uváděna také maximální čekací doba kamionu v rámci celého dne. Harmonogram příjezdů kamionů byl nakonfigurován ve snaze napodobit skutečné dění ve velkoobchodním skladu (průběh provozu je znázorněn na diagramech v první kapitole):
Špička Rozptyl Dopolední výdej 08:00 0.30 15:00 0.80 Odpolední výdej Dopolední příjem 07:00 0.42 Odpolední příjem 17:00 1.20
Seznam druhů zboží, ze kterého se generuje provoz:
Corn flakes Kečup Párky Rybičky Broskve v nálevu Vepřové maso Koření kari Červené fazole
Priorita 15 10 25 80 42 55 7 48
Ve všech provozech byla použita 5 min. rezerva pro nachystání vozíků pouze na výdej objednaného zboží. Počáteční naplnění skladu bylo do 50% míry. Vygenerováno bylo vždy několik provozů a uveden je vždy jeden výsledek, který je charakteristický pro většinu měření a případně také jeden méně častý výsledek, který popisuje občasné výkyvy při měření.
9
Corn flakes Kečup Párky Rybičky Broskve v nálevu Vepřové maso Koření kari Červené fazole
Obrázek 2.1: Zastoupení jednotlivých druhů zboží v provozu
2.2 2.2.1
Výsledky Klasický sklad
Kapacita: 1600 míst Počet pater sektoru: 4 Počet dostupných vozíků: 8
Obrázek 2.2: Schéma klasické struktury skladu Varianta s menším objemem kamionů Nosnost kamionů:
20 palet 10
Obvyklý případ:
Hladová metoda Prioritní metoda Dynamická metoda
Najeté trasy Čekací doby Max doba 30 313 m 3 794 s 374 s 31 699 m 3 731 s 402 s 40 129 m 3 565 s 362 s
Výjimečný případ:
Hladová metoda Prioritní metoda Dynamická metoda
Najeté trasy Čekací doby Max doba 31 111 m 3 707 s 365 s 31 763 m 3 485 s 351 s 42 149 m 3 622 s 522 s
Tento provoz by se měl nejvíce podobat skutečnosti. Sklad má dostatečnou kapacitu a objednávky zboží jsou přiměřeně velké. U prioritní metody bylo zvoleno rozdělení sektorů do 8 oblastí na základě výsledků experimentů. Nejkratší trasy najezdí vozíky při hladové metodě, což je pochopitelné, vzhledem k tomu, že prioritní metoda bude vždy odvážet zboží o něco dál kvůli omezeným kapacitám jednotlivých druhů zboží v sektorech a dynamická metoda si zboží předchystává. Nejméně nechává zákazníky čekat dynamická metoda. Úspora oproti hladové metodě je zhruba 6 %. Avšak v některých případech dynamická metoda vytěžuje vozíky natolik, že nestíhají tak rychle zpracovat objednávky a dostává se před ní prioritní metoda, která měla při měřeních stabilně o něco lepší výsledky než metoda hladová. Na tomto skladu byl testován také provoz s možností přidělení nevyřízených požadavků již zavážejícím vozíkům. Obvykle přinesl poměrně zanedbatelné zlepšení sledovaných veličin (většinou kolem dvou procent). Pokud však přijede kamion se zbožím chvíli před kamionem, který si jede zboží vyzvednout, vyplatí se tuto možnost uvažovat, protože při popsané konfiguraci ušetří při každé takové situaci zhruba čtvrtinu čekání takového kamionu. Varianta s větším objemem kamionů Nosnost kamionů:
50 palet
Obvyklý případ:
Hladová metoda Prioritní metoda Dynamická metoda
Najeté trasy Čekací doby Max doba 96 207 m 11 436 s 1 160 s 98 067 m 11 420 s 1 215 s 149 740 m 14 412 s 1 608 s
V tomto případě jsou již objednávky velice objemné a dynamická metoda již viditelně nestíhá zpracovávat požadavky včas. Na následujícím obrázku lze vidět, že vozíky se za celý den skoro nezastaví.
11
Obrázek 2.3: Průběh pohybu vozíků při dynamické metodě U hladové a prioritní metody se mažou rozdíly v najetých vzdálenostech, ale i v čekacích dobách a hladová metoda vychází již v průměru lépe.
2.2.2
Členitý nízkokapacitní sklad
Kapacita: 384 míst Nosnost kamionů: 20 palet Počet pater sektoru: 1 Počet dostupných vozíků: 8 Obvyklý případ:
Hladová metoda Prioritní metoda Dynamická metoda
Najeté trasy Čekací doby Max doba 46 158 m 6 385 s 675 s 47 854 m 6 215 s 691 s 65 301 m 6 392 s 740 s
Také u menšího skladu obsluhuje zákazníky o něco rychleji prioritní metoda s rozdělením do 8 oblastí, ovšem v některých případech docházelo k situaci, kdy došla paleta, pro kterou nebyla na skladu oblast s volným místem pro tento druh zboží a zůstala nevyřízená až do konce dne, protože tento typ zboží nikdo neodebíral a tudíž se pro ní na skladě neuvolnilo místo. Tato situace by se pak v praxi mohla řešit vložením palety do regálu jiného druhu zboží. Jde tedy vidět, že prioritní metoda potřebuje ve skladu více prostoru, případně je také možné rozvrstvit sektory do jiného počtu oblastí, avšak s možným poklesem efektivity metody. 12
Obrázek 2.4: Schéma členitého nízkokapacitního skladu
2.2.3
Protáhlý a velmi členitý sklad
Kapacita: 960 míst Nosnost kamionů: 20 palet Počet pater sektoru: 4 Počet dostupných vozíků: 6 Obvyklý případ: Najeté trasy Čekací doby Max doba Hladová metoda 48 012 m 6 165 s 952 s 49 121 m 6 089 s 950 s Prioritní metoda Dynamická metoda 65 123 m 5 906 s 977 s Výjimečný případ: Najeté trasy Čekací doby Max doba Hladová metoda 50 161 m 5 781 s 1 036 s Prioritní metoda 53 355 m 5 474 s 716 s Dynamická metoda 65 522 m 5 865 s 812 s Struktura tohoto skladu je poněkud netypická. Sektory v budově jsou rozděleny do spousty bloků a to pouze v jednom směru, vozíky jsou tak většinou nuceny zboží odvážet poměrně daleko od vchodu. Ve většině případů je pro rychlé odbavení zákazníka nejvýhodnější dynamická metoda, která má však opět občasné výkyvy a navíc při ní najedou vozíky o 35 % delší vzdálenost než u hladové meto-
13
dy. Kompromisem by mohla být prioritní metoda, která vychází o něco lépe než hladová a vozíky při ní najezdí pouze o pár procent delší vzdálenosti. Tentokrát vycházelo nejlépe rozdělení sektorů do dvou oblastí. U některých vygenerovaných provozů bylo možné zaznamenat poměrně velký rozdíl v maximální čekací době hladové a prioritní metody. V některých případech trvalo nejpomalejší odbavení zákazníka skoro o čtvrtinu rychleji u prioritní metody. V uvedeném příkladě se čekací doby obou metod výrazněji lišily pouze v jednom případě. Rozdíl však byl přes 10 minut. Důvodem byl dlouhý výjezd vozíků, které se nestihly vrátit včas před příjezdem objednaného kamionu.
Obrázek 2.5: Schéma protáhlého a velmi členitého skladu
2.2.4
Úzký sklad s dlouhými regály
Kapacita: 1600 míst Nosnost kamionů: 10 palet Počet pater sektoru: 4 Počet dostupných vozíků: 8 Průměrný případ: Najeté trasy Čekací doby Max doba Hladová metoda 22 200 m 2 707 s 692 s Prioritní metoda 24 890 m 2 700 s 646 s Dynamická metoda 28 440 m 2 730 s 732 s V budově jsou v tomto případě pouze dva pásy dlouhých regálů a kamiony operují s menším množstvím zboží. Srovnávané provozy tohoto skladu se vždy ve výsledku u jednotlivých metod trochu lišily, každá měla v nějakém provozu mírně navrch. Čekací doby jsou skoro totožné, avšak hladová metoda tentokrát o něco výrazněji získává na najetých vzdálenostech.
14
Obrázek 2.6: Schéma úzkého skladu s dlouhými regály
2.3
Zhodnocení
Každá metoda má v nějakém skladu určité výhody oproti ostatním, rozdíly však obvykle nejsou velké. Pokud nám jde pouze o co nejmenší najetou vzdálenost vozíků, je jednoznačnou volbou hladová metoda, která má nejlepší výsledky pro jakýkoliv typ skladu bez ohledu na konfiguraci provozu. Jestli nám ovšem hodně záleží na co nejrychlejším odbavení zákazníka, je většinou výhodnější použít prioritní metodu, která ukázala, že je i stabilnější variantou, než další dvě porovnávané. Dynamickou metodu zásadně znevýhodňuje znatelně větší najetá vzdálenost vozíků oproti ostatním metodám. Mohla by ale najít uplatnění ve skladech, kde provozovateli na najetých trasách tolik nezáleží, a kde není tak velký objem vydaného zboží, na kterém většinou metoda ztrácí, protože pak nestíhá zároveň zpracovávat došlé zboží a přeskládávat palety, které jsou aktuálně na skladu.
15
3. Implementace 3.1 3.1.1
Struktura aplikace Použité technologie
Program je postaven na platformě Java, která umožňuje běh programu na různých operačních systémech, zdrojový kód navíc není nutné nijak přizpůsobovat danému prostředí. Dalším důvodem výběru této platformy je spousta volně dostupných knihoven, které programátorovi zjednodušují práci. Uživatelské rozhraní je postaveno na knihovně Java Swing, která nabízí dostatečné spektrum ovládacích prvků a komponent a zajištuje i jejich vzhled v různých operačních systémech. Ačkoliv sama o sobě nepoužívá pro běh více vláken, její architektura tuto možnost podporuje a také je v této aplikaci využita. O vykreslování modelu skladu se stará knihovna Java OpenGL, která zapouzdřuje multiplatformní rozhraní OpenGL a umožňuje využívat většinu jeho schopností. Pro načítání a zobrazení prostorových modelů objektů je využit balík MRI3DS. Přístup a komunikaci s databází zboží a zákazníků zajišťuje JDBC API, což je jednotné rozhraní pro přístup k relačním databázím v Javě. Samotná databáze je pak zpracovaná na bázi systému MySQL. Sadu matematických nástrojů, které jsou využity pro pravděpodobnostní rozdělení a generování náhodných hodnot, poskytují knihovny Colt. K vykreslování grafů a vyhodnocení dat z průběhu simulace se používá framework JFreeChart.
3.1.2
Stěžejní třídy
Hlavní úkoly programu jsou rozděleny mezi několik tříd, které spolu vzájemně komunikují. Klíčové třídy bychom mohli rozdělit do tří skupin: zobrazovací, výkonné a inicializační. Podrobněji jsou pak popsané v jednotlivých sekcích této kapitoly. Inicializační třídy Tato skupina má na starosti nachystání programu do počátečního stavu a načtení potřebných parametrů z pevného disku. O to se stará především hlavní třída programu Main. Nejprve načítá strukturu budovy skladu a dostupnou manipulační techniku z XML souboru. Následně se inicializuje třída PathFinder, která má na starosti vyhledávání nejkratších cest k sektorům s paletami ve skladu. Následuje vytvoření grafického rozhraní, které běží v odděleném vlákně a vytvoření databázového procesoru. Poté se z databáze načtou informace o zaplnění skladu do programu, abychom se na ně nemuseli průběžně dotazovat databázového serveru, což by bylo časově náročné. Při manipulaci s paletami se poté aktualizují jen tato data, které máme přímo přístupná.
16
Obrázek 3.1: Struktura hlavních tříd programu Výkonné třídy V těchto třídách se odehrává hlavní dění programu. Řídí běh simulace, sestavování rozvrhu příjezdů kamionů a komunikaci s databází skladu. Patří sem třídy FlowGenerator, Simulator a DBProcessor. Zobrazovací třídy Zajištují komunikaci mezi programem a uživatelem. Vytváří grafické uživatelské rozhraní a poskytují vizualizaci modelu skladu. Stěžejní třídy této skupiny jsou SkladGUI, ModelGUI a ModelCanvas.
3.2
Databázový model
Veškeré zboží, které je na skladu se eviduje do databáze, stejně tak i seznam zákazníků, kteří zboží odebírají či dovážejí. Operace s databází obstarává třída DBProcessor. Při inicializaci programu vytváří spojení s databázovým serverem, který běží na lokálním počítači. Toto spojení je aktivní po celou dobu běhu programu. Pro potřeby generování provozu jsou v databázi aktualizovány informace o typech zboží na skladě na základě dat z textového souboru. Z těchto údajů se pak generují náklady a objednávky kamionů. Dále se z databáze načte obsazenost sektorů. Zaznamenáme si ještě identifikátory všech palet na skladu, abychom pak při generování provozu nevytvářeli duplicity. Pokud na počítači databáze daného skladu neexistovala, byly patřičné tabulky při startu programu vytvořeny. Databáze obsahuje pro každý sklad dvě tabulky: Zbozi a Paleta. Tabulka Zbozi popisuje druhy zboží, se kterými se během simulovaného provozu pracuje a Paleta obsahuje informace o paletách umístěných aktuálně na skladě. 17
3.3
Generátor provozu
Třída FlowGenerator se stará o generování denního rozvrhu příjezdů kamionů a vytváření pracovních úkolů pro manipulační techniku. Při inicializaci třídy se vytvoří instance třídy DRand s pevně zvoleným "semínkem", která slouží ke generování náhodných hodnot z distribučních funkcí Poissonova a normálního rozdělení, které slouží k vygenerování průběhu denního harmonogramu provozu. Z textových souborů se pak ještě načtou údaje o typech zboží, které se pak používají k vytváření nových zásilek a objednávek. U každého typu zboží je kromě jiných údajů také jejich priorita (váhové číslo), která značí, jak velká je po daném artiklu poptávka. Ve výsledku se priority jednotlivých druhů zboží sečtou a vytvoří se tak interval, ve kterém každý druh zboží zabírá podinterval odpovídající jeho prioritě. Čili dva druhy zboží se shodným váhovým číslem zabírají v intervalu stejný díl. Poté, co uživatel nastaví parametry provozu, zvolí typ optimalizace a spustí generování provozu, se spustí speciální vlákno aplikace, které se postará o zpracování jeho požadavku. Načtou se parametry z grafického rozhraní, aktuální stav skladu se resetuje do původního, v databázi se ponechají pouze informace o typech zboží, se kterými se bude pracovat a vygenerují se palety, které bude sklad obsahovat na počátku dne před začátkem simulace. Zboží je poté podle typu zvolené optimalizace rozmístěno do kójí ve skladu. Míra, do které se sklad zaplňuje paletami je stejně jako další parametry provozu načítána z karty Nastavení. Postupně se generují palety z dostupných údajů o zboží a umísťují se do sektorů. Zároveň se také vkládají příslušná data do databáze. Nejprve se vygeneruje číslo z intervalu [0,sum], kde sum je součet priorit jednotlivých druhů zboží. Podle toho, do jakého podintervalu číslo spadá, se daný typ vybere. Nakonec se vygeneruje identifikátor palety s ohledem na již přítomné v databázi. Pro vygenerovanou paletu se vyhledá volný sektor podle vybrané optimalizační metody. Pokud není vybrána žádná metoda, je paleta umístěna do náhodného volného regálu. U hladové a dynamické metody se postupně prochází sektory od nejbližšího od vchodu, což má na starost vyhledávač cest, a v případě, že je zde volný regál, uloží se paleta zde. V případě prioritní metody se o nalezení sektoru zcela postará vyhledávač cest, který má u jednotlivých oblastí se sektory zaznamenané, kolik je povoleno zde umístit palet daného typu. Nyní přichází na řadu vygenerování rozvrhu příjezdů kamionů na daný den. Prochází se interval provozní doby skladu a postupně se vytváří časové body, na které se naplánuje příjezd kamionu. Skoky mezi jednotlivými body jsou určené kombinací Poissonova a dvou normálních rozdělení (podrobněji popsáno v první kapitole). Pro generování nákladu dovážejících kamionů je použit stejný postup jako při naplňování skladu do iniciálního stavu. Při sestavování objednávky pro kamiony, které si přijedou pro zboží je pro každý kus vygenerován záznam se druhem zboží, pro který si přijedou (opět z intervalu s prioritami zboží). Jakmile je kamion vygenerován, je uložen do fronty, kterou pak zpracovává simulátor. FlowGenerator dále obstarává generování provozu, který si ručně nakonfiguruje uživatel v grafickém prostředí.
18
3.4
Simulátor
Chod simulace zajišťuje třída Simulator. Základ tvoří časovač, jehož rychlost si může zvolit sám uživatel. Časovač je aktivní po celou dobu běhu aplikace. Jeden krok simuluje 5 sekund v reálném čase a v každém tomto časovém kroku vykoná simulátor smyčku událostí, která je znázorněná na obrázku 3.2.
Obrázek 3.2: Jeden krok časovače v simulátoru Při vytváření třídy se rozdělí vozíky do dvou skupin - jedna bude zpracovávat příchozí palety a druhá odchozí. Přitom pokud jedna skupina vozíků zrovna nemá práci, může uvolnit vozíky do druhé skupiny. Zpracování nejbližších objednávek u dynamické metody funguje na principu, který je popsán v první kapitole. Zatím nevyřízené příchozí palety, objednávky, manipulační úlohy a kamiony jsou uložené odděleně ve frontách. Pokud nadešel čas příjezdu kamionu, nachystá se jeho odbavení a příslušná položka se odstraní z fronty. 19
V případě, že kamion dovezl zboží, tak se z každé palety vytvoří balík, který se vloží do příslušné fronty. Obsahem balíku je daná paleta a dále informace, do jakého sektoru se má paleta odvézt. Tuto informaci zjistí vyhledávač cest na základě vybrané optimalizační metody. V případě hladové metody se podívá do pole sektorů seřazeného podle vzdálenosti a určí, kam paletu odvézt. Pokud je zvolena prioritní metoda, vybere se regál z nejbližší oblasti, ve které je pro daný typ zboží volné místo a aktualizuje se informace o zaplnění oblasti. Nastane-li případ, že na skladě není volné místo, odloží se paleta na provizorní místo mimo skladové prostory a až se někde místo uvolní, je na něho převezena. Pokud přijel ke skladu kamion, který si zboží objednal, ohlásí seznam zboží, který si zamluvil. Pro každý kus se pak vyhledá ve skladu nejbližší příslušná paleta a vytvoří se požadavek na vyřízení objednávky, který se uloží do fronty. Kdyby se náhodou stalo, že na skladu žádná paleta s tímto druhem zboží není, zákazník bohužel nemůže být odbaven a simulace provozu se přerušuje. K této situaci ovšem nedochází u dostatečně velkých skladů. Jednotlivé položky uložené ve frontách s paletami se postupně zpracovávají dostupnými vozíky. Pokud je na skladu nečinný vozík, přiřadí se mu balík s paletou odpovídající této položce. Simulátor připraví vozík do iniciální polohy a pošle požadavek vyhledávači cest, který pro vozík nachystá soupis s trasou, která ho naviguje k dokončení jeho úlohy. Obdobně se obsluhuje fronta s manipulačními úlohami. Úkol se přiřadí aktuálně volnému vozíku, který se po dokončení požadovaných přesunů palet vrací na své výchozí místo. Výjimkou je, pokud je v časové blízkosti příjezd kamionu, který si jede vyzvednout objednávku. V takovém případě již vozíky čekají do jeho příjezdu a zabývají se pouze dovozem palet pro tento kamion, aby zákazník čekal co nejkratší dobu. V rámci generování provozu nemá smysl simulovat období, kdy se na skladu nic neděje, proto pokud aktuálně neoperuje žádný vozík a ve frontě nejsou žádné nevyřízené požadavky, posouvá se simulace do bodu následující události v časovém harmonogramu. Pohyb vozíků probíhá v několika fázích. Nejprve se vozík posouvá k cílovému sektoru, kde má dojít k operaci. Navigování probíhá podle soupisu cest, kterými má projet. Na rozhraní mezi cestami dochází ke správnému natočení vozíku do směru příštího pohybu. Jakmile je vozík u sektoru, přechází do pomalejšího režimu, kdy najíždí s vidlicí do daného regálu, kde provede odběr či vyložení nákladu a zároveň se provede příslušná operace v databázi. Poté se buď vrací ke vchodu skladu, kde dokončí svoji úlohu nebo v případě manipulační úlohy pokračuje v přemísťování zboží. Na závěr se zaznamenají sledované veličiny do grafu v programu a případně také podrobnější informace do souboru na disk.
3.5
Vyhledávač cest
Aby vozíky věděly, kudy zvolit nejkratší cestu skladem, je nutné pro ně vytvořit vhodnou mapu. Třída PathFinder umožňuje vyhledat mezi každými dvěma body ve skladu nejkratší cestu. Cesty ve skladu jsou strukturované tak, že každá část u které je sektor je považována za samostatnou cestu, stejně tak každá křižovatka. Pro potřeby vyhledávání nejkratších cest v rámci skladu je vytvořen graf, jehož vrcholy tvoří 20
středy cest a hrany vedou od každého vrcholu k sousedním cestám.
Obrázek 3.3: Ukázka výsledného grafu K vyhledání nejkratších cest od každého vrcholu k ostatním je použit Dijkstrův algoritmus [5]. Při vyhledávání cesty od vrcholu v do jiného s si pro každý vrchol k na této cestě pamatujeme jeho předchůdce, proto se dá potom cesta jednoduše zrekonstruovat. Dále seřadíme sektory skladu do pole, a to od nejbližšího od vchodu po ten nejvzdálenější. Projdeme pole vrcholů se vzdálenostmi od cesty, která je nejblíž vchodu a seřadíme ho podle délky (toto pole jsme získali Dijkstrovým algoritmem). Následně projdeme seřazené pole a zaznamenáme si zvlášť pouze sektory. Při hledání trasy pro vozíky během simulace se pak pouze lineárně projde cesta přes pole předchůdců a výsledný popis cest, kterými má vozík projet se vloží k vozíku jako mapa, která jej pak bude navigovat. Pokud je zvolena prioritní metoda optimalizace, dochází před začátkem generování provozu ještě k přeorganizaci sektorů skladu. Budova se rozdělí na daný počet oblastí se sektory podle jejich vzdálenosti od vchodu (tento počet volí uživatel před spuštěním generátoru). Rozdělení je lineární, očekává se rovnoměrné 21
rozmístění sektorů ve skladu. V každé oblasti se pro každý typ zboží vyčlení určitý počet regálů, do kterých se poté smí ukládat pouze tento typ. Místa v regálech jsou rozdělena ve stejném poměru jako je zastoupení jednotlivých typů zboží v intervalu priorit. V okamžiku kdy se používá prioritní metoda a kamion doveze zboží ke skladu, hledá se pro každou paletu ta nejbližší oblast, kde ještě není pro daný typ zboží překročena povolená kapacita.
3.6
Grafické rozhraní
Při tvorbě grafického prostředí byl kladen důraz na jednoduché a intuitivní ovládání a zároveň názorné zobrazení důležitého dění ve skladu. Prostředí je rozděleno do dvou hlavních oken, které běží ve speciálních vláknech. V jednom se vykresluje model skladu a druhé slouží pro prezentaci výsledků z provozu, poskytuje informace o průběhu simulace a zprostředkovává komunikaci s uživatelem. Okno s modelem skladu je zpracováno třídami ModelGUI a ModelCanvas. ModelGUI se stará pouze o zprostředkování komunikace s uživatelem. Jsou zde implementovány metody, které reagují na pohyb myši a stisky kláves. Umožňuje pohyb skladem či přiblížení pohledu na dvourozměrném plánku. Do třídy ModelGUI je vložené "plátno"ModelCanvas, které zařizuje vykreslování všech objektů na skladu ve dvourozměrném či prostorovém režimu. Poskytuje možnost zaměření vybraného objektu skladu a sledování pohybu vozíku. Hlavním prvkem uživatelského rozhraní je druhé okno, které obsahuje veškeré uživatelské komponenty. Implementuje ho třída SkladGUI. Okno je strukturováno do několika záložek, každá z nich má pro uživatele odlišnou funkci: obsluha spojená s modelem skladu, zobrazení aktuálně probíhajících operací s paletami, celkové informace o průběhu simulace, grafy a diagramy z provozu a nastavení parametrů průběhu provozu, možností zobrazení a další volby. Komunikace s uživatelem využívá grafických komponent Swing, které jsou obohacené o grafy a diagramy generované knihovnou JFreeChart. Pro úpravu seznamu zboží, se kterým se při provozu pracuje a pro ruční zadávání denního provozu skladu jsou připraveny zvláštní formuláře, kde má uživatel možnost zadat příslušné parametry. Při rozsáhlejších načítacích procesech je uživatel s jejich průběhem seznámen v informačním okně.
22
4. Uživatelská dokumentace 4.1
Instalace programu
Program má pro spuštění následující požadavky: • Běžící MySQL server verze 5 na adrese localhost:3306 • Java Runtime Environment SE verze 6 • Operační systém Windows XP (a vyšší) nebo Linux (s běžícím X Window System) • Grafická karta podporující OpenGL Pro operační systém Windows je vytvořen instalační průvodce v souboru install.exe, který se postará o zkopírování programu na zvolnené místo na pevném disku, vytvoření zástupců v nabídce start či na ploše a případné doinstalování požadovaných programů. Pokud zvolíte doinstalování MySQL serveru, zvolte typickou instalaci a po skončení instalačního procesu zvolte možnost nakonfigurování instance. Zde zvolte standardní konfiguraci a pokračujte v průvodci dále s ponechanými výchozími hodnotami. Na konci nastavte heslo uživatele root, které je potřeba ke spuštění této aplikace, aby měl program možnost na databázovém serveru pracovat. V systému Linux je závislosti nutné nainstalovat ručně. Celý program je umístěn ve složce Linux, kde je podsložka OptimalizaceSkladu, kterou stačí zkopírovat na pevný disk. Spustitelné soubory jsou pak přímo v této složce (s koncovkou .jar).
4.2
Spuštění programu
V případě Windows lze aplikaci spustit přes odkaz na ploše či v nabídce start (pokud byl při instalaci vytvořen) nebo přímo v adresáři s programem souborem OptimalizaceSkladu.exe (případně .jar). Po spuštění se zobrazí okénko informující o průběhu inicializace programu. Nejprve se načítají hodnoty z textových souborů sloužící pro generování provozu. Poté dochází k načtení dat vychozího skladu z databáze do aplikace. V této fázi se zobrazí formulář s výzvou k zadání hesla do databáze. Pokud v databázi zatím neexistují tabulky spojené s tímto skladem, dochází v této fázi k jejich vytvoření. Nakonec dochází k načtení uživatelského prostředí.
4.3 4.3.1
Grafické rozhraní Struktura prostředí
Grafické prostředí je rozděleno do dvou oken. V jednom okně je zobrazen model skladu a ve druhém jsou uživatelské ovládací prvky a výstupní informace, které jsou rozdělené do několika záložek (karet) podle jejich účelu.
23
Obrázek 4.1: Okno s provozem skladu
4.3.2
Karta Správa modelu
Na této kartě jsou informace o objektech ve skladu, obsahuje nástroje pro zobrazení objektů v okně s modelem skladu, dovoluje uživateli odebírat či přidávat typy zboží, se kterými se během provozu pracuje a umožňuje změnit sklad, se kterým se aktuálně operuje. Informační boxy • Info o objektu - podle zvoleného objektu na skladu (sektor či vozík) se zde zobrazí jeho popis. Objekt lze zvolit buď z rolovacích nabídek vpravo od boxu nebo v případě, že je zvolen plochý model skladu, přímo kliknutím na daný objekt v okně modelu skladu. Aktuálně vybraný objekt je pak na modelu zvýrazněn červenou barvou. • Info o paletě - pokud má uživatel jako aktuálně vybraný objekt zvolený sektor, pak pokud jsou v tomto sektoru přítomny nějaké palety se zbožím, 24
jsou načteny do rolovací nabídky Palety v sektoru. Na základě vybrané položky z této nabídky se poté v informačním boxu zobrazí popis dané palety. Sledování objektu • Sledovat v 1. osobě (dostupné pouze při prostorovém modelu) - po zatržení umožňuje sledovat práci vybraného vozíku z pohledu jeho řidiče. • Sledovat ve 3. osobě - po zatržení je obraz modelu skladu zaměřen na vybraný vozík a jeho pohyb je sledován z dálky • Zaměřit objekt - aktuálně zobrazený objekt v informačním boxu se přiblíží a zobrazí na modelu skladu Akční tlačítka Následující tlačítka lze použít jen v případě, že neprobíhá generování provozu. • Načíst jiný sklad - uživatel má možnost vybrat z disku soubor se strukturou jiného skladu. Po výběru dochází k načtení dat nového skladu z databáze a aktualizaci grafického prostředí. • Zobrazit seznam zboží - zobrazí formulář, ve kterém má uživatel možnost podívat se na aktuálně dostupné typy zboží, které se používají v provozu. • Přidat zboží na seznam - nabízí uživateli formulář, kde může ručně vytvořit typ zboží, který se pak použije při generování provozu. • Odebrat zboží ze seznamu - zobrazí formulář, kde má uživatel možnost odebrat zvolený druh zboží ze skladu.
4.3.3
Karta Manipulace se zbožím
Zde se zobrazuje veškerá manipulace s paletami na skladu. Palety jsou rozdělené do skupin podle jejich účelu. Jakmile se zahájí operace s paletou, objeví se položka, která je s ní spojená v některé ze zobrazených skupin. V průběhu operace se může přesunout do jiné skupiny a po dokončení své úlohy je položka vymazána. Po dvojkliku na nějakou položku se zobrazí dialog s informacemi o příslušné operaci.
4.3.4
Karta Průběh provozu
Na tomto místě najde uživatel okno s podrobným popisem prováděných operací na skladu. Každý záznam operace je složen z časové značky a popisu operace na následujících řádcích. Důležité údaje jsou v textu zvýrazněny. Dalším objektem na této kartě je popisek s časem simulace. Ten je užitečný zejména při sledování generovaného provozu.
25
4.3.5
Karta Grafy z průběhu
V průběhu provozu sledujeme najeté trasy vozíků a čekací dobu kamionů na vyřízení jejich objednávek. Tyto veličiny se průběžně zaznamenávají do grafů, které jsou k dispozici na této kartě. Po spuštění generátoru provozu se začínají data zapisovat do grafu jako dvojice (čas provozu, hodnota). Uživatel má možnost si vybrat, jestli se v grafu bude zobrazovat najetá vzdálenost vozíků, čekací doby nebo obě veličiny zároveň. Na kartě se nachází ještě histogram s jednotlivými čekacími dobami kamionů. Oba diagramy umožňují zvětšení měřítka grafu podržením levého tlačítka myši a táhnutím nad požadovanou oblastí. Další volby jsou přístupné po pravém kliknutí myši, zejména uložení grafu na pevný disk či jeho zkopírování do schránky.
4.3.6
Karta Nastavení
Tato karta obsahuje nastavení týkající se grafického prostředí, simulace a generátoru provozu a několik akčních tlačítek spojených s provozem skladu. Možnosti zobrazení • 2D model - přepne zobrazení modelu skladu do plochého režimu • 3D model - přepne zobrazení modelu skladu do prostorového režimu • Povolit světla (pouze u 3D modelu) - povolí osvětlení skladu (může být náročné na grafickou kartu) • Plné sektory jinou barvou - zaplněné sektory skladu budou na modelu vykresleny zvláštní barvou • Aktuální informace - povolí zobrazování aktuálních informací pro zvolený objekt na kartě Správa modelu. Pokud je zvolený vozík, dochází k výraznému zpomalení simulace důsledkem časté aktualizace zobrazených informací. Nastavení simulace • Metoda optimalizace - slouží pro výběr optimalizační metody při generování provozu skladu. • Rychlost simulace - posuvníkem lze ovlivnit délku časového kroku programu • Úkoly navíc - povolí přidělování odchozích zakázek aktuálně zavážejícím vozíkům. Konfigurace generátoru • Počet palet v kamionu - uživatel může nastavit jaká bude kapacita kamionů v simulaci. Objednávky a dodávky zboží se pak řídí tímto údajem (kamiony jezdí vždy plně naložené). • Čas k nachystání - interval (v sekundách), který značí od jaké doby před příjezdem kamionu s objednávkou již nebudou vozíky zaměstnávány a budou pouze čekat na tento kamion, který je pak přednostně zpracován. 26
• Míra zaplnění - udává do jaké míry se před začátkem provozu zaplní sklad počátečními paletami (hodnota v procentech) • Počet oblastí - využívá se u prioritní metody. Popisuje na kolik oblastí podle vzdálenosti se rozdělí sektory ve skladu. V každé oblasti má pak každý druh zboží vyhrazený určitý počet míst, který nemůže být obsazen jiným zbožím. • Špička provozu - udává nejvytíženější časový bod v patřičném denním období. V tomto bodě se vyskytují objednávky a dodávky zboží nejfrekventovaněji. • Rozptyl provozu - značí jak intenzivní je provoz v okolí dané špičky Akční tlačítka • Spustit simulaci - spustí simulátor. Během provozu je pak možné naopak simulaci pozastavit. • Vygenerovat provoz - z nastavených údajů vygeneruje denní provoz a zapne simulátor. • Vlastní provoz - nabízí uživateli formulář, kde může ručně nakonfigurovat harmonogram příjezdů kamionů a jejich požadavky. Po dokončení konfigurace se zapíná simulátor a začíná zpracovávání požadavků.
4.3.7
Model skladu
V tomto zvláštním okně se vykresluje dění ve skladu. Při zobrazení plochého modelu skladu má uživatel možnost levým kliknutím myši vybírat objekty na skladu, jejichž popis se zobrazí na kartě Správa modelu. Další dostupné akce: • Pohyb skladem - kurzorové šipky nebo táhnutí myší (+kolečko myši pro vertikální pohyb v 3D modelu) • Přiblížení pohledu (2D model) - kolečko myši • Nastavení výhledu (3D model) - CTRL + táhnutí myší • Počáteční stav - pravé tlačítko myši • Změna rozměrů okna
27
Obrázek 4.2: Okno s modelem skladu
4.4
Generátor struktury skladu
Součástí aplikace je také pomocný program pro vygenerování struktury skladu ze zadaných parametrů. Spouští se z hlavního adresáře souborem SkladGenerator.exe (případně .jar) nebo odkazem na ploše, pokud byl při instalaci vytvořen. Po spuštění je k dispozici formulář, který umožňuje zadání různých parametrů, ze kterých je po stisku tlačítka Generovat vytvořena struktura skladu. Výsledný soubor se strukturou je uložen do složky data, která je výchozí složkou při načítání budovy skladu v hlavním programu.
28
Závěr Hlavním úkolem práce bylo navrhnout způsoby, které zefektivní fungování velkoobchodního skladu, zejména snížení čekacích prodlev zákazníků a najetých vzdáleností manipulační techniky. Z vyhodnocení nasimulovaných modelů je vidět, že u některých typů skladů přináší prioritní i dynamická metoda určité zlepšení situace oproti intuitivnímu skládání zboží co nejblíže vchodu a také možnost přidělování úkolů navíc se v některých provozech uplatní. Další vlastností programu je možnost sledování průběhu simulovaného provozu, díky čemuž lze také zjistit nedostatky zadané konfigurace skladu. Možností na zlepšení a rozšíření programu je celá řada. V případě, že by měly vozíky možnost transportovat více palet naráz, nastává otázka v jakém pořadí palety ze skladu odebrat. Teplota v rámci budovy skladu nemusí být všude stejná a různé druhy zboží mohou vyžadovat umístění v daném teplotním rozpětí. Nastává pak otázka jak zboží rozmístit podle omezujících podmínek. Dalším rozšířením by mohla být implementace kvalitnějšího kolizního modelu vozíků (s možností vyhýbání vozíků apod.) či možnost použití jednosměrných cest.
29
Seznam použité literatury [1] epp.eurostat.ec.europa.eu : Freight transport statistics. http: //epp.eurostat.ec.europa.eu/statistics_explained/index.php/ Freight_transport_statistics, 2009. [2] www.wikipedia.org : Poissonovo rozdělení. http://cs.wikipedia.org/ wiki/Poissonovo_rozd%C4%9Blen%C3%AD. [3] www.wikipedia.org : Normální rozdělení. http://cs.wikipedia.org/ wiki/Norm%C3%A1ln%C3%AD_rozd%C4%9Blen%C3%AD. [4] Dukic Goran, Cesnik Vedran, Opetuk Tihomir : Order-picking Methods and Technologies for Greener Warehousing. Strojarstvo, 2009. ISSN 05621887. [5] www.wikipedia.org : Dijkstrův algoritmus. http://cs.wikipedia.org/ wiki/Dijkstr%C5%AFv_algoritmus.
30