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



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

Algoritmus pro hledání nejkratší cesty orientovaným grafem

Obsah prezentace. Základní pojmy v teorii o grafech Úlohy a prohledávání grafů Hledání nejkratších cest

Výhody a nevýhody jednotlivých reprezentací jsou shrnuty na konci kapitoly.

Algoritmy na ohodnoceném grafu

Úvod do teorie grafů

Semestrální úloha 1 z předmětu Programovací jazyk C. Textový merge. Student:

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

Semestrální práce z KIV/PC. Kolja Matuševský (A14B0310P)

Grafové algoritmy. Programovací techniky

GRAFY A GRAFOVÉ ALGORITMY

Obsah. 1.1 Práce se záznamy Stránka Dnes Kontakt se zákazníkem... 5

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

Základy informatiky. Teorie grafů. Zpracoval: Pavel Děrgel Úprava: Daniela Szturcová

LOGI. Instalační balíček 1. CID International, a.s. Informační systém pro správu logistických skladů

PROGRAMOVÁNÍ. Cílem předmětu Programování je seznámit posluchače se způsoby, jak algoritmizovat základní programátorské techniky.

VISUAL BASIC. Přehled témat

alkoholu v organismu, jízdu výtahů s lidmi...).

Algoritmizace prostorových úloh

Aplikace objednávání svozů

Cílem seminární práce je aplikace teoretických znalostí z přednášky na konkrétní úlohy. Podstatu algoritmu totiž

ORGANIZACE A ŘÍZENÍ MHD cvičení z předmětu 12OMHD LS 2014/2015

Přiřazovací problém. Přednáška č. 7

Semestrální práce A. Simulace provozu montážní linky televizních přijímačů

SIMULTRAIN - UŽIVATELSKÝ MANUÁL

Cvičení MI-PRC I. Šimeček

Zdůvodněte, proč funkce n lg(n) roste alespoň stejně rychle nebo rychleji než než funkce lg(n!). Symbolem lg značíme logaritmus o základu 2.

Obecná informatika. Matematicko-fyzikální fakulta Univerzity Karlovy v Praze. Podzim 2012

VOZIDLA. Uživatelská příručka SeeMe - Ecofleet. Provozovatel GPS služeb: pobočka ZNOJMO pobočka JIHLAVA pobočka DOMAŽLICE pobočka PRAHA Identifikace

Příklady ke cvičením. Modelování produkčních a logistických systémů

Graf. Uzly Lokality, servery Osoby fyzické i právní Informatické objekty... atd. Hrany Cesty, propojení Vztahy Informatické závislosti... atd.

Zadání soutěžních úloh

Zadání semestrálního projektu Algoritmy II. letní semestr 2017/2018

HEURISTICKÉ ALGORITMY PRO ŘEŠENÍ ÚLOH OBCHODNÍHO CESTUJÍCÍHO

Nepravidelná pracovní doba

Vzdálenost uzlů v neorientovaném grafu

Grafové algoritmy. Programovací techniky

Modely teorie grafů, min.kostra, max.tok, CPM, MPM, PERT

TGH06 - Hledání nejkratší cesty

Programování II. Návrh programu I 2018/19

VYUŽITÍ NĚKTERÝCH METOD TEORIE GRAFŮ PŘI ŘEŠENÍ DOPRAVNÍCH PROBLÉMŮ

Projekt: Přístupový terminál

Pravidla pro získání zápočtu vytvořením individuální semestrální práce mimo cvičení

07 Základní pojmy teorie grafů

Institut teoretické informatiky (ITI) na FI MU

VLASTOSTI DRUŽICOVÉHO NAVIGAČNÍHO SYSTÉMU GPS-NAVSTAR

Registrační číslo Hodnocení - část A Hodnocení - část B Hodnocení - část A+B

VYHLEDÁVÁNÍ NA KLÍČOVÉ SLOVO (v názvu nebo popisu činnosti)

Zápočtová práce STATISTIKA I

Hlavní okno aplikace

