Pivovar Chmelokvas. KIV/PT Semestrální práce



Podobné dokumenty
Dokumentace k semestrální práci z předmětu PT

POHYBY TĚLES / GRAF ZÁVISLOSTI DRÁHY NA ČASE - PŘÍKLADY

DEFA SmartStart UŽIVATELSKÁ A MONTÁŽNÍ PŘÍRUČKA.

Šifrování/Dešifrování s použitím hesla

1 Naši truhláři = tradice i budoucnost, CZ.1.07/1.1.34/

SPZ Uživatelská příručka

Návod k obsluze systému

verze: 4.0 Březen, 2011

WEBOVÁ APLIKACE GEOPORTÁL ŘSD ČR

MIKROSIMULAČNÍ MODEL ÚSEKU DÁLNICE D1 S APLIKACÍ LINIOVÉHO ŘÍZENÍ DOPRAVY. Milan Koukol, FD Ústav dopravních systémů

1 Základní funkce pro zpracování obrazových dat

TESTER SC-8108-A CZ manuál

Úloha T2 VÁRKA SVĚTLÉHO LEŽÁKU JEDNORMUTOVÝM DEKOKČNÍM POSTUPEM

Zónový regulátor vytápění VPT

VYSOKÁ ŠKOLA EKONOMICKÁ V PRAZE. Optimalizace trasy při revizích elektrospotřebičů

Druhá skupina zadání projektů do předmětu Algoritmy II, letní semestr 2014/2015


Synco living. Vytápění Funkce a ovládání. Srpen Strana1/44 Michal Bassy - Srpen Domácnost Místnosti Vstupy / výstupy

Novinky programu POSKA. !!! Před nasazením verze nejprve ukončete všechny rozpracované objednávky!!!

Příručka pro uživatele Navigační software

TomTom Trucker Uživatelská příručka 16.1

TouchGuard Online pochůzkový systém

Stručný návod k obsluze palubního počítače v autobusech SOR NB 12 a NB 18

POPIS PROGRAMU EAM1WIN

MAWIS. Uživatelská dokumentace

BDVR 05 Kamera do auta. Uživatelský návod

Po obrazovce přejede formule, před kterou se budou postupně objevovat písmena slova formule.

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE. Semestrální práce z předmětu A7B36TUR. Testování aplikace Tuba

TomTom Bridge Referenční příručka

MANUÁL MOBILNÍ APLIKACE GOLEM PRO OPERAČNÍ SYSTÉM ANDROID 4.X A VYŠŠÍ

ZÁKLADY PRÁCE S PROHLÍŽEČEM

Simulace železničních sítí

Ovládací PTZ klávesnice SC-3100 Uživatelský a instalační manuál

e Utility Report Vyjadřování k existenci sítí

Základní ovládání aplikace

Plně hybridní videorekordér

Strategický plán rozvoje města Kopřivnice

Masarykova univerzita. Fakulta informatiky. Evoluce pohybu

B a k a l ářská práce

1 Filozofie knihy jízd

Kurs A 01 autobus Škoda 706 RTO, DPmP a.s. 28

Návod na instalaci a používání obslužného programu dataloggeru DS100

Zadání projektů z BPC2 pro letní semestr 2007/2008

Popis generátoru aplikačních šablon pro přenosné terminály CipherLab CPT-8000 / 8300

Návod k obsluze. Infračervený dálkový ovladač. memo RC.1 memo RC.2

CLAVIUS REKS: JAK NA TO

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT EU-OVK-VZ-III/2-ZÁ-201

Rozptyl. Pozn.: rozptyl je nezávislý na posunu hustoty pravděpodobnosti na ose x, protože Var(X) mi určuje jen šířku rozdělení.

Připravte se na svůj velký příjezd

z pohledu Zdravotnické záchranné služby hlavního města Prahy

Návod k obsluze teplotního a univerzálního spínače TS-L2D

Ing. Josef Slabý Arnolec Jamné u Jihlavy BOBROVÁ BEZPEČNÉ CESTY DO ŠKOLY

CITROËN C5 ART/NAV - X4 - CS - 51/3 - ADD

2011 Garmin Ltd. nebo dceřiné společnosti Všechna práva vyhrazena. Bez předchozího souhlasu společnosti Garmin nesmí být žádná část tohoto manuálu

