Está en la página 1de 3

Actividad 10 de Simulación

Domingo Martínez

9 de Julio de 2020

Modelos basados en agentes: Simulación dinámica de modelos ecológicos


Ejemplo recuperado de: Templ M. (2016). Simulation for Data Science with R. Packt Publishing Ltd. pg.
364

# Para resolver el presente ejemplo debemos tener instalado el paquete "deSolve"


# Debes quitar el # al inicio del siguiente renglón
# install.packages("deSolve", dependencies = T)

El enfoque de sistemas dinámicos juegan un rol fundamental en los sistemas ecológicos para modelar la
presencia, la ausencia y la interacción entre especies o la interacción entre sistemas económicos y ecológicos.
Los sistemas ecológicos generalmente son complejos. Si consideramos el caso de una presa y un depredador,
la población del depredador dependerá de la presencia de presas y viceversa.
Muchos sistemas ecológicos pueden ser representados por el modelo presa-depredador de Lotka-
Volterra (Lotka 1910), el cual consiste en un par de ecuaciones diferenciales de primer orden que describen
la interacción dinámica entre dos especies. En este modelo una especie actúa como presa (x) y otra especie
actúa como depredador (y), tal como se muestra a continuación.
Tasa de crecimiento poblacional de la presa
dx
= k1 x − k2 xy
dt
Donde:
k1 representa la tasa de crecimiento lineal de la población de la presa k2 representa la tasa de disminución
de presas (cazadas por los depredadores)
Tasa de crecimiento poblacional del depredador
dy
= −k3 x + k4 xy
dt
Donde:
k3 representa la tasa de mortalidad de los depredadores
k4 representa la tasa de crecimiento de la población de depredadores (vitalidad por cazar presas)
EJEMPLO DE APLICACIÓN
En cierta región de Austria, la población de sapos y serpientes varía periódicamente de la siguiente manera:

• Tan pronto como las serpientes se comen a una parte de la población de sapos éstas se van porque ya
no encuentran suficiente comida.
• Cuando las serpientes se han ido, la población de sapos crece de forma estable.
• También la población de serpientes crece con algunas variaciones.

1
• En este escenario, las serpientes regresarán y nuevamente tendrán suficiente comida hasta que, una
sobre población de serpientes acabe con la población de sapos.

Supongamos que el sistema mencionado tiene los siguientes parámetros:


k1 = 1 Correspondiente a la tasa de crecimiento de la población de sapos
k2 = 0.5 Corresponfiente a la tasa en que las serpientes se comen a los sapos
k3 = 0.2 Correspondiente a la tasa de mortalidad de las serpientes
k4 = 0.6 Correspondiente a la tasa de vitalidad por cazar sapos
Supongamos las siguientes condiciones iniciales, que la población inicial de sapos es de 10 y que la población
inicial de serpientes es de 10.
x = 10 Correspondiente a la población inicial de sapos
y = 10 Correspondiente a la población inicial de serpientes
PASO 1: Especificar los parámetros y condiciones iniciales

parametros <- c(k1 = 1, k2 = 1.5, k3 = .2, k4 = .6) # parámetros


estado <- c(x = 10, y = 10) # estas son las poblaciones iniciales
tiempo <- seq(0, 200, by = 1) # definimos 200 días

PASO 2: Definimos una función para el modelo Lotka-Volterra dentro de la cual a su vez definimos las
ecuaciones diferenciales.

modelo.Lotka.Volterra<-function(tiempo, estado, parametros) {


with(as.list(c(estado,parametros)), {
dx <- k1 * x - k2 * x * y # aquí la derivada de x respecto t
dy <- -k3 * y + k4 * x * y # aquí la derivada de y respecto t
return(list(c(dx, dy))) # como resultado arroja una lista con dx y dy
})
} # Cabe resaltar que el resultado no toma el valor del tiempo directamente

PASO 3: Resolver las ecuaciones diferenciales

# Llamamos la libreria "deSolve"


library(deSolve)
# mediante la función ode() resuelvo el sistema de ecuaciones
solucion <- ode(y = estado, times = tiempo, parms = parametros, func = modelo.Lotka.Volterra)
solucion <- as.data.frame(solucion)
View(solucion)

PASO 4: Graficamos los resultados

matplot(solucion[,-1], type = "l", xlab = "tiempo", ylab = "población")


legend("topright", c("Sapos", "Serpientes"), lty = c(1,2), col = c(1,2), box.lwd = 0)

2
12

Sapos
Serpientes
10
8
población

6
4
2
0

0 50 100 150 200

tiempo

EJERCICIO PARA ACTIVIDAD_10: ¿Cuántos sapos y cuántas serpientes habrá en el día 30? si
partimos de que la población inicial de sapos era 10 y la población inicial de serpientes 20 y todos los demás
parámetros permanecen igual que en el ejemplo anterior.

También podría gustarte