Themen für das Praktikum Algorithmen

Die Seite wird erstellt Thorsten Wittmann
 
WEITER LESEN
Themen für das Praktikum
Algorithmen
Sommersemester 2022

  • Bewerbungen auf Praktikumsthemen werden bis zum 17.04.2022 unter der E-Mail
    Adresse lab@algo.informatik.tu-darmstadt.de angenommen. Danach ist keine
    Bewerbung mehr möglich. Bewerbungen unter anderen E-Mail Adressen werden
    ignoriert. Jede Bewerbung muss drei Themen mit Prioritäten (Erst-, Zweit- und
    Drittwunsch) enthalten. Zur Bewerbung auf ein Thema schreiben Sie uns bitte
    eine kurze Motivation, warum Sie genau dieses Thema bearbeiten möchten sowie
    Ihre Vorkenntnisse.
  • Das Kick-Off Treffen findet nach Vereinbarung für jedes Thema separat statt.
  • Um die Integration der Praktikumsergebnisse in die quelloffenen Projekte SORO-
    S/O bzw. MOTIS zu ermöglichen, müssen alle Teilnehmer Ihre Abgaben unter die
    MIT / Apache2 Lizenz stellen. Nach dem Kick-Off senden Sie dem Betreuer des
    Themas eine unterschriebene Lizenzvereinbarung (MIT / Apache2) und falls nötig
    eine unterschriebene Vertraulichkeitserkärung für die für das Praktikum bereitge-
    stellten Daten. Dies wird gleichzeitig als verbindliche Zusage zur Bearbeitung des
    Themas angesehen.
  • In einem zweiwöchigen Rythmus finden regelmäßige verpflichtende Treffen statt.
    Die genauen Termine werden beim Kick-Off Treffen vereinbart. Bei jedem Termin
    stellt jeder Teilnehmer einen Foliensatz mit 3 Folien vor (max. 5 min):
       – Welche Fortschritte / Erkenntnisse wurden seit dem letzten Treffen erreicht?
       – Welche nächsten Schritte sind geplant?
       – Liste mit Fragen - bitte achten Sie darauf, dass die Bewertungskriterien unter
         anderem selbstständiges Arbeiten berücksichtigen. Hier sollten Sie folglich
         nur Fragen stellen, deren Beantwortung nicht durch Google / bzw. das Lesen
         von bereitgestelltem Material möglich ist.
  • Die endgültige Abgabe besteht aus:
       – Code, der für dieses Praktikum geschrieben wurde (beinhaltet Code, der
         Auswertungen, Tests oder ähnliches durchführt).
       – Einen Praktikumsbericht, in dem Sie beschreiben welche Probleme Sie wie
         gelöst haben und wieso Sie diesen konkreten Ansatz gewählt haben.

                                                                                      1
Es gelten folgende Markierungen:

      • A: Das Thema kann als Praktikum Algorithmen (6CP) oder Vertiefungspraktikum
        Algorithmen (6CP) bearbeitet werden.
      • P: Das Thema kann als Projektpraktikum (9CP) bearbeitet werden.
      • E: Das Thema kann einzeln bearbeitet werden.
      • G: Das Thema kann auch als Gruppe bearbeitet werden.

Der Abgabetermin des Praktikums ist der 30.9.2022.
Hinweise:

      • Planen Sie bitte zusätzlichen Aufwand ein, falls die genannten Programmierspra-
        chen (C++, Typescript, Javascript, CUDA) oder verwendeten Technologien (z.B.
        Git, CMake, React, etc.) neu für Sie sind.
      • Betrifft alle C++ Praktika: Als Referenz für die Komplexität des Projektes, das im
        Praktikum erweitert wird, können Sie MOTIS1 anschauen. Das SORO Projekt aus
        den Themen 2.x ist ähnlich komplex.
        Bitte überlegen Sie sich genau, ob Sie mit einer großen “real-world” Modern-C++
        Code Basis klarkommen. Bisherige Erfahrungen haben gezeigt, dass Studierende
        den Einarbeitungsaufwand und die Komplexität der Programmiersprache unter-
        schätzen.
        Einen Crash-Kurs in die MOTIS/SORO-typische C++-Programmierung gibt es hier:
        https://www.algo.informatik.tu-darmstadt.de/dl/cpp.pdf.
      • Falls Themen in Gruppen bearbeitet werden, steigt der Aufwand linear mit der
        Summe der CPs der Gruppenmitglieder. Die unten genannten Themen sind auf
        Einzelpersonen ausgelegt. Bei einer Bearbeitung in der Gruppe (nur bei Themen
        mit G möglich!) wird der Umfang entsprechend erweitert.

 1
     https://github.com/motis-project/motis

                                                                                        2