Ford Tourneo Connect FlexiRamp

VZORY PÍSEMNÝCH ROZKAZŮ SŽDC POUŽÍVANÝCH NA POHRANIČNÍ TRATI A V POHRANIČNÍCH STANICÍCH LANŽHOT (ČR) KÚTY (SR) Všeobecný rozkaz

POKOJOVÁ JEDNOTKA S MODULAČNÍM PROGRAMOVATELNÝM REGULÁTOREM

ukázka 4/2.1.3 VYHLÁŠKA Č. 478/2000 SB., KTEROU SE PROVÁDÍ ZÁKON O SILNIČNÍ DOPRAVĚ

Uživatelský Návod HUD 01

DIGITÁLNÍ TLOUŠŤKOMĚR

Mobilní telefon s funkcí určení polohy a možností vzdálené správy a ovládání.

Kompletní správa a zabezpečení vozového parku

Program pro flexibilní tvorbu evidencí. VIKLAN - Evidence. Uživatelská příručka. pro seznámení se základními možnostmi programu

Zápis ze dne

Operační systémy 2: Zápočtové úkoly

PROČ JET JEN Z MÍSTA A DO B

Rozsáhlý test odhalil, že jednoduchými opatřeními lze snížit spotřebu paliva až o 15 %

Digitální učební materiál

Na základě Business Targets autora Simona Greenalla, vydaných nakladatelstvím Macmillan Heinemann English Language Teaching (Oxford).

Adash. Provozní tvary kmitů ver.5.00

POKOJOVÁ JEDNOTKA S MODULAČNÍM PROGRAMOVATELNÝM REGULÁTOREM

Zavádění inovativních metod a výukových materiálů do přírodovědných předmětů na Gymnáziu v Krnově

PROBLÉM ČTYŘ BAREV. Lze obarvit jakoukoliv mapu v rovině čtyřmi barvami tak, aby žádné dvě sousedící oblasti neměly stejnou barvu?

Změny ve verzi o proti verzi

DUM 13 téma: Práce se základními příkazy

Newsletter Knihy jízd. Červen / Upozornění na překročení rychlosti v oblasti

Návod k obsluze. řada etrex. osobní navigátor. (Na obrázku je model etrex Vista HCx)

Zadání projektů k modulu: 1. Základy integrální logistiky

Anotace. Dynamické programování, diskrétní simulace.

Dětské GPS hodinky (SeTracker)

[ ] Sudé a liché funkce. Předpoklady: 2203, 2402

Obr. 1 - Seznam smluv

Co je součástí balení a Váš TomTom ONE XL HDT D E F G H

Normy a kvalitativní hodnocení běhů mimo dráhu

MONITOROVACÍ SYSTÉM. Návod na obsluhu webového rozhraní. Truck Data Technology, s.r.o oficiální verze

Route 66 podrobný manuál

1. Metody měření parametrů trolejového vedení

Obrazovka pro řízení 32. Dokonalé navádění jízdními pruhy 35. Změna trasy 37. Zobrazit mapu 42. Opravy map 46. Zvuky a hlasy 50.

Semestrální projekt. Předmět: Programování v jazyce C. Zadání: Operace s maticemi. Uživatelský manuál. ver. 1.0

Obsah. Začínáme Viditelné součásti programu Simulace. WOP Menu CNC řízení. CNC Programy. Exec. Grafické okno. Strojní panel. 3D Model.

Uživatelská příručka Navigační software. Blaupunkt BikePilot. Česky

Semestrální práce KIV/PC Řešení kolizí frekvencí sítě vysílačů Zdeněk Bečvář A14B0466P 10. ledna 2016

Střední škola informačních technologií a sociální péče, Brno, Purkyňova 97. Vybrané části Excelu. Ing. Petr Adamec

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ FAKULTA INFORMAČNÍCH TECHNOLOGIÍ. Uživatelská příručka k programu FloodFilling Art

Příklad Nákup-Prodej a vyrovnání položek zboží

Pohyb tělesa (5. část)

20 milionů elektromobilů v roce 2020 Vzdělání a nácvik pro

Kmenové údaje. Všeobecně

Instalační a servisní příručka. Remeha i Sense

Transkript:

Pivovar Chmelokvas KIV/PT Semestrální práce student: Petr Neužil studijní číslo: P13B0377P email: syberij@students.zcu.cz datum: 15.12.2014