MANUÁL K AGENDĚ SPEDICE PŘÍRUČKA PRO UŽIVATELE

Manuál PVU zadavatel Platnost pro elektronický nástroj X-EN verze 4 a novější

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

Algoritmizace diskrétních. Ing. Michal Dorda, Ph.D.

Efektivní hledání nejkratších cest v sítích hromadné přepravy osob

Obvod střídavého proudu s kapacitou

Svolávací systém Uživatelský manuál

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ v Praze Ú12110 Ústav přístrojové a řídící techniky

Středoškolská technika Encryption Protection System

Uživatelský manuál pro aplikaci Panda (pro rodiče)

OPTIMALIZAČNÍ ÚLOHY. Modelový příklad problém obchodního cestujícího:

VYSOKÁ ŠKOLA BÁŇSKÁ TECHNICKÁ UNIVERZITA OSTRAVA

Cvičná bakalářská zkouška, 1. varianta

CLARKEOVA-WRIGHTOVA METODA ŘEŠENÍ ÚLOHY VRP

zejména Dijkstrův algoritmus pro hledání minimální cesty a hladový algoritmus pro hledání minimální kostry.

IB111 Úvod do programování skrze Python

Obsah čísla Redakce Adresa redakce: Redakční

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Elektronické poukázky

Jan Březina. 7. března 2017

Matematické modelování 4EK201

Zadání druhého zápočtového projektu Základy algoritmizace, 2005

KMA Písemná část přijímací zkoušky - MFS 2o16

Metody síťové analýzy

TGH05 - aplikace DFS, průchod do šířky

SYSTÉM ŘÍZENÍ PROVOZU NABÍJECÍ STANICE DEJ VEZMI. SMART systém pro efektivní řízení a monitorování provozu nabíjecí stanice. 24 V / 345 Ah 2 6 SKUPINA

TGH05 - aplikace DFS, průchod do šířky

Prioritní fronta, halda

Průzkumník IS DP. Návod k obsluze informačního systému o datových prvcích (IS DP) vypracovala společnost ASD Software, s. r. o.

Oborové číslo Hodnocení - část A Hodnocení - část B Hodnocení - část A+B

Webové stránky. 16. Obrázky na webových stránkách, optimalizace GIF. Datum vytvoření: str ánk y. Vytvořil: Petr Lerch.

Pokyny pro obsluhu programu. EZZ01 File reader 1.3

Optimalizace. Obsah přednášky. DÚ LP - Okružní problém. Lineární optimalizace. DÚ LP - Okružní problém. DÚ LP - Okružní problém

B3B33ALP - Algoritmy a programování - Zkouška z předmětu B3B33ALP. Marek Boháč bohacm11

TEORIE GRAFŮ TEORIE GRAFŮ 1

Úvod do mobilní robotiky AIL028

1. Převeďte dané číslo do dvojkové, osmičkové a šestnáctkové soustavy: a) b)

ORGANIZACE A ŘÍZENÍ MHD cvičení z předmětu 12OMHD LS 2014/2015

Základy programování (IZP)

Vícekanálové čekací systémy

Úvod do zpracování signálů

Zpracování náhodného vektoru. Ing. Michal Dorda, Ph.D.

B3B33ALP - Algoritmy a programování - Zkouška z předmětu B3B33ALP. Marek Boháč bohacm11

Oborové číslo Hodnocení - část A Hodnocení - část B Hodnocení - část A+B

Poslední nenulová číslice faktoriálu

Základy informatiky. 07 Teorie grafů. Kačmařík/Szturcová/Děrgel/Rapant

Návod pro práci s aplikací

Teorie grafů BR Solutions - Orličky Píta (Orličky 2010) Teorie grafů / 66

Pracovní text a úkoly ke cvičením MF002

MHD v mobilu. Instalace a spuštění. Co to umí

Transkript:

Dokumentace k semestrální práci z předmětu PT Vypracovali: Eva Turnerová (A08B0176P) Martin Dlouhý (A08B0268P)

