A timber plantation growth simulator, with stands and management policies options.
Based on . By: Alejandro Miranda, Blas Mola and Víctor Hinojosa
- For 34 types of eucalyptus and pinus plantations in the central-south of Chile, a statistical study fitted the following power law (tabla.csv):
- To extrapolate to earlier years; due to the formula yielding negative values (for a few types of pinus). A linear adjustment was made:
Stable year is the year when the formula begins to yield stable results (it depends on the type of pinus).
-
A template for generating a timber plantation and different management policies was made (config.toml)
horizonte = 10 # number of years to generate rodales = 36 # number of stands to generate, choosing one model at random [random] # random number generator seed: omit or comment for different results each run seed = 5 # `low` (inclusive) to `high` (exclusive) # n, n+1 for getting a single value: n # see np.random.randint edades = [1, 18] # min, max age of generated stands has = [5, 15] # min, max hectares of generated stands # ranges: start, stop, step # n, n+1 for getting a single value range: [n] # see np.arange [eucalyptus] cosechas = [10, 20, 3] # for each Eucalyptus stand, generate different biomass histories harvesting in the year 10, 13, 16 and 19 (4 histories) [pino] raleos = [6, 11, 2] # thinning policies in the years 6, 8, 10. cosechas = [18, 29, 3] # harvesting policies in the years 18, 21, 24, ... (every 3 years) # all feasible histories combining thinning and harvesting policies will be generated min_ral = 6 #lower bound to tree thinning actions
-
For a real instance, the numbers of stands and its characteristics can be passed instead of generated at random. For this a
.csv
or.shp
file is used, the data must include the following fields:
- fid: Stand or feature ID of the polygon in the
.csv
or.shp
file - mid: Unique identifier for the model to which the stand belongs, must match the
id
field intabla.csv
- age: Age of the stand
- hectare (ha): Area in hectares
See auxiliary.py
for GIS extraction or creation of this attributes table bosque_data.csv
using the methods get_data
and create_bosque
.
- Clone, download or just get
simulator.py
,tabla.csv
andconfig.toml
- Have numpy installed (and toml if python version < 3.11)
- Console run:
python simulator.py
to generate at random orpython simulator.py -f bosque_data.csv
to use a real instance - Scripting/Interactive use:
import simulator rodales = simulator.main(['-s']) # rodales is a list of dictionaries each representing a stand with its biomass history, harvesting and thinning policies
- Done! The output is a list of several csv files: biomass.csv, events.csv, vendible.csv, codigo_kitral.csv & bosque.csv