¡Hola! Les doy la más cordial bienvenida a su blog “Modelando el Mundo”, donde cada semana analizaremos casos interesantes sobre temáticas actuales e intentaremos plasmarlo en un sistema dinámico que facilite su visualización y, por tanto, su interpretación, ¡Acompáñenme!

En esta ocasión modelaremos un caso relacionado a la seguridad, el cual es el siguiente:

Suppose there are two gangs, gang A and gang B. Initially, the arms stock of gang A amounts to 100% of the weapons needed to destroy gang B, and the arms stock of gang B amounts to 100% of the weapons needed to destroy gang A. The arms stock of gang A only in/decreases via the arming of gang A and the arms stock of gang B only in/decreases via the arming of gang B. Suppose that the arming of both gangs depends on an autonomous arming rate due to their intrinsic interest in arms and arming –the autonomous arming rate A and autonomous arming rate B respectively– and on an arming rate relative to the expected first order arming of the adversary, that is, the arming of gang B from the point of view of gang A without consideration of the arming of gang A and vice versa. This relative arming rate of gang A –in terms of the weapons needed to destroy gang B– then equals the product of the overassessment factor of gang B arming by gang A, the arms obsolescence rate of gang A, and this arms stock of gang B minus the arms obsolescence rate of gang A times the arms stock of gang A. The same applies to gang B: the relative arming rate of gang B –in terms of the weapons needed to destroy gang A– equals the product of the overassessment factor of gang A arming by gang B, the arms obsolescence rate of gang B and the arms stock of gang A minus the arms obsolescence rate of gang B times the arms stock of gang B. Assume that the autonomous arming rate of gang A and the autonomous arming rate of gang B are both equal to 5% of the weapons needed to destroy the other gang per month and that both arms obsolescence rates equal 10% of the weapons needed to destroy the other gang per month.

Teniendo en cuenta la redacción del caso, obtendremos las variables principales y generaremos un Causal Loop Diagram.

  1. Diagrama causal del problema

Asimismo, desarrollaremos un diagrama de flujo, el cual nos permita sistematizar nuestro entendimiento sobre el problema:

  1. Diagrama de flujo

Ahora bien, comenzaremos con el desarrollo del código para los casos específicos que resolveremos una vez que ya tenemos estructurada la lógica del modelo. El primer caso es el siguiente:

Supongamos que la gang A sobreestima el armamento de la banda B en un 10%, es decir, que el “overassessment factor of gang B arming by gang A” es 110%, y que la banda B evalúa correctamente el armado de la banda A, es decir, el “overassessment factor of gang A arming by gang B” es 100%. Modela este sistema y simula el modelo durante un periodo de 100 meses. Describe el comportamiento que muestra la simulación y relacionalo con los ciclos de causalidad que hayas encontrado en el diagrama causal.

Como siguiente paso, desarrollaremos el código que nos permitirá plasmar nuestro modelo en un gráfico siguiendo los parámetros solicitados:

library(deSolve)
## Warning: package 'deSolve' was built under R version 4.3.3
library(ggplot2)

# Establecer las condiciones iniciales de la variable de estado. 
inicial.conditions <- c(arms_stock_gang_a = 1.0,
                        arms_stock_gang_b = 1.0) #animal

# Definir el vector de tiempos para la simulación
times <- seq(0,100, by = 1) #

# Definir parámetros de las variables exógenas
model_arms<-function(t, state, parameters){
  with(as.list(c(state, parameters)),{
    
    #Variables Auxiliares o endógenas
    relative_arming_rate_a=overassesment_factor_gang_b_by_a*obsolescence_rate_a*arms_stock_gang_b-obsolescence_rate_a*arms_stock_gang_a
    relative_arming_rate_b=overassesment_factor_gang_a_by_b*obsolescence_rate_b*arms_stock_gang_a-obsolescence_rate_b*arms_stock_gang_b
    
    #Variables de flujo
    arming_gang_a=autonomous_arming_rate_a+relative_arming_rate_a
    arming_gang_b=autonomous_arming_rate_b+relative_arming_rate_b

    #Variable de estado 
    darms_stock_gang_a=arming_gang_a
    darms_stock_gang_b=arming_gang_b
    
    
# Resultados de la variable de estado
    return(list(c(darms_stock_gang_a, darms_stock_gang_b), 
               arming_gang_a = arming_gang_a, 
               arming_gang_b = arming_gang_b)) 
  })
}