Thema 1.1 Intermodaler RAPTOR [A, E]

Beim Round-Based Public Transit Routing Algorithmus (RAPTOR) [DPW15] handelt es
sich um einen Routing Algorithmus, der in einem zeitabhängigen öffentlichen Verkehrs-
netz alle Pareto-optimalen Verbindungen ermittelt. Dabei werden mehrere Kriterien,
wie Reisezeit und Umstiege, berücksichtigt. In MOTIS sind neben dem RAPTOR Al-
gorithmus auch andere Routing Algorithmen implementiert. Teilweise unterstützen
diese das Ermitteln von intermodalen Reiseketten. Diese nutzen neben den öffentlichen
Verkehrsmitteln auch andere Transportmöglichkeiten wie Leihfahrzeuge. Ziel des Prak-
tikums ist es den RAPTOR Algorithmus dementsprechend anzupassen, dass auch dieser
intermodale Reiseketten ermitteln kann.
Programmiersprache: C++

Thema 1.2: Implementieren des McRAPTOR [A, E, G]

Beim Round-Based Public Transit Routing Algorithmus (RAPTOR) [DPW15] handelt es
sich um einen Routing Algorithmus, der in einem zeitabhängigen öffentlichen Verkehrs-
netz alle Pareto-optimalen Verbindungen ermittelt. Dabei werden mehrere Kriterien,
wie Reisezeit und Umstiege, berücksichtigt. In MOTIS existiert bereits eine Implemen-
tation des RAPTOR Algorithmus um das Earliest Arrival Problem zu lösen, bei dem
der Input aus einer Startstation und einem Startzeitpunkt besteht. Der McRAPTOR
Algorithmus löst ein ähnliches Problem, bei dem der Input aus einer Startstation und
einem Startintervall besteht. Aufgabe des Praktikums ist es den McRAPTOR Algorithmus
zu implementieren und dessen Ergebnisse mit bereits existierenden Algorithmen zu
vergleichen.
Programmiersprache: C++

Thema 1.3: RAPTOR Rückwärtssuche [A, E]

Beim Round-Based Public Transit Routing Algorithmus (RAPTOR) [DPW15] handelt es
sich um einen Routing Algorithmus, der in einem zeitabhängigen öffentlichen Verkehrs-
netz alle Pareto-optimalen Verbindungen ermittelt. Dabei werden mehrere Kriterien,
wie Reisezeit und Umstiege, berücksichtigt. Eine Vorwärtssuche ermittelt zu gegebener
Startstation, Zielstation und einem gegebenen Startzeitpunkt Verbindungen, die frühes-
tens zum Startzeitpunkt an der Startstation beginnen. Eine Rückwärtssuche ermittelt
zu gegebener Startstation, Zielstation und einem gegebenen Ankunftszeitpunkt Ver-
bindungen, die spätestens zum Ankunftszeitpunkt an der Zielstation enden. In MOTIS
existiert bereits eine Vorwärtssuche in Form des RAPTOR Algorithmus. Desweiteren
existieren zwei Implementationen: Eine CPU und eine GPU Implementation. Aufgabe des
Praktikums ist es auf Grundlage dieser beiden Implementationen zwei Rückwärtssuchen

                                                                                    3
zu implementieren. Ziel ist die Parität der Ergebnisse mit anderen Routingalgorithmen
in MOTIS.
Programmiersprache: C++, CUDA

Thema 1.4: Gleisgenaue Umstiegszeiten RAPTOR [A, E]

