Themen für das Praktikum Algorithmen
←
→
Transkription von Seiteninhalten
Wenn Ihr Browser die Seite nicht korrekt rendert, bitte, lesen Sie den Inhalt der Seite unten
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