# Definir los parámetros del caso
parameters <- c(autonomous_arming_rate_a= 0.05,
                autonomous_arming_rate_b =0.05 ,
                overassesment_factor_gang_b_by_a =1.1 ,
                overassesment_factor_gang_a_by_b =1.0 ,
                obsolescence_rate_a=0.10,
                obsolescence_rate_b=0.10)
               


# Seleccionar el método de integración a utilizar en la simulación, en este caso 'rk4' (Runge-Kutta de 4to orden)
intg.method = c("rk4")

# Realizar la simulación
out1 <- ode(
  y = inicial.conditions,  #condiciones iniciales
  times = times, #tiempo de simulación
  func = model_arms, #función del modelo
  parms = parameters,
  method = intg.method
)

out2 <- ode(
  y = inicial.conditions,  #condiciones iniciales
  times = times, #tiempo de simulación
  func = model_arms, #función del modelo
  parms = parameters,
  method = intg.method
)

out1 <- as.data.frame(out1)
out2 <- as.data.frame(out2)

# Graficar los resultados de la simulación
ggplot(out1, aes(x=time, y=arms_stock_gang_a )) + geom_line()

ggplot(out2, aes(x=time, y= arms_stock_gang_b)) + geom_line()

Además, tendremos un segundo caso, el cual dice lo siguiente:

“Ahora supongamos que la gang A subestima el armamento de la banda B en un 50%, es decir, que el”overassessment factor of gang B arming by gang A” es 50%, y que la banda B evalúa correctamente el armado de la banda A, es decir, el “overassessment factor of gang A arming by gang B” es 100%. Haz una nueva corrida del modelo durante un periodo de 100 meses. Describe el comportamiento que muestra la simulación y relacionalo con los ciclos de causalidad que hayas encontrado en el diagrama causal.

A continuación, se muestra el desarrollo del caso 2:

library(deSolve) 
library(ggplot2)

# Establecer las condiciones iniciales de la variable de estado.
inicial.conditions <- c(arms_stock_gang_a = 1.0,
                        arms_stock_gang_b = 1.0) #animal

# Definir el vector de tiempos para la simulación
times <- seq(0,100, by = 1) #

# Definir los parámetros de las variables exógenas
model_arms<-function(t, state, parameters){
  with(as.list(c(state, parameters)),{
    
    #Variables Auxiliares o endógenas
    relative_arming_rate_a=overassesment_factor_gang_b_by_a*obsolescence_rate_a*arms_stock_gang_b-obsolescence_rate_a*arms_stock_gang_a
    relative_arming_rate_b=overassesment_factor_gang_a_by_b*obsolescence_rate_b*arms_stock_gang_a-obsolescence_rate_b*arms_stock_gang_b
    
    #Variables de flujo 
    arming_gang_a=autonomous_arming_rate_a+relative_arming_rate_a
    arming_gang_b=autonomous_arming_rate_b+relative_arming_rate_b

    #Variable de estado 
    darms_stock_gang_a=arming_gang_a
    darms_stock_gang_b=arming_gang_b
    
    
# Resultados de la variable de estado
    return(list(c(darms_stock_gang_a, darms_stock_gang_b), 
               arming_gang_a = arming_gang_a, 
               arming_gang_b = arming_gang_b)) 
  })
}

