Como você modelaria um problema predador — presa?

Arnaldo Gunzi
5 min readJun 6, 2024

--

Nunca gostei de fórmulas matemáticas. Não há nada mais desestimulante do que pegar um artigo denso, de linguagem difícil, cheio de ideias abstratas e tão compreensível quanto hieróglifos egípcios!

Como entender fórmulas como as abaixo?

No final das contas, uma fórmula é um modelo, uma abstração da realidade. E entender o que a fórmula tem a dizer é mais importante do que apenas memorizar.

Algumas dicas gerais para entender uma fórmula:

- Entenda o que é uma variável e um parâmetro. Uma variável é um símbolo que representa um valor que pode mudar. O parâmetro é um símbolo que tem um valor fixo.

- Quando somamos ou subtraímos variáveis, estamos somando ou subtraindo o efeito de ambas no resultado.

- Quando multiplicamos variáveis, estamos multiplicando o efeito de ambas no resultado. Se uma das variáveis for zero, o resultado será zero, independente do valor da outra variável.

- Derivadas têm relação com variações. Taxas de crescimento ou decrescimento.

Podemos fazer um exemplo, decifrando o modelo predador-presa de Lotka-Volterra.

O modelo predador-presa de Lotka-Volterra

Imagine uma ilha deserta, com recursos infinitos. Neste, um grupo de coelhos foi introduzido. O que ocorreria? Com recursos infinitos e sem predadores, um crescimento exponencial de coelhos.

Daria para modelar o comportamento acima da seguinte forma:

onde:

  • N é o número de presas,
  • r é a taxa de crescimento da presa na ausência de predadores
  • dN/dt é o crescimento do número coelhos

A equação diz que o crescimento do número de coelhos é proporcional ao número atual de coelhos — quanto mais, mais se reproduzem, guiados pela taxa r.

Dá para criar um modelo bem simples e testar com alguns parâmetros.

# Definindo os parâmetros

r = 0.1 # Taxa de crescimento da presa

# Condições iniciais

seriePresa =[]

for _ in range(200):

#Salva valor calculado de N e P

seriePresa.append(N)

#Calcula valores de crescimento

#Atualiza N e P

N += dNdt

O resultado disso é um crescimento exponencial.

Neste ponto, um grupo de lobos é introduzido.

Por serem poucos lobos e muitos coelhos, o crescimento da população de lobos é grande.

A população de coelhos diminui, até o ponto em que a quantidade de lobos excede a capacidade de se sustentar — há diminuição no número de predadores.

Em resumo, o modelo deve ter as características abaixo. Como você criaria fórmulas para descrever tal situação?

- Crescimento exponencial das presas na ausência de predadores

- Redução no número de presas quanto mais predadores. A taxa de predação depende do encontro entre presas e predadores

- Aumento no número de predadores com base no consumo de presas

- Mortalidade dos predadores na ausência de presas

O modelo de Lotka-Volterra é formado por duas equações:

onde:

N é o número de presas,

alpha é a taxa de crescimento da presa na ausência de predadores,

dN/dt é a taxa de predação.

onde:

P é o número de predadores,

Beta é a taxa de crescimento dos predadores por presa consumida,

k é a taxa de mortalidade dos predadores.

Como podemos ler essas equações?

Para a presa.

A taxa de crescimento de presas (dN/dt) é proporcional ao número de presas (N) vezes um fator. É um crescimento exponencial, quanto mais presas, maior o aumento.

Exceto que é contrabalanceado pela predação (dado por aNP): quanto maior o produto predador presa, que representa o encontro entre predador e presa, menor a taxa de crescimento de presas.

Para o predador:

O crescimento de predadores (dP/dt) é proporcional ao produto predador-presa (NP — porque depende do encontro de ambos). Quanto menos presas, menor o crescimento.

E também tem um fator extra, a mortalidade dos predadores (kP, onde k é uma taxa).

Este é um modelo que incorpora as condições descritas anteriormente.

A seguir, um pequeno código para fazer algumas simulações.

import matplotlib.pyplot as plt

# Definindo os parâmetros

r = 0.5 # Taxa de crescimento da presa

alpha = 0.1 # Taxa de predação

beta = 0.1 # Taxa de crescimento do predador por presa consumida

k = 0.4 # Taxa de mortalidade do predador

# Condições iniciais

P = 1 #Predador

max_time = 100

seriePresa =[]

seriePredador=[]

serieTempo =[]

while t<max_time:

#Calcula valores de crescimento

dNdt = r * N - alpha * N * P

dPdt = beta * N * P - k * P

#Atualiza N e P

#Salva valor calculado de N e P

seriePresa.append(N)

seriePredador.append(P)

serieTempo.append(t)

# Plotando os resultados

plt.figure(figsize=(10, 5))

plt.plot(serieTempo,seriePresa, label='Presa (N)') plt.plot(serieTempo,seriePredador, label='Predador (P)') plt.title('Modelo Predador-Presa de Lotka-Volterra') plt.xlabel('Tempo')

plt.ylabel('População')

plt.grid(True)

O resultado são curvas como a seguinte. A curva do predador é defasada em relação à da presa.

Se o crescimento do predador por presa for muito grande, alguns poucos predadores crescem e morrem rapidamente.

Se a taxa de mortalidade do predador for muito baixa, as presas serão dizimadas e os predadores continuam vivos.

Nenhum modelo é perfeito, portanto podem ter situações que não correspondam à vida real — no caso acima, uma hipótese irreal é a de ter recursos infinitos. Outra é a de não haver competição de outras espécies, por exemplo.

De qualquer forma, o exercício acima serve para ilustrar formas de ler e montar equações como o de um modelo predador — presa.

Texto: Arnaldo Gunzi

Revisão: Ernée Kozyreff Filho

Originally published at https://ideiasesquecidas.com on June 6, 2024.

--

--

Arnaldo Gunzi
Arnaldo Gunzi

Written by Arnaldo Gunzi

Project Manager - Advanced Analytics, AI and Quantum Computing. Sensei of Analytics.

No responses yet