Standardní zadání semestrální práce pro PT 2014/2015 Zadání je určeno pro dva studenty. Práce zahrnuje dvě dílčí části - vytvoření funkčního programu diskrétní simulace a napsání strukturované dokumentace. Zadání: Pivovar "Chmelokvas" zásobuje pivem území o rozloze 500x500km a nachází se přibližně v centrální části. Pivovar je schopen vyprodukovat maximálně 7000hl piva za den. Na území se nachází celkem 4000 hospod, které musí být neustále zásobeny pěnivým mokem. 5% hospod točí pivo z tanku, ostatní používají sudové pivo. Vzdálenost mezi hospodami je minimálně 2km. Z pivovaru je pivo nejdříve rozvezeno kamiony do 8 překladišť, které pak distribuují pivo nákladními vozy do jednotlivých hospod. Hospody s tankovým pivem jsou zásobovány malými cisternami přímo z pivovaru. Každé překladiště zásobuje území o minimální rozloze 80x80km a vzdálenost mezi překladišti je minimálně 100km. Žádné překladiště se nenachází v centrální oblasti. Z každého překladiště vede přímá cesta do 50 hospod. Každá hospoda je spojena silnicí s 15 nejbližšími hospodami. Kamiony jezdí průměrnou cestovní rychlostí 90km/h a jsou schopny pojmout maximálně 100 sudů. Cisterny jsou schopny přepravit 50hl piva a jezdí průměrnou rychlostí 60km/h. Každé překladiště je schopno pojmout maximálně 2000 sudů. Každý nákladní vůz je schopen pojmout 30 sudů. Průměrná rychlost nákladního vozu je 70km/h. Hospoda spotřebuje 1 až 6 sudů piva denně, pokud využívá sudové pivo respektive 1-6hl piva, pokud točí pivo z tanku (viz pravděpodobnosti uvedené níže). Naložení/vyložení jednoho sudu trvá 5 minut a načerpání/přečerpání jednoho hektolitru piva 2 minuty. Pivo je nutné dovézt do 24 hodin od doby objednávky. Doba objednávky se řídí normálním rozdělením pravděpodobnosti. Nejvíce objednávek chodí kolem 10h dopolední. Objednávky lze podávat v době od 8:00 do 16:00. Rozvoz piva probíhá ve stejném čase jako příjem objednávek. Nákladní automobily samozřejmě svážejí prázdné sudy zpět do překladišť a z nich jsou sváženy kamiony zpět do pivovaru na naplnění. Počet kamionů, nákladních aut a cisteren není omezen. Cílem je simulovat a řídit provoz zásobování hospod tak, aby každé hospodě dorazilo objednané pivo do 24h od objednání. Vzhledem k nenasytnému obyvatelstvu a cenám zdrojů je třeba, aby náklady na převoz piva byly minimalizovány. Vytvoření funkčního programu: Připravte rozumná vstupní data (hospody, silnice, překladiště, pivovar, vzdálenosti) a uložte je ve vhodném formátu (10b.), zvolte a implementujte vhodné datové struktury pro reprezentaci vstupních dat, důsledně zvažujte paměťovou náročnost zvolených struktur a časovou náročnost algoritmů pro následovné výpočty (10b.), proveďte základní simulaci pro první den, vypište, která hospoda je zásobována z kterého překladiště, v jakém čase a množství, průběh simulace (všechny důležité hodnoty) zapisujte na obrazovku a do souboru (10 b.). Výše popsaná část bude váš minimální výstup při kontrolním cvičení cca v polovině semestru.

