Simulaciones en grupo¶
Si tienes muchas simulaciones para efectuar, puedes ahorar tiempo por hacerlas por grupos con la función
simular_grupo()
y un objeto de simulaciones por grupos
(OpsSimulGrupo
). Igualmente se pueden paralelizar las corridas para ahorar más tiempo.
from tinamit.mod import OpsSimulGrupo
from tinamit.envolt.mds import gen_mds
mod = gen_mds('Mi modelo.xmile')
vals_extern = [{'Política 1': 0, 'Política 2': 1}, {'Política 1': 1, 'Política 2': 0}]
ops = OpsSimulGrupo(t=[100, 150], extern=vals_extern)
res = mod.simular_grupo(ops)
En el ejemplo arriba, simularemos el modelo con Política 2
para 100 pasos, y con Política 1
por 150 pasos.
Advertencia
Cada opción con valores múltiples debe ser una lista, y cada lista presente en las opciones debe tener el mismo tamaño.
Opciones que no se especificaron en formato de lista se aplicarán a todas las corridas. En el ejemplo abajo, cada política se correrá por 100 pasos.
res = mod.simular_grupo(OpsSimulGrupo(t=100, extern=vals_extern))
Combinaciones¶
También se puede ejecutar todas las combinaciones posibles para las opciones de simulación con un objeto
OpsSimulGrupoCombin
. Por ejemplo, puedes simular todas las combinaciones de
distintas políticas con varios escenarios de cambios climáticos.
from tinamit.mod.clima import Clima
clima_malo = Clima(lat=31.569, long=74.355, elev=10, escenario='2.6')
clima_peor = Clima(lat=31.569, long=74.355, elev=10, escenario='4.5')
clima_fritos = Clima(lat=31.569, long=74.355, elev=10, escenario='8.5')
t = EspecTiempo(365*50, f_inic='2020-01-01')
ops = OpsSimulGrupoCombin(t=t, extern=vals_extern, clima=[clima_malo, clima_peor, clima_fritos])
res = mod.simular_grupo(ops)
# Para ver cuáles combinaciones corresponden con cada resultado (en orden)
list(ops)