Academia.eduAcademia.edu

Bushfire Cellular Automaton Simulation

Bushfire Cellular Automaton SWEN40004 - Modelling Complex Software Systems Assignment 2 by Kim Bratzel & Aram Kocharyan 31st of May, 2013 Table of Contents Introduction Domain Purpose Hypothesis Scope & Assumptions In Scope Out of Scope Literature Review Methodology Design Probability Assumptions Neighbourhood Tree Growth Algorithms Random Proximity Fire Spread Algorithms Instant Proximity Implementation Experimentation Results Baseline Size Lambda Gamma Moore Neighbourhood Proximity Tree Growth Proximity Fire Growth Classification 1. Stable, Homogeneous 2. Oscillating, Heterogeneous 3. Random, Chaotic, Unpredictable 4. Complex, Localised Structures Variance Analysis Future Models Probability Slope Climate Tree Density Tree Species & Characteristics Tree Lifespans Non-linear Tree Growth Realistic Time Steps Targeted Lightning Strikes Conclusion Appendix Scenarios Full Results References Introduction Domain Bushfires burn down millions of hectares of forest per year. Even though bushfires do have many useful environmental benefits, they are commonly known for their ability to cause considerable damage to homes and property, and in extreme cases, a large number of deaths. Increasing the knowledge of the behaviour of these fires is paramount to protecting against their dangers. Simulation models are a great way to begin to understand how these fires spread, and to learn how to minimise the damage they cause. (Collin, Bernardin & Séro-Guillaume, 2011) Bushfires are critical for increasing biodiversity, they refresh the nutrients in the soil, helping to regrow vegetation. Eliminating them altogether can cause many adverse effects including the extinction of native animals. (Taylor, 2013) The difficulty is, of course, finding the balance between controlling the spread and destruction of bushfires and minimising them all together. Purpose The purpose of this investigation is to find the optimal conditions and variables for allowing the most trees to grow in a confined space, whilst minimising the impact of naturally occurring bushfires. Modelling all the interactions between all of the properties of bushfires creates quite a complex system. One of the best ways to simulate the system as a whole is to use computer simulation. Berjak & Hearne (2002) argue that computer simulation is generally the most desirable method to measure various approaches to bushfire modelling as it removes all of the risks associated with fires, is very cost effective and allows variables to be easily changed and measured. Hypothesis If bushfires are simulated using a two-dimensional, cellular automata then it will be possible to show a model that can maintain a high percentage of trees whilst still having regular, non-devastating bushfires. Scope & Assumptions The overall scope is briefly mentioned here and elaborated on in our methodology. In Scope ● ● ● ● ● We assume that bushfires begin, and subsequently spread only when lightning strikes trees. A cell can be of type tree, fire or empty (mutually exclusive). Only a single type of tree is modelled. We are forced to restrict the size of the lattice for the cellular automaton, creating edges in our world, but we allow this size to be modified. The tree population is initially 0. Out of Scope We have not considered seasonal and weather effects, topography of the surrounding environment, other surrounding vegetation (e.g. grass) or other tree species. We discuss this in more detail during our conclusion which explores (in much greater detail) possible future models. Literature Review A popular way to model bushfires is by using a cellular automaton. Quartieri, Mastorakis, Iannone & Guarnaccia (n.d.) explain that, “The reason behind the popularity of CA [Cellular Automaton] can be traced to their simplicity and to the enormous potential they hold in modeling complex systems.” A cellular automaton is a model which is commonly used to simulate different physical systems. A 2D grid is often used to model a two-dimensional cellular automaton. A cell’s state can be calculated by its previous state, the state of its neighbours and its transitions. (Choudhury, 2011) Discrete time steps are used to advance the system, possibly changing the state of a particular cell. It is generally accepted that there are four main classes of cellular automata (Han, Liao & Li, 2012) as described by Wolfram (2002). These are defined by their observed behaviour, simplistically they are defined by the way in which they quickly evolve into one of the following: 1. 2. 3. 4. Stable, homogeneous behaviour Oscillating, heterogeneous patterns Random, chaotic and unpredictable behaviour Complex localised structures An example of stable behaviour may be the eventual loss of all trees, where no trees grow back (due to the lack of seeds). This type of stable behaviour could also be observed in the situation where the number of trees grows to reach the maximum number of trees which can fit into a particular space. Oscillating growth and burning of trees is a probable outcome that is observed frequently in nature as fluctuating populations (Farabee, 2010). Random behaviour is the least prefered outcome as it makes simulations hard to analyse and future outcomes difficult to predict. In order to meet the goals of this investigation, the observation of highly stable behaviour would be most desirable. This type of behaviour enables more accurate predictions of bushfires and will mean that large destructive bushfires are minimal or even nonexistent. Optimally we would prefer to maximise the number of trees, whilst still having regular fires (with minimal devastation) to refresh the soil and vegetation in order to support a balanced ecosystem. It’s highly likely that some behaviour will repeat at certain intervals (lightning successfully strikes for example), keeping these intervals close together may be the best way to achieve the desired results. Methodology Design The variables present in the model are outlined below with a discussion on their effects. Probability g = γf where γ ≥ 0 f = λ/L2 where 0 ≤ λ ≤ 1, L ∈ Z +, The tree growth probability (g) is proportional to the arbitrary constant, gamma (γ) and the lightning strike probability (f) , which is dependent on another arbitrary constant lambda (λ) and the size of the lattice (L). Probabilities are for each cell per time step. Assumptions Initially all cells are empty. Tree growth is instantaneous and can only take place in empty cells. Lightning is an event rather than a cell type. In the same time step, tree growth is assumed to occur first. Unlike tree growth, lightning can strike in any cell and instantly creates a fire cell if and only if it strikes a cell containing a tree. A fire cell lasts for a single time step and becomes an empty cell at the end of the time step (i.e. the time taken for a fire to burn out is constant). In the following time step, a tree may grow in this cell, but not during the time step that the fire cell was created. This model assumes that lightning strike probability is inversely and exponentially related to the size of the lattice. As the size of the lattice increases, the probability of lightning per cell per time step reduces, keeping the probability of lightning for the entire lattice per time step as a constant: f lattice, t = L2f = λ Another assumption is that tree growth probability per cell per time step is proportional to the probability of lightning per cell per time step. The probability of tree growth for the entire lattice per time step is a constant in proportion to the probability of lightning. glattice, t = lempty, t g Where lempty,t is the number of empty cells in the lattice at time t . If all cells are empty, lempty, t = L2 and: glattice, empty, t = L2g = L2γf = L2γλ/L2 = γλ = γf lattice, t As cells are occupied, glattice, t should reduce and result in less tree growth for the entire lattice per time step, modelling populations in nature. If glattice,t and g exceed 1, we consider the respective probability a certainty. f lattice, t and f are bounded [0, 1]. Neighbourhood Either the von Neumann (max neighbours = 4) or the Moore (max neighbours = 8) neighbourhood algorithm can be used to identify neighbouring cells. For a comparison of these algorithms see Hand (2005). Tree Growth Algorithms We modelled two different tree growth algorithms described below. Random Each time step, an empty cell has probability g of growing into a tree cell. Since each empty cell has an equal probability of growing into a tree, we can consider this as a uniformly distributed model. However, tree growth can only occur in empty cells as mentioned. Proximity The probability of a tree growing in any cell per time step is proportional to the number of neighbouring trees (determined by the neighbourhood algorithm) to that cell. This clustering was designed to be more realistic, whereby trees spread and germinate their seeds in their local vicinity. The probability can be modelled as: g = glow + (ghigh − glow) × ntree / nmax Here glow and ghigh are probability bounds such that 0 ≤ glow ≤ ghigh ≤ 1 . The ratio of the number of current neighbouring trees (ntree) and the number of possible neighbours (nmax) is used to linearly increase the probability of growth from glow to ghigh . This means that a cell with a higher number of neighbouring trees is at least as likely to grow into a tree itself. If glow < ghigh the cell is strictly more likely to grow into a tree when it has more neighbouring trees. Fire Spread Algorithms We modelled two different fire spread algorithms described below. Instant This assumes that fire spreads instantly and any neighbouring trees are ignited and burnt within the same time step. Proximity Fire is spread to neighbouring trees each time step. A fire cell may spread to a direct neighbouring tree during one time step, it must then wait until the next time step before possibly spreading to a second degree neighbour. The probability of a tree cell igniting is linearly proportional to the number of fire cells in its neighbourhood. s = slow + (shigh − slow) × nfire / nmax , given nfire > 0 s = 0 , given nfire = 0 Similarly to the proximity tree growth algorithm, slow and shigh are probability bounds and the ratio of the number of current neighbouring fires (nfire) and the number of possible neighbours (nmax) are modelled. Note that if there are no neighbouring fire cells no fire will spread. Also, this is independent of g and f - trees will continue to grow and lightning to strike. This model does not affect the lifespan of a fire cell (assumed to be a single time step). This model attempts to capture the realistic scenario where fire might not necessarily spread to neighbouring trees. This may occur for a variety of reasons, such as wind direction, elevation and humidity, which we do not explicitly model. Implementation The implementation was developed as a web app in JavaScript using the Crafty JS game engine, Bootstrap UI framework and the jQuery library. You can test our automaton publicly here: http://swen40004.bitbucket.org The implementation has been tested in Google Chrome 27 (preferred) and Firefox 19. The source code is publicly available at https://bitbucket.org/swen40004. A considerable amount of effort was put into the development our own implementation of a cellular automaton. Experimentation Our approach is to form a baseline model with a basic configuration of parameters, this allows us to explore further modifications so that we can compare them to the baseline and to each other. We consider the following possible parameter values: L ∈ {20, 40, 80}, λ ∈ {1, 0.5, 0.1}, γ ∈ {10, 100, 1000} . The baseline has L = 20, λ = 1, γ = 10 and uses a von Neumann neighbourhood, random tree growth and instant fire spread. When proximity tree growth is used, glow = 0.01, ghigh = 0.2 by default, and when proximity fire spread is used, slow = 0.5, shigh = 0.8 by default. Our aim is to then modify a single parameter from the baseline and observe the results, so as to observe emergent patterns. For each of these permutations, we then make a second, different parameter permutation, and observe how the two interact. The main outputs of interest are the populations of tree and fire cells per time step, the growth rate of trees (first and second order differences), and the frequency and success rates of lightning strikes. Our approach is to then categorise similar results by their patterns and features and to identify which parameters produce a particular pattern. We are then able to target the ideal model according to our hypothesis and aim, so that we may discuss its feasibility and limitations. Results The aim of this section is to identify scenarios which support or contradict our hypothesis and study their features. Nearly all of the scenarios we tested had an initial period of continuous growth, bounded only by the available empty cells. During this period no trees were burnt since no fires took place. This would be typical of a new plantation. The charts below have time steps on the x-axis and tree (green) and fire (red) populations on the y-axis (1 unit is 1 cell). The are generated directly from our implementation and are viewable online. Please see the definitions of scenarios in the appendix. The parameters are mapped by (A-J) and (1-10) which indicate the type of parameter combinations. Baseline Scenario A1 Population Due to instant fire spread and a small lattice, a large population of trees is burnt each time. Tree growth shows support for this claim. The remaining subsections will modify a single parameter at a time and will be compared to this baseline. Size Scenario A2 Population Increasing the size of the lattice has a big impact. Since trees grow at random locations, a larger lattice ensures average clustering takes more time to reach the level seen in the baseline (50%). This forms a more prominent logarithmic growth trend. Lambda Scenario A4 Population A lower lambda value allows trees to grow for longer, but destroys more trees at a time, compared to the baseline during lightning strikes. Gamma Scenario A6 Population Increasing gamma leads to faster tree growth, with more frequent lightning success rates which destroys (almost) the entire tree population each time. Moore Neighbourhood Scenario A8 Population Changing neighbourhood from von Neumann to Moore reduces the frequency of small fires and produces larger fires, since each cell has (up to two times) more potential neighbours to burn instantly. Fire destroys most of the population each time compared to the baseline. Proximity Tree Growth Due to the increase in growth probability as neighbours increase, an exponential growth pattern emerges as opposed to the logarithmic patterns which have been observed so far. Generally an exponential population increase is considered more realistic according to Farabee (2010), but a logarithmic one ensures a faster recovery from fires if feasible and is hence preferred. Unsurprisingly, proximity based growth with instant burning is a deadly combination, destroying the majority of the tree population during the largest fires. This shows that the random tree growth model is a better survival tactic against fires in our simulation. Proximity Fire Growth This model greatly improves the chances of survival for uniformly distributed trees. Fires which burn clusters of trees take much longer to consume them and can die out after several time steps, allowing time for the population to continue growing around the fire. The realism of this is questionable, but may be feasible in trees which germinate under burnt conditions (Bell, Plummer & Taylor, 1993). Nevertheless, this produces a somewhat chaotic oscillation and steady populations of trees and fire cells. Classification Classifying our scenarios into the four classes identified by Wolfram (2002) for cellular automata presented in the literature review provides insights into which models may allow sustained tree growth as well as controllable and predictable bushfires. All subsequent models use a lattice size of 40 (for fair representation) and Moore neighbourhood (for greater realism of fire spread, ignoring out of scope scenarios). The full classification of all of our scenarios can be found in the appendix. 1. Stable, Homogeneous Many of these models approached equilibriums and did not deviate after a certain period of activity. We are unable to model extinction of trees since this requires growth to depend on tree population. The only way to achieve this using our model is by using proximity growth, which requires glow = 0 . With an initially empty lattice (an assumption we made) this will result in no growth at all, but if we could allow an initial tree population, such an experiment would be possible and could be used for hazard prevention. Scenario X1 Population Scenario X1 uses γ = 100, glow = 0.01, ghigh = 0.2, slow = 0, shigh = 1, proximity tree growth and fire spread. We observe an initially exponential population growth which becomes logarithmic and reaches an equilibrium with 95% average clustering. This is akin to what Farabee (2010) describes with populations in nature as initially rapid growth reduces as competition for resources develops and verifies our model of glattice, t reducing over time. Lightning strike success rates are very high but few trees are burnt since slow and shigh act as insulation. This is a highly desirable scenario for tree growth, but can be negative if fire is needed for germination or revitalisation of the soil, and can be unrealistic if resource constraints are modelled (trees populate the entire lattice, which can deplete resources and lead to extinction). Several scenarios such as B10, E10 and A10 showed signs of logarithmic long term growth followed by oscillations. B10 contained few bushfires at all however due to a larger lattice size than A10. Scenario B10 Population Scenario X5 Population Scenario X5 uses λ = 0.5, γ = 1000, glow = 1, ghigh = 1, slow = 1, shigh = 1. Although it is not realistic, it demonstrates that modelling a near-perfect tree/fire equilibrium is possible. Due to the large γ we see an increase in the tree population very early. Since all proximity variables are at their maximum value, a tree will cause neighbouring trees to grow around it in the next time step. Similarly, once lightning strikes successfully (as seen in X1) the fire spreads and burns all neighbouring trees with certainty. This crucible of extreme growth and burning continues until it reaches an equilibrium, where it remains indefinitely. The outcome is neither realistic or optimal, as there is a constant, large population of fire, but it demonstrates that our model can also produce perverse outcomes not necessarily found in nature. 2. Oscillating, Heterogeneous Some scenarios such as B4, B8, D6 and D8 have consistent fires which destroy a minority of the tree population, which is relatively desirable and models nature described by William, Orians & Heller (1995) when populations reach their carrying capacity. Scenario D6 Population Other scenarios such as B9, E7, E9 and X6 destroy the majority of the population during a fire. This may represent plants which require fire to germinate, however we would prefer to burn smaller sections rather than the entire population at once to reduce the effects on wildlife and for general safety. Scenario E7 Population Some oscillate more gradually as a result of proximity fire spread taking longer to burn small clusters before extinguishing. Scenario GH9-10 Population 3. Random, Chaotic, Unpredictable A somewhat more chaotic scenario still has oscillations but gives unpredictable, disadvantageous changes. Scenario X2 Population 4. Complex, Localised Structures Scenario HI10 Population One model showed a change from oscillation to random variation and then back to oscillation. Variance Analysis We prefer models with less variance as they are more deterministic and easier to predict and prepare for, which is crucial during bushfire emergency survival. It's possible to model very extreme variation, such as in scenarios A7 or X4, but these are unreasonably extreme cases. Others have reasonably homogeneous variance distributions, such as A10, while others have a very low constant variance, such as X1. Scenario X5 Growth X5 is peculiar in that its variance reduces over time, which would be desirable were it not for the irrational scenario. Given sufficient time, calculating standard deviation of these growth distributions would benefit our understanding of the risks involved in scenarios. Future Models There are many factors that have not been considered for these experiments. This section describes most (but not necessarily all) extension models found in our review of existing literature which could help consolidate our results to real world observations, thereby improving the prediction capabilities of the model. Probability We only considered a single probabilistic model, which has assumptions on the relationship between probability of fires and growth of trees. This is a somewhat simplistic model which is based on a spurious underlying assumption. Coming up with a better model which accounts for a greater number of variables is an extremely complex process however, and would require further investigation. As D’Ambrosio, Gregorio, Di, Spataro & Trunfio (2006) discovered, “The validation of fire spread models is difficult because usually standard fire records don’t account for all the data necessary to the simulation.” The model used is also very general and could be recalculated based on a specific geographical location in order to more accurately represent as many known variables as possible, such as the climate. Some previous studies, including one by Quartieri, Mastorakis, Iannone & Guarnaccia (n.d.) have discussed the possibility of using fractal driven models as an alternative to probabilistic models. Fractal driven models are much more complex, are far less researched and would require a great deal more investigation. Slope Factors such as the relationship between fire spread and the slope (or elevation) of the ground have already been well researched. For example, Berjak & Hearne (pp. 137, 2002) tell us that, “The relationship between spread and slope is generally accepted throughout Australia and is supported by data derived from individual fire reports for the California region by the US Forest Service.” Climate Some variables such as wind speed have been ignored due to complexity. The most important weather factors to consider when simulating bushfires have been elicited by Johnston, Milne & Klemitz (2005) and include wind speed and direction, humidity, temperature and rainfall. Tree Density According to Li & Magill (2001) the tree (or bush) density is the most important factor to consider when looking at fire spread. It provides the fuel for the fire to travel from one location to another. They go on to say that 59% of flammable fuel is the critical amount that is required for fire to spread to neighbouring trees. Tree density should be incorporated into the model for a more realistic simulation of fire spread. Tree Species & Characteristics The model used in this investigation assumes all trees possess identical characteristics. It does not take into account the varying attributes of different trees. Attributes such as the particular species, combustibility, heat capacity, exposure to particular weather conditions, size and age of the tree can affect their flammability. Tree Lifespans This investigation aims to model conditions which generate sustainable vegetation and maintain the fertility of the soil through bushfires. The simulation looks at the number of fires overall but does not measure the locality of the fires. This could mean that even though the number of fires is at a stable and healthy rate, one particular section or cluster of trees may never actually be burnt and one set of cells may be burnt numerous times. Measuring this information would be very useful to ensure that all parts of the forest are at some stage burnt and revitalised. Non-linear Tree Growth Proximity tree growth was based on a reasonably simplistic algorithm which increased the probability of a tree growing by a linear relationship to the number of neighbouring trees. In reality, the chances of a tree growing at a particular location could potentially increase by a polynomial, or even exponential rate in relation to the number of neighbouring trees. Conversely, due to overcrowding, or the overuse of resources, the likelihood of a tree growing could decrease by some function which is proportional to the number of neighbouring trees. Realistic Time Steps Currently the simulation allows for a tree to grow in the same length of time it takes a fire to burn. For realism, a tree should grow at considerably slower rates. Different states could be used to model different growth states of a tree. The probability of a fire spreading to a tree can be related to its current growth state (smaller trees may burn quicker, larger trees may take longer to ignite). Targeted Lightning Strikes Lightning is modelled to strike the map at random locations. Golde (1968) describes that lightning strike probability depends on the ground surface area and height of the object relative to the ground. Since it is likely that lightning would be more attracted to clusters of trees, such an extension may benefit the accuracy of the model. Conclusion The results of the simulation have shown that by using different computer modelling techniques ranging from very simplistic, to reasonably complex we can show that it is possible to maintain a high percentage of trees whilst still having regular, non-devastating bushfires. Appendix An online version of this report is accessible here. Our planning and approach for this report can be accessed here. Scenarios As discussed in the methodology we started with a baseline and attempted to model a single parameter change. Then we modelled each of these changes with another, different parameter change. We then applied what results we had to identify extensions. This process, and our raw categorisation of scenarios into the four classes of cellular automata can be accessed here. A rough analysis of the scenarios and their similarities is available here. A brief categorisation is outlined below. Note that any scenario may also have miscellaneous features. Class Description Scenarios 1 Equilibrium - no long term growth. C4, GH10, X1, X3, X5, A10 2 Oscillating, heterogeneous patterns - no long term 2.1 Slight burning of trees A1, A2, A3, A4, A5, B4, B5, B8, C6, D8, E6, A5 2.2 Total burning of trees A6, A7, A8, A9, B6, B7, B9, C7, C9, D6, D7, E7, E9, H9, D8-9, growth. X4, X6 2.3 Gradual oscillation D9-10, GH9-10, X7 3 Chaotic X2 4 Complex localised structures HI10, I10 Misc Long term logarithmic growth B10, C5, C7, C10, E10 Initial logarithmic growth C6, D6, D7, GH10, H9, D8-9, HI10, I10, A5, A3, B5, B6, A6, A8, Initial exponential growth B9, C9, D9-10, E7, GH9-10, D8-9, X2, A9 Initial exponential and then logarithmic E9, X1, X6 Initial linear growth D8, E6, A2, A4 B4 Full Results We usually tested the automaton for 500 time steps, but occasionally we needed more (up to 2000) to determine any emergent patterns. The full generated results to all our scenarios using our web app is available online here: http://swen40004.bitbucket.org/results/ Some scenarios are very similar to others but appear different due to varying tree growth and lightning rates, which stretch the timeline. We attempted to group these models together and focus on their emergent patterns instead of these differences. References Bell, D., Plummer, J., & Taylor, S. (1993). Seed germination ecology in southwestern Western Australia. The Botanical Review, 59(1), 24–73. Berjak, S. G., & Hearne, J. W. (2002). An improved cellular automaton model for simulating fire in a spatially heterogeneous Savanna system. Ecological Modelling, 148(2), 133–151. doi:10.1016/S0304-3800(01)00423-9 Choudhury, S. (2011). A cellular automaton model for wireless sensor networks. Proceedings of the 22nd …, 7, 223–242. Retrieved from https://www.oldcitypublishing.com/JCA/JCAabstracts/JCA7.3abstracts/JCAv7n3p223-241Choudhury.html Collin, A., Bernardin, D., & Séro-Guillaume, O. (2011). A Physical-Based Cellular Automaton Model for Forest-Fire Propagation. Combustion Science and Technology, 183(4), 347–369. doi:10.1080/00102202.2010.508476 D’Ambrosio, D., Gregorio, S. Di, Spataro, W., & Trunfio, G. (2006). A model for the simulation of forest fire dynamics using cellular automata. Proceedings of the iEMSs …. Retrieved from http://www.iemss.org/iemss2006/papers/s11/315_Spataro_1.pdf Farabee, M. J. (2010). Population Ecology. Retrieved May 20, 2013, from http://www.emc.maricopa.edu/faculty/farabee/biobk/biobookpopecol.html Golde, R. H. (1968). Protection of Structures Against Lightning. Proceedings of the Institute of Electrical Engineers, 115(10), 1523–1529. Han, Q., Liao, X., & Li, C. (2012). Complex Dynamic Behaviors in Cellular Automata Rule 14. Discrete Dynamics in Nature and Society, 2012, 1–12. doi:10.1155/2012/258309 Hand, C. (2005). Simple cellular automata on a spreadsheet. Computers in Higher Education Economics …, 17. Retrieved from http://www.economicsnetwork.ac.uk/cheer/ch17/hand.htm Johnston, P., Milne, G., & Klemitz, D. (2005). Overview of bushfire spread simulation systems. BUSHFIRE CRC Project B. Retrieved from http://www.bushfirecrc.com/sites/default/files/managed/resource/uwa_simulators_overview.pdf Li, X., & Magill, W. (2001). Modeling fire spread under environmental influence using a cellular automaton approach. Complexity International, 08, 1–14. Retrieved from http://www.complexity.org.au/ci_louise/vol08/li01/li01.pdf Taylor, R. S., Watson, S. J., Bennett, A. F., & Clarke, M. F. (2013). Which fire management strategies benefit biodiversity? A landscape-perspective case study using birds in mallee ecosystems of south-eastern Australia. Biological Conservation, 159, 248–256. doi:10.1016/j.biocon.2012.12.005 Quartieri, J., Mastorakis, N. E., Iannone, G., & Guarnaccia, C. (n.d.). A Cellular Automata Model for Fire Spreading Prediction 2 Background on Cellular Automata, 173–179. William, K., Orians, G. H., & Heller, H. C. (1995). Life: The Science of Biology (4th ed.). Sinauer Associates. Wolfram, S. (2002). A New Kind of Science. Wolfram Media, Inc.