Beim Round-Based Public Transit Routing Algorithmus (RAPTOR) [DPW15] handelt es
sich um einen Routing Algorithmus, der in einem zeitabhängigen öffentlichen Verkehrs-
netz alle Pareto-optimalen Verbindungen ermittelt. Dabei werden mehrere Kriterien,
wie Reisezeit und Umstiege, berücksichtigt. Die derzeitige Implementation des RAPTOR
Algorithmus in MOTIS unterscheidet nicht zwischen unterschiedlichen Gleisen inner-
halb einer Station. Dadurch wird eine einzige stationsweite Umstiegszeit angenommen.
Allerdings fällt die Umstiegszeit in der Realität bei beispielsweise benachbarten Gleisen
wesentlich geringer aus. Aufgabe des Praktikums ist es das Datenmodell des RAPTOR
Algorithmus dahingehend zu erweitern, dass einzelne Gleise berücksichtigt werden.
Programmiersprache: C++

Thema 1.5: Echtzeit RAPTOR [A, E, G]

Beim Round-Based Public Transit Routing Algorithmus (RAPTOR) [DPW15] handelt es
sich um einen Routing Algorithmus, der in einem zeitabhängigen öffentlichen Verkehrs-
netz alle Pareto-optimalen Verbindungen ermittelt. Dabei werden mehrere Kriterien,
wie Reisezeit und Umstiege, berücksichtigt. Es existiert bereits eine Implementierung
des RAPTOR Algorithmus in MOTIS. Diese ist nicht echtzeitfähig. Aufgabe des Prakti-
kums ist es Prozeduren zu entwerfen, die das Datenmodell des RAPTOR Algorithmus
echtzeitfähig gestalten. Dazu müssen unterschiedliche Echtzeitupdates, die bei MOTIS
eingehen, verarbeitet und auf das Datenmodell angewandt werden.
Programmiersprache: C++

Thema 2.5: Fahrzeitrechnung [A, E]

Im Bahnprojekt des Fachgebiets Algorithmik entsteht eine Bahnbetriebssimulation. Diese
bedient sich einer physikalisch basierten Fahrzeitrechnung. Aus grundlegenden Parame-
tern eines Zuges werden Beschleunigungs- und Bremsvorgänge auf Basis physikalischer
Berechnungen ermittelt. Auf einen Zug wirken während einer Fahrt eine Vielzahl von
Faktoren ein, die das Fahrverhalten beeinflussen (bspw. Luftwiderstand oder spezielle
Geschwindigkeitsbegrenzungen). Ziel dieses Praktikums ist es zu einer bestehenden
Fahrzeitrechnung Alternativen zu implementieren.
Programmiersprache: C++

                                                                                       4
Thema 3.1: TripBased Routing Algorithmus - Verbessertes Preprocessing [A, E]

Das Ziel ist es, die TripBased Implementierung in MOTIS um die Preprocessing Technik
von Lehoux et. al. [LL20] zu erweitern. Die Erweiterung muss exakt dieselben Routing-
Ergebnisse liefern wie die Version ohne die Erweiterung.
Programmiersprache: C++

Thema 3.2: MOTIS Kubernetes Operator [A, P, G, E]

MOTIS wird aktuell als Docker Image angeboten. Allerdings erfordert der Fahrplan-
wechsel und die Skalierung von MOTIS einen erheblichen Aufwand. Idealerweise wird
der Fahrplan in der Kubernetes Cloud genau einmal aufbereitet (Preprocessing) und
dann sollten die MOTIS Instanzen Stück für Stück mit den neuen Daten hochgefahren
und die alten MOTIS Instanzen aus dem Load Balancer herausgenommen werden. Ziel
des Praktikums ist die Entwicklung und implementierung einer MOTIS Cloud Architek-
tur basierend auf Kubernetes. Hierfür soll ein eigner Kubernetes Operator entwickelt
werden, der die MOTIS Instanzen und die dazugehörigen Daten und Volumes managed.
Programmiersprache: Go

Thema 3.3: MOTIS JSON Logging und Tracing [A, E]

Ziel ist die Integration von MOTIS mit verschiedenen Tracing Lösungen 2 . Hierfür
muss primär die in MOTIS verwendete, eigens entwickelte Library ctx 3 angepasst
werden. Das Logging soll so erweitert werden, dass die Nachrichten optional als JSON
geschrieben werden können. Die Log-Informationen sollen mit Metadaten angereichert
werden, die das Debugging erleichtern 4 .
Programmiersprache: C++

