Hyperloop is a new concept of transportation created by SpaceX. It involves a pod traveling through a vacuum-evacuated tube at speeds in excess of 600MPH. Because nothing like this has ever existed before, planning out the most optimal routes efficiently is currently a task performed by hand. Some companies have released route calculation tools for the concept, but are only approximations that use straight line distances and ignore terrain. At the beginning of the 2017 fall semester, myself and a few other students on the Paradigm Hyperloop team at Northeastern decided to write an algorithm to optimize routes much more efficiently. I am currently one of the two co-leads on the project and the one who has written most of the code.
Since the hyperloop travels so fast there are several constraints that are placed on the tracks that they travel inside of. SpaceX has set the limit on acceleration experienced by passengers of the hyperloop to be half of a g, or 4.9 m/s². Small turns in the track will require the pod inside to slow down to ensure that the passengers do not experience discomfort due to acceleration. Since sharp turns cannot be made, terrain obstacles will be encountered, and often the only choice is to tunnel through them. Therefore routes should also avoid paths that involve a significant amount of tunneling, as it is very expensive. In order to further reduce friction inside the tube, the hyperloop pod is expected to levitate. To avoid collision with the bottom of the tube, SpaceX has dictated that the grade of the track should not exceed 6%.
Internally we also decided that our program should compute routes in a reasonable amount of time, such that it could perceivably be hosted on a website and the public could compute routes with it. In order to achieve this we developed a GPU-based implementation of the optimization algorithm CMA-ES using OpenCL. Our current implementation is hundreds of times faster than the original CPU bound implementation which was significantly less complex. We also wanted our algorithm to be able to use the real world as a model for it's calculations. As a result we utilize elevation collected by the United States Geological Survey to accurately model the real world when calculating routes.
The project source can be found on GitHub:
GitHub RepositoryHere is a very preliminary video of the web flow with the algorithm in action: