Problema 6.6 Gangs and Arms Races del libro de Pruyt
El siguiente análisis fue elaborado en base al Caso 6.6 Gangs and Arms Races del libro de Pruyt: Este ejercicio se fundamenta en el modelo de escalada delineado por (Bossel 2007c, Z507). Las raíces de la carrera de armas se encuentran en los procesos de escalada entre dos o más naciones o partes involucradas en un conflicto, las cuales se observan y responden mutuamente ante las actividades de armas y violencia inciertas del otro, con un incremento proporcional en sus propias actividades armamentísticas (Bossel 2007c, p36). La posesión de armas por parte de una de las partes puede, de hecho, disuadir a la otra de atacar y viceversa, creando así una situación de escalada hacia una “paz armada”.
1. Diagrama causal del problema
Dentro del grafico causal elaborado
con datos del caso, se puede inferir que la mayoría de las variables que
identificamos son correlacionadas con otras. De acuerdo con las
variables “Relative Arming Rate of Gang A” y “Relative Arming Rate of
Gang A” se puede definir que son las variables en las cuales hay más
relación eso quiere decir que las variables pueden afectar o mejorar las
otras.
2. Diagrama de flujo del problema
Este diagrama muestra como las variables pueden ir aumentando de acuerdo a los actos de los Gangs. De igual modo se puede observas, un lazo de conexiones que demuestran un incremento de batalla de acuerdo a las variables.
3. Modelo del problema y comportamiento dinámico de las variables de estado
Ejercicio 1 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.
# Cargar el paquete deSolve para utilizar funciones de resolución de ecuaciones diferenciales
library("deSolve")
## Warning: package 'deSolve' was built under R version 4.3.3
# 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 la función del modelo.
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_A
#Variables de flujo (son las que modifican a las variables de estado)
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
#Devuelve los resultados de la variable de estado
return(list(c(dArms_Stock_Gang_A, dArms_Stock_Gang_B),
Arming_Gang_A = Arming_Gang_A, #variables de flujo
Arming_Gang_B = Arming_Gang_B)) #variables de flujo
})
}
# Definir los parámetros del modelo. Estan por fuera del sistema
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 utilizando la función 'ode' del paquete deSolve
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
)
out1.1 <- 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)
out1.1 <- as.data.frame(out1.1)
# Graficar los resultados de la simulación
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.3.2
ggplot(out1, aes(x=time, y=Arms_Stock_Gang_A )) + geom_line()
ggplot(out1.1, aes(x=time, y=Arms_Stock_Gang_B)) + geom_line()
Ejercicio 2 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.
# Cargar el paquete deSolve para utilizar funciones de resolución de ecuaciones diferenciales
library("deSolve") #cada variable de estado es una ecuación diferencial
# 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 la función del modelo. #parametros son 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_A
#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
#Devuelve los resultados de la variable de estado
return(list(c(dArms_Stock_Gang_A, dArms_Stock_Gang_B),
Arming_Gang_A = Arming_Gang_A, #variables de flujo
Arming_Gang_B = Arming_Gang_B)) #variables de flujo
})
}
# 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 utilizando la función 'ode' del paquete deSolve
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
)
out2.2 <- 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 <- as.data.frame(out2)
out2.2 <- as.data.frame(out2.2)
# Graficar los resultados de la simulación
library(ggplot2)
ggplot(out2, aes(x=time, y=Arms_Stock_Gang_A )) + geom_line()
ggplot(out2.2, aes(x=time, y= Arms_Stock_Gang_B)) + geom_line()
4. Análisis Comparativo
Gráfica sobre Gang A
# Combinar los resultados
out1$Corrida <- "Sobreestimación"
out2$Corrida <- "Subestimación"
# Unir los datos de ambas corridas
out_combined <- rbind(out1, out2)
# Graficar los resultados combinados
ggplot(out_combined, aes(x = time, y = Arms_Stock_Gang_A, color = Corrida)) +
geom_line() +
labs(x = "Tiempo", y = "Arms Gang A", title = "Comparación de la subestimacion y sobreestimacion de Gang A") +
theme_minimal()
Gráfica sobre Gang B
# Combinar los resultados
out1.1$Corrida <- "Subestimación"
out2.2$Corrida <- "Sobreestimación"
# Unir los datos de ambas corridas
out_combined <- rbind(out1.1, out2.2)
# Graficar los resultados combinados
ggplot(out_combined, aes(x = time, y = Arms_Stock_Gang_B, color = Corrida)) +
geom_line() +
labs(x = "Tiempo", y = "Arms Gang B", title = "Comparación de la subestimacion y sobreestimacion de Gang B") +
theme_minimal()
5. Conclusiones
De acuerdo con la comparación de los modelos y de las gráficas elaboradas, se puede deducir que:
Si el Gang A subestima las armas del Gang B en un 10%, es decir, cree que el Gang B está más armado de lo que realmente está, esto puede desencadenar una respuesta para que el Gang A se protega. Sin embargo, esta respuesta puede ser malinterpretada por el Gang B como una señal de agresión, lo que puede llevar a un incremento a la guerra y por ende, más protección para Gang B.
Por otro lado, si Gang A subestima las armas de Gang B en un 50%, es decir, cree que Gang B está menos armada de lo que está, esto no cambiará la decisión de Gang A y seguiría aumentando su protección. Aprovechando esta subestimación, el Gang B fortalecerá sus armas y posiciones estratégicas sin provocar una respuesta defensiva significativa del Gang A. Esto permite a Gang B ejercer más presión sobre Gang A, aumentando su influencia y poder en el conflicto.
Para ambas deducciónes se puede concluir que ambas Gangs estarán en modo alerta para no perder la batalla, es decir, siempre se mantendrían protegidos sin bajar la guardia. Asi pues, Gang A y Gang B se subestiman pero aun así siguen aumentando sus cargamentos.
6. Referencias Pruyt, E., 2013. Small System Dynamics Models for Big Issues: Triple Jump towards Real-World Complexity. Delft: TU Delft Library. 324p