The Time Dependent Traveling Salesman Problem (TDTSP) is about finding the shortest or fastest route that visits all destinations in a given set. Theme park visitors work at this problem every day - when they ask "Which line is shorter?" they're trying optimize their queue time to find the fastest way to visit the attractions they want. They are searching for a solution to the TDTSP, where the destinations are the attractions they want to visit.

I developed an app that implements many different algorithms for determining this. Some of them find only approximate solutions, and some are infeasible because they try each combinatoric possibility. I implemented the A* search, Held-Karp, Malandraki-Dial, and Genetic algorithms. In the case of the Genetic, I tried several variants for initializations and the cross-over phase. In the end, I determined that the Genetic algorithm consistently had a high performance, both in terms of the optimality of the plan and the efficiency of the computation time. It was able to plan a day with 35 attractions in an average of 94 milliseconds on an Android phone.
The image at right shows an attraction selection screen for the app. Users are able to select both which attractions to visit, and how many times to visit each. The application considers the time spent in line, travelling between attractions, and the time spent on the attractions themselves.
This app was the project I completed for my Master's degree, but I still work on it in my spare time. So far in the app development, I have learned
1) The importance of considering hardware limitations
2) The Android app development process
3) The importance of planning a complex piece of software before writing it