Bei der Code Competition “Der Handlungsreisende”. Herzlichen Glückwunsch!
Benedikt hat an der Code Competition “Der Handlungsreisende” im Februar 2017 teilgenommen und mit seiner Lösung den dritten Platz erreicht. Herzlichen Glückwunsch! Als Preisgeld erhält er 300€.
IT-Talents: Hallo Benedikt, herzlichen Glückwunsch zu Deinem dritten Platz bei der Code Competition „Der Handlungsreisende“! Erzähl den anderen IT-Talenten doch kurz etwas über Dich.
Benedikt:
Vielen Dank! Hallo, ich bin Benedikt. Ich bin 27 Jahre alt, studiere Informatik an der RWTH Aachen und schreibe dort zurzeit meine Masterarbeit.
IT-Talents: Was hat Dich motiviert, an der Competition teilzunehmen, und wie bist Du auf den Wettbewerb aufmerksam geworden?
Benedikt:
Im Rahmen eines HiWi-Jobs am Lehrstuhl für Informatik 2 der RWTH Aachen (Theorie hybrider Systeme) habe ich vor zwei Jahren ein C++ Framework (GeneiAL) für die Entwicklung von genetischen Algorithmen mitentwickelt. Das Framework wurde primär zur Entwicklung von Betriebsstrategien für Hybridfahrzeuge benutzt, jedoch nicht zur Lösung von kombinatorischen Optimierungsproblemen wie z.B. dem Travelling Salesman Problem.
Ich hatte schon lange die Idee, diese Funktionalität in das Framework einzubauen, jedoch fehlte bisher immer der Anlass. Die Coding Challenge war dann ein guter Grund, dies in Angriff zu nehmen. Darüber hinaus wollte ich schon immer mal React.js lernen und eine Webapplikation über Docker deployen.
Ich verfolge die Coding Competitions und die Angebote auf it-talents.de schon seit längerer Zeit. Ich glaube, initial bin ich durch einen E-Mail-Verteiler auf it-talents aufmerksam geworden und bin dort auch in diversen Talentpools. Was die Code Competitions angeht, so fehlte mir bislang die Zeit, bei den Code-Competitions von it-talents etwas einzureichen.
IT-Talents: Wie bist Du an die Lösung der Aufgabenstellung herangegangen? Hattest Du schon Erfahrung mit dem Travelling Salesman Problem?
Benedikt:
Das Travelling Salesman Problem ist ein klassisches Problem in der Informatik und wird im Studium (obgleich meist eher theoretisch) vielfach behandelt. Auch gibt es hier entsprechende Vertiefungsvorlesungen, die effiziente Berechnungsverfahren für dieses Problem erarbeiten.
Abseits der Vorlesungstheorie habe ich jedoch nie einen effizienten TSP-Solver selbst geschrieben.
Die Struktur meiner Applikation war mir bereits in der Grobplanung relativ klar:
Ich wusste zu Beginn, dass ich unsere GA-Library benutzen und erweitern wollte und dass ich ein Webfrontend darumbauen wollte, auch Google Maps API als Datenquelle war von vornherein klar.
IT-Talents: Welche Probleme sind bei der Entwicklung der Software aufgekommen? Wie lange hat die Entwicklung gedauert?
Benedikt:
Ich habe die Rate-Limits der Google Maps API unterschätzt bzw. die Google Maps Directions-API überschätzt. Ich benutze die Google API an drei Stellen:
Es kann vorkommen, dass ein Benutzer zu schnell Eingaben tätigt und man dann in die Rate-Limits der Google Maps API (Free-Tier) hineinkommt. Zum Glück kann man solche Probleme relativ gut mit Promises lösen.
Wenn der User einen Roundtrip zwischen verschieden Zielen berechnen möchte, braucht man die Distanzen jedes Orts zu allen anderen Orten (Distanzmatrix). Je nach ausgewähltem Distanzmodel (Luftlinie, via Auto, zu Fuß, öffentliche Verkehrsmittel, Reisedauer vs. Reisestrecke etc.) wird hier die Google-API benutzt, allerdings liefert die API hier nicht in jeden Fall ein Resultat. Gerade bei längeren Interkontinentalstrecken gibt es häufig für manche Ortpaarungen kein Resultat, wodurch ein Fallback erforderlich wird.
Ich habe relativ früh im Februar den Plan gefasst, etwas bei dieser Challenge einzureichen. An einem Vormittag habe ich unsere C++ Library umgeschrieben, sodass sie TSP Instanzen optimieren kann. Dann ist sehr lange nichts passiert, da ich mit der Masterarbeit viel zu tun hatte, und als die Deadline näher rückte, habe ich Ende Februar etwa 2-3 Tage Entwicklung in das Node.Js Backend und das React.js Frontend gesteckt sowie in das Aufsetzen des Dockerimages.
IT-Talents: Und was hast Du durch die Entwicklung gelernt?
Benedikt:
Ich habe eine Vielzahl neuer Technologien gelernt. Nicht nur war das meine erste etwas größere Node.js Webapplikation, sondern auch meine erste React.js App. Darüber hinaus habe ich viel über ES2016 und das Node.js Ökosystem gelernt, aber auch über die Möglichkeiten der Google Maps API.
IT-Talents: Könntest Du Dir eine weitere Zusammenarbeit mit dem Partnerunternehmen Hermes Gruppe vorstellen, auch über die Code Competition hinaus?
Benedikt:
Ja, sehr gerne. Anwendungsentwicklung im Logistikbereich finde ich sehr interessant, und ich war hier bereits in der Vergangenheit in diversen Projekten involviert. 2013 habe ich ein komplettes Speditionsbackend für ein mittelständisches Logistikunternehmen entwickelt.
IT-Talents: Zu guter Letzt: Was würdest Du Dir thematisch gerne einmal als Code Competition wünschen?
Benedikt:
Gerne mehr Optimierungsprobleme oder vielleicht praktische Probleme aus dem Bereich Verteile Systeme (IoT, Cloud, SDN) oder der IT-Sicherheit.
IT-Talents: Vielen Dank für Deine Teilnahme, das Interview und viel Spaß mit Deinem Gewinn 😉