Zadání Zadání: Firma Mistr Paleta, syn a vnuci rozváží palety po celé České republice. Počet odběrných míst v závislosti na ekonomickém cyklu kolísá mezi hodnotou 500 a 2000 a jedná se o větší sídla v ČR. Velikost sídla je důležitá vzhledem k množství palet, které může sídlo odebírat. Palety jsou z mateřské firmy rozváženy nákladními auty, každé auto může převézt maximálně šest palet. Firma si vzhledem k ekonomickému vývoji velmi hlídá dopravní náklady a zároveň čas, za který dokáže auto rozvést všechny palety a vrátit se zpět do podniku, používá tedy všechny využitelné dopravní cesty (z každého sídla vede minimálně 200 různých cest do jiných sídel). Při evidování cest jsou tedy důležité dvě hodnoty: čas, za jak dlouho dojede nákladní auto z jednoho sídla do druhého, a zároveň kilometrická vzdálenost sídel cestou spojených (odpovídá nákladům na přepravu). Není předem jasné, jestli jsou pro konkrétní náklad důležitější časové nebo přepravní náklady, jejich váha se může pro každý vyslaný náklad měnit. Vykládání jedné palety trvá přibližně 30 minut, každé sídlo může přijmout jednu až šest palet denně dle své velikosti. Sídla jsou schopná náklad s paletami přijímat obecně pouze v čase mezi osmou hodinou ranní a osmou hodinou večerní, přičemž platí, že v době oběda; tj. mezi jedenáctou a druhou hodinou odpolední; je schopnost sídel přijímat palety minimální. Dále platí, že pro každé sídlo je definován čas, kdy je schopné náklad s paletami přijmout; tento čas je souvislá denní doba o délce maximálně 90 minut (vykládací okénko), která může být na žádost dodavatele posunuta maximálně o půl hodiny. Základním požadavkem firmy Mistr Paleta, syn a vnuci je optimalizovat rozvoz palet tak, aby byly dodrženy časy vykládky a zároveň byly respektovány ve zvoleném poměru minimální časové a kilometrické náklady na dopravu. Vytvoření funkčního programu: 1) Připravte rozumná vstupní data (sídla cesty, mezi nimi a ohodnocení) a uložte je ve vhodném formátu. 2) Zvolte a implementujte vhodnou datovou strukturu (y) pro reprezentaci vstupních dat, důsledně uvažujte paměťovou náročnost algoritmů pro následné vyhledávání optimálních cest 3) Zvolte vhodné algoritmy a proveďte následující simulaci (respektujte základní požadavek optimalizace rozvozu). Průběh simulace zapisujte na obrazovku a do souboru. Simulaci umožněte kdykoliv přerušit. 4) Vytvořte prostředí pro snadnou obsluhu programu (nemusí být grafické), ošetřete vstupy, umožněte zadání požadavku na rozvoz z klávesnice. 5) Umožněte sledování aktuální polohy nákladního vozu a aktuálního stavu obsluhy daného sídla. 6) Vypracujte statistiky rozvozu palet za jednotlivé dny, vhodně je uložte do souboru. 7) Vytvořte dokumentační komentáře ve zdrojovém textu a vygenerujte programovou dokumentaci (javadoc). 8) Vytvořte kvalitní, dále rozšiřitelný kód.

V rámci dokumentace: 1) Připojte zadání 2) Popište analýzu systému 3) Popište návrh programu (jednoduchý UML diagram) 4) Vytvořte uživatelskou dokumentaci 5) Zhodnoťte celou práci, vyhodnoťte práci.

