Project: Multicriteria Multimodal Routeplanning

Overview:

General information
More Algorithmic Details
Program Architecture
GUI
Documentation, Code
Installation, Usage
Contact
General information:

This site is about the Bachelor-Project "Multicriteria Multimodal Routeplanning", realised in Winter Semester 2012, from September 2011 until January 2012.
It was written at the University of Freiburg by Simon Skilevic and Robin Schirrmeister and supervised by Prof. Hannah Bast.
The goal was to write a program that can perform shortest path queries in a hybrid network of public transportation lines and roads. These queries should use both the time of the path as well as the amount of transfers as criteria, thus "multi-criteria".
The program should also be able to create some basic visualization of the Dijkstra computation.
More Algorithmic Details:
Program Architecture:

We used C++ in the backend, including boost (only for the server communication).
For the multi-label multi-criteria multi-modal Dijsktra we used just one class (i.e. one and the same for the time-dependent network and the time-expanded network). For this, we implemented general functions for getting the possible connections at a specific node at a specific time and returning them as Connection objects. This way, the Dijkstra algorithm could be kept relatively unaware of which underlying modelling the public transportation network used. Also the Dijkstra could be kept unaware if the connections that he worked on were coming from a road network or a public transportation network.
We used general classes as well for the labels and the labelsets at given nodes to allow for abstraction about the underlying types of nodes/networks.
The program used OSM-Files and GTFS-Files as input to create the hybrid network.

For the frontend, we used javascript including jQuery, jQuery UI and the google maps javascript API as our GUI. We sent requests for queries by javascript to our server.
For the visualization of the dijkstra, we always send parts of the labels used in the dijkstra (including time needed to reach a given label, which label a given label was expanded from, etc.) to the GUI to visualize them.
GUI:

See GUI here.
Documentation, Code:

Documentation is here. Download code here.
Installation, Usage:

You need to have the boost libraries present on your system for the server to work.
For the installation, just use the provided makefile with make compile.
Start the server with: ./HybridServerMain -p Port GTFSFolder OSMFile
Set the same port at the top of the transitPlaner.js file of the UI :)
Contact:

firstauthor.lastname AT gmail DOT com secondauthor.firstname PLUS tibor AT gmail DOT com