library(deSolve)
## Warning: package 'deSolve' was built under R version 4.2.3
estres.hidrico <- function(t, state, parameters) {
with(as.list(c(state,parameters)), {
#Endogenous auxiliary variables
consumo.niños <- consumo.perCap.niños * niños
consumo.jovenes <- consumo.perCap.jovenes * jovenes
consumo.adultos <- consumo.perCap.adultos * adultos
consumo.tercera <- consumo.perCap.tercera * tercera
consumo.inactivos <- consumo.niños + consumo.jovenes + consumo.tercera
#Flow variables
nacimientos <- adultos * tasa.natalidad
niños.a.jovenes <- niños / tiempo.niño
jovenes.a.adultos <- jovenes / tiempo.jovenes
adultos.a.tercera <- adultos / tiempo.adulto
muertes <- tercera / tiempo.tercera
consumo <- consumo.inactivos + consumo.adultos
#Métricas de desempeño
estres.hidrico <- consumo.inactivos/adultos
deficit.hidrico <- consumo/reservas.de.agua
#State (stock) variables (d)
dniños <- nacimientos - niños.a.jovenes
djovenes <- niños.a.jovenes - jovenes.a.adultos
dadultos <- jovenes.a.adultos - adultos.a.tercera
dtercera.edad <- adultos.a.tercera - muertes
dreservas.de.agua <- recarga - evaporacion - consumo
list(c(dniños,
djovenes,
dadultos,
dtercera.edad,
dreservas.de.agua
),
estres.hidrico = estres.hidrico,
deficit.hidrico = deficit.hidrico)
})
}
parameters<-c(
tasa.natalidad = 25/1000, # 25 niños por cada 1000 adultos
tiempo.niño = 15, # años, promedio
tiempo.jovenes = 10, # años, promedio
tiempo.adulto = 40, # años, promedio
tiempo.tercera = 20, # años, promedio
recarga = 5000000, # millones de m3 por año
evaporacion = 10000000, # millones de m3 por año
consumo.perCap.niños = 100/1000, # m3
consumo.perCap.jovenes = 100/1000, # m3
consumo.perCap.adultos = 150/1000, # m3
consumo.perCap.tercera = 150/1000 # m3
)
InitialConditions <- c(
niños = 1000000,
jovenes = 500000,
adultos = 2000000,
tercera = 500000,
reservas.de.agua = 100000000
)
times <- seq(0, #initial time
50, #end time
1 ) #time step
intg.method<-c("rk4")
out <- ode(y = InitialConditions,
times = times,
func = estres.hidrico,
parms = parameters,
method =intg.method )
plot(out,
col=c("blue"))
El año en el que el déficit hídrico es mayor a 1 es en 2028.
El estrés hidrico se mantiene en aumento durante los 50 años modelados. Esto se debe a que la población de personas de la tercera edad se mantiene en aumento y por encima de la población de adultos, lo que mantiene el consumo de población inactiva y por ende aumenta el estrés hídrico.
Promover el ahorro de agua por parte de las poblaciones de adultos de la tercera edad, ofreciendo una serie de descuentos sobre los cobros por el agua al llegar a metas determinadas de ahorro. Por ejemplo, si consumió menos de x litros de agua ofrecer un 10% de descuento, si consumió y litros de agua ofrecer un 20% de descuento (donde x > y), y así sucesivamente.
library(deSolve)
estres.hidrico.con.ahorro <- function(t, state, parameters) {
with(as.list(c(state,parameters)), {
#Endogenous auxiliary variables
consumo.niños <- consumo.perCap.niños * niños
consumo.jovenes <- consumo.perCap.jovenes * jovenes
consumo.adultos <- consumo.perCap.adultos * adultos
consumo.tercera <- (consumo.perCap.tercera * tercera) * (1 - ahorro)
consumo.inactivos <- consumo.niños + consumo.jovenes + consumo.tercera
#Flow variables
nacimientos <- adultos * tasa.natalidad
niños.a.jovenes <- niños / tiempo.niño
jovenes.a.adultos <- jovenes / tiempo.jovenes
adultos.a.tercera <- adultos / tiempo.adulto
muertes <- tercera / tiempo.tercera
consumo <- consumo.inactivos + consumo.adultos
#Métricas de desempeño
estres.hidrico <- consumo.inactivos/adultos
deficit.hidrico <- consumo/reservas.de.agua
#State (stock) variables (d)
dniños <- nacimientos - niños.a.jovenes
djovenes <- niños.a.jovenes - jovenes.a.adultos
dadultos <- jovenes.a.adultos - adultos.a.tercera
dtercera.edad <- adultos.a.tercera - muertes
dreservas.de.agua <- recarga - evaporacion - consumo
list(c(dniños,
djovenes,
dadultos,
dtercera.edad,
dreservas.de.agua
),
estres.hidrico = estres.hidrico,
deficit.hidrico = deficit.hidrico)
})
}
parameters<-c(
tasa.natalidad = 25/1000, # 25 niños por cada 1000 adultos
tiempo.niño = 15, # años, promedio
tiempo.jovenes = 10, # años, promedio
tiempo.adulto = 40, # años, promedio
tiempo.tercera = 20, # años, promedio
recarga = 5000000, # millones de m3 por año
evaporacion = 10000000, # millones de m3 por año
consumo.perCap.niños = 100/1000, # m3
consumo.perCap.jovenes = 100/1000, # m3
consumo.perCap.adultos = 150/1000, # m3
consumo.perCap.tercera = 150/1000, # m3
ahorro = 20/100
)
InitialConditions <- c(
niños = 1000000,
jovenes = 500000,
adultos = 2000000,
tercera = 500000,
reservas.de.agua = 100000000
)
times <- seq(0, #initial time
50, #end time
1 ) #time step
intg.method<-c("rk4")
out <- ode(y = InitialConditions,
times = times,
func = estres.hidrico.con.ahorro,
parms = parameters,
method =intg.method )
plot(out,
col=c("blue"))