Aplikace pro plánování rozvozu zboží Diplomová práce Aplikace pro plánování rozvozu zboží Vedoucí práce: ing Jan Růžička, Ph. D. Vypracoval: Petr Fuks Studijní obor: geoinformatika Studijní skupina: G562, 5.ročník Školní rok: 2004/2005
Úkoly Nastudujte algoritmy prohledávání sítě Použijte poznatky z teorie grafů Připravte data a aplikaci (využijte stávající) pro automatizovaný import do struktur vhodných pro vyhledávání v silniční síti Vytvořte aplikaci, která na základě udání polohy zákazníka (zákazníků) navrhne trasu rozvozu zboží (s možnou nakládkou v meziskladech a pobočkách firmy).
Teorie grafů Graf je uspořádaná dvojice G = (V,E) kde V je množina vrcholů a E je množina hran – množina vybraných dvouprvkových podmnožin množiny vrcholů Silniční síť souvislý,orientovaný, ohodnocený multigraf Rozsah silniční sítě ČR – graf : 22126 vrcholů a 30490 hran ( viz. silniční databanka ŘSD ze dne 1.7.2004)
Algoritmy pro hledání nejkratší cesty Problémem hledání cesty (pathfinding) se rozumí úloha nalezení podle daných kritérií nejvhodnější cesty z místa A do místa B v mapě. Příklady algoritmů Prohledávání do šířky Prohledávání do hloubky Dijkstrův algoritmus Prohledávání čistě podle heuristiky Dijkstrův algoritmus s heuristikou
Problém obchodního cestujícího Je dáno m měst. Některá města jsou propojena silnicemi, délka silnic je známa. Úkolem obchodního cestujícího je navštívit všechna města a vrátit se do výchozího města. Nalezněte takovou cestu (permutaci měst), aby délka uražené cesty byla co nejmenší. Příklady řešení Nalezení nejkratší permutace ze všech permutací – při větším počtu měst výpočetně náročné Neuronová síť (Hopfieldova síť) Genetické algoritmy – napodobení systému biologické evoluce
Princip hledání cesty 7 O3 5 Z1 Start 4 6 O2 Z3 6 5 3 4 5 Z2 O1 5 O4
Princip hledání cesty vypočet nejkratších cest 15 Z1 12 Start 15 9 Z3 12 9 Z2
Princip hledání cesty problém obchodního cestujícího 4. Z1 3. Start Z3 1. 2. Z2
Princip hledání cesty vytvoření cesty v grafu silniční sítě Z1 O3 Start O2 Z3 Z2 O1 O4
Data Požadavky vektorová mapa silniční sítě ČR dostupnost dat Možné zdroje dat ArcČR 500 T-mapy Silniční síť ČR 1: 50 000 DMÚ 25 silniční databanka ŘSD - ZDARMA
Graf (projekt JGraphT) JGraphT - Open source projekt implementující objekty a algoritmy Teorie grafů knihovna JGraphT optimalizována pro vytváření datových a výpočetních modelů obsahuje obecně popsané API funkce které lze dále rozšiřovat, modifikovat a specializovat je navržena pro práci s rozsáhlým grafem (v řádu milionů vrcholů a hran)
Vytvoření grafu Na základě atributů vrstvy úseků a tříd projektu JGraphT byl vytovořen graf silniční sítě Úsek silniční sítě Hrana grafu 1242 * 2,5 1242 m B Silnice II. třídy B A A 5046 * 1,5 5046 m D Silnice I. třídy D C C 5046 * 1,5
Vývoj GUI aplikace J2SE 1.4.2 JAVA – Swing – neobsahuje třídy pro práce s geodaty Projekt OpenMap – pro vizualizaci nutná transformace dat ze souřadnicového systému JTSK do WGS 84 Projekt GeoTools lite – obsahuje základní nastroje pro vizualizaci dat zaměřené na publikaci dat webu JUMP – open source aplikace pro práci s geodaty, kterou lze jednoduše rozšiřovat pomocí pluginů
Projekt JUMP Open source projekt jež vyvíjí snadno rozšiřitelné API funkce a grafického rozhraní pro prohlížení a manipulaci s prostorovými daty Je rozdělen na tři samostatné projekty: The JUMP Unified Mapping Platform (JUMP) The JTS Topology Suite (JTS) The JCS Conflation Suite (JSC)
Tvorba plugin aplikace JUMP Seznámení se s možnostmi projektu JUMP Nastudování dokumentace Vyzkoušení tvorby jednoduchých pluginů Přepsání dosavadní aplikace do podoby pluginu
Vývoj pluginu - Načtení dat K načtení vstupních dat je využito existujícího pluginu LoadDataSet. Layer úseky ID Feature Collection Length Orienation Quality
Vývoj pluginu – nalezení nejkratší cesty Vypočtení nejkratší spojení mezi zastávkami – využití implemtace Dijkstrova algoritmu z projektu JGraphT Nalezení nejkratší permutace – úloha obchodního cestujícho Rekonstrukce nalezené cesty – převedení nalezné cesty grafu na pouslopnost geoprvků reprezentující cestu v silniční síti
Vývoj Pluginu - GUI
Vývoj Pluginu - GUI
Použité nástroje a technoligie Programovací jazyk – Java J2SE v. 1.4.2 Vývojové prostředí – Borland JBuilder X Operační systém Windows/Linux (Fedora 2)
Literatura: http://www.rsd.cz http://www.tmapy.cz http://www.arcdata.cz http://www.cs.vsb.cz/ochodkova http://sourceforge.net/projects/geotools/ http://pathlib.hildebrand.cz/doc/Referat/pathref.html http://www.sys-con.com/story/?storyid=36224&DE=1 http://www.aic.nrl.navy.mil/galist/src/ http://sickboy.hyperlink.cz/ctufee/paa/tsp/ascii/tsp.html http://java.sun.com/j2se/1.4.2/docs/api/ http://www.cs.vsb.cz/hlineny/ http://openmap.bbn.com/ http://www.jump-project.org/ http://jgap.sourceforge.net/
Děkuji za pozornost