Evacuating during a natural disaster is often a chaotic and stressful experience. I have quite a few family members living in Florida and other tropical regions who are often forced to evacuate their homes and seek shelter in neighboring areas. I was personally affected by Hurricane Sandy in 2012 when we were without electricity, heat, and water for nearly two weeks after choosing not to evacuate due to a lack of information regarding safe evacuation areas. We drew inspiration from these experiences and others to form the idea for EvacSim, a simulation that can be used to predict optimal evacuation plans.
What it does
EvacSim uses graph theory and linear algebra to model the effects of hurricanes on populations and predict optimal evacuation routes. Cities are represented by nodes, each of which have current populations as well as maximum populations, and roads are represented by edges, which have transit times as well as values for maximum traffic. After determining what areas will be affected by the hurricane, we run a minimum flow algorithm on this graph to determine the optimal evacuation route for each population. Sometimes, one population will be distributed among different cities to ensure that population capacities are not violated.
How we built it
We use a NodeJS script that generates Java code to run AMPL, which handles the minimum flow algorithm. We used Java to create the simulation and the Apache CSV library in our translator to parse the CSV models into data that we can use to run the simulation. We produce a KML file from the results, which can be viewed in Google Earth. We use the IBM cloud to store our models and we use CURL requests to retrieve these from the cloud.
Challenges we ran into
We ran into some issues trying to use Java and AMPL together; we ended up solving this issue by using NodeJS as a boilerplate of sorts. The NodeJS generates Java code that runs AMPL, and in turn the Java simulation is run.
Accomplishments that we're proud of
We are proud that we were able to create a working product in only 24 hours, and we hope that in the future we can extend this project so that it can be used by researchers to help those affected by natural disasters.
What we learned
We learned a lot about simulation in general and translating models to data. As mentioned earlier, we also gained experiences tying different processes together, such as Java and AMPL.
What's next for EvacSim
In the future, we'd like to extend EvacSim to support models for different types of natural disasters, such as earthquakes and wildfires. We'd also like to make the hurricane representations a more accurate with capabilities such as changing trajectories and velocities. The model could also be made more accurate by supporting different modes of transportation with different transit times along routes. We'd also like to use cloud services more extensively and be able to pull data in real time.