ToureNPlaner is a easily extendable route and tour planning system using OpenStreetMap data and state of the art algorithms.
Developed at the FMI at the University of Stuttgart
Web Client
The Web Client is written using Javascript, HTML5 and CSS and tries to use the newest web technologies available.
It uses Leaflet to display a map, on which the route planning is done. For a simple MVC-Framework, Bootstrap is used. The view portion of the app uses Handlebars for templating and jQuery for manipulation.
Android App
The Android App uses a modified version of the Mapsforge library for map display and ActionBarSherlock to make the ActionBar available on all Android versions. It also uses the Jackson Java JSON-processor
Server
The actual routing and tour planning in the ToureNPlaner system is done by our server component.
This is a Java based application, which uses the Netty Framework and Jackson to act as a HTTP server for AJAX requests.
Together with a high performance graph data structure it provides an extendable framework for graph based algorithms. All algorithms hosted in the server are readily
accessible to all clients via a JSON based protocol.
Today the Server hosts algorithms for calculating the shortest path between points, as well as the Traveling Salesmen problem (TSP), that is the shortest tour visiting all given points. We also provide a binary search based algorithm to compute a short route between 2 points that has less than a given limit of climb (CSP).
As many of you will know the former two problems are very hard to solve (NP-hard to be exact) so they will only be approximated for larger problem instances.
For example, the current version of our server can solve TSPs with up to 11 points optimally and will use a 2-Opt based heuristic for anything bigger than that.
Authors
In alphabetical order: Vivian Eggert, Philipp Gildein, Christoph Haag, Steffen Hanikel, Huy Viet Le, Sascha Meusel, Niklas Schnelle, Peter Vollmer and Kevin Wenz.
Advisor: Stefan Funke
Icon and marker by Philipp Pfinsttag
Support or Contact
If you have found a bug or want to suggest a new feature then you can create an issue on the corresponding GitHub project:
- For routing issues use our Server bug tracker.
- For issues with the Android app use our Android bug tracker.
- For issues with the Web client use our Web bug tracker.