Envolturas MDS

Envolturas para modelos de dinámicas de sistemas son subclases de ModeloMDS.

Note

Las envolturas para modelos DS son universales. Es decir, la misma envoltura funcionará para todos los modelos creados con el mismo programa (p. ej., Vensim), no importe el contenido del modelo sí mismo.

Cómo crear tu envoltura

Funciones y atributos para implementar:

  1. unidad_tiempo(): Devuelve la unidad de tiempo del modelo.
  2. incrementar(): Avanza el modelo.
  3. __init__(): Inicializa el modelo. En la llamada a super().__init__ debes incluir un objeto VariablesMDS con los variables del modelo.
  4. cambiar_vals(): No estríctamente necesario, pero la casi totalidad de modelos DS necesitarán tomar acción específica para cambiar valores de variables en el modelo externo.
  5. ModeloDS.ext: Una lista de las extensiones de archivo que se pueden leer por la envoltura.

Funciones y atributos opcionales:

  1. paralelizable(): Indica si el modelo se puede paralelizar para ahorar tiempo.
  2. iniciar_modelo(): Acciones llamadas justo antes de la simulación.
  3. cerrar(): Efectua acciones de limpieza al final de una simulación.
  4. _correr_hasta_final(): Permite el modelo de combinar pasos de simulación cuando posible para ser más rápido.
  5. instalado(): Verifica si el modelo correspondiendo a la envoltura está instalado en la computadora o no.

Avertissement

Tu implementación de incrementar() debe incluir una llamada a super().incrementar(rebanada) al final para que valores de parámetros externos y de clima se actualicen correctamente. Igualmente, cualquier reimplementación de iniciar_modelo() debe incluir una llamada a super().iniciar_modelo(corrida) al final, y cambiar_vals() una a super().cambiar_vals(valores).

Cada variable en VariablesMDS debe ser uno de VarConstante, VarInic, VarNivel, o :class:`~tinamit.envolt.mds.VarAuxiliar.

Autogeneración

La función gen_mds() de Tinamït puede escoger automáticamente la envoltura más apropriada para un archivo dado de modelo DS según el atributo ModeloMDS.ext de cada clase de envoltura. Puedes llamar la función registrar_envolt_mds() para registrar tu nueva clase de modelo DS en Tinamït, y olvidar_envolt_mds() para quitarla.

Si estás modificando el código fuente de Tinamït, puedes agregar tu clase a tinamit.envolt.mds._auto._subclases para que se tome automáticamente en cuenta.

Distribución

Puedes compartir tu nueva envoltura como paquete Python independiente. Igualmente puedes contribuirlo al código fuente de Tinamït, después de cual todas las usuarias de Tinamït podrán acceder tu envoltura.