Thema 3.3: Barrierefreie GTFS Stations-Laufwege [A, G, P, E]

     1. Barrierefreies Fußgänger Routing → Fußwegenetz für Umsteigegebäude für GTFS:
        Der GTFS Standard unterstützt das Abbilden von Fußweg-Netzen. Ziel des ersten
        Arbeitspaketes ist es, die Station automatisch aus OSM Daten abgeleitet in GTFS zu
        modellieren. Hierfür kann auf dem Per Pedes Routing Projekt 5 aufgebaut werden.

 2
   https://github.com/open-telemetry/opentelemetry-cpp
 3
   https://github.com/motis-project/ctx
 4
   https://github.com/motis-project/motis/issues/221
 5
   https://github.com/motis-project/ppr

                                                                                        5
2. In einem zweiten Schritt sollen die GTFS Stationswege in MOTIS abgebildet
     werden, so dass das Routing für die Laufwege beim Umstieg von Bahnsteig zu
     Bahnsteig die korrekten profilabhängigen Laufwegzeiten verwendet.

Programmiersprache: C++

Thema 3.4: Car-Sharing Integration mit IXSI [A, E]

Die intermodale Verbindungssuche in MOTIS unterstützt aktuell kein Car-Sharing. Für
Car-Sharing wid in Deutschland hauptsächlich der IXSI Standard verwendet. Ziel des
Praktikums ist die Integration der IXSI Schnittstelle in die intermodale Verbindungssuche
in MOTIS.
Programmiersprache: C++

Thema 3.5: MOTIS User Experience Upgrade [A, P, E]

Um die Nutzerfreundlichkeit von MOTIS zu verbessern, werden in diesem Praktikum
folgende neue Funktionalitäten entwickelt:
   • Bei einer Reisekette für jeden Abschnitt Alternativen einschließlich Takten an-
     zeigen. Beispiel: bei einer Reise vom Luisenplatz nach Berlin Hbf können auf
     dem Weg zum Hauptbahnhof (DA Luisenplatz nach DA Hbf) viele Alternativen
     verwendet werden. Aktuell wird aber nur eine konkrete Alternative (z.B. die Linie
     5) angezeigt. Ziel des Praktikums ist es, Frontend (Elm) und Backend entspre-
     chend zu erweitern, so dass alle Alternativen (hier z.B. Linie F, H, 671, 672,
     usw.) einschließlich der entsprechenden Takte (z.B. “alle 10 Minuten”) angezeigt
     werden.
   • Die Verbindungssuche optimiert unter anderem die Reisezeit. Das führt dazu,
     dass häufig sehr knappe Umstiege gefunden werden. Im Praktikum soll eine
     Funktion “frühere Ankunft an diesem Halt” bzw. “spätere Abfahrt an diesem Halt”
     für jeden Umstiegshalt sowohl im Frontend als auch im Backend eingebaut werden.
     Somit hat man als Nutzer/in die Möglichkeit, sich selbst sicherere Verbindungen
     zusammenzustellen.
Programmiersprache: C++17/20 + TypeScript

                                                                                       6
Thema 3.6: Parkplatzbelegung aus Satellitendaten ableiten

Ziel ist es, Belegungsstatistiken von P+R Parkplätzen aus Satellitendaten abzuleiten.
Hierfür werden X-Ray Aufnahmen von einem P+R Parkplatz zur Verfügung gestellt.
Ziel ist es, effiziente Bilderkennungsalgorithmen zu entwickeln, die Autos bzw. LKW in
Satellitenbildern erkennen können.
Programmiersprache: beliebig (geeignet: Julia, Matlab, Python, C++)

Literatur
[DPW15] Daniel Delling, Thomas Pajor und Renato F Werneck. „Round-based public
        transit routing“. In: Transportation Science 49.3 (2015), S. 591–604. url:
        https://pubsonline.informs.org/doi/pdf/10.1287/trsc.
        2014.0534.
[LL20]     Vassilissa Lehoux und Christelle Loiodice. „Faster Preprocessing for the Trip-
           Based Public Transit Routing Algorithm“. In: 20th Symposium on Algorithmic
           Approaches for Transportation Modelling, Optimization, and Systems (ATMOS
           2020). Schloss Dagstuhl-Leibniz-Zentrum für Informatik. 2020.

                                                                                       7
Sie können auch lesen