The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.
To model the process of people observing pests and reacting with an
application of pesticide, version 0.4 of the resevol package introduces
two new arguments to the run_farm_sim
function. The
argument pesticide_threshold
specifies some pest density
per cell above which the owner of the cell (i.e., the farmer) will apply
pesticide. Pesticide application is initiated on a per-farm basis, and
farmers act independently across farms. For example, suppose that there
are four farmers on a landscape, and each has a threshold pesticide
application of 10 (i.e., pesticide_threshold = 10
). If only
one of the four farmers observes a mean pest density exceeding 10 per
cell, then only this farmer will begin to apply pesticide and will do so
on all of their farm cells. The remaining farmers will not begin using
pesticide until pest density exceeds 10 per cell on their own farms.
Note that different pesticide densities can be set for different
farmers. To do this, the pesticide_threshold
argument can
take a vector of the same length as the number of farms. For example, if
there are four farmers, the first two with a pesticide application
threshold of 10 and the second two with a threshold of 20, then
pesticide_threshold = c(10, 10, 20, 20)
. If on any time
step, pest density on a farm is observed to fall below the threshold,
then pesticide application immediately stops. By default,
pesticide_threshold
is set to none
to indicate
that no thresholds are used.
The argument pesticide_delay
models the time delay
between the observation that pests have exceeded their tolerated
threshold density and the initiation of pesticide use. If, for example,
a farmer has a threshold of 10 and observes that pest first exceed this
density on time step \(t\), then they
will wait until pesticide_delay
time steps have passed
before pesticides are applied. If \(t =
8\) when pest density exceeds 10, and
pesticide_delay = 3
, then the farmer will start applying
pesticide at \(t = 11\). This is
intended to model the lag in time between the observance of a pest
outbreak and the ability of a farmer to respond with pesticide
application. As with the pesticide_threshold
argument, the
pesticide_delay
argument can be set as a scalar value that
applies to all farmers, or as a vector of delays with elements defining
the delay for each farm. Note that if a pesticide threshold is positive,
then the delay must be at least 1 time step (i.e., if a farmer notices
that a threshold of pests has been exceeded, then the earliest that they
can act is on the next time step).
To demonstrate thresholds, we can use a network output by
mine_gmatrix
already available within the resevol
package.
The mg_n1
output includes 4 traits with the following
covariance structure.
## [,1] [,2] [,3] [,4]
## [1,] 1.06913329 -0.072243449 0.064732772 -0.056487174
## [2,] -0.07224345 0.874066557 0.007063041 -0.007362562
## [3,] 0.06473277 0.007063041 0.948800593 -0.009399430
## [4,] -0.05648717 -0.007362562 -0.009399430 1.001389459
The above was mined with the mine_gmatrix
function in
which the argument gmatrix
was set to an identity matrix
with four rows and columns. We can use it in a simulation with a very
clear interpretation of farmer thresholds and predicted pesticide
applications.
sim <- run_farm_sim(mine_output = mg_n1, repro = "asexual",
pesticide_number = 1, pesticide_init = "random",
pesticide_consume = c("T1"), farms = 5,
pesticide_rotation_time = 16, pesticide_rotation_type = 3,
pesticide_tolerated_surv = 0, pesticide_per_cell = 1,
crop_rotation_time = 4, crop_number = 1, crop_per_cell = 8,
food_consume = 1, reproduction_type = "food_based",
food_needed_surv = 1, food_needed_repr = 1, max_age = 4,
min_age_feed = 0, max_age_feed = 2, min_age_move = 3,
max_age_move = 4, min_age_reproduce = 4, print_gens = FALSE,
max_age_reproduce = 4, age_pesticide_threshold = 2,
rand_age = TRUE, move_distance = 2, immigration_rate = 10,
time_steps = 50, print_last = FALSE, xdim = 18, ydim = 18,
trait_means = c(1, 1, 1, 1), land_edge = "torus",
pesticide_threshold = c(10000, 0, 0, 4, 10000),
pesticide_delay = c(1, 1, 10, 10, 10));
In the simulation above, there are 5 farms. The last two lines
specify thresholds and densities for each farm. Farmers 1 and 5 have
thresholds of 10000, while farmers 2-4 have thresholds of 0. Hence,
there are two farmers that are very reluctant to apply pesticide, while
there are three farmers that are willing to apply pesticide regardless
of pest density. Farmers 1 and 2 are able to apply pesticides almost
immediately because their pesticide_delay
value equals 1.
Farmers 3-5, instead, take 10 steps between their threshold being met
and the initialisation of pesticide use.
For the above combination, pest population size rises to roughly 600
pests after 10 time steps, 1200 pests after 20 time steps, 1600 pests
after 30 time steps, and 1900 pests after 40 time steps. Farmer
behaviour is predictable. Farmers 1 and 5 never apply pesticide because
the threshold densities of 10000 pests per cell are nowhere near
exceeded. Farmer 2 begins applying pesticide immediately given their low
threshold of zero and low delay of one. Farmer 3 begins applying
pesticide at time step 10 given their low threshold but long delay. And
farmer 4 begins applying pesticide sometime between time step 40 and 50,
after their threshold has been reached and 10 time steps of delay have
passed. Hence, it is possible to model a system in which different
farmers have different management strategies and response rates using a
combination of pesticide_threshold
and
pesticide_delay
.
There are some additional factors that are important to recognise
when using pesticide_threshold
and
pesticide_delay
, which stem from how
pesticide_rotation_time
is set. Once a farmer decides to
set a pesticide, the pesticide will be present on the landscape until
the next pesticide rotation, regardless of whether or not pest density
drops back below a threshold. Pesticide rotation therefore simulates a
period in which pesticide is applied on the landscape (which could be
the same pesticide depending on other parameter settings). Consequently,
pest density could, hypothetically, barely surpass the farmer’s
threshold immediately before pesticide rotation, and if
pesticide_rotation_time
is high, then the pesticide will
persist even if pest density plummets. Nevertheless, pest density is
monitored every time step by farmers, and if pest density exceeds a
farmer’s threshold, but then drops below the threshold again before a
pesticide rotation event, the farmer will not take action (i.e., they
will behave as if the pest problem has gone away on its own, and no
pesticide needs to be applied).
The ability to set pesticide thresholds and delays for pesticide
initialisation allows for considerable flexibility in model simulation.
But these parameters should be applied carefully and with an
understanding of the effect they are having on farmer behaviour. Unless
simulating a specific scenario in which farmers are reacting to
pesticide densities, it is recommended to simply set the default
pesticide_threshold = "none"
.
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.