# Definir los parámetros del modelo
parameters <- c(autonomous_arming_rate_a= 0.05,
                autonomous_arming_rate_b =0.05 ,
                overassesment_factor_gang_b_by_a =0.50 ,
                overassesment_factor_gang_a_by_b =1.00 ,
                obsolescence_rate_a=0.10,
                obsolescence_rate_b=0.10)
               


# Seleccionar el método de integración a utilizar en la simulación, en este caso 'rk4' (Runge-Kutta de 4to orden)
intg.method = c("rk4")

# Realizar la simulación 
out3 <- ode(
  y = inicial.conditions,  #condiciones iniciales
  times = times, #tiempo de simulación
  func = model_arms, #función del modelo
  parms = parameters,
  method = intg.method
)

out4 <- ode(
  y = inicial.conditions,  #condiciones iniciales
  times = times, #tiempo de simulación
  func = model_arms, #función del modelo
  parms = parameters,
  method = intg.method
)

out3 <- as.data.frame(out3)
out4 <- as.data.frame(out4)

# Graficar los resultados de la simulación
ggplot(out3, aes(x=time, y=arms_stock_gang_a )) + geom_line()

ggplot(out4, aes(x=time, y= arms_stock_gang_b)) + geom_line()

Una vez realizados los gráficos individuales, se procederá a combinar los resultados:

Gang A

# Combinar los resultados de ambas corridas en un solo dataframe
out1$Corrida <- "Sobreestimación"
out3$Corrida <- "Subestimación"

# Unir los datos de ambas corridas
out_combined <- rbind(out1, out3)

# Graficar los resultados combinados
ggplot(out_combined, aes(x = time, y = arms_stock_gang_a, color = Corrida)) +
  geom_line() +
  labs(x = "Tiempo", y = "Inventario de armas de la pandilla A", title = "Comparación de la subestimacion y sobreestimacion de la pandilla A") +
  theme_minimal()

Gang B

# Combinar los resultados de ambas corridas en un solo dataframe
out4$Corrida <- "Subestimación"
out2$Corrida <- "Sobreestimación"

# Unir los datos de ambas corridas
out_combined <- rbind(out4, out2)

# Graficar los resultados combinados
ggplot(out_combined, aes(x = time, y = arms_stock_gang_b, color = Corrida)) +
  geom_line() +
  labs(x = "Tiempo", y = "Inventario de armas de la pandilla B", title = "Comparación de la subestimacion y sobreestimacion de la pandilla B") +
  theme_minimal()

Interpretación

La percepción y evaluación del armamento entre las pandillas A y B tienen un impacto significativo en la dinámica del conflicto armado. Cuando la pandilla A sobreestima el armamento de la pandilla B en un 10%, desencadena respuestas defensivas de la pandilla A para contrarrestar la supuesta superioridad de la pandilla B. En contraste, una subestimación del armamento de la pandilla B en un 50% por parte de la pandilla A puede resultar en una reducción de su preparación defensiva. Ambas situaciones pueden llevar a un aumento de la tensión y el riesgo de escalada del conflicto armado. Es crucial una percepción precisa y una comunicación efectiva, así como estrategias de gestión de conflictos para fomentar la resolución pacífica de disputas en estos escenarios.

Arquetipos:

Caso 1 Gang A: Crecimiento Exponencial (Proceso de autoreforzamiento simple, tiende a infinito)

Caso 1 Gang B: Crecimiento Exponencial (Proceso de autoreforzamiento simple, tiende a infinito)

Caso 2 Gang A: Crecimiento logístico (Crecimiento exponencial inicial, subsecuente disminución gradual de la tasa de crecimiento hasta alcanzar el nivel de equilibrio)

Caso 2 Gang B: Estabilización por objetivo (Proceso de auto-regulación que lleva al sistema a un objetivo especifico. El estado del sistema es comparado con respecto al objetivo y acciones correctivas son tomadas para eliminardiscrepancias)

Referencias:

Pruyt, E. (2013). Small system dynamics models for big issues: Triple jump towards real-world complexity (1st ed.). TU Delft Library. ISBN 978-94-6186-195-5