Analýza 1) Reprezentace měst a jejich spojení se sousedy Nejdříve jsme se museli nějak vymyslet kam uložit města a čím je reprezentovat. Nakonec jsme se rozhodli, že města uložíme do datové struktury, ve které budeme mít uloženo: počet objednaných palet, kdy chce město doručit objednávku a sousedi tohoto města. Když jsme toto vytvořily, nastal problém číslo dvě. Jak nejlépe reprezentovat graf. Nakonec jsme se rozhodli pro matici sousednosti, kde velikost matice je udána počtem měst a na jednotlivých indexech matice je buď 0 anebo číslo větší než nula reprezentující vzdálenost. Dále máme ještě jednu matici, která je skoro stejná jako naše matice sousednosti, ale jsou v ní uloženy časy mezi jednotlivými městy. 2) Průchod matice sousednosti Po vytvoření dvou matic, které nám reprezentovaly cestu mezi městy (graf). Jsme se rozhodovaly, jaký algoritmus bude nejlepší použít pro procházení matic. Nakonec jsme se rozhodly pro Dijkstrův algoritmus a to ze dvou důvodů. Prvním důvodem byla časová náročnost, která je menší než u Floyd- Warshallova algoritmu (O( ) ). Dijkstrův algoritmus má časovou náročnost O( ). A druhý důvod je předchozí známost toho algoritmu. Velká nevýhoda toho algoritmu ale je, že pokud hledáme nejkratší cestu v grafu pro jednotlivá auta, musíme opakovaně procházet matici. 3) Simulace, přidělení objednávek a naplánování trasy Jedním z nejtěžších bodů vůbec byla samotná simulace a objednávky během dne. Simulace měla být diskrétní, což se nám nakonec podařilo. 4asový interval jsme po domluvě nadiskretizovaly po 30 minutách, což nám přišlo optimální z hlediska výpisů a informací o objednávkách a vykládkách aut. Po té, co si město objedná určitý počet palet ( od 1 do 6), se pokoušíme zjistit, zda tuto objednávku splníme do 20:00 pokud ne, zamítáme ji. Jednotlivým autům přiřazujeme objednávky než vyjedou. Trasu jim přiřazujeme do pole pomocí Dijkstrova algoritmu. Města, které mají objednáno a jsou přiřazená nějakým autům, obarvíme, aby nedošlo k případnému dovozu jedné objednávky více auty. 4) Objednávky měst během dne Nejdříve jsme si musely navrhnout křivku, která by reprezentovala pravděpodobnost přijetí objednávek během dne. Po té co jsme ji navrhnuly, vyvstal další problém. A to jak vyřešit samotné objednávky během dne. Vycházel jsem z diskrétní funkce )=300.log 1 ), kde z je náhodně vygenerované číslo. Pokud toto číslo, překročí hodnotu 900 (což se může klidně stát) nastaví se F (x) na 900 (střední doba mezi jednotlivými objednávkami). Z pomocí této funkce a naší navržené křivky jsme pak mohly zjistit, kdy chce dané město doručit objednávku.

5) Rozdání objednávek Určitému autu přiřadíme objednávku a zjišťujeme, pokud je auto plné může vyjet. Pokud auto pojme ještě nějaké palety hledáme v seznamu měst, které si doposud objednaly. Posuzujeme, zda-li auto další objednávku ještě stihne a jestli objednávku ještě stihne splnit do dané doby, kterou si určí město. Auta ukládáme do spojového seznamu a pro každé auto je vytvořena datová struktura, do které se ukládají informace o autě ( stav, přes co jede, kolik palet veze, kam jede ) 6) Simulační kalendář Protože výstupem souboru je chronologicky seřazená posloupnost informací o autech co se v daném okamžiku děje. Začátek simulace je v 6 hodin ráno, kdy si určitý počet měst objedná palety. Z důvodu diskrétní simulace se každá provedená akce provádí po půl hodinách. Každé auto, které v daný okamžik něco dělá, se vypisuje do souboru. Simulace končí právě, když se všechna města dostaví zpět do startu.

Závěr Náš program měl simulovat rozvoz palet po určité síti měst, která se buďto vygeneruje sama anebo je zadána ve vstupním souboru. Celá simulace je diskrétní, což znamená, že úkony jsou provedeny v časových intervalech během dne. Problém bylo vymyslet simulaci a rozdělání objednávek. Rozdělení objednávek nám při první kontrole semestrální práce nefungovalo jak mělo ale simulace fungovala. Nyní už funguje tak, jak má.