Problema 6.6 Gangs and Arms Race

En el ámbito de la resolución de problemas complejos, es fundamental emplear herramientas analíticas que permitan comprender las interrelaciones entre distintas variables y fenómenos. En este contexto, se plantea la necesidad de abordar un problema específico mediante un enfoque sistémico que integre diversas técnicas de modelado. En el presente estudio, se llevará a cabo un análisis detallado a través de un modelo de sistemas que incluirá la elaboración de un diagrama causal para identificar las relaciones de causa y efecto entre las variables clave, un diagrama de flujo para visualizar los procesos involucrados, así como la construcción del modelo de sistemas en sí mismo para representar la estructura y dinámica del problema estudiado. Además, se complementará con la creación de gráficas que reflejen los comportamientos y tendencias observadas en el sistema en cuestión.

Este enfoque de análisis de sistemas nos permitirá no solo comprender la complejidad del problema, sino también identificar posibles soluciones y estrategias efectivas para abordarlo de manera integral. A través de la combinación de estas herramientas analíticas, se busca obtener una visión profunda y sistemática que facilite la toma de decisiones informadas y orientadas a la mejora continua.

1. Diagrama causal del problema

2. Diagrama de flujo del problema

3. Modelo del problema y comportamiento dinámico de las variables de estado

Aquí se elaboró el modelo que describe el problema y la evolución dinámica de las variables de estado.

En la primera representación gráfica se aprecia la conducta del Grupo A al exagerar su propia potencia en un 10% en comparación con el armamento del Grupo B. En contraste, en la segunda imagen se visualiza cómo el Grupo B reacciona ante la exageración del Grupo A y cómo el Grupo B estima con precisión su fuerza en relación al armamento del Grupo A.

En la tercera ilustración se muestra el comportamiento del Grupo A al menospreciar su potencia en un 50% respecto al armamento del Grupo B, mientras que en la cuarta gráfica se observa la respuesta del Grupo B ante la subestimación por parte del Grupo A y cómo el Grupo B realiza una estimación precisa de su fuerza en relación al armamento del Grupo A.

# Cargar el paquete deSolve para utilizar funciones de resolución de ecuaciones diferenciales
library("deSolve")
library(ggplot2)

# Establecer las condiciones iniciales de la variable de estado
inicial.conditions<- c(arms.stock.a=100/100, 
                       arms.stock.b=100/100) #amounts to al 100 porciento periodt

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

# Definir la función del modelo (acuérdate que se hace de abajo para arriba, primero se hace la variable de estado y luego te vas para arriba)
model.arms<-function(t, state, parameters)
  with(as.list(c(state, parameters)),{
    
    #Variables Auxiliares o endógenas
    relative.arming.rate.of.gang.a= overassessment.factor.of.gang.b.by.gang.a*arms.obsolensce.rate.of.gang.a*arms.stock.b-(arms.obsolensce.rate.of.gang.a*arms.stock.a)
    relative.arming.rate.of.gang.b=overassessment.factor.of.gang.a.by.gang.b*arms.obsolensce.rate.of.gang.b*arms.stock.a-(arms.obsolensce.rate.of.gang.b*arms.stock.b)
    
    #Variables de flujo (son las que modifican a las variables de estado) 
    arming.of.gang.a= autonomous.arming.rate.a+relative.arming.rate.of.gang.a
    arming.of.gang.b= autonomous.arming.rate.b+relative.arming.rate.of.gang.b
     
     
    #variable de estado (se establece su ecuación diferencial de ahí viene la d) (solo aki y abajito se le pone d antes de la statevariable)
    darms.stock.a= arming.of.gang.a
    darms.stock.b= arming.of.gang.b
    
    #Devuelve los resultados de la variable de estado
    return(list(c(darms.stock.a, darms.stock.b),
                arming.of.gang.a=arming.of.gang.a,
                arming.of.gang.b=arming.of.gang.b
                ))
  })


# Definir los parámetros del modelo (variables exógenas)
parameters1<-c(arms.obsolensce.rate.of.gang.a=10/100, 
              arms.obsolensce.rate.of.gang.b=10/100,
              overassessment.factor.of.gang.a.by.gang.b=100/100, 
              overassessment.factor.of.gang.b.by.gang.a=110/100,
              autonomous.arming.rate.a=5/100,
              autonomous.arming.rate.b=5/100
              ) 

parameters2<-c(arms.obsolensce.rate.of.gang.a=10/100, 
              arms.obsolensce.rate.of.gang.b=10/100,
              overassessment.factor.of.gang.a.by.gang.b=100/100, 
              overassessment.factor.of.gang.b.by.gang.a=50/100,
              autonomous.arming.rate.a=5/100,
              autonomous.arming.rate.b=5/100
              ) 

# 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 = parameters1 ,
  method = intg.method 
  
  )
  
out2 <- ode(
  y = inicial.conditions, #condiciones iniciales
  times = times, #tiempo de simulación
  func = model.arms, #función del modelo
  parms = parameters2 ,
  method = intg.method
)


# Graficar los resultados de la simulación

graph1 <-as.data.frame(out1)

graph2 <-as.data.frame(out2)

graph3 <-as.data.frame(out2)

graph4 <-as.data.frame(out2)

# Graficar los resultados de la simulación
ggplot(graph1, aes(x=time, y=arms.stock.a)) + geom_line()

ggplot(graph2, aes(x=time, y=arms.stock.b)) + geom_line()

ggplot(graph3, aes(x=time, y=arms.stock.a)) + geom_line()

ggplot(graph4, aes(x=time, y=arms.stock.b)) + geom_line()

4. Resultados conjuntos

En el primer escenario, donde el Grupo A sobrevalora al Grupo B en un 10%, se observa un aumento significativo en la acumulación de armas por parte de ambos grupos. Esto se debe al ciclo de refuerzo del modelo causal, donde la cantidad de armas que uno posee influye en la cantidad que el otro adquiere, influenciado por los parámetros asignados a la variable “sobrevaloración del armamento del Grupo B por parte del Grupo A” del 100%. En este caso, el Grupo B sigue de cerca la cantidad de armas del Grupo A. Por otro lado, en el segundo escenario, cuando el Grupo A subestima al Grupo B en un 50%, se observa una disminución significativa en el arsenal de ambos grupos. Esto se debe a que el Grupo A cree que el Grupo B tiene un armamento un 50% menor, lo que lleva a una adquisición reducida de armas por parte del Grupo A. Mientras tanto, el Grupo B, al conocer exactamente la cantidad de armas del Grupo A, se arma lo suficiente para vencerlo sin adquirir más armamento del necesario.

# Combinamos los data frames para hacer una sola gráfica con los 4 comportamientos
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
combined_data <- bind_rows(
  mutate(graph1, scenario = "Esenario 1 110% Gang A  - 100% Gang B"),
  mutate(graph3, scenario = "Esenario 2 50% Gang A  - 100% Gang B"),
)

# Graficamos los resultados de la simulación en conjunto
ggplot(combined_data, aes(x = time)) +
  geom_line(aes(y = arms.stock.a, color = scenario), linewidth = 1) +
  geom_line(aes(y = arms.stock.b, color = scenario), linewidth = 1, linetype = "dashed") +
  labs(title = "Gang A (línea continua) vs Gang B (línea punteada)",
    x = "Tiempo (Meses)", 
    y = "Stock de Armas", 
    color = "Escenario") +
  theme_minimal()