Vytvořte prostředí pro snadnou obsluhu programu (menu, ošetření vstupů) - nemusí být grafické, umožněte manuální zadání objednávky (5b.) umožněte sledování (za běhu simulace) aktuálního stavu zásobování hospody a sledování aktuálního stavu přepravního prostředku nákladního vozu, kamionu či cisterny (5b.), proveďte simulaci pro 7 dnů a vygenerujte do souborů následující statistiky (uložte je do vhodných souborů 10b.): o přehled jednotlivých hospod s uvedením zavezeného objemu/množství piva rozepsané do jednotlivých dnů, v rámci dnů pak rozepsané dle jednotlivých nákladních vozů či cisteren, které na místo dorazily. Na konci uveďte souhrnná čísla za celou dobu simulace a za každé tři dny simulace o přehled jednotlivých nákladních vozů, kamionů a cisteren s uvedením jejich jednotlivých cest, zavezeného piva a svezených prázdných sudů, na konci uveďte souhrnná čísla za celou simulaci vytvořte dokumentační komentáře ve zdrojovém textu programu a vygenerujte programovou dokumentaci (Javadoc) (10b.), vytvořte kvalitní dále rozšiřitelný kód pro kontrolu použijte softwarový nástroj PMD (více na http://www.kiv.zcu.cz/~herout/pruzkumy/pmd/pmd.html), soubor s pravidly pdmrules.xml najdete na portálu v podmenu Samostatná práce (10b.) o mínus 1 bod za vážnější chybu, při 6 a více chybách nutno opravit, o mínus 2 body za 10 a více drobných chyb. V rámci dokumentace: připojte zadání (1b.), popište analýzu problému (6b.), popište návrh programu (např. jednoduchý UML diagram) (6b.), vytvořte uživatelskou dokumentaci (5b.), zhodnoťte celou práci, vytvořte závěr (2b.). Poznámky: Příslušná data (hospody, silnice, překladiště, pivovar) si vygenerujte. Simulaci rozvozu piva simulujte po dobu sedmi dnů (7*24 hod) po hodinách. Počet vozidel sice není omezen, vozidla ale samovolně nezanikají. Vozidla se po vyložení celého nákladu vrací nejkratší cestou zpět do depa a po vyložení svezených sudů jsou připravena na další jízdu. Začínáte v čase 0:00 prvního dne, předpokládejte, že v tomto čase je na každém překladišti připraveno 2000 sudů k dalšímu rozvozu. Pravděpodobnostní rozdělení počtu spotřebovaných sudů/hl na den: 1 25% 2 25% 3 20% 4 15% 5 10% 6 5%

Analýza problému Úkolem je vytvořit program, který umožní simulování provozu pivovaru. Konkrétně zásobování jednotlivých hospod na vygenerované mapě. Nejprve je třeba vytvořit mapu hospod a překladišť podle zadaných podmínek - omezení minimálních vzdáleností mezi hospodami a také překladišti. V tomto programu je vše řešené pomocí pole 500x500, což je velikost celé mapy. Při každém přidání hospody se v okruhu 2km zaplní místa tak, aby nebylo možné přidat jinou hospodu. Jinak probíhá generování umístění nové hospody náhodně. Překladiště a pivovar jsou umístěny ručně tak, aby splňovali podmínky zadání. Dále je nutné vytvořit cesty a spojit každou hospodu s 15 nejbližšími. K nalezení 15 nejbližších sousedů je nutné nejprve určit vzdálenosti a poté najít 15 nejnižších hodnot. Toto je řešené pomocí grafu. Graf je procházen pomocí Dijkstrova algoritmu z důvodu minimalizování času generování. Pokud bychom použili například obyčejné prohledávání do šířky, časová náročnost by se u tak velkého grafu razantně zvedla. Po vytvoření grafu cest si určíme vzdálenosti mezi všemi budovami na mapě. Znovu je použit Dijkstrův algoritmus z důvodu menší časové náročnosti. Na konci celého generování vznikne více souborů, programu však ke správné funkčnosti stačí pouze dva uzemi.txt a vzdalenosti.txt. Z názvů je patrné, že první zmiňovaný obsahuje informace o všech budovách na mapě. Druhý soubor obsahuje vzdálenosti mezi všemi budovami. Oba tyto soubory jsou načteny na začátku programu. Prvním problémem v samotné simulaci chodu je generování objednávek. Pro tuto činnost je použito dvojrozměrné pole objednávek, kdy první souřadnice určuje den objednávky a druhá číslo objednávky. Funkce zamichejpole v třídě Aplikace zajišťuje, že objednávky přijdou každý den v jiném pořadí. Dalším problémem je vyřízení objednávky. Program určí potenciální vzdálenosti již existujících vozidel a pokud ani jedno z nich nestihne do 16 hodin dorazit na místo určení, vytvoří se nové vozidlo v nejbližším překladišti/pivovaru. Naloží maximální počet sudů, co může a vydá se na cestu. Ke zbývající vzdálenosti vozidla se připočte i čas za nakládání/vykládání/přečerpání. Objednávka je v tu dobu považována za vyřízenou. Pokud se nepodaří vyslat žádné vozidlo, objednávka toho dne se nastaví jako vyřízená, ale další den se připočte k nové objednávce staré množství. Tím je zajištěno doručení každé objednávky. Pokud se v hospodě nachází prázdné sudy, nákladní auto je naloží a odveze zpět na překladiště. Odtud jsou vozeny kamiony zpět do pivovaru, pokud se zde nějaký kamion nachází. Dalším problémem je zajištění toho, aby se vozidla po 16. hodině nebo pokud jsou prázdná vracela do překladiště/pivovaru. Vše je řešené jednoduchou podmínkou v metodě dostep třídy Aplikace pro jednotlivé typy vozidel. Posledním problémem bylo generování statistik. Bylo nutné vytvořit nové pole třídy Cesty a zde zaznamenávat všechny informace o jednotlivých cestách všech vozidel. Zejména vykládání prázdných sudů, které by jinak bylo nedohledatelné vzhledem k návrhu programu a nepřítomnosti sudů jako objektů. Celý program je řešen hlavně ve třídě aplikace, která tak spojuje ostatní třídy. Všechny posuny jsou řešené v metodě dostep, která obstarává jak posun času, tak pohyb vozidel. Zároveň je zde každý nový den tzv zamícháno pole objednávek.

UML Diagram

Uživatelská dokumentace Program rovnou při spuštění začne v čase 0:00 prvního dne a zobrazí tyto základní informace. Pokud zadáme h nebo n, zobrazí se seznam se všemi možnými příkazy. Pro krok v programu stačí stisknout ENTER či zadat jakýkoliv řetězec, kromě zmíněných v nápovědě. Jednotlivé příkazy: Příkaz o Pokud nejsme v čase 8-16 zobrazí se hláška, že nelze zadávat objednávky. V tomto případě lze jen zjišťovat informace o již zadaných objednávkách tohoto dne, pokud zadáme platné ID hospody. Výsledkem je buď hláška, že hospoda nemá objednáno Nebo požadované informace Pokud zadáme o v době, kdy lze objednávat, tak může dojít ke dvěma situacím. Hospoda již má objednáno, v tom případě dostaneme informace o její objednávce: Nebo nám je nabídnuto zadat ruční objednávku. Pokud zadáme číslo, dojde k objednávce, při zadání čehokoliv jiného dojde ke STORNOvání zadávání a k objednávce nedojde Došlo k objednávce: Nedošlo k objednávce:

Příkazy b a v Při zadání jednoho z těchto příkazů se nás program zeptá na ID budovy nebo vozidla, které chceme vypsat, možné výstupy jsou buď informace o budově/vozidle (v případě zadání existujícího ID) nebo hláška o špatném vstupu (v případě zadání neexistujícího ID nebo čehokoliv jiného) Při dokončení simulace začne generování výstupu. Pokud je proměnná Pocet_hospod nastavena na velké číslo je třeba mít při generování trpělivost a počkat na oznámení KONEC SIMULACE Konečný výstup lze nalézt v souborech statistika_hospod*datum A CAS*.csv statistika_vozidel*datum A CAS*.csv Jako oddělovač je použit znak ^ Hodnocení a závěr Podařilo se mi splnit hlavní úkol, i přesto, že kód programu je velice nepřehledný a díky tomu, že se program snaží o doručení všech objednávek ještě ten samý den, je generováno větší množství aut, než by bylo potřeba. V programu je elegantně vyřešené hledání cesty, kdy místo toho, aby vozidlo pokaždé hledalo podle cest nejkratší cestu, už ji dopředu zná a tím se výrazně snižuje časová náročnost při simulaci. Prostor pro zlepšení je každopádně ve zpřehlednění kódu, předělání návrhu programu tak, aby se více užívalo metod jiných tříd, než třídy Aplikace. Dále by bylo možné přesouvat objednávky na další den a tím eliminovat některá vozidla, která jedou jen jednou během simulace, ale vzhledem k tomu, že takových vozidel je velmi malý počet funkčnost je zcela zachována. A v neposlední řadě by bylo vhodné mít generátor i aplikaci v jednom balíku. Celkově se dá říct, že se podařilo splnit zadání semestrální práce.