A Cellular Automata Wildfire Spread Model PILOT Presentation Kristen J. Bains

advertisement
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
Download