Inicialmente, la demanda anual de agua, medida en hectómetros cúbicos, se distribuye con [X+5] millones para el sector industrial, [X+10] millones para el sector agrícola y [X+3] millones para el sector doméstico. Para efectos de simplificación del modelo, se asumirá que no existen variaciones en las fuentes de recarga natural de los acuíferos por causas climáticas externas, manteniendo una base constante de comparación.

El déficit hídrico inicial —es decir, la cantidad de agua necesaria que no alcanza a ser cubierta por las fuentes actuales— se establece en 20 unidades para la zona industrial, 50 para la agrícola y 15 para la doméstica. Se proyecta que, debido al crecimiento desmedido, este déficit se incrementará de forma constante a una tasa de 2 unidades por cada millón de habitantes o unidades de demanda establecidas en los parámetros iniciales de cada sector.

A partir de la implementación de una nueva Política de Gestión Integral del Agua, se abre un periodo de observación de 12 años para evaluar su efectividad. Se espera que, gracias a la tecnificación y modernización de los sistemas, la incidencia del déficit disminuya anualmente un 6% en el sector industrial, un 9% en el agrícola y un 4% en el doméstico. El modelo debe programarse para ejecutarse a lo largo de un período total de 40 años, analizando el desarrollo del sistema cada 4 meses. La variable fundamental a monitorear será el déficit hídrico total de la región, además de las variables de estado y flujo que se identifiquen durante la construcción del modelo.

Variables

Variables de estado: Déficit en el sector agrícola Déficit en el sector industrial Déficit en el sector doméstico

Variables de flujo: Aumento déficit industrial aumento déficit agrícola Aumento déficit doméstico Reducción déficit industrial Reducción déficit agrícola Reducción déficit doméstico

Variables exogenas: Demanda sector industrial Demanda sector agrícola Demanda sector doméstico Demanda anual de agua Déficit hídrico total Presión gubernamental por habitantes Tecnificación y modernización de los sistemas

Librería

library(deSolve)
library(ggplot2)
library(tidyr)
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

Variables en el modelo

Stock: 1. Déficit en el sector agrícola 2. Déficit en el sector industrial 3. Déficit en el sector doméstico

Flujo 1. aumento déficit industrial 2. aumento déficit agrícola 3. aumento déficit doméstico 4. reducción déficit industrial 5. reducción déficit agrícola 6. reducción déficit doméstico

Endógenas 1. demanda sector industrial 2. demanda sector agrícola 3. demanda sector doméstico 4. demanda anual de agua 5. déficit hídrico total 6. presión gubernamental por habitantes 7. tecnificación y modernización de los sistemas

Exógenas 1. Millón de habitantes

Código

# Condiciones iniciales
InitialConditions <- c(
  deficit.industrial = 20,
  deficit.agricola   = 50,
  deficit.domestico  = 15
)

# Tiempo de simulación
times <- seq(0, #initial time
             40, #end time
             4/12) #cada 4 meses
water.func <- function(t, state, parameters) {
  with(as.list(c(state, parameters)), {

    # Variables auxiliares exógenas 
    demanda.industrial <- 6 + 5
    demanda.agricola   <- 6 + 10
    demanda.domestica  <- 6 + 3

    # Variables auxiliares endógenas
    demanda.anual.agua <- demanda.industrial + demanda.agricola + demanda.domestica
    deficit.hidrico.total <- deficit.industrial + deficit.agricola + deficit.domestico

    # La política se usa observa desde año 12
    policy.factor <- ifelse(t >= 12, 1, 0)

    # Variables de flujo
    aumento.deficit.industrial <- tasa.crecimiento * demanda.industrial
    aumento.deficit.agricola   <- tasa.crecimiento * demanda.agricola
    aumento.deficit.domestico  <- tasa.crecimiento * demanda.domestica

    reduccion.deficit.industrial <- tasa.red.industrial * deficit.industrial * policy.factor
    reduccion.deficit.agricola   <- tasa.red.agricola   * deficit.agricola   * policy.factor
    reduccion.deficit.domestico  <- tasa.red.domestico  * deficit.domestico  * policy.factor

    # Variables de estado (stocks)
    ddeficit.industrial <- aumento.deficit.industrial - reduccion.deficit.industrial
    ddeficit.agricola   <- aumento.deficit.agricola   - reduccion.deficit.agricola
    ddeficit.domestico  <- aumento.deficit.domestico  - reduccion.deficit.domestico

    list(
      c(ddeficit.industrial,
        ddeficit.agricola,
        ddeficit.domestico),

      # Auxiliares que también queremos observar
      demanda.industrial = demanda.industrial,
      demanda.agricola   = demanda.agricola,
      demanda.domestica  = demanda.domestica,
      demanda.anual.agua = demanda.anual.agua,

      aumento.deficit.industrial = aumento.deficit.industrial,
      aumento.deficit.agricola   = aumento.deficit.agricola,
      aumento.deficit.domestico  = aumento.deficit.domestico,

      reduccion.deficit.industrial = reduccion.deficit.industrial,
      reduccion.deficit.agricola   = reduccion.deficit.agricola,
      reduccion.deficit.domestico  = reduccion.deficit.domestico,

      deficit.hidrico.total = deficit.hidrico.total
    )
  })
}

parameters <- c(
  X = 1,
  tasa.crecimiento = 2,
  tasa.red.industrial = 0.06,
  tasa.red.agricola = 0.09,
  tasa.red.domestico = 0.04
)

intg.method <- c("rk4")

out <- ode(y = InitialConditions,
           times = times,
           func = water.func,
           parms = parameters,
           method = intg.method)

plot(out,
     col = c("pink"))

#Convertir salida a data frame
out_df <- as.data.frame(out)

#Gráfica de variables de estado
stocks_df <- out_df %>%
  select(time, deficit.industrial, deficit.agricola, deficit.domestico) %>%
  pivot_longer(
    cols = -time,
    names_to = "variable",
    values_to = "value"
  )

ggplot(stocks_df, aes(x = time, y = value, color = variable)) +
  geom_line(linewidth = 1) +
  labs(
    title = "Comportamiento de las variables de estado",
    x = "Tiempo (años)",
    y = "Déficit"
  ) +
  theme_minimal()

#Gráfica de variables de flujo

flows_df <- out_df %>%
  select(time,
         aumento.deficit.industrial,
         aumento.deficit.agricola,
         aumento.deficit.domestico,
         reduccion.deficit.industrial,
         reduccion.deficit.agricola,
         reduccion.deficit.domestico) %>%
  pivot_longer(
    cols = -time,
    names_to = "variable",
    values_to = "value"
  )

ggplot(flows_df, aes(x = time, y = value, color = variable)) +
  geom_line(linewidth = 1) +
  labs(
    title = "Comportamiento de las variables de flujo",
    x = "Tiempo (años)",
    y = "Valor del flujo"
  ) +
  theme_minimal()

#Gráfica de la variable relevante solicitada

ggplot(out_df, aes(x = time, y = deficit.hidrico.total)) +
  geom_line(linewidth = 1, color = "blue") +
  labs(
    title = "Comportamiento del déficit hídrico total",
    x = "Tiempo (años)",
    y = "Déficit hídrico total"
  ) +
  theme_minimal()

#Gráfica adicional de demanda anual de agua
ggplot(out_df, aes(x = time, y = demanda.anual.agua)) +
  geom_line(linewidth = 1, color = "purple") +
  labs(
    title = "Demanda anual de agua",
    x = "Tiempo (años)",
    y = "Demanda anual"
  ) +
  theme_minimal()