Inspiration
After tiresome days at classes and organization meets, the last thing you want is to walk endlessly from one place to another. However, with more than 400 acres to cover, it’s inevitable at Georgia Tech – evidenced by the daily 20,000+ steps recorded on my Fitbit. Furthermore, amongst the scramble of hell-week and innumerable assignments, who has the time or brainpower to plan out every aspect of their day?
Therefore, Today@Tech creates an efficient, personalized schedule that solves this problem for all those Yellow Jackets aimlessly doing multiple rounds of Freshman Hill.
Yes, we understand walking around campus is healthy, but instead of spending an additional half-hour sweating during an afternoon commute, you'd rather spend it on a treadmill in the CRC - feel free to add it as an event :)
What it does
The user is able to input events in a day at Georgia Tech, mentioning the location(s) of these events, their duration, and/or the timeframes(s) that work for the event. Our algorithm optimizes the user's schedule to minimize the distance walked throughout the day and returns an optimal schedule. Not only does Today@Tech optimize your schedule based on more prevalent events like classes and organization meets but it also considers daily requirements like where you should eat (and even computes the most efficient place for you to eat based on the time taken to and from the location), take a break and finally, finish your day.
How we built it
Firstly, we built a Python model that took user inputs for the name, location, duration, and timeframe of the event. Next, the program validates the parameters entered by the user. For instance, it checks whether the inputted location is within a defined radius of the Google Maps API, which includes campus and its neighboring vicinity. Similarly, the timeframe is broken down into 'Start Time' and 'End Time', converted into DateTime objects, and compared with the event duration to ensure that the timeframe exceeds it.
Next, we created an (n x n) time-matrix using the Google Maps API, which computes the time taken to walk between each of the 'n' user-inputted locations. Using the hamiltonian circuit brute force algorithm, we generate the most efficient schedule for the user.
After completing the backend, we moved to the user interface where we used React.js. Lastly, we used flask to integrate python into the React.js environment and returned the result in the user interface.
Challenges we ran into
Our main challenge was integrating our UI and python files we had coded. We initially worked with Swift on Xcode, due to Apple’s robust app interface, but realized that integrating python into Swift was very difficult. Therefore, late into our project, we shifted from Swift to React.js, changing our UI from an IOS application to a web application. While this made integrating python into the code a lot more possible, it was still rather difficult and we sifted through a number of flask files to understand how to connect our backend and frontend to run properly.
We were unsure about which mathematical algorithms best computed the schedule for us. We looked into prevalent ones such as the Minimax algorithm - however, although it had the same function, it was better suited towards optimizing strategic games. We even looked at Queuing theory, which had some interesting ideas that worked with our goal but its algorithmic basis lied in ordering events slightly differently from what we required. We eventually used a combination of the AI-based hill climbing algorithm and brute force techniques to reduce the search subspace and optimize the daily schedule.
We initially used the AI based hill climbing algorithm for optimisation but our state space was too large and we were using discrete variables. Therefore, we switched to hamiltonian circuit brute force algorithms, which is capable of computing the most efficient schedule through graph theory.
What we learned
Having little or no experience in UI/UX development, we learnt Swift UI almost from scratch, as well how to integrate Python into the Swift environment. We also learnt the AI-based hill climbing algorithm as well as how to use heuristics in optimisation algorithms. We also learned how to apply mathematical tools in computing - we applied linear algebra concepts in constructing and using the time matrix between different locations. Lastly, we designed the user interface in a huge time crunch, learning how to split tasks within a team, and how to make an efficient and well designed interface.
What's next for Today@Tech
While this version has the essential features, there are several additional features such as integrating the GT bus schedule, allowing users to use cars or other modes of transports through an amended version of google API so students can plan their day outside the Georgia Tech campus too. Lastly, if we can integrate this with Tech's system, we can even allow users to choose the best locations for them to study during their day based on free locations available and much more.


Log in or sign up for Devpost to join the conversation.