Inspiration

We created and studied the train scheduling problem for the RailVision Challenge with methods inspired from machine learning, np-hard problems, perseverance, and teamwork.

What it does

Our program calculates the average wait time a passenger must wait at a train stop on a typical suburban metro commuter line, and can calculate a new train schedule to minimize the wait time by altering when a train is sent along the line, and how many passengers to pick up depending from each stop. Along with this, we also visualize the data and characteristics of a schedule by plotting information about the fluctuating population of passengers waiting at each station at each point in time, and the resulting capacities of each train sent along the line. This allowed us to have a better grasp of where the schedule needed adjustment, such as sending more trains along areas of congestion. This program, along with intense analysis and collaboration enabled through our visualization allowed us to achieve an optimized average wait time of 3:52 minutes per passenger. Further optimization are believed to be possible given more testing.

How we built it

The program was primarily built on Java and Python. The simulation, grading, and file io was done in Java and the schedules were visualized using MatPlotLib and Pandas in Python.

Challenges we ran into

We mostly ran into challenges designing a heuristic to generate our improved schedules. A lot of the difficulty of this challenge lay in this core segment, as we had to rely primarily on intuition. Another challenge was integration; many of our group members used different IDEs and trying to ensure the project remained functional across them led us to a rocky start but we managed to overcome it.

Accomplishments that we're proud of

Our team overcame a huge mental block on how to generate valid schedules while trying to optimize the algorithm. We are also proud of improving the wait times compared to the sample schedule, and are proud of ourselves for tackling a hard problem.

What we learned

Never Give up.

What's next for ChooChooTrain

The next steps could include improving the search algorithm for generating new schedules.

Built With

Share this project:

Updates