<< back to list of programming projects
A programmable simulation model is developed in order to discern the impact of different leaf raking frequencies on the overall lifespan of a forest. The simulation, programmed in C++, follows a tick-based model, where each tick represents a single day. The simulation model uses a single clock to check and update the different parameters affecting forest fires, leaf growth and soil nutrient values. A tick-based model is chosen over a discrete event simulation (DES) model since model parameters are updated on a daily basis. Since fire generation probability and leaf fall/growth volumes are dependent on the current state of the forest, a tick-based model best suits the scope of this simulation.
It is important to note that the simulation is a considerably more simplified model compared to reality. For the purposes of this simulation, real-life parameters such as wind, soil erosion, forest geography, forest elevation, forest transition zones, wildlife etc have not been taken into account. The goal of the simulation is to determine and establish a relationship between leaf raking frequencies and forest lifespan - therefore only parameters directly affecting leaf growth and fire generation are considered. Additional parameters with indirect effects on these factors are omitted to reduce variance and noise in the results. If required to produce more realistic results, the simulation model can be readily adapted to incorporate additional parameters.
The general process of the simulation can be broken down into the following steps:
● The simulation program starts by asking the user to input the size of the forest (n rows * m columns) to be simulated.
● the program initializes the forest environment by creating an n x m matrix of forest blocks, where each block is assigned a starting leaf volume (0) and soil nutrient amount (0).
● The program then iterates over each forest block to establish neighboring relationships between the blocks. The program also generates additional utility matrices and variables to track different model parameters.
● Next, the forest is allowed to grow without any raking and fire generations for 30days to produce initial leaf volume in each block. This step is taken to simulate a more realistic forest, where some starting leaf volume is present prior to the start of fires.
● After the initial growth phase, the program enters the tick based simulation phase where parameters are checked and updated on a daily basis. The tick based simulation is repeated until an absorbing state is reached.
For this simulation, the absorbing states are defined as:
1. The simulation has run for 50 years
50 years is assumed as a standard duration of time for measuring the health of a forest. If based on research and/or government policy a different timespan is determined to serve as the metric for measuring the health of a forest, the simulation can be adjusted to accommodate the different timespan.
2. All forest blocks have reached maximum leaf volume
If all forest blocks have reached maximum leaf volume, the forest is assumed to be in an overgrown state. An overgrown state is considered an absorbing state due to its high resilience towards change.
3. All forest blocks have reached zero leaf volume
If leaf volumes have been depleted from all forest blocks, the forest can be considered dead.
The program is written in C++.
Check out the code at: https://github.com/newbane2/ForestRakingSimulation.git
Copyright © 2022 Nablul - All Rights Reserved.