A Cellular Automata Wildfire Spread Model PILOT Presentation Kristen J. Bains November 6, 2006 Model Goals • To use a cellular automaton to model wildfire • To create an extensible framework • To demonstrate spatial control 2 Implementation Overview • GUI: Java 1.5.0 – Swing allows easy GUI design and layout – JAI 1.1.2 • Model: C++ – OOP allows easy extensibility 3 GUI Design Image Area Menu Bar Control Panel 4 Walk-through : GUI • Load landscape file 5 Walk-through : GUI • Load landscape file – FileDialog 6 Walk-through : GUI • Load landscape file – FileDialog – Java Advanced Imaging (JAI) reads images/landscape_1.bmp and draws to image area 7 Walk-through : GUI • Load landscape file – FileDialog – Java Advanced Imaging (JAI) reads images/landscape_1.bmp and draws to image area – Writes data/whichImage.dat & data/whichLandscape.dat 8 Walk-through : GUI 9 Landscape Files • Randomly generated – libnoise (http://libnoise.sourceforge.net) – noiseutils renders image 10 Landscape Files • Randomly generated – libnoise (http://libnoise.sourceforge.net) – noiseutils renders image – Perlin noise module Source: http://libnoise.sourceforge.net/tutorials/tutorial4.html 11 Landscape Files • Create your own – Set parameters • Bounding Box • Rows/Cols • Filename 12 Landscape Files • Create your own – Set parameters – File → Create new landscape file 13 Landscape Files • Create your own – Set parameters – File → Create new landscape file • Invokes landscape/generateMap • C++ routines using libnoise and noiseutils • Creates images/landscape_new.bmp & data/landscape_new.dat • Loads file into image area of GUI 14 Walk-through : GUI Select a firebreak 15 Walk-through : GUI Select a fire start location 16 Walk-through : GUI After firebreak and fire start selection 17 Walk-through: GUI • Run → Run the model – Writes initialization file – Writes firebreaks & fire starts to separate files – Invokes fire readState data/init.dat 18 Walk-through: Model • Two classes – CACell – CASpace • main parses initialization file, sets global variables • initialize() – initializes CASpace – creates vector< vector<CACell> > 19 Walk-through: Model • startFire() – looks at fire starts & sets their burnState – adds fire starts to burnList 20 Walk-through: Model • go() – iterates through burnList (all currently burning cells) – fire spreads from burning cells – newly burning cells are added to end of burnList – done when burnList is empty 21 Spread • if(fuelDensity > Threshold1) – cell can burn 22 Spread • if (fuelDensity > Threshold1) – cell can burn • if (usingMultipleTimeSteps) – if (fuelDensity > Threshold2) • cell can burn 2 time steps 23 Spread • 8-neighborhood (3x3) • 24-neighborhood (5x5) 24 Walk-through: GUI • Final burn state information located in data/final.dat 25 Walk-through: Optimization Select fire start location Select % map to search Select firebreak start location Select orientation Popup window to select name 26 Walk-through: Optimization • Run → Run optimization – Writes initialization file • Optimization flag set – Writes firebreak location & fire start to separate files – Invokes fire readState data/init.dat 27 Walk-through: Optimization • main parses initialization file, sets global variables • initialize() initailizes CASpace • startFire() gets start location 28 Walk-through: Optimization • go() burns the fire to completion – toList is created while burning – cell (x, y)’s toList contains: 1, 3, 4, 7 • Baseline numberBurned 29 Walk-through: Optimization • For each selected orientation – lengthen the firebreak width = 1 30 Walk-through: Optimization width = 2 Growth direction for width 31 Walk-through: Optimization • Reverse Fire 32 Walk-through: Optimization • Reverse Fire 33 Walk-through: Optimization • Reverse Fire 34 Walk-through: Optimization • Reverse Fire 35 Walk-through: Optimization • Reverse Fire 36 Walk-through: Optimization • Reverse Fire 37 Walk-through: Optimization • Reverse Fire 38 Walk-through: Optimization • Reverse Fire 39 Walk-through: Optimization • Reverse Fire – We know that this firebreak length is optimal because it results in the fewest burned cells 40 Walk-through: Optimization • Output is written to data/*.opt file • Best firebreak is calculated and shown on GUI 41 Example Output Output 1 200000 180000 160000 140000 # burned 120000 100000 80000 60000 40000 20000 0 1 10 19 28 37 46 55 64 73 82 91 100 109 118 127 136 145 154 163 172 Break length 42 Example Output Output 2 180000 160000 140000 # burned 120000 100000 80000 60000 40000 20000 0 1 10 19 28 37 46 55 64 73 82 91 100 109 118 127 136 145 154 163 172 Break length 43 Future Directions • Implement in OpenInventor (http://oss.sgi.com/projects/inventor/) – Customizable 3D simulation environment, C++ • Implement interface with ArcGIS – Read ascii grid files and convert to array of float values 44 Future Directions • Extend with new modules – wind – slope – fuel moisture 45 Survey of Known CA Wildfire Models • Dunn and Milne. Modelling Wildfire Dynamics via Interacting Automata. * – Uses Circal process algebra to interact between automata • Clarke, Riggan, and Brass. A cellular automaton model of wildfire propagation and extinction. – Links remotely sensed data with Monte Carlo based simulation • Berjak and Hearne. An improved cellular automaton model for simulating fire in a spatially heterogeneous Savanna system. – CA approach based on Rothermel model • Most CA wildfire models do not contain control methods or an attempt to optimize them 46 Acknowledgements • Funding under NSF Award No. IIS0427471 • Committee: – Dr. David Banks – Dr. Michael Berry, chair – Dr. Louis Gross • TIEM Group 47