Ejercicios avanzados en Dinámica de Sistemas
Juan Martín García
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
1
2
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
3
Ejercicios avanzados en Dinámica de Sistemas Autor y editor: Juan Martín García Registro de la Propiedad Intelectual B-1156-08 ISBN 978-84-612-2792-1 © 2008 Juan Martín García mail:
[email protected] Primera edición. 2008 Segunda edición. 2011 Impreso en Barcelona (España) No está permitida la reproducción total o parcial de este libro, ni su tratamiento informático, ni la transmisión de ninguna forma o por cualquier medio, ya sea electrónico, mecánico, por fotocopia, por registro u otros métodos, sin el permiso previo y por escrito del titular del Copyright.
4
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
Índice
Introducción 0. Instalación del software 1. Creación de aging chains 1.1. Caso. Estudio de una catástrofe 1.2. Ejercicio práctico 2. Creación de diagramas complejos 2.1. Caso. Desarrollo de una epidemia 2.2. Ejercicio práctico 3. Uso de variables cualitativas 3.1. Caso. El joven ambicioso 3.2. Ejercicio práctico 4. Importación y exportación 4.1. Caso. CFC 11 4.2. Importar datos de una hoja Excel 4.3. Exportar resultados a una hoja Excel 4.4. Ejercicio práctico. CFC 11 4.5. Ejercicio práctico. Kaibab 5. Creación de juegos de simulación 5.1. Caso. Construcción de viviendas 5.2. Creación de modelos de simulación 5.3. Desarrollo del juego 5.4. Ejercicio práctico. Casas 5.5. Ejercicio práctico. Cerdos 6. Simulación interactiva 6.1. Caso. La carrera de armamentos 6.2. Simulaciones interactivas 6.3. Experimentos de simulación 6.4. Construir un panel de control 6.5. Ejercicio práctico. Población 7. Diseño de pantallas de entrada y salida 7.1. Caso. Clientes y publicidad 7.2. Controles de salida 7.3. Controles de entrada 7.4. Enlaces de navegación 7.5. Ejercicio práctico. Depósito 8. Análisis de sensibilidad 8.1. Caso. El equipo de ventas 8.2. Distribuciones estadísticas 8.3. Resultados. Variables de interés 8.4. Análisis de sensibilidad 8.5. Ejercicio práctico. Kaibab
7 9 13
21
31
37
55
69
87
103
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
5
6
9. Comparación modelo y realidad 9.1. Caso. Evolución del SIDA en el País Vasco 9.2. Estructura del modelo 9.3. Ecuaciones del modelo 9.4. Instrucciones para la creación del modelo 10. Validación de un modelo 10.1. Las ecuaciones del Reality Check 10.2. Test imputs 10.3. Constraints 10.4. Funciones del Reality Check 10.5. Reality Check Control 10.6. Caso. Crecimiento de la levadura 10.7. Ejercicios prácticos
118
Anexo. Funciones, tablas y retrasos Agradecimientos
173 183
133
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
Introducción Este texto es la continuación natural del libro “Teoría y ejercicios prácticos de Dinámica de Sistemas” y tiene por objetivo abordar aspectos específicos de creación de modelos de simulación aplicando esta metodología, que son necesarios para poder aprovechar al máximo las prestaciones que el software nos ofrece. Un aspecto a destacar es que si bien todos los ejercicios del libro citado pueden hacerse con el Vensim PLE, que es un software gratuito para uso personal y educativo, gran parte de los ejercicios de este libro requieren disponer de una licencia del software Vensim PLE Plus, o sus equivalentes en Stella, ithink o Powersim. En este texto se han omitido los aspectos teóricos o conceptuales con excepción de lo relativo a los análisis de sensibilidad y la validación de modelos. Es pues básicamente un libro con un enfoque muy práctico. La estructura de los capítulos se basa en la exposición de un caso que se pide al lector que realice siguiendo los pasos que se le señalan, para adquirir practica en cada uno de los temas que se exponen, y a continuación se halla uno o varios ejercicios para aplicar lo aprendido. El lector dispone de la solución a estos ejercicios en el CD adjunto. El contenido se ha depurado todo lo posible para lograr un aprendizaje rápido y autónomo, pero es innegable que la ayuda de un profesor será siempre muy positiva.
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
7
8
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
Instalación del software Para realizar los ejercicios a partir del capítulo 4 es necesario disponer de una licencia del software Vensim PLE Plus o superior. Dicha licencia puede adquirirse desde la web http://www.vensim.com. Un vez que haya realizado el pago recibirá por email el código de la licencia:
To install the software use the registraction code: Your name: Martín Martín Martín Registration Code: 9KK9K-9KKKK-99K99-K9KK9 Company: Specimen Product PLE Plus Academic Serial#: PL10000 If you have any questions please feel free to contact me. Bob Eberlein Ventana Systems, Inc. 60 Jacob Gates Road Harvard MA 01541 508 651 0432 Fax 508 650 5422 mailto:
[email protected]
Cuando reciba un email con el código, abra en su PC una carpeta con el nombre Vensim y vaya al apartado Dowload de la web http://www.vensim.com y copie el código de registro, a continuación pulse Choose Product.
Se le abrirá la web para descargar en su PC los ficheros.
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
9
Pulse en el botón con la versión más reciente del software y escoja la opción Guardar de las diferentes carpetas o “disk”
Una vez descargadas todos los “disk” vaya a la carpeta Vensim y ejecute el fichero venplp32 Siga las instrucciones e introduzca exactamente los datos que ha recibido en el mail con la licencia. Para evitar errores es preferible usar las opciones Copiar y Pegar desde el mail que teclear los nombres del usuario, la empresa y la licencia.
10
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
Escoger la carpeta donde deseamos instalar el programa.
Y seguir las instrucciones hasta que aparezca el botón: Por último es conveniente copiar el icono del programa en el escritorio del PC. Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
11
12
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
1. Creación de aging chains Las aging chains se exponen en el libro “Business Dynamics” de John Sterman como la representación de sistemas en los cuales sus elementos pasan por un conjunto de etapas que están reguladas por diferentes tiempos de retraso. Este tipo de sistemas se hallan tanto en los procesos industriales, donde los materiales son transformados de forma secuencial, como en los análisis de problemas medioambientales y sociales donde por ejemplo los individuos van escalando posiciones en la pirámide de edad. Si bien el texto “Teoría y ejercicios prácticos de Dinámica de Sistemas” comienza con un modelo básico de dinámica poblacional, este texto empieza con un modelo poblacional algo más complejo, que ilustra un aspecto muy frecuente en los temas sociales, medioambientales, y empresariales. Se trata de un sistema en el que los elementos van pasando por sucesivas etapas -o edades -. En resumen en este capítulo se trata de: 1.- construir el modelo en base al texto que nos facilitan. 2.- asignar unidades coherentes a las variables. 3.- añadir una imagen al diagrama de flujos. 4.- introducir una distribución de probabilidad en una de las variables. 5.- simular el impacto en el sistema de un cambio brusco y puntual. 6.- comparar los resultados del modelo con las expectativas previas. 7.- aprender a enviar modelos con imágenes incorporadas.
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
13
1.1. Caso. Estudio de una catástrofe La Tierra de los Bosques es una región próspera situada en una región templada con abundante vegetación. Sus habitantes llevan una existencia feliz y placentera. En total son 1.000.000 de personas y esta cifra se ha mantenido estable en los últimos años. Actualmente el 40% son jóvenes de menos de 20 años. Un 50% de la población es adulta, entre 20 y 70 años, y los otros son ancianos. Por otra parte sabemos que sus parámetros poblaciones son los siguientes: su esperanza de vida es de 80 años, que la tasa de natalidad de la población adulta es del 6% anual, y que las tasas de mortalidad son el 2,5% para los jóvenes y del 2% para los adultos. Todos estos parámetros se han mantenido estables y no se espera que tengan modificaciones en el futuro. Para hacer este estudio vamos a hacer un sencillo modelo de simulación, de forma que situaremos su fecha de inicio en el año 2000, y el horizonte temporal a 50 años. - Construir el modelo en un escenario de población estable, del 2000 al 2050 recogiendo los parámetros que nos han facilitado, con ayuda del siguiente esquema:
14
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
- Definir en File New Model o bien en Model – Settings: TIME STEP = 1 INITIAL TIME = 2000 FINAL TIME = 2050 y Units for time = año. - Verificar que la variable Población total se mantiene en equilibrio. El modelo ha de reproducir una situación estable de la población total en 1.000.000 de personas. - Asignar las unidades y comprobar su coherencia con Model –Units Check de forma que la revisión de las unidades de las variables del modelo indique Units are OK. Para verificar el modelo antes de continuar puede consultar la solución en la página siguiente. En algunas versiones del software no es posible usar la ñ o acentos
Añadir una imagen en la pantalla Para añadir una imagen en un diagrama de flujos, vaya a su editor de imágenes, abra una imagen y seleccione un área de ella, luego haga Copy. Vaya a la pantalla del Vensim pulse el icono superior "Com", pulse en la pantalla del modelo, y active la opción Metafile (pulsando sobre el circulo que aparece a la izquierda de la palabra Metafile) y OK. Se importa la parte de la imagen que hemos copiado. Una segunda opción para añadir una imagen es pulsar el botón Import que aparece en la ventana que se abre cuando pulsamos sobre el icono Com y después en la pantalla. En esta opción hemos de seleccionar un fichero con una imagen en formato bmp. Se importa la imagen completa que tengamos en el fichero. - Adjuntar una imagen relacionada con el texto.
Variables aleatorias Añadir una distribución de probabilidad
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
15
Ecuaciones del modelo Niveles adultos = +madurez-vejez-muerte de adultos Initial value: 500000 Units: personas jovenes =+nacimientos-madurez-muerte de jovenes Initial value: 400000 Units: personas ancianos = +vejez-muerte natural Initial value: 100000 Units: personas Flujos madurez= jovenes/Periodo de madurez Units: personas/año muerte de adultos= adultos*Tasa de mortalidad adultos Units: personas/año muerte de jovenes= jovenes*Tasa de mortalidad jovenes Units: personas/año muerte natural=ancianos/Periodo final Units: personas/año nacimientos= adultos*Tasa de natalidad Units: personas/año vejez= adultos/Periodo de vejez Units: personas/año Variables auxiliares Periodo de madurez= 20 Units: año Años que tardan los jóvenes en pasar a adultos Periodo de vejez= 50 Units: año Años que tardan los adultos en pasar a ancianos Periodo final= 10 Units: año Número de años de vida en el grupo de ancianos Tasa de mortalidad adultos= 0.02 Units: 1/año Tasa de mortalidad jovenes= 0.025 Units: 1/año % de jóvenes que mueren sin llegar a adultos Tasa de natalidad=0.06 Units: 1/año poblacion total= adultos+jovenes+ancianos Units: personas 16
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
Añadir una distribución de probabilidad En ocasiones queremos introducir en el modelo el hecho real de que una determinada variable tiene un valor medio con una cierta distribución de probabilidad. Sabemos que la tasa de natalidad tiene un valor medio del 6% que oscila entre el 3% y el 9% con una distribución de probabilidad Normal con una desviación típica del 2%. Para introducir este hecho el modelo escribiremos la ecuación que incluye la función RANDOM: Tasa de natalidad = RANDOM NORMAL(min,max, mean, stdev, seed) Tasa de natalidad = RANDOM NORMAL(0.03, 0.09, 0.06 , 0.02, 3) Siendo la cifra “seed” el 3 un valor cualquiera que el software utiliza para empezar a crear valores aleatorios. Los resultados de la simulación han de ser como se observa en la imagen siguiente.
- Añadir la función de distribución de probabilidad a la tasa de natalidad, y observar de forma comparativa los resultados que produce, para ello asignar un nuevo nombre a la simulación.
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
17
1.2. Ejercicio práctico Una noche desgraciada del verano del año 2005 se desata un terrible incendio, y durante una larga semana el fuego avanza sin control arrasando todo a su paso. Los servicios de emergencia consiguen poner a salvo a todos los jóvenes y los ancianos, pero cuando cesa el incendio descubren que el total de víctimas es de 100.000 personas siendo todas ellas adultas. Se desea hacer una estimación de cual será la evolución del número de personas totales de la Tierra de los Bosques tras la catástrofe, sabiendo que los parámetros poblacionales (esperanza de vida, tasa de natalidad y tasas de mortalidad) van a permanecer constantes. - Introducir en el modelo la catástrofe que afecta a 100.000 adultos y determinar el número de años que tardará la población en recuperar el valor de 1.000.000 de personas. El modelo actual nos permite reproducir una situación estable. A continuación se modificará para simular la catástrofe que afecta a 100.000 adultos. El primer efecto será sin duda una reducción de la población desde 1.000.000 a 900.000 personas, y queda por determinar la evolución futura. Para simular los efectos de la catástrofe en el 2005 con un coste de 100.000 personas adultas, se crea un nuevo flujo de salida del nivel de adultos, y se utiliza la función PULSE, indicando que será en el periodo 2005 y tendrá una duración de 1 periodo. Es necesario modificar además la ecuación de adultos para incluir el nuevo flujo.
La función PULSE toma el valor 0 hasta el periodo t (2005 en este caso), y durante n periodos (1 en nuestro modelo) toma el valor 1. Queremos simular que salen 100.000 personas adultas y por ese motivo multiplicamos el resultado de la función PULSE (que es 1) por la cifra de 100.000. Para observar con más claridad las dinámicas que se generan es conveniente eliminar el componente aleatorio de la variable tasa de natalidad, de forma que retome el valor de la versión inicial que era 0.06
18
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
Expectativas y resultados del modelo Antes de simular podemos preguntarnos por el escenario que intuimos al cabo de 20 años, es decir: a) la población permanecerá estable en 900.000 personas. b) la población será de 1.000.000 de personas al cabo de pocos años. c) la población será de 1.000.000 de personas al cabo de muchos años. d) … e) … Es importante antes de ejecutar un modelo anotar en un papel los resultados que esperamos observar en base a nuestra experiencia o intuición. Así, cuando obtenemos los resultados de la simulación podremos ver si éstos confirman nuestras expectativas. Si confirman nuestras expectativas, podemos tener aún una mayor confianza en ellas y en nuestra capacidad de percibir esa realidad. Ahora bien, si los resultados del modelo no confirman nuestras expectativas, hemos de verificar en primer lugar que no hay ningún error en el modelo, y si no es así, reconsiderar las bases de nuestras expectativas previas – Analizar los resultados y comprobar si los resultados que muestra el modelo coinciden con las expectativas. Imaginemos ahora que la catástrofe hubiese afectado sólo a 100.000 jóvenes o a 100.000 ancianos. - Introducir estas nuevas hipótesis en el modelo y comparar los resultados obtenidos para la Población total con los de la simulación de la catástrofe que afecta a 1000.000 adultos. - Comparar la amplitud de las oscilaciones de Nacimientos, Mudurez y Vejez, ¿se mantienen, reducen o amplifican las oscilaciones? Comentar las razones.
Enviar un modelo con imágenes por email Para enviar por email un modelo que contiene imágenes es necesario enviar el fichero del modelo, que tiene extensión mdl, junto con un fichero que se genera automáticamente con extensión met si se ha seguido la primera de las opciones comentadas, o con el fichero de extensión bmp si se ha seguido la segunda opción. El receptor del email debe de guardar ambos ficheros en una misma carpeta y al abrir el modelo éste incorporará las imágenes originales.
La solución al ejercicio se halla en el CD Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
19
Sinómimos de unidades En el Model – Settings- Units Equiv podemos indicar que unidades son sinómimos, ya que si no lo hacemos el Check Units no identifica la igualdad de palabras en mayúscula o minúscula, ni singular y plural. Por ejemplo podríamos definir las siguientes:
20
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
2. Creación de diagramas complejos
El aspecto gráfico de un modelo de simulación es importante tanto para facilitar el trabajo de la propia persona que lo crea, como para poder compartirlo con claridad con otras personas. Un diagrama con una clara presentación evita errores en su diseño y da confianza a la persona que lo debe de interpretar. Por ello, vamos a hacer a continuación un ejercicio cuyo principal interés es que el alumno conozca la forma de manejar diagramas que adquieren una cierta complejidad gráfica. Los principales puntos de interés de este tema son: 1.- crear canales de flujos con curvas y bifurcaciones. 2.- añadir color a los gráficos para resaltar ciertos aspectos. 3.- uso de las “shadow variables” 4.- creación de avisos para valores máximos y mínimos de una variable. 5.- representaciones con gráficos X-Y
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
21
2.1. Caso. Desarrollo de una epidemia
Supongamos una población inicialmente sana, en la cual aparece un cierto número de infectados por una enfermedad contagiosa. Un individuo podrá transmitir o infectarse de la enfermedad de otros individuos. La transmisión de la enfermedad se produce debido a la proximidad física. Durante el proceso infeccioso, los individuos pueden pasar por todos o algunos de los siguientes estados: o Susceptibles (S), estado en el cual el individuo puede ser contagiado por otra persona que esté infectada; o Infectado (I),estado durante el cual el individuo se halla infectado y puede además infectar a otros; o Recuperado (R), o curado, estado durante el cual el individuo no puede ni ser infectado por haber adquirido inmunidad (temporal o permanente) ni infectar (por haber recuperado o haber pasado la etapa contagiosa de la enfermedad). Entre las enfermedades infectocontagiosas encontramos dos grupos principales: o Las que confieren inmunidad al infectado (temporal o permanente) una vez recuperado, la mayoría de origen viral (sarampión, varicela, poliomielitis); y o Las que, una vez recuperado, el individuo vuelve a ser susceptible inmediatamente, entre las que encontramos las causadas por agentes bacterianos (enfermedades venéreas, peste, algunas meningitis) o protozoos (malaria). Teniendo en cuenta los distintos estadios relacionados con un proceso infeccioso, los modelos epidemiológicos se dividen en tres grandes grupos: SIR: El modelo susceptible-infectado-recuperado, relacionado con las enfermedades que confieren inmunidad permanente y un ciclo típico incluye los tres estados. Esto no quiere decir que todos los individuos de una población deban pasar por estos, algunos no serán infectados y permanecerán sanos, o sea siempre en estado S, otros serán inmunizados artificialmente por vacunación, o algún otro método y pasarán a ser R sin haber estado infectados. SIRS: El modelo susceptible-infectado-recuperado-susceptible, idéntico al anterior, pero aplicable a casos en que la inmunidad no es permanente y el individuo vuelve a ser susceptible después de un cierto periodo, tal como la gripe. SIS: El modelo susceptible-infectado-susceptible; se usan en casos en que la enfermedad no confiere inmunidad y el individuo pasa de estar infectado a susceptible nuevamente, saltando la etapa R. Un modelo puede tener en cuenta la dinámica vital de la población (nacimientos, muertes, movimientos migratorios) dependiendo del horizonte temporal analizado, y de las características de la enfermedad y de la población estudiada.
22
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
El modelo Vamos a utilizar como referencia de nuestro modelo a uno de los modelos epidemiológicos más conocidos de la literatura biológica. Es el modelo SIR de Kermack y Mc Kendrick, http://mathworld.wolfram.com /Kermack-McKendrickModel .html que se expresa como:
siendo S la población susceptible de enfermar, I la población infectada, y R la población que ha pasado la enfermedad y se halla recuperada. Existen dos constantes que son la tasa de infección (beta) y la tasa de curación o recuperación (gamma). Para dibujar el Diagrama de Flujos pulsamos Model – New File, indicamos Initial Time = 0, Final Time = 20, Time Step=1, Units for time=mes y seguimos los siguientes pasos. Creamos los 3 niveles
Añadimos el flujo de vacunados
Desplazamos el flujo hacia abajo
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
23
Pulsamos en el círculo situado sobre el canal del flujo y lo desplazamos abajo a la derecha para dibujar la entrada en recuperados.
Dibujamos el flujo de expuestos y repetimos el proceso. obteniendo un conjunto de flujos que se realimentan.
Completamos el modelo con los flujos de enferman, curan y mueren.
Pulsando con el ratón derecho sobre el símbolo del flujo de muertes podemos modificar la situación del texto, y su color.
24
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
Pulsando con el botón derecho del ratón sobre los círculos que hay en las flechas o los flujos es posible modificar los colores de los mismos para resaltar determinadas relaciones en el modelo.
Variable duplicadas Podemos añadir elementos duplicados (o shadow variables). pulsando en y se nos abre un menú donde podemos escoger la variable que deseamos copiar. La utilidad de estas copias es evitar que se produzcan excesivos cruces de flechas en el modelo. En nuestro caso crearemos la variable Total población como suma de los tres posibles estados.
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
25
Las ecuaciones son sencillas ya que los Niveles varían en función de las entradas y salidas que les hemos asignado, con su signo correspondiente, y los flujos son en general el producto del valor de un nivel por el de una tasa. Hay algunas formulas más complejas: enferman Aplicamos en la ecuación la fórmula del modelo de Kermack y Mc Kendrick, según la que el número de personas que enferman se puede calcular como el producto del número de personas susceptibles, por el de personas infectadas por la tasa de contagio. tensión La formula básica de las personas vacunadas es igual al número de personas susceptibles multiplicado por la tasa de vacunación (ésta depende del tipo de enfermedad, de factores culturales, etc.), es decir: vacunadas=susceptibles x tasa de vacunación. Deseamos introducir en esta ecuación el hecho de que las personas se vacunan más cuando perciben que existe un riesgo importante de contraer la enfermedad. Calculamos este riesgo como el cociente enferman/susceptibles, que indica cuantas personas enferman en relación a la cantidad de personas que pueden enfermar. Creamos la variable tensión que recoge tanto la tasa de vacunación como el cociente enferman/susceptibles, es decir tensión= (enferman/susceptibles)*tasa de vacunación.
Alertas de valores mínimo y máximo Podemos indicar al software que nos interesa recibir un aviso (Warning) cuando una variable toma una valor menor a cierto límite inferior, o bien un valor mayor que un cierto límite superior. Para ello indicaremos estos valores en la parte inferior de la ventana de la ecuación:
Gráficos X-Y El software nos muestra como resultado de la simulación la evolución temporal de las variables, pero podemos también observar esta evolución en un gráfico XY donde aparece reflejada la evolución de dos variables, una en el eje X y otra en el eje Y. Para ello hemos de definir la gráfica en la opción Control – Panel indicando la variable que deseamos ver en el eje X y cual en el eje Y, por ejemplo podemos desear ver en el eje X a la variable enferman y en el eje Y la variable muertes.
26
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
En este caso el resultado es la siguiente gráfica, que nos permite observar la relación que existe entre ambas variables en diferentes puntos de la simulación. Así tenemos un valor igual a 10 muertos para dos situaciones diferentes del número de personas que enferman, la primera con 90 personas que enferman y la segunda con solo 20.
En cierta forma esto mismo se puede observar con la representación tradicional pero es mucho más complicado hacerlo. Para ver la siguiente gráfica seleccionar las variables muertes y enferman en el menú Windows – Control Panel – Graph - New
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
27
Ecuaciones del modelo Nota 1: En este modelo no entraremos información sobre las unidades de las variables ya que el propósito del mismo es aprender a dibujar un diagrama de flujos complejo. Nota 2: Es normal que el software nos de un mensaje de aviso de que la variable Total población no se utiliza, ya que es un elemento que no influye en ningún otro elemento. Nota 3. La ecuación de enferman reproduce el modelo SIR de Kermack y Mc Kendrick, porque los expertos nos aseguran que funciona bien en la vida real, aunque no es coherente desde el punto de vista de las unidades. Niveles Susceptibles = +expuestos-enferman-vacunados Initial Value = 900 Infectados = +enferman-curan-muertes Initial Value = 100 Recuperados = curan+vacunados-expuestos Initial Value = 0 Flujos curan = Infectados*tasa de curación enferman = Susceptibles*tasa de contagio*Infectados expuestos = Recuperados*tasa de exposición muertes = Infectados*tasa de mortalidad vacunados = Susceptibles*tensión Variables auxiliares tasa de contagio= 0.001 tasa de curación= 0.4 tasa de exposición= 0.05 tasa de mortalidad= 0.1 tasa de vacunacion= 0.5 tensión=(enferman/Susceptibles)*tasa de vacunacion Total poblacion=Infectados+Recuperados+Susceptibles
28
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
Comportamiento observado Pulsando en los iconos de la izquierda de la pantalla podemos ver con más detalle el comportamiento de algunas variables especialmente significativas.
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
29
2.2. Ejercicio práctico - Definir que deseamos recibir un aviso de información (warning) cuando la variable de Infectados tome un valor mínimo de 50 o bien uno máximo de 150, y comprobar que se reciben estos tres avisos al ejecutar este modelo.
- Representar en un gráfico XY la evolución de las variables que recogen el flujo de personas expuestas y de las que enferman.
- Con ayuda de un grafico XY identificar qué Población total existe en aquellos periodos que se producen 15 muertes. Nota Para visualizar la evolución de las variables en las gráficas con marcas ( 1, 2, 3,..) además de colores, cosa que es útil si vamos a hacer copias en blanco y negro del documento, pulsar en Options – Options – Show Line Markers on Graph Lines
La solución al ejercicio se halla en el CD 30
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
3. Uso de variables cualitativas En los estudios sobre temas económicos, medioambientales o sociales nos encontramos con aspectos importantes del mismo que no podemos cuantificar pero que influyen de forma decisiva en el funcionamiento del sistema y que por lo tanto hemos de incluir en nuestro estudio. El siguiente ejercicio sirve para ver las posibilidades y las limitaciones con las que podemos abordar el estudio de este tipo de problemas. Los principales aspectos de este capítulo se centran en: 1. Crear y utilizar variables cualitativas en base a definir una escala de valores numéricos que reflejan el estado de un elemento del sistema. 2. Documentar el modelo, de forma que sea fácil de comprender el significado de las variables del sistema y de las ecuaciones que recogen las relaciones entre ellos. 3. Proponer acciones concretas en base a las simulaciones realizadas en el modelo.
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
31
3.1. Caso. El joven ambicioso Un joven ambicioso de 20 años, al finalizar sus estudios básicos, nos comenta que ha oído a su padre mil veces decir que se ha "matado trabajando desde que era un chaval", y esto, visto las úlceras y problemas de corazón que tiene, debe ser algo más que una frase hecha. Tiene claro que no quiere acabar así. De nuestra conversación con él, sacamos los siguientes apuntes, un poco desordenados: - Sus ingresos deseados son de 5.000 euros al año. - Horas de trabajo: supone puede encontrar trabajo, ya que le sobra salud y ganas de trabajar. - Salario por hora: sólo con estudios básicos calcula unas 5 euros/hora. - Ingresos reales: son función del salario y las horas trabajadas. - Necesita algunas horas de descanso,-cuando se ha fatigado como todos, para él descanso es todo: dormir, comer, leer, etc. - Salud: no tiene ningún problema. - Fatiga: aunque es joven no es una máquina, será función de las horas que trabaje. - Gastos: de momento seguirá viviendo con sus padres ( gastos = 0 ) - Teniendo en cuenta sus ingresos deseados ( 5.000 euros) y el salario por hora (5 euros/hora), calculamos que debería trabajar 1.000 horas al año (4 al día). - Vista la experiencia de su padre, sabe que si llegase a trabajar 12 horas al día como hace él, su salud se resentiría. - Espera casarse y tener hijos a los 35, entonces necesitará mayores ingresos, tal vez unos 20.000 euros al año. Nuestro amigo, antes de tomar la decisión sobre el camino que desea seguir en la vida, y sólo para poner en orden sus ideas, nos pide que le hagamos un sencillo modelo que le ayude a planificar mejor su futuro. Comentarios: o El modelo debe de abarcar toda la vida laboral (de 20 a 65 años). o Hay dos aspectos que le preocupan especialmente al joven: la salud y los ingresos. o Necesita que le planteemos alguna alternativa, no que le adivinemos su futuro. o Se pueden incorporar al modelo los elementos que creamos necesarios para plantear alternativas. 32
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
Estructuramos toda la información recibida en el siguiente diagrama causal, que tiene dos zonas: la económica y la relativa a la salud.
La traducción del Diagrama Causal al Diagrama de Flujos es necesaria para poder trabajar en el ordenador y no es un proceso automático, sino que con mucha frecuencia requiere crear nuevos elementos como Flujos. Una posible solución es la que se indica.
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
33
Ecuaciones del modelo INITIAL TIME
= 20
FINAL TIME
= 65
TIME STEP=1
diferencia = ingresos deseados-ingresos reales Es la diferencia entre los ingresos deseados en ese momento menos los ingresos reales que obtiene. fatiga = WITH LOOKUP ( Horas de Trabajo ((0,0),(1000,0),(2000,10),(3000,20),(4000,40)) Es función de las horas de trabajo anual, según recogemos en la Tabla. Cuando las horas de trabajo son 1000, la fatiga es de 0, cuando trabaja 2000 horas la fatiga es de 10, y va aumentando. En la ecuación, indicar que esta variable es del tipo Auxiliary with Lookup y entrar los datos pulsado el botón de As Graph
Horas de Trabajo = variación Valor inicial: 0 Son las horas de trabajo anual que realiza. Inicialmente 0. Fuente Wikipedia “Working time” entre Holanda 1300 y Corea: 2300 horas al año. ingresos deseados = 5000+STEP(15000,35) Inicialmente son de 5.000 euros anuales, y a partir de los 35 años recogemos la idea que deseará 20.000 debido a compromisos familiares. ingresos reales = salario*Horas de Trabajo Los ingresos reales son el producto del salario por las horas de trabajo que realiza recuperación de la fatiga = WITH LOOKUP ( fatiga ((0,0),(10,10),(20,15),(30,20),(40,20)) Vamos a considerar que la Recuperación es función de la Fatiga, de forma que si no existe Fatiga (entendida como perdida de salud) a lo largo de la jornada, al final no hay nada que recuperar. Esta función está en la Tabla. El punto (0,0) indica que cuando no hay fatiga no hay recuperación, el punto (10,10) indica que cuando hay
34
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
una fatiga moderada, hay una recuperación igual, y cuando la fatiga es elevada, con valores de 20, 30 o 40 la recuperación no iguala totalmente la fatiga. salario=5 El salario es de 5 euros a la hora. Salud= recuperación de la fatiga-fatiga Valor inicial: 100 Tomamos una escala de +100 a -100, de forma que al principio, un joven de 20 años, su salud es 100, disminuirá en función de la fatiga y en cambio aumentará por la recuperación. tiempo en encontrar empleo = 5 Recogemos la idea que tardará 5 años en encontrar todo el empleo que desee. variación =(diferencia/(tiempo en encontrar empleo *salario)) *(Salud/100) En función de la Diferencia (euros) y del salario (euros/hora) calculamos cuantas horas mas necesita trabajar. Ya que esta variación no será instantánea la dividimos por el tiempo en encontrar empleo. Consideramos que aumentará las horas de trabajo en función que la salud (+100 a -100) de lo permita. Si su salud es 100 podrá aumentar las horas de trabajo todo lo que desee. En este modelo hemos visto como utilizar elementos cualitativos, como la salud y la fatiga, junto con elementos cuantitativos, como las horas de trabajo y los ingresos, y el uso de tablas para representar relaciones entre elementos sin emplear fórmulas matemáticas. La evolución de las variables del modelo inicial nos muestra que a los 65 años será una persona mal de salud y de ingresos, en concreto los resultados gráficos del modelo indican que acaba pobre, los ingresos no llegan a 5.000 euros, y muy enfermo.
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
35
3.2. Ejercicio práctico A la vista de lo resultados de la simulación, el joven decide aprovechar hasta los 35 años que trabaja pocas horas (1000 horas al año) para estudiar algo más, de forma que a esa edad pueda obtener un mayor salario. - Simular en el modelo que a partir de los 35 años su salario pasa de 5 a 7 euros/hora, y analizar los resultados en la salud y los ingresos.
La solución al ejercicio se halla en el CD 36
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
4. Importación y exportación Es frecuente disponer de datos externos que deseamos incorporar al modelo de una forma automática. La utilización de datos externos tiene dos propósitos: o bien se usan como una variable del modelo o bien como una referencia para comparar la evolución del modelo con los datos históricos reales. En el capítulo 4.1 de introducción, veremos la problemática de emisión de gases CFC 11 y crearemos un modelo básico. En el capítulo 4.2 veremos la importación de datos desde una hoja de Excel. En el capítulo 4.3. veremos el sencillo mecanismo de exportación de los resultados de una simulación a una hoja de Excel. En el capítulo 4.4. realizaremos una simulación con un escenario diferente del modelo CFC 11 y por último en el capítulo 4.5. haremos una importación de datos en el modelo de Kaibab. Es necesario tener siempre presente que los datos externos, situados en una hoja de cálculo Excel o en un fichero en formato texto, no se recalculan durante la simulación.
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
37
4.1. Caso. CFC 11 Los CFC se inventaron hace uno 70 años, mientras se buscaba una nueva sustancia refrigerante que no fuera tóxica. Una de estas nuevas sustancias, conocida por la marca comercial Freón de los laboratorios DuPont, sustituyó al amoníaco como refrigerante en los sistemas de refrigeración domésticos, y después se convirtió en el principal refrigerante de los sistemas de aire acondicionado de los automóviles. Durante los años 50 y 60, los CFC se utilizaron para otras muchas aplicaciones: como propelente en aerosoles, en la fabricación de plásticos y como limpiador para componentes electrónicos. Todas estas aplicaciones hicieron que el uso de los CFC a nivel mundial creciera exponencialmente. En los años 70, la industria utilizaba aproximadamente un millón de toneladas por año. A finales de los 60, los científicos todavía no eran conscientes de que los CFC podían afectar a la atmósfera. Esta ignorancia no se debía a una falta de interés sino a una falta de medios. Para la detección de las pequeñas concentraciones de estos compuestos en la atmósfera era necesaria una nueva generación de detectores más sensibles. El científico James Lovelock desarrolló un detector de estas características en 1970 y fue el primero en detectar la presencia de CFC en el aire. Lovelock informó que uno de estos compuestos, el CFC-11, tenía una concentración atmosférica de 60 partes por billón. Como referencia, la concentración de gas metano (natural) es 25.000 veces mayor.
38
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
Lovelock detectó CFC-11 en el aire que pasaba sobre Irlanda proveniente de Londres. Esto no era sorprendente, ya que la mayoría de las grandes ciudades, entre las que se incluía Londres, utilizaban grandes cantidades de CFC. Sin embargo, Lovelock también detectó CFC-11 en las muestras de aire que se habían tomado directamente en zonas próximas al Atlántico Norte, donde no existía la polución típica de las grandes ciudades. Este descubrimiento inesperado impulso a Lovelock a realizar otros estudios. Para ello, solicitó al gobierno británico poder instalar su detector a bordo de un barco que viajaba desde Inglaterra hasta la Antártida. Su solicitud fue denegada argumentando que no se podía imaginar ninguna otra investigación tan poco útil como la de descubrir la concentración de CFC-11 presente en la atmósfera. No obstante, Lovelock insistió e instaló su detector a bordo del buque de investigación Shackleton en 1971. Dos años después, este investigador británico informaba sobre la detección de CFC-11 en todas las muestras tomadas en el Atlántico Sur y Norte. Lovelock dedujo acertadamente que el gas había sido transportado a gran escala por movimientos de vientos. Lovelock también afirmó que los CFC no eran perjudiciales para el medio ambiente, una conclusión que pronto se demostró que no era correcta. CFC en la estratosfera, datos reales.
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
39
Un modelo de Clorofluorcarbono CFC 11 Este modelo simula la evolución del CFC 11 desde que es emitido por la actividad humana, su permanencia en la troposfera, su paso posterior a la estratosfera, su permanencia un tiempo ahí, y su final destrucción. Los valores temporales en Model – Settings son: INITIAL TIME = 1930 FINAL TIME = 2130 TIME STEP = 1 Units for Time: año
Tomamos un periodo inicial anterior a las emisiones de CFC y un plazo de análisis de 100 años, que nos puede permitir observar a largo plazo la dinámica del proceso.
40
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
Ecuaciones del modelo CFC 11 Destruido=CFC 11 en la Estratosfera/vida media del CFC 11 en la estratosfera Units: Mkg/año CFC 11 en la Estratosfera= +migración a estratosfera-CFC 11 Destruido Initial value: 0 Units: Mkg CFC 11 en la Troposfera = emisiones de CFC 11-migración a estratosfera Initial value: 0 Units: Mkg migración a estratosfera= CFC 11 en la Troposfera/periodo de paso a la estratosfera Units: Mkg/año periodo de paso a la estratosfera= 5 Units: año vida media del CFC 11 en la estratosfera= Units: año
55
El modelo estará así completo excepto por la variable: emisiones de CFC 11
- Guardar el modelo con el nombre cfc_excel.mdl en el mismo directorio o carpeta donde se halla el fichero de Excel del que deseamos importar los datos.
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
41
4.2. Importar datos de una hoja de Excel La forma más sencilla de importar los datos a un modelo es hacerlo desde una hoja de cálculo Excel. Si se dispone de los datos en otro formato, como un fichero txt o una base datos, es recomendable pasarlos previamente a una hoja de Excel. Las emisiones de CFC se incluyen como una serie de datos históricos y previsiones en el archivo cfc.xls - Abrir la hoja de Excel que contiene los datos: cfc.xls En la fila 2 tenemos los años y de las filas 4 a 7 tenemos los valores de las emisiones en millones de kg. por año. A partir de la columna BI tenemos un posible escenario o previsión. Utilizaremos el valor total de las emisiones que se halla en la fila 4. - En el modelo de Vensim, con el icono de ecuaciones activo, pulsar en la variable emisiones de CFC 11. - En la opción del menú Type que se halla en el lado izquierdo de la pantalla de edición de la ecuación escoger Data. Pulsar en la casilla inferior (donde dice Normal) y escoger Equation. Pulsar la etiqueta de Functions y escoger GET XLS DATA. Para entrar la función GET XLS DATA es necesario definir cuatro argumentos: ( „filename‟ , „tabname‟ , „time_row_or_col‟ , „first_data_cell‟ ) IMPORTANTE: se deben entrar estos argumentos con las comillas simples en cada caso, separados por comas. - Escribir en filename el nombre de fichero „cfc.xls’ ¡(no olvidar las comillas simples)! en el primer argumento. - Escribir en el segundo argumento tabname el nombre „cfc‟ que es la etiqueta de la hoja con los datos del fichero de Excel. - En el tercer argumento escribir en el nombre de la fila „2‟ (la fila donde están los datos de las fechas) - En el cuarto argumento escribir el texto „C4‟ (la celdilla donde empiezan los datos) - Pulsar Check Syntax, debe indicar Equation OK - Escribir las unidades de Mkg/año y pulsar OK para cerrar el editor de la ecuación. 42
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
On Error Si aparecen problemas en la importación desde Excel ir a Options-options y poner Row=L Col=C Windows Vista. Si utiliza ficheros de extensión .xlsx indíquelo así en la fórmula o bien guárdelos en formato .xls Simular - Escribir el nombre de la simulación (por ejemplo, cfc_base) y pulsar Run a simulation.
Vensim importa automáticamente los datos desde la hoja de cálculo y simula. El modelo comienza la simulación en 1930, ocho años antes de que ocurrieran las primeras emisiones de CFC 11, y Vensim nos informa de este hecho porque nuestros datos comienzan después de los datos que el modelo maneja. Aparecen los avisos:
- Seleccionar la variable emisiones de CFC 11 y ver el gráfico:
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
43
Podríamos haber entrado cero en la serie de datos para los años antes de 1938, pero tomamos los datos directamente de la fuente de datos que tenemos. En el gráfico siguiente podemos observar el retraso considerable que tiene la cantidad de CFC 11 en la estratosfera para los próximos 100 años en relación con las emisiones.
Hay que tener en cuenta que esta simulación se basa en una hipótesis optimista acerca de las emisiones de CFC 11. Exploraremos las implicaciones de esto a continuación. - Guardar el modelo con el nombre cfc_excel.mdl
44
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
4.3. Exportar resultados a una hoja Excel En la parte izquierda de la pantalla disponemos de dos iconos para ver numéricamente los resultados de la simulación a una hoja de Excel. El icono superior nos ofrece las series de valores en filas, y el icono inferior nos ofrece esas series en columnas. - Seleccionar la variable migración a la estratosfera y pulsar el icono superior.
En esta pantalla podemos hallar en la parte superior izquierda el icono Export Window Content si desplazamos el cursor por encima de los iconos. Pulsarlo. Al hacerlo NO se observa ningún cambio porque el software copia los datos al portapapeles de Windows. - Abril un hoja en blanco de Excel y pulsar Pegar. Obtenemos el siguiente resultado:
En la parte superior se hallan los periodos de tiempo y en la parte inferior los valores que ha tomado la variable. Esta prestación es especialmente interesante porque la salida gráfica del Vensim tiene muy pocas prestaciones, ya que el software es de simulación, y de esta forma podemos exportar los datos a un paquete gráfico ya sea directamente o bien a través del Excel.
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
45
4.4. Ejercicio práctico. CFC 11 Vamos a simular que la reducción de emisiones de CFC no es tan intensa. - Abrir el modelo cfc_excel.mdl y ejecutarlo dando como nombre a la simulación: cfc_base. - Abrir la hoja de cálculo cfc.xls e introducir los valores siguientes que reproducen una reducción de emisiones de CFC 11 menos intensa: 1938 a 1995 tomar los mismos valores existentes en el modelo. 2000 150 2005 100 2010 0 - Cambiar el nombre de la simulación, por ejemplo cfc_base9 para poder ver el impacto de forma comparativa con la simulación previa. Ha de obtener como resultado la gráfica siguiente, donde se observa un mayor nivel de CFC 11 en la Estratosfera.
- Exportar los resultados a la hoja de cálculo que contiene los datos. La solución al ejercicio se halla en el CD 46
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
4.5. Ejercicio práctico Kaibab En el modelo Kaibab (*) introducir como referencia los datos históricos reales que se facilitan en la hoja de Excel. Para ello, crear una nueva variable con el nombre de datos históricos, definirla del tipo Data – Equation y capturar los datos con la función GET XLS DATA.
Al ejecutar el modelo es normal que aparezca el siguiente mensaje, que indica que los datos históricos no llegan al final de la simulación.
- Comparar las gráficas de datos históricos con el resultado de la simulación.
Para ver una numeración sobre las líneas, lo que permite diferenciarlas en documentos en blanco y negro, pulsar el menú: Options – options y marcar la casilla: Show Line Markers on Graph Lines.
- Exportar los resultados a una hoja de Excel. (*) Libro “Teoría y ejercicios Prácticos de Dinámica de Sistemas” ISBN 84-607-9304-4 Capitulo 5.2 Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
47
ANEXO AL TEMA 4
GET XLS CONSTANTS permite importar un único valor en vez de una serie, tiene el formato: GET XLS CONSTANTS( {'filename'} , {'tabname'} , {'firstcell'} ) Es necesario definir la variable (prueba) como Data – Normal y escribir la expresión:
tomando la función del catálogo de funciones.
GET 123 DATA permite en general trabajar con hojas de cálculo Lotus 123 para aquellos usuarios que tengan instalado este software, tiene el formato GET 123 DATA( {'filename'} , {'tabname'} , {'time_row_or_col'} , {'first_data_cell'} )
GET XLS LOOKUPS Además de importar de una hoja de Excel un valor determinado o una serie de valores, podemos incorporar al modelo valores que se hallan en forma de matriz o vector, como en la imagen siguiente:
48
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
Vamos a obtener de esta hoja de Excel el valor de los autos/habitante de algunas regiones. Creamos en el modelo la variable vector de datos y en su ecuación le indicamos el nombre del fichero (vector 1.xls), la hoja del mismo (Hoja1), la columna donde se halla la clave de búsqueda (B) y la columna donde está el dato que deseamos incorporar al modelo (F1). Definimos el tipo de variable de vector de datos como Tabla (Lookup), y añadimos al modelo los elementos que identifiquen las regiones (Región A, B,...) para obtener el valor que deseamos como salida de la tabla.
Las ecuaciones serían: Región Andalucía = 6 Región Aragón = 8 vector Andalucía = vector de datos(Región Andalucía) vector Aragón = vector de datos(Región Aragón) vector de datos=(GET XLS LOOKUPS('vector 1.xls','Hoja1', 'B','F1'))
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
49
Los resultados pueden ser similares a estos:
Observamos los valores (X,Y) de la tabla, según hemos definido en la fórmula, y el valor que toma la variable vector 1 Andalucía que es de 46, y vector 1 Aragón de 48.
50
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
Importar datos de un fichero de texto En vez de dirigir Vensim a una hoja de cálculo Excel que contiene los datos, podemos utilizar datos que tengamos en formato txt. Para ello veremos como deberemos de cambiar el formato de ese fichero txt a un fichero con extensión vdf que Vensim puede aceptar. De hecho los ficheros vdf recogen los resultados de las simulaciones de Vensim (datasets). Un dataset se crea al ejecutar un modelo. En primer lugar prepararemos el modelo para la captura de los datos en formato txt.
- Seleccionar el icono Ecuaciones, y pulsar en la variable emisiones de CFC11. En Type cambiar donde dice Equation y escoger Normal. Pulsar OK.
A continuación vamos a cambiar el formato del fichero txt a formato vdf. Cuándo se ejecuta una simulación, Vensim busca un fichero vdf (dataset) que contenga los valores de la variable definida como Data - Normal. Si no encuentra ningún dataset con esa variable la simulación se detiene. Las emisiones de CFC están incluidas en el archivo cfc.dat .A diferencia de los datos de la hoja de cálculo anterior, este archivo no contiene ningún valor proyectado a partir del 2005, es decir no incluye datos para el año 2010. Utilizaremos este archivo de datos cfc.dat para crear un archivo vdf (dataset) en Vensim. - Abrir y examinar el archivo de texto cfc.dat utilizando a un editor de textos como Notepad o Bloc de Notas, (no usar Word porque añade valores de control y formato ocultos). La consulta del archivo es opcional; el único interés que tiene es poder revisar los datos. Verá los datos que se muestran en el formato siguiente, con el nombre variable seguido en la fila siguiente por una columna para el tiempo y una columna para valores: emisiones de CFC 11 1938 0,1 1939 0,1 … … 1990 216,1 1991 188,3 1992 171,2 1995 100,2 2000 50,4 2005 21,0 Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
51
- Cerrar el archivo cfc.dat sin guardarlo para no introducir cambios involuntariamente. Primero necesitamos convertir la serie de datos del archivo de texto cfc11.dat a un archivo de datos binario de Vensim (cfc.vdf). - Escoger del menú el Model> from .dat format. Escoger el archivo cfc.dat y pulsar Abrir. Debe recibir el mensaje „Conversion completed without error‟ y una ventana de salida le mostrará el número de valores tomados para la variable emisiones de CFC 11 y para el Tiempo. Los instrumentos del análisis ahora trabajarán con el dataset cfc.vdf. - Pulsar OK en la caja del mensaje y cerrar la ventana de salida. - Abrir el Panel de Control y pulsar en Datasets, dejando solo activo el dataset cfc.vdf. Para ello si es necesario pulsar dos veces sobre el nombre de la simulación anterior (cfc_base.vdf) para suprimirla. Pulsar Close. - Pulsar el diagrama de flujos en la variable emisiones de CFC 11 seleccionarlo como la variable de trabajo y entonces pulsar en el icono de Gráfico.
para
Se muestra un gráfico de emisiones de CFC 11 en base al dataset cfc.vdf.
- Cerrar el gráfico. Observar que esta gráfica llega sólo hasta 2005 ya que las emisiones proyectadas a partir de esa fecha no están incluidas en el fichero de entrada en formato dat.
52
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
Simulación - Pulsar el botón de Set Up a Simulation. - Indicar un nombre para la simulación (por ejemplo, cfc_base) y escribir el nombre del dataset creado anteriormente, cfc.vdf, en una caja en la parte izquierda (la caja de edición justo al lado del texto que indica el método de la integración Euler).
- Pulsar el botón de Simular. Aparecen los avisos:
Resultados - Pulsar en el botón del Panel de Control escoger la etiqueta de Datasets y dejar solo activa la dataset cfc_base , puede hacerlo pulsando dos veces en el dataset cfc. Agregar la definición siguiente en la opción Graph - New:
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
53
Para ver todas las variables con la misma escala señalar las marcas
- Pulsar en la etiqueta de Graph y en el botón Display.
- Guardar el modelo con el nombre cfc_dat.mdl La serie de datos de entrada de emisiones de CFC 11 finaliza en el 2005 y esto significa que el último dato en la serie ( que es 21,0 ) se utiliza en períodos de tiempo posteriores al 2005, lo cual no es muy realista. A causa de esto, el valor de CFC 11 en la Troposfera se estabiliza después del año 2020, mientras que CFC 11 en la Estratosfera mantiene su tendencia paulatinamente decreciente. El consumo y emisión de CFC 11 es probable de continúe disminuyendo en los años siguientes, pero es menos probable que las emisiones de CFC 11 continúen a una tasa fija de 21,0 Mkg/Año. Vamos a dejar abierta la serie de datos que contiene un pronóstico optimista para emisiones de CFC 11. 54
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
5. Creación de juegos de simulación Los juegos son una manera de participar activamente en el desarrollo de una simulación donde el usuario interviene activamente en las decisiones que afectan al resultado de la simulación en cada período de tiempo. Una simulación normal se ejecuta completa a lo largo del plazo de tiempo establecido en las condiciones iniciales del modelo, aunque un modelo de simulación también puede ser ejecutado como un juego por etapas, introduciendo cambios en las variables de juego a lo largo de la ejecución. En la Parte 1 se comenta la problemática de construcción de casas y se plantea un modelo básico. En la Parte 2 se muestra como puede realizarse un juego de simulación. La Parte 3 pide al alumno que haga con total libertad un juego con el modelo de las casas, y en la Parte 4 se pide al alumno que retome el modelo de los cerdos y realice un juego como forma de definir una política que reduzca las oscilaciones.
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
55
5.1. Caso. Construcción de viviendas
En el sector de la construcción de viviendas existe una importante demora que aparece entre la demanda de viviendas por los compradores y la oferta de casas ya terminadas.
El modelo Construir el modelo como se muestra a continuación en el diagrama y las ecuaciones. Los parámetros temporales son : INITIAL TIME = 0 FINAL TIME = 100 TIME STEP = 0.5 Units for Time: mes
56
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
Estructura del modelo El modelo muestra un ciclo de retroalimentación negativo con varias demoras debidas a los plazos para planificar y construir las casas.
El sistema tiene inicialmente un comportamiento estable, según los valores definidos a continuación para los elementos en las ecuaciones. Podemos anotar (a lápiz) estos valores sobre el diagrama para comprender esta situación inicial.
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
57
Ecuaciones del modelo casas en construccion = construccion-terminacion Initial value: construccion * plazo para construir casas Units: casas casas planificadas = +planificacion -construccion Initial value: planificacion*plazo para planificar la construccion Units: casas casas terminadas = +terminacion-demolicion Initial value: 6000 Units: casas construccion = casas planificadas / plazo para planificar la construccion Units: casas/mes demanda de casas = 6000 Units: casas demolicion = casas terminadas / vida media de una casa Units: casas/mes diferencia = demanda de casas - casas terminadas Units: casas planificación = MAX( 0, reemplazo + (diferencia / plazo para anular la diferencia)) Units : casas/mes reemplazo = demolicion Units: casas/mes terminacion = Casas en construccion / plazo para construir casas Units: casas/mes plazo para construir casas = 6 Units: mes plazo para planificar la construccion =3 Units: mes plazo para anular la diferencia = 8 Units: mes vida media de una casa = 1200 Units: mes Guardar el modelo con en nombre casas.mdl. 58
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
5.2. Creación del juego de simulación
Se comenzará el modelo en equilibrio. Se establece la demanda de viviendas en 6000, que es el valor inicial para casas terminadas. Debido a esto, diferencia es 0, así que la planificación es igual al reemplazo, que a su vez es igual a demolición. Debido a los valores iniciales que hemos tomado para los niveles, por ejemplo casas planificadas que se inicia igual a planificación * plazo para planificar la construcción , todos los elementos están en equilibrio. - Ejecutar el modelo y comprobar que el comportamiento es estable. El modelo es importante para validar nuestra percepción previa del sistema real. Por otra parte podemos introducir cambios durante la simulación para conocer más acerca del comportamiento del modelo. Por eso, la demanda de casas se mantiene en 6000 durante 10 meses, y luego la incrementamos a 6050. Para hacerlo, introducir el siguiente cambio en la ecuación: demanda de casas = 6000 + STEP ( 50, 10) Units: casas La función STEP toma dos argumentos: height (altura del escalón) y start time (periodo de inicio). Adopta valor 0 hasta alcanzar el start time y a partir de entonces el valor height. Esta función es útil en un modelo porque es una función que genera una amplia gama de respuestas. Otras funciones usuales para modificar así un modelo son PULSE y RAMP . Para añadir la ecuación anterior, abrir con el Equation Editor la variable de demanda de casas. - Escribir el número 6000, luego el signo más. Pulsar la solapa Functions y luego moverse hacia abajo hasta ver la función STEP en la lista. Pulsar entonces en STEP y luego en el botón Add Sel . - El argumento {height} debe estar resaltado, escribir el valor 50, y pulsar dos veces en {stime} y escribir 10. La ecuación ha de quedar: 6000+STEP(50,10) sin corchetes. Entrar las unidades y pulsar OK.
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
59
Gráficos WIP (Work in progress) - Abrir el Control Panel y crear un Graph - New tal y como se muestra a continuación. Poner atención en marcar la opción AS WIP Graph.
Ver nota explicativa en el anexo al final de este capítulo Añadir Variables de Juego El objetivo de este juego es conseguir satisfacer la demanda de casas (diferencia = 0), esto se logra ajustando y cambiando la variable planificación la cual introduce nuevas casas en el proceso de planificación y construcción. En rigor, planificación está determinada por una fórmula. Está fórmula permite simular el modelo pero no proporciona un mecanismo para intervenir y cambiar el valor de planificación durante la simulación. Se necesita definir planificación como una variable Game (variable de juego). Para hacerlo: - Seleccionar el icono Equations y pulsar en la variable planificación. Se obtiene la ecuación: planificacion = MAX( 0, reemplazo + (diferencia/ plazo para anular la diferencia)) Units: casas/mes Esta ecuación se formula de modo que planificación no puede tomar nunca valores negativos; usando la función MAX, de este modo se puede plantear construir algunas casas o bien no construir ninguna. Para hacerla una variable Game, debemos cambiar su tipo como se indica a continuación. 60
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
- Pulsar en la flecha hacia abajo en el recuadro variable Type que dice Normal, y elegir Gaming de la lista. Pulsar OK y guardar el modelo.
Se puede convertir cualquier variable Auxiliar, Flujo o Constante en una variable Game. Durante la simulación, una variable de juego hace lo mismo que si fuera Auxiliar, Flujo o Constante. No obstante, durante un juego, se puede fijar el valor de esta variable en cualquier instante de tiempo mientras el juego avanza. Simular el modelo Antes de iniciar el juego, conviene ver como se comporta el modelo cuando se simula. Pulsar en el nombre de la simulación Runname: , escribir run1. Pulsar en el botón Run a simulation. Se genera un Work-In-Progress (WIP) custom graph con Control Panel- GraphDisplay, que muestra el comportamiento para tres variables del modelo: Casas terminadas, planificación y diferencia . El modelo está tratando de lograr que la diferencia sea cero. El escalón en la planificación proviene de demanda de casas. Se trata de ver ahora si podemos mejorar este comportamiento haciendo nosotros la planificación de las casas para tratar de alcanzar y mantener un 0 en la diferencia.
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
61
5.3. Desarrollo del Juego Cerrar la gráfica y pulsar en el nombre de la simulación Runname, escribir game1, pulsar en el botón Game . Se genera un gráfico WIP vacio y la barra de Tareas cambia a la barra de Juegos.
Se muestra a la izquierda el Time = 0 (Periodo de juego actual) que indica que estamos al inicio del juego. El botón Stop detiene el juego. Los botones Move Forward (Mover adelante) y Move Backward (Mover atrás) mueven el juego en la cantidad de tiempo mostrada en el recuadro Amount to move (Cantidad a mover) En nuestro caso indica 0.5 porque es lo que hemos indicado en el Model - Settings.
Avanzar en el Juego - Mover el gráfico WIP, que se muestra pulsando el icono , a la zona inferior izquierda de su pantalla para no ocultar la variable planificación, que está resaltada. - Pulsar en la variable planificación, se verá su valor inicial (5), presionar Intro para salir sin cambiar este valor. Observar que el gráfico WIP desaparece detrás de la ventana del esquema del modelo. - Pulsar en el icono de Output windows para verlo de nuevo. Siempre se puede recuperar la visión de la gráfica pulsando este icono. - Pulsar dos veces en el recuadro Amount to Move (Cantidad a mover) en la barra de herramientas de juegos y escribir 5, en vez de los 0.5 actual, porque deseamos hacer cambios cada 5 meses. - Pulsar el botón Move Forward (Mover hacia adelante). . Entonces comenzará a dibujarse el gráfico WIP. El sistema está en equilibrio; no es necesario cambiar ningún parámetro porque la diferencia es actualmente cero (exactamente en el medio de la parrilla). - Pulsar en Move Forward una vez más, se verá un aumento de la diferencia. Después pulsar en planificación en el esquema, escribir 18, pulsar Intro. Con este hecho incrementamos la planificación de 5 a 18 casas al mes. Recuperar la pantalla de la gráfica. - Pulsar en Move Forward dos veces más. Verá como se reduce la diferencia mientras Casas terminadas muestra un aumento. Tenemos casi reducida la diferencia a cero. Lo mejor es parar de construir tantas casas.
62
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
- Pulsar en planificacion en el esquema, escribir 0, presionar Intro. - Pulsar en Move Forward.
¡Sorpresa! Hay un exceso en el objetivo, la meta (diferencia) es negativa (debajo del centro de la parrilla). Dado que no se puede planificar “casa negativas”, el mejor plan es no construir casas por un tiempo. - Pulsar en Move Forward hasta que la diferencia sea positiva (justo encima de cero a Time = 45). Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
63
Ahora se debería comenzar a construir de nuevo más casas, así no tenemos una brecha positiva en casas (para la cual se requieren más casas). Se puede anticipar esto construyendo algunas casas un poco antes de que la brecha sea positiva.
Retroceder en el Juego - Pulsar dos veces el botón Move Backward negativa)
(hasta que diferencia se haga
Lógicamente, no podemos volver atrás el mundo real. Pero con el objeto de probar diferentes opciones cuando el juego ha progresado hacia delante en alguna dirección podemos volver atrás en el juego. - Pulsar en planificacion en el esquema, escribir un número mayor (10, por ejemplo) y luego pulsar Intro.
64
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
5.4. Ejercicio práctico. Casas - Continuar jugando, tratando de mantener la diferencia en o cerca de 0 hasta que se alcance el periodo de tiempo 100. - Pulsar el botón Stop. El gráfico WIP mostrará algo similar a:
Los resultados del juego no son (probablemente) mucho mejores que en la simulación original (quizás sean peores). En el gráfico anterior diferencia fluctúa ampliamente en respuestas a las decisiones tomadas.
La solución al ejercicio se halla en el CD Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
65
5.5. Ejercicio práctico. Cerdos Tome el ejercicio de los cerdos (*), el cual muestra una importante oscilación en el valor de las existencias de embutidos en tocinerías, y trate de reducir estas oscilaciones realizando un juego de simulación con la variable cobertura deseada. Se propone que en vez de que la cobertura deseada sea un valor constante de medio mes, 0.5 meses, los tocineros deseen una cobertura igual a 0.4 meses cuando las existencias superan los 30 M de kilos, y desean una cobertura de 0.6 meses cuando las existencias disminuyen de esa cifra. En cualquier caso tiene total libertad para decidir la política que desee seguir para reducir las oscilaciones, ya sea utilizando esta variable o cualquier otra, utilizando un juego de simulación para ver y mostrar los resultados que produce. Para realizar este juego primero ha de definir una gráfica WIP del siguiente modo:
Indicar para las Existencias de embutidos en tocinerías valores para las Ys de 20000000 a 40000000, que el software convierte a formato exponencial. - Definir el tipo de variable de cobertura deseada como Auxiliary – Gaming. Ejecutar el juego con una unidad de tiempo = 1, eso permite hacer cambios con agilidad. Es posible que aparezcan en la pantalla warnings de alguna de las tablas, como la situada en efecto de cobertura en el precio, porque funciona fuera del rango que tiene definido. Puede omitir este aspecto ya que en este caso trabajan con el valor más próximo. (*) Libro “Teoría y ejercicios Prácticos de Dinámica de Sistemas” ISBN 84-607-9304-4 Capitulo 5.6 66
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
El resultado obtenido puede ser similar al este:
En este caso los resultados de nuestro juego no reducen las oscilaciones, es decir no mejoran el resultado de la simulación inicial basado en mantener la cobertura deseada constante en 0.5 meses.
La solución al ejercicio se halla en el CD Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
67
Anexo. Gráficos WIP (Work in progress) Type: Norm = muestra la grafica de la evolución temporal normalmente. Cum = muestra una grafica con el valor acumulado de la variable. Stack = muestra la grafica de la primera variable normalmente, la segunda variable se muestra como suma de la primera y la segunda variable seleccionada, la tercera variable se muestra como suma de la primera, la segunda y la tercera, y así todas las variables.
Y-min Y-max Los valores mínimo y máximo se definen en base a nuestras expectativas de los valores que van a tomar las variables, no hay una regla para definirlos previamente. WIP Graph El valor de As WIP Graph (150) indica el número máximo de etapas que va a tener la simulación. En ocasiones queremos limitar al número de etapas de la simulación, pero en general, como en este caso, indicamos cualquier número que sea muy superior al número de periodos de la simulación para que no afecte al juego.
68
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
6. Simulación interactiva Hemos visto en los capítulos anteriores el proceso de crear un modelo, ejecutarlo y ver la evolución de las variables a lo largo del periodo de simulación, ya sea en un formato gráfico o numérico. Una vez que observamos el comportamiento del modelo podemos modificar las ecuaciones o los valores de las Constantes, volver a ejecutar el modelo, y ver el nuevo comportamiento de algunas variables del sistema. Los softwares actuales permiten una mayor flexibilidad en estos procesos, y Vensim en concreto denomina a esta prestación con el nombre de SyntheSim. El nombre de SyntheSim se debe a que permite usar la Simulación para Sintetizar la estructura y la conducta de un modelo. Se presentan a menudo los eventos, las conductas y la estructura como una jerarquía de diferentes maneras de observar el mundo, con eventos que surgen de los patrones de conducta subyacentes y el comportamiento que surge debido a la estructura. Los modelos de simulación representan la estructura que, a través de la simulación, genera el comportamiento.
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
69
6.1. Caso. La carrera de armamentos Va a construir un modelo sobre la carrera de armamentos, basada en que “a más armamentos del país A, el país B desea más armamentos” y “a más armamentos del país B, el país A desea más armamentos” relacionándola con el crecimiento económico de ambos. Dibuje el diagrama del modelo.
El diagrama anterior tiene dos características especiales. La primera es que se incluyen unos rectángulos grandes para delimitar cada uno de los lados de la carrera de armamentos. La segunda es la flecha larga, no circular, que conecta los dos lados. A continuación se muestra el proceso de construir una de estas características. - Dibujar el diagrama, excepto los dos rectángulos y la flecha desde Armamento Total 2 a armamento deseado 1, que se explicará a continuación.
Relaciones complejas La flecha desde Armamento Total 2 al armamento deseado 1 no es una curva normal, se crea usando varias flechas menores unidas a través de comentarios, que permiten formar estas flechas. Para esto necesita crear las uniones primero, después añadir las flechas, después suprimir las puntas de flecha extras y poner el tamaño de las uniones en 0. - Seleccionar la herramienta de Comentario. 70
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
- Pulsar en una parte vacía del esquema a la derecha de obsolescencia del armamento 1. - Seleccionar azul como el color de fondo (Background color). - Marcar en la casilla de verificación Use as arrow junction (Usar como unión de flecha). - Pulsar en OK. Se ha formado una caja de unión. - Cambiar el tamaño de la caja de unión para hacerla un poco más pequeña (aproximadamente 10x10). - Repetir las acciones anteriores a la derecha de obsolescencia armamento 2, o copiar y pegar la caja de unión. - Seleccionar la herramienta Flecha. - Dibujar una flecha desde Armamento Total 2 a la caja de unión más baja. - Dibujar una flecha de la caja de unión más baja hasta la superior. - Dibujar una flecha desde la caja de unión superior hasta armamento deseado 1 - Pulsar en las dos flechas inferiores, suprimir la señal de Arrowhead (Punta de flecha), en la parte superior, y poner el grosor de la flecha en el segundo grosor y el color en rojo. - Cambiar el grosor y el color en la flecha superior, para que sea igual que las otras. - Ajustar las posiciones de las cajas de unión y curvar las flechas para que queden bien. - Redimensionar las cajas de unión para tener tamaño 0. Para ello empujar el círculo hacia arriba y a la izquierda hasta que no se vea nada. Sugerencia: Para mover las cajas de unión cuando tienen el tamaño 0 se puede seleccionar la herramienta (Move/Size), seleccionar la línea alrededor de ellas y después mover el rectángulo de la selección.
Cajas de contenido - Seleccionar la herramienta de Comentario y pulsar en el área en blanco en la esquina superior izquierda del esquema. - En el diálogo seleccionar la Box y el Thickness 2 (en la parte inferior del menú), Escoger como Background un color verde claro, luego pulsar en OK. - Redimensionar la caja para que contenga la parte superior del modelo.
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
71
NOTA Después de que haya creado la caja, el círculo del tamaño será visible por unos segundos. Si el cuadro de tamaño desaparece, pulse en la herramienta de Move/Size para hacerlo visible de nuevo. - Pulsar en la herramienta de Candado. - Pulsar en el rectángulo creado. Se resaltará. - Pulsar en el icono Llevar las palabras resaltadas a segundo plano en la barra de estado. Desaparecerá el resaltado y el rectángulo se colocará como fondo del modelo. - Repetir el proceso anterior en la mitad inferior del modelo, escogiendo un color azul claro.
Min, Max e Incremento En el editor de Ecuaciones puede entrar un valor mínimo, un valor máximo y un incremento para cada elemento.
Se usan para que se generen mensajes de aviso cuando las variables se hacen demasiado pequeñas o demasiado grandes. Con un rango por ejemplo de [10,500] se recibiría un aviso siempre que la variable fuera menor de 10 o mayor de 500. Para las Constantes, el rango se usa para especificar en los cursores – que veremos más adelante – los valores extremos que pueden tomar. En este caso el incremento indica cuánto cambia una Constante cuando el cursor se mueve. Por ejemplo el rango [10,500,5] permitiría a la Constante ir de 10 a 500 cambiando 5 en cada movimiento. El rango [0,1,1] podría usarse para un interruptor Si/No. Si no especifica ningún rango o incremento para una Constante el software los definirá en base de los valores del modelo. Un atajo Construya primero un país, tanto las variables como las ecuaciones, después pulse Select All – Copy, a continuación haga Paste en la zona inferior, cambie el nombre de las variables y complete las relaciones. Por último añada los cuadros. Ecuaciones del modelo Con la excepción de armamento deseado las ecuaciones para las variables “2” son iguales que aquellas para las variables “1” con un 2 en lugar de un 1 al final. Los rangos se muestran en paréntesis cuadrados a continuación de las unidades. 72
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
- Entrar desde Model – Settings los parámetros temporales: INITIAL TIME = 0 FINAL TIME = 100 TIME STEP = 0.125 Units for time: Año (algunas versiones del software no aceptan la ñ) armamento deseado 1= Armamento Total 2 * tasa de fuerza deseada 1 Units: M$ (M$ = millones de dólares) armamento deseado 2= Armamento Total 1 * tasa de fuerza deseada 2 Units: M$ armamento inicial 1= 50 Units: M$ [0,200,5] Armamento Total 1= gasto en armamento 1-obsolescencia armamento 1 Initial value: armamento inicial 1 Units: M$ capacidad de armamento 1= Capacidad Económica 1 * capacidad máxima de armamento 1 Units: M$/Año Capacidad Económica 1= crecimiento capacidad 1 – degradación capacidad 1 Initial value: capacidad económica inicial 1 Units: M$/Año capacidad económica inicial 1= 100 Units: M$/Año [10,500,5] capacidad máxima de armamento 1= 0.4 Units: Dmnl [0,1,0.05] ( Dmnl=Sin dimensiones ) construcción indicada de armamento 1= MAX(0,obsolescencia armamento 1 + (armamento deseado 1 - Armamento Total 1)/plazo corrección armamento 1) Units: M$/Año crecimiento capacidad 1= inversión 1 * efectividad de la inversión 1 Units: M$/Año/Año Degradación capacidad 1= Capacidad Económica 1/plazo vida capacidad 1 Units: M$/Año/Año Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
73
efectividad de la inversión 1= 0.15 Units: 1/Año [0.01,0.4,0.01]
Pulsar el botón
fracción de gasto en inversión 1= 0.3 Units: Dmnl [0,0.6,0.05] fracción utilización de la capacidad de armamento 1= WITH LOOKUP (ZIDZ (construcción indicada de armamento capacidad de armamento 1) Valores: (0,0),(0.4,0.4),(2,0.8),(3,0.9),(5,1),(10,1) Units: Dmnl
1,
gasto en armamento 1= capacidad de armamento 1 * fracción utilización de la capacidad de armamento 1 Units: M$/Año gasto en no armamento 1= Capacidad Económica 1 - gasto en armamento 1 Units: M$/Año inversión 1= gasto en no armamento 1 * fracción de gasto en inversión 1 Units: M$/Año obsolescencia armamento 1= Armamento Total 1/plazo de vida armamento 1 Units: M$/Año plazo corrección armamento 1= 5 Units: Año [1,20,1] plazo de vida armamento 1= 20 Units: Año [2,60,1] plazo vida capacidad 1= 30 Units: Año [3,80,1] tasa de fuerza deseada 1= 1 Units: Dmnl [0,5,0.1]
Una vez dibujado el modelo puede ajustarlo al tamaño de la pantalla con la opción: View – Zoom – Fit. Verificar que las unidades están correctas con Model – Units Check. 74
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
Mostrar el comportamiento En ocasiones puede ser difícil conseguir comprender cómo la estructura del sistema causa el comportamiento. Superponiendo el comportamiento en la estructura y actualizando el comportamiento al instante podemos comprender mejor el modelo. - Pulsar en el icono de Run a Simulation y seleccionar la opción del menú View > Show Behavior (Ver > Mostrar Comportamiento), ahora observará lo siguiente:
La pantalla muestra sobre cada variable el comportamiento a lo largo del tiempo. Puede trabajar con el diagrama, mover palabras y flechas, y cambiar las ecuaciones viendo como se comportan. Si coloca el puntero del ratón encima de una variable y espera, aparecerá una versión más grande del gráfico pequeño.
El gráfico es similar al pequeño gráfico que aparece en el diagrama pero ahora es mayor y tiene una etiqueta con el nombre de la variable. Si hace varias simulaciones cada una se mostrará con un color diferente en todos los pequeños gráficos. Cargando y descargando la simulación en el Panel de Control puede controlar las que desea observar.
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
75
6.2. Simulaciones interactivas - Pulsar en el icono de SyntheSim . - Responder Sí (Yes) a la pregunta de si quiere sobrescribir la simulación existente. Además de los gráficos de cada variable, observará que cada Constante tiene un cursor:
Los cursores aparecen debajo del nombre de las Constantes del modelo. En el modo SyntheSim se simulará el modelo y se mostrarán los resultados cada vez que hace un cambio a una Constante en el modelo o a una función gráfica (Lookup). Hay varias maneras de introducir cambios.
Mover los Cursores Puede modificar el valor de las constantes desplazando los cursores. - Colocar el ratón sobre el cursor debajo de la tasa de fuerza deseada 1 y pulsar el botón del ratón. Cuando hace esto el icono del cursor se coloca hacia adentro y el indicador puede moverse un poco para reflejar la posición actual del cursor. - Mover despacio el cursor hacia la derecha hasta que alcance aproximadamente 2. Observar como los armamentos cambian de una evolución constante a un crecimiento en forma de S. Los gráficos se pondrán con el fondo en rojo brevemente para indicar que sus escalas están aumentando y azul para indicar que están disminuyendo. - Liberar el botón del ratón. 76
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
El cursor que ha estado moviendo tendrá barras grises que indican que es el cursor actual. - Pulsar en el icono de Restablecer Cursor Actual . El valor para este cursor volverá al valor del modelo y el modelo se simulará de nuevo con las condiciones originales. Debería de observar los gráficos de las variables Armamento Total de 1 y 2 constantes.
Asignar valores al cursor Los cursores se mueven de un lado a otro dentro del rango impuesto en las ecuaciones para la Constante o, si no se fijó ningún rango, a lo largo de un rango calculado por Vensim teniendo en cuenta el valor de la Constante. También puede definir el valor de la Constante o el rango del cursor pulsando en las barras del cursor . - Pulsar en las barras del cursor (no sobre el cursor) debajo de la tasa de fuerza deseada 1. Se abrirá una caja de diálogo. Si se equivoca y pulsa en el icono, éste se deprimirá – libere el botón del ratón e inténtelo de nuevo.
- Modificar el Valor a usar para la simulación (Value to use for simulation) a 2, el Min a 1, el Max a 2 y el Incremento a 0.01. Después pulsar OK. El modelo simulará con la tasa de fuerza deseada 1 repítalo en 2 y mostrará los resultados. El cursor estará en el extremo derecho de su rango. - Desplazar el cursor de un lado a otro y repasar los resultados. De esta se forma consigue mucho más control sobre el cursor dentro de un rango definido de valores. - Pulsar la Tecla de Inicio (Home) . El valor de tasa de fuerza deseada 1 se restablece a 1, pero el cursor va a permanecer en el valor modificado. El rango no se modificará hasta que cambie la pantalla o detenga el SyntheSim. Si selecciona la casilla de verificación de Hacer los Cambios en el Cursor Permanentes (modelo modificado) (Make Slider Changes Permanent (modify model)) cuando hace los cambios de rango, estos se guardarán de forma permanente en el modelo.
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
77
Usar las teclas de flecha Además de usar el ratón para mover el cursor se pueden usar también las teclas de flecha para cambiar los valores de las constantes. Existe un cursor diferente de los otros, de forma que la mayoría de los cursores se observarán así mientras que uno de ellos tendrá las barras oscuras como . El que tiene las barras oscuras es el cursor activo. Siempre que pulse en un cursor se pone activo. - El cursor activo debe ser el que está debajo de tasa de fuerza deseada 1. Si no es ese, pulsarlo. - Pulsar la tecla de la flecha derecha. El valor del cursor debe aumentar de 1 a 1.01 y observará un cambio pequeño en los gráficos. - Pulsar de nuevo y el valor modificará a 1.02 y así sucesivamente. - Pulsar la tecla de la flecha izquierda. El valor del cursor disminuirá en .01. Las teclas de flecha son muy útiles si quiere moverse despacio dentro del rango de una Constante. También pueden ser útiles si está trabajando con modelos más grandes y quiere hacer una simulación cada vez que modifica un valor (desplazando el cursor, hará a menudo dos o tres simulaciones).
Cambiar la función gráfica (Lookup) Los cambios en la función gráfica (Lookup) se hacen abriendo el editor de función gráfica (Lookup Editor) y modificándola. Cuando se hacen las modificaciones, el modelo se ha de simular de nuevo y se mostrarán los resultados. - Mover el cursor debajo de tasa de fuerza deseada 1 hasta que tome el valor 2 aproximadamente. - Pulsar en la fracción utilización de la capacidad armamento 1. Se abrirá el siguiente editor de la función gráfica (Lookup).
78
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
El editor de la función gráfica (Lookup) en el modo SyntheSim tiene un botón de Reset en vez de un botón de Cancel. Cada vez que hace un cambio en el valor en la función gráfica (Lookup) y se simula el modelo, no hay ninguna manera de cancelar el cambio. El icono de Reset (inicialización) vuelve a colocar los valores originales del modelo. - Colocar el ratón encima del tercer punto en el gráfico y luego arrastrar este punto hacia arriba. - Observar el comportamiento de las variables mientras mueve los puntos. - Pulsar en el icono Close para cerrar el Editor de Ecuaciones.
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
79
6.3. Experimentos de simulación Hasta ahora hemos estado observando un solo gráfico para cada variable. Puede guardar las simulaciones interesantes y también los resultados de las simulaciones múltiples de los gráficos en miniatura. - Pulsar en el icono de Restablecer todas las Constantes (Reset all Constants). Esto no sólo restablece los cambios hechos a las constantes sino también cualquier cambio que haya hecho a las funciones gráficas (Lookup). - Pulsar en el icono Guardar esta Simulación a ..
.
- Teclear el nombre baserun. - Pulsar en Guardar. Observará que la pantalla parpadea y no parece cambiar. Esto es así porque la simulación baserun es igual que el Current actual. - Aumentar el valor del cursor en la tasa de fuerza deseada 1 a 2. Deben aparecer dos gráficos (en rojo y azul) sobre cada variable.
- Pulsar en el icono Guardar esta Simulación a.... en Guardar.
Teclee el nombre strong1 y pulse
- Aumentar el valor del cursor de tasa de fuerza deseada 2 a 2. - Pulsar en el icono Guardar esta Simulación a.... pulsar en Guardar.
Teclee el nombre strongboth y
- Pulsar primero en Armamento Total 2 y luego en la herramienta de Gráfico
80
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
Observará el gráfico siguiente:
Observar como las simulaciones strong1 y strongboth terminan casi en el mismo lugar. - Pulsar primero en la Capacidad Económica 2 y luego en la herramienta de Gráfico para ver que cuando el país 2 es más agresivo en la fabricación de armas, la consecuencia no es más armas sino menos actividad económica.
Cargar y descargar las Simulaciones Desde el icono del Panel de Control se pueden cargar y descargar simulaciones, es decir dejarlas activas o visibles, y cambiar otras condiciones. - Pulsar en el icono Panel Control y luego en el icono de Datasets (Simulaciones). - Pulsar en strong1 y luego en el icono <<. - Pulsar en baserun y luego en el icono <<. De esta forma descargamos, o dejamos ocultas, las simulaciones strong1 y baserun.
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
81
Detener la carrera de armamentos Una manera muy eficaz de entender el comportamiento de un modelo es romper los ciclos de realimentación y observar qué es lo que cambia. - Pulsar en el icono de Restablecer Todas las Constantes Esto restablece todos los cursores a las posiciones iniciales y todos los cambios de la función gráfica (Lookup). - Arrastrar el cursor bajo la tasa de fuerza deseada 1 a 2. Las dos líneas del gráfico deben estar una encima de la otra. Si esto no pasa seguro que las dos simulaciones que ha cargado son strongboth y Current. - Pulsar en el Armamento Total 2 con el botón derecho del ratón. Aparecerá el diálogo para forzar una variable. Cuando una variable se fuerza, en lugar de usar el valor calculado para ella se usará un valor externo a la entrada. Este valor puede ser una constante, o uno de varios modelos de la entrada alternativos. - En el campo de maximum (máximo) entre 1000 y pulsar en OK.
El modelo se simulará con Armamento Total 2 constante en 500. Esta variable se mostrará en un color diferente para indicar que no está calculándose de la manera normal y habrá un cursor de entrada justo debajo de ella. - Mover el cursor bajo el Armamento Total 2 hasta obtener un valor de 50, éste es el valor inicial original para esta variable.
82
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
- Pulsar en Armamento Total 1 y después pulsar en la herramienta del Gráfico. El Armamento Total 1 empieza en 50 y luego sube bastante rápidamente a 100 y se queda allí. No hay un aumento continuado. - Pulsar en Stop Override (Parar forzado) a mostrar sólo una línea.
. Los gráficos deben volver
Forzar el comportamiento La economía en este modelo ejerce una importante influencia para controlar la capacidad de producir armamentos. Si los gastos en armamento se definen como el gasto indicado multiplicado por el efecto de la capacidad, podríamos forzar ese efecto y hacerlo siempre uno. Por desgracia tal definición no es razonable porque el gasto real en armamento nunca excederá la capacidad económica. Para este modelo, la manera apropiada de quitar la influencia en el control de la economía no es hacer algo constante, sino darle a la actividad económica un comportamiento que no se vea influido por el nivel de gasto en armas. - Pulsar en la Capacidad Económica 1 con el botón derecho el ratón. - En el diálogo pulsar en el icono Exponential Growth (Crecimiento Exponencial). En Starting From (Empezar Desde) colocar 100. - Poner Growth Rate (el flujo de Crecimiento en %/unidad de tiempo) en 10. Observar el comportamiento de las diferentes variables. El Armamento Total 1 crece más, pero todavía en forma de S. De hecho, la Capacidad Económica 2 baja bastante comparada con la simulación del strong1 y esto está frenando la capacidad de 2 para producir armamentos. Haga el mismo cambio a la Capacidad Económica 2 que hizo con la Capacidad Económica 1. - Pulsar en la Capacidad Económica 2 con el botón derecho el ratón. - En el menú de diálogo pulsar en el icono Exponential Growth (Crecimiento Exponencial). En Starting From (Empezar Desde) colocar 100. - Poner Growth Rate (el flujo de Crecimiento en %/unidad de tiempo) en 10. Así conseguimos un crecimiento muy rápido en el nivel de armamentos para ambos países, y podemos estar seguros que la capacidad económica no es un factor limitativo, porque en ambos países la fracción de capacidad destinada a la producción de armamento es pequeña y disminuye. - Aumentar el flujo de fuerza deseada 2 a 2. El crecimiento económico está limitado una vez más, aun a 10% anual. Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
83
6.4. Construir un Panel de control Además de trabajar con los esquemas en miniatura, SyntheSim permite trabajar con los gráficos y tablas incrustados como Objetos de Entrada y Salida. - Pulsar en el icono de Stop Simulación
.
- Pulsar en el icono de Control Panel y pulse en el icono Gráph. - Pulsar en el icono New. - En el editor de Gráfico a Medida (Custom Graph) añada el título Comparación del Armamento Total y añada las variables Armamento Total 1 y Armamento Total 2. Para el Nombre del Gráfico entre COMPARE. - Marcar la casilla de la izquierda de los nombres variables. Añada 0 debajo de -Y-Min y 800 bajo Y-Max, a la derecha en la fila de arriba. El menú debe aparecer como:
- Pulsar en OK y Close. - Seleccionar en el Menú la opción View>New.
84
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
- Pulsar en la herramienta Input Output
y después pulsar en el centro de la pantalla.
- En el diálogo pulsar en el icono Output Custom Graph (Gráfico de salida a medida). Seleccione COMPARE de la lista desplegada en el fondo y pulse en OK. - Hacer el gráfico un poco más grande. - Pulsar debajo del gráfico a la izquierda. - En el diálogo Objeto Input/Output pulse en el icono Constant... (Constante... ) y seleccione tasa de fuerza deseada 1. - Poner el rango de 0 a 2 con incremento de .01 y pulse en OK. - Pulsar debajo del gráfico a la derecha. - En el diálogo de Input/Output pulse en el icono Constant... (Constante... ) y seleccione la tasa de fuerza deseada 2. - Poner el rango de 0 a 2 con incremento .01 y pulse en OK. Puede hacer los cursores ligeramente más grandes y colocarlos para verlos mejor. Vaya al Panel de Control, borre todas las simulaciones, después arranque el modo de SyntheSim y mueva los cursores. Debe observar algo similar a:
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
85
6.5. Ejercicio práctico. Población Para compensar el trabajo con un modelo tan complejo vamos a aplicar lo visto hasta ahora a un modelo sencillo. Tome el modelo de Población (*), y construya una vista de entradas y salidas que muestre de forma conjunta la evolución de los Nacimientos y Defunciones. - Pulsar el icono SyntheSim para ver la respuesta de los Nacimientos y las Defunciones a cambios en la esperanza de vida y de la tasa de natalidad.
(*) Libro “Teoría y ejercicios Prácticos de Dinámica de Sistemas” ISBN 84-607-9304-4 Capitulo 5.1 86
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
7. Diseño de pantallas de entrada y salida
Se pueden personalizar las vistas o pantallas agregando controles de entrada y salida. Estos controles se pueden agregar al lado de la estructura del modelo o en vistas separadas. Usando los controles de entrada y salida es posible crear unas vistas específicas de control para el manejo de las entradas del modelo y la presentación de los resultados de la simulación. Los controles de entrada y salida no son parte de la estructura del modelo, y, por lo tanto, no influyen en el comportamiento del mismo. Se pueden agregar fácilmente a un modelo terminado para hacer más fácil para otra persona el uso del modelo. Los controles proporcionan un mecanismo sencillo de hacer los modelos fáciles de utilizar. Los controles de entrada y salida también se adaptan a los cambios en la estructura del modelo. Si se cambia el nombre a una variable el control correspondiente se modifica automáticamente. Si se borra una variable o se cambia su tipo, cualquier control asociado quedará desactivado pero podremos seguir trabajando con el modelo. Estos controles aparecerán blancos o inactivos.
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
87
7.1. Caso. Los clientes y la publicidad En este caso se usará un modelo de ventas que analiza la influencia que tienen diversos aspectos como la eficacia de la publicidad, los gastos en publicidad y las posibles ventas boca a boca de los clientes del producto. Construir el modelo en base al diagrama mostrado con las ecuaciones siguientes y guardarlo. Para dibujar el flujo curvado, seleccionar el icono de Flujo, mantener pulsada la tecla de mayúsculas, señalar y pulsar con el ratón en las cuatro esquinas del canal del flujo. INITIAL TIME=0 FINAL TIME=5 TIME STEP=0.0625 Units for time =año Dibujar el canal desde clientes a clientes potenciales manteniendo pulsada la tecla de mayúsculas y pulsando con el ratón en el inicio del canal, las esquinas y el punto final.
88
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
Ecuaciones del modelo constante gastos en publicidad = 20000000 Units: $/año Clientes = +nuevos clientes-clientes salientes Initial value: clientes iniciales Units: personas clientes iniciales = 10000 Units: personas clientes potenciales = clientes salientes - nuevos clientes Initial value: Tamaño del mercado - clientes iniciales Units: personas clientes salientes = Clientes / tiempo de permanencia Units: personas/año efectividad de la publicidad = 0.1 Units: artículos/$ efectividad de venta por clientes = 3 Units: artículos/personas/año fracción de clientes potenciales = clientes potenciales / tamaño del mercado Units: Dmnl Dmnl= sin dimensiones nuevos clientes = ventas / volumen de la venta por cliente Units: personas/año gastos en publicidad =GAME ( constante gastos en publicidad) Units: $/año
Para definir la variable gastos en publicidad como una variable de juego escoger el tipo de variable: Auxiliary – Gaming.
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
89
posibles ventas por publicidad = gastos en publicidad * efectividad de la publicidad Units: artículos/año potenciales ventas boca a boca =Clientes * efectividad de venta por clientes Units: artículos/año tamaño del mercado = 100000000 Units: personas tiempo de permanencia = 2 Units: año ventas = (potenciales ventas boca a boca + posibles ventas por publicidad ) * fracción de clientes potenciales Units: artículos/año volumen de la venta por cliente = 1 Units: artículos/personas
Si ejecutamos el modelo obtenemos la siguiente evolución de las ventas.
- Guardar el modelo con el nombre clientes.mdl 90
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
7.2. Controles de salida - Crear una nueva Vista donde se puedan colocar Controles de Salida, para ello pulsar el botón View del Status Bar. (Está en la parte inferior de la pantalla, etiquetado View 1 para este modelo) y seleccionar **New** Se abre una nueva View. - Escoger el icono Input Output
pulsando en él.
- Mover el ratón a la derecha del esquema y pulsar. Esto abrirá el Input Output Object Settings dialog. - Seleccionar el tipo Output Workbench Tool, luego pulsar en el botón Auxiliary y seleccionar ventas de la lista. Pulsar OK para cerrar el diálogo Variable Selection. - Desplegar la lista variable Custom Graph or Analysis Tool for Ouput en la parte inferior y seleccionar la opción Graph. El menú debería aparecer de la siguiente manera:
- Pulsar OK. Seleccionar el icono de la mano. Se verá un rectángulo grande con un pequeño círculo en la zona inferior derecha para cambiar el tamaño visible. Redimensionar para llenar el lado derecho del esquema. La pantalla debería ser similar a la siguiente imagen.
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
91
- Pulsar el botón Run a simulation. Se ejecutará el modelo y el gráfico llenará el rectángulo.
92
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
7.3. Controles de entrada Se continuará trabajando en la misma View - Seleccionar la herramienta Input Output y pulsar en el sector superior izquierdo del esquema. Se abre el diálogo Input Output Object Settings. - Seleccionar la opción Input Slider (se abre por defecto) - Pulsar el botón Constant, seleccionar constante gastos en publicidad y OK. - Entrar Ranging from = 0 en to = 200e6 y with increment = 0.5e6 o bien entrar 200000000 o 2e+008 en el primer caso y 500000 en el segundo caso. - Marcar la opción Label with varname. El menú debería verse:
- Pulsar en OK. Se dibujará un cuadro en la pantalla - Ajustar su tamaño así ocupa un espacio compatible con el gráfico. - Seleccionar la herramienta Comment. recuadro.
y pulsar en la pantalla 1 cm. por encima del
- Escribir en el comentario “Gastos en Publicidad ($/año)”, seleccionar Shape None (Sin forma) y pulsar OK. Esta es la etiqueta para el cuadro recién creado. Repetir el proceso completo creando un cuadro para tiempo de permanencia, con rango de tiempo de 0.5 a 10 e incrementos de 0.1. Colocar la etiqueta “Vida media del cliente (años)” sobre el cuadro.
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
93
Otras constantes modificables - Seleccionar la herramienta Shadow Variable y agregar en esta vista las constantes efectividad de venta por clientes y tamaño del mercado. - Resaltar con el botón derecho del ratón las nuevas Shadow Variables y seleccionar el color del texto a negro.
Alineación de los elementos - Para lograr que los elementos que se han añadido queden correctamente alineados, seleccionar la herramienta Size/Move (Tamaño/Mover) y entonces seleccionar todos los elementos de la izquierda de modo que queden resaltados manteniendo la tecla de mayúsculas pulsada y seleccionando los elementos con el ratón. - En la barra superior pulsar sobre Layout y seleccionar la opción Center on LastSel (Centrar en la última selección) - Desplazar la selección completa moviéndola hacia el centro del cuadro de selección hasta que se vea bien. Con esto se habrá terminado, y puede guardar el modelo como clientes.mdl
94
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
Simular el Modelo - Pulsar el botón Set Up a Simulation
. Escribir un nombre nuevo para la simulación.
El gráfico se completará, los cursores se activarán, y las variables sombra quedarán resaltadas. - Mover un cursor y luego pulsar el botón Simulate
de la barra de herramientas.
Se ejecutará el modelo y se mostrarán en el gráfico los resultados de la nueva simulación. Repetir haciendo otros cambios. Se puede cambiar el nombre de la ejecución o bien mantenerlo. Cada vez que se efectúe una simulación se mostrarán los resultados en el gráfico de la derecha. También se puede pulsar el botón de SyntheSim y ver el gráfico actualizado automáticamente a medida que se mueven los cursores. En este caso los cursores también aparecerán para efectividad de venta por clientes y para tamaño del mercado.
Control de juegos El modelo tiene una variable Gaming (variable para juegos) que es: gastos en publicidad. Podemos usar la misma distribución de pantalla básica que se construyó para establecer el control de simulación. - Seleccionar la herramienta Move/Resize. - Marcar o seleccionar el Output Object (la gráfica) en la derecha de la pantalla, y también el Comentario “Gastos en publicidad ($/año) y el cursor debajo de él. Se puede hacer pulsando en uno, luego mayúscula y pulsar en los otros dos. - Seleccionar Edit>Copy NOTA: Es más fácil copiar Input Output Objects con la herramienta Move/Resize active. Cuando se activa la herramienta Lock estos objetos no podrán ser seleccionados pulsando sobre ellos, aunque pueden ser seleccionados arrastrando alrededor de ellos.
Duplicar una vista - Abrir una nueva vista pulsando New en el botón correspondiente de la Barra de Estado situada bajo del esquema. - Usar el comando Edit Paste. - Seleccionar la herramienta Input Output
y luego pulsar en el cursor.
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
95
Se abrirá el diálogo Input Output Object Settings. - Pulsar en el boton Gaming y pulsar para seleccionar gastos en publicidad (el único en la lista). Pulsar en OK. Observar que no se necesita cambiar la etiqueta, dado que gastos en publicidad sigue siendo la variable controlada.
Ejecutar un juego - Seleccionar la solapa Datasets del Control Panel cerrar. - Pulsar en el botón Game
, suprimir todas las simulaciones y
para comenzar el juego.
El gráfico se completará (quizás con una escala de tiempo completa o también con una escala de 0 a 100 si se está sobrescribiendo la única simulación cargada). La escala debe de ajustarse al avanzar el tiempo de simulación. El cursor estará activo y la Barra de Herramientas superior cambiará para reflejar el estado de juego, de la siguiente forma:
La gráfica aparecerá a medida que hagamos avanzar el tiempo. El intervalo de juego aparece resaltado en un recuadro de edición de la Barra de Tareas. Por defecto, el Intervalo de Juego está fijado por un TIME STEP de 0.0625.
96
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
- Escribir 0.25. - Hacer cambios usando el cursor y pulsando en el botón Advance para avanzar en el tiempo. El gráfico se actualiza. Es posible retroceder en el tiempo usando el botón Backup . Ahora es una buena ocasión para guardar el modelo. Comentarios y ayudas Para ayudar a una persona que desconoce esta herramienta es conveniente crear algunas instrucciones y guías para ayudarles a moverse dentro del modelo. - Crear una nueva View seleccionando **New** en el botón Status Bar View. Dar nombre a las vistas - Seleccionar el menú View-Rename. En el diálogo que se abre escribir “Guía” y luego pulsar OK. Esta vista tendrá como nombre “Guía”. Se puede cambiar el nombre a las otras vistas de igual manera, a “Estructura”, “Simulación” y “Juego”. Reordenar las vistas. - Seleccionar del menú View-Reorder. - Presionar con el ratón en “Guía” en la lista de los Views. Mantener el botón del ratón pulsado y moverlo hasta cerca del tope superior. “Guía" desaparecerá y la forma del puntero cambiará a una cruz. - Mover la cruz arriba hasta que esté centrada cerca del tope del primer nombre (Estructura) y soltar el botón del ratón. La palabra "Guía" debería aparecer en la primera posición. Si no lo hace, repetir la operación liberando el ratón un poco más abajo. Si mueve el centro de la cruz fuera de la lista "Guía" volverá a su antigua posición. - Pulsar OK. Añadir comentarios Si no está en la vista “Guía”, cambiar a ésta seleccionando “Guia” mediante el botón View o usando las teclas Page Up y Page Down. - Seleccionar la herramienta Comment
y pulsar en el extremo superior de la pantalla.
- Escribir el comentario “MENU PRINCIPAL” y un poco más abajo: “Pulsar en los enlaces para ir a cada una de las páginas”.
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
97
7.4. Enlaces de Navegación Un Enlace de Navegación es un comentario en el que cuando se pulsa en él (con la herramienta Lock seleccionada), se abre la Vista definida. - Con la herramienta Comment, pulsar en la zona inferior del diagrama. Escribir la palabra "Estructura”. Seleccionar Box en el campo Shape. - Escoger la opción Navigate View, que está en un menú en la parte central.
En la parte derecha hay una lista de las vistas, seleccionar "Estructura" de la lista y pulsar OK. - Pulsar en el botón a la derecha de Background Color y pulsar en color gris claro. Completar el campo Thickness debajo de colores con 2. El uso de color gris y color gris oscuro con espesor en 2 hace que el Comentario luzca algo diferente a un botón. - Establecer enlaces de Navegación con cada una de las otras vistas asignándoles las etiquetas “Simulación” y “Juegos”. El diagrama debe tener el aspecto de la siguiente imagen.
98
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
- Agregar Enlaces de Navegación referidos a “Guía” desde cada una de las otras vistas. En la vista “Simulación” es necesario agregar también un enlace a la vista “Juego”. Verificaciones Seleccionar la herramienta Lock (candado) y probar los Enlaces de Navegación. También repetir la ejecución de una simulación. Revisar la apariencia de la vista “Simular” en la vista “Juego”. Este es un buen momento para guardar el modelo. Se usa la extensión .vmf además de la .mdl normal, aspecto que es explicado a continuación. Guardar el modelo en formato binario En ocasiones queremos entregar un modelo que pueda ser simulado sin modificar las ecuaciones del mismo. Para estos casos existe el Vensim Model Reader, que es un programa de sólo lectura que tiene capacidad para ofrecer al usuario la posibilidad de ejecutar un modelo sin poder alterar sus ecuaciones. Estos modelos preparados para ser leídos por el Vensim Model Reader tienen la extensión .vmf en vez del usual .mdl. Debido a esto es necesario guardar los modelos desarrollados en un formato binario especial. Para hacer esto sólo es necesario elegir FileSave As…del menú File y escoger la opción Binary Format Models. Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
99
También se puede guardar el modelo directamente con la extensión .vmf y el software ya determina automáticamente el formato en el que debe guardar la información teniendo en cuenta la extensión seleccionada. Se ha creado un modelo que puede ser enviado a cualquier persona y podrá ser usado descargando la versión gratuita del Vensim Model Reader del cual la persona que lo ha construido sigue teniendo el control.
Ocultar variables En ocasiones deseamos disponer de una versión del modelo simplificada, pero ejecutable, que oculte algunas variables para que el aspecto del modelo permita centrar su análisis o discusión en su estructura básica. Para ocultar estas variables disponemos del icono Con el icono activo ir a la pantalla del modelo (Estructura) y pulsar sobre las variables: tiempo de permanencia, clientes iniciales, tamaño del mercado, volumen de ventas por cliente, efectividad de venta por clientes, constante gastos en publicidad, efectividad de la publicidad, gastos en publicidad, posibles ventas por publicidad. El diagrama tendrá un aspecto similar al siguiente:
Observar que en la parte inferior de la pantalla ha aparecido un botón con el nombre Hide:
100
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
Si pulsa sobre este botón le aparece la opción Show, si la pulsa la opción Hide volverá a ver todas las variables ocultas. Puede seleccionar las variables que ya no desea ocultar, para ello pulse Show, le aparecen todas las variables en la pantalla, seleccione el icono y pulse sobre las variables que desea recuperar, por ejemplo tiempo de permanencia. Hágalo y después escoja la opción Hide, el resultado debe de ser:
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
101
7.5. Ejercicio práctico. Depósito. Tomar el modelo del Dinámica de un depósito (*). -
Crear una vista (“Guía”) con el menú general, con enlaces de navegación a las otras vistas, y también crear enlaces entre ellas y ésta. Crear una vista (“Estructura”) con el diagrama de flujos. Crear una vista (“Simula”) con opciones de entrada y salida para las variables k1 y k2 que regulan el ritmo de entradas y salidas. Crear otra vista (“Juego”) para realizar un juego con la variable salida, es decir definir salida como Auxiliary Gaming. Ajustar los valores del cursor de 0 a 20.
La solución al ejercicio se halla en el CD (*) Libro “Teoría y ejercicios Prácticos de Dinámica de Sistemas” ISBN 84-607-9304-4 Cap. 5.23
102
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
8. Análisis de sensibilidad Es muy común en los ejercicios o problemas que los cálculos se efectúen de una manera determinista, es decir, tratando a la totalidad de las variables como constantes conocidas. Sin embargo, la realidad es que pocas veces se conocen los valores exactos de las variables: en la mayoría de las situaciones, se trabaja con estimaciones de las condiciones medias o conservadoras, e inclusive, del peor de los casos. Cuando se mide repetidamente un parámetro físico o químico, o cuando se efectúan estudios de campo sobre fenómenos de naturaleza económica o social, lo que en realidad se obtiene es un conjunto de valores más o menos parecidos, con un rango de variación que depende de muchos factores, tales como la precisión del instrumental, la pericia del analista, el tamaño de la muestra etc. De este modo, el valor obtenido se convierte en un evento fortuito o aleatorio. Así que en rigor, al repetir la medición o el ensayo, más que el valor exacto de una variable se obtiene un conjunto de valores que puede adoptar esa variable, cada uno de ellos con una probabilidad asociada, la cual indica cuan posible es que ese valor se obtenga si se repiten las mediciones. Decimos entonces que se trata de una variable aleatoria. Es posible construir tablas o gráficas donde se coloquen los distintos valores de “x” y sus probabilidades asociadas, e inclusive construir fórmulas que permitan vincular el valor y su probabilidad. Esas tablas, gráficas o fórmulas se conocen como distribuciones de probabilidad. No por simple y conocido deja de ser útil el ejemplo de la moneda: si arrojo al aire una moneda legal y descarto que caiga de canto, tendré un 50% de probabilidades de caiga cara o cruz. Así que tengo dos resultados posibles para el experimento, cada uno con su probabilidad asociada. Lamentablemente, los acontecimientos reales son mucho más complejos y difíciles de representar a través de modelos teóricos con simples cálculos de probabilidad. El estadístico razona desde la población conocida a la muestra desconocida. En cambio, quien intenta representar el mundo real parte normalmente de muestras, e intenta sacar conclusiones acerca de la población. Por ejemplo se hace una muestra de la intención de voto con la idea de predecir los resultados de las elecciones. La extrapolación desde una pequeña realidad conocida a un mundo desconocido debe fundamentarse de alguna manera que supere a la mera intuición, y es ahí donde se hace necesaria la intervención de la Estadística, una ciencia que suele resultar de difícil abordaje y más bien antipática a menos que se realice un decidido esfuerzo por entender el significado de las herramientas de análisis que brinda. Ante todo es importante tener en claro para que se la emplea, evitando caer en el error de aplicar mecánicamente fórmulas o “recetas” que validen el resultado de experiencias o ensayos sin saber muy bien que se está haciendo. Si se acumula un gran número de datos que luego se utilizan para describir y extraer información, estamos frente a la estadística descriptiva, relativamente sencilla de Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
103
utilizar y comprender. Pero si se usan las herramientas que permiten formular inferencias acerca de una población partiendo de una muestra estamos frente a la estadística inferencial que es la que suele generar mayores problemas de comprensión. Sin embargo su utilidad es enorme y permite que innumerables decisiones se tomen sobre bases más sólidas que la sola experiencia práctica. Una herramienta de uso casi permanente en la estadística inferencial son las distribuciones de probabilidad teóricas las cuales son en definitiva funciones matemáticas presentadas en forma de gráficos o tablas que establecen una relación entre un valor x y su probabilidad f(x) de producirse. Estas distribuciones, aunque teóricas, no son caprichosas. No se desarrollaron porque sí, ni se las elige sin análisis previo. Tienen que ver con el patrón de comportamiento que quieren representar. Antes que nada debemos tener claro el tipo de variable a utilizar: si el número de valores que puede tomar es contable, se trata de una variable discreta; en cambio, si la variable puede tomar un infinito número de valores dentro de un cierto rango, es una variable continua. El número de personas dentro de un avión o el número de pedidos nuevos recibidos en una fábrica son ejemplo de variables discretas. Por el contrario, los tiempos de espera en la caja de un supermercado o en el peaje de una autopista, así como la altura o el peso de una persona son variables continuas porque tienen infinitos decimales. En cuanto a la naturaleza del evento analizado, también hay diferencias. Supongamos que al realizar una encuesta de mercado, buscando determinar las preferencias de la población por la bebida A en competencia con la B, obtendremos como resultado un cierto número de personas que optan por A, y el resto optan por B. Se parece al caso de tirar la moneda. Hay muchos sondeos a nivel social, industrial y en educación que presentan este comportamiento. O sea: n ensayos con dos posibles resultados: éxito (favorable a mis intereses), fracaso (desfavorable). En este caso la distribución teórica aplicable es la Binomial. Consideremos ahora el caso de medir la estatura de todos los empleados de una empresa. Dependiendo de la precisión con que se lo haga, la distribución de valores obtenidas se acercará a una variable continua, que presenta una tendencia central, y cierta dispersión en los resultados obtenidos, ya que son menos frecuentes las personas muy bajas o muy altas. Lo mismo ocurre con los resultados de los análisis de laboratorio, las mediciones de rendimiento o calidad de equipos, los ingresos medios de la población etc. Para estos casos, la más conocida y utilizada es la Distribución de Probabilidad Normal, cuyo gráfico es una curva en forma de campana, simétrico a ambos lados del valor central. Muchos acontecimientos de la vida real se comportan aproximadamente en forma “normal”. La forma más común de medir el valor central es la media (promedio de todos los datos), y la dispersión a través de la desviación estándar, cuyas formas de cálculo figuran en cualquier texto de estadística. Estos datos son los necesarios para calcular los límites de confianza del valor estimado, que serán más distantes cuanto mayor sea el grado de certidumbre que pretendo tener. 104
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
Hasta aquí se han desarrollado conceptos estadísticos básicos que luego aparecerán en la aplicación de algunas herramientas del software utilizado. Pero no nos olvidemos que los parámetros que se utilizan en un modelo de simulación dinámica constituyen las mejores estimaciones de sus valores reales. Por ejemplo, el margen de rentabilidad de un producto puede estar basado en las mejores estimaciones del precio de venta y del costo variable por unidad, lo cual supone ciertos costes salariales, tiempos esperados de proceso y costos de materiales. Por otra parte, la calidad de la información tiene un costo que, lógicamente, es mayor cuanto más exactitud se pretenda. Y las empresas tienen límites a veces bastante modestos en cuanto a lo que quieren invertir en estudios de mercado, sondeos o recopilación de datos históricos. Nuestro problema es que tenemos un modelo construido, probado e incluso calibrado. Ahora bien, ¿cómo responde ante cambios en los parámetros utilizados? Es decir ¿cuán sensibles resultan los resultados del modelo a los cambios en esos parámetros sobre los cuales tenemos dudas?. Este análisis posterior a la construcción y ajuste del modelo se conoce como Análisis de Sensibilidad. Si tenemos un modelo con parámetros que son variables continuas distribuidas en forma normal, podemos preguntarnos si será necesario ejecutar el programa un número infinito de veces, cambiando cada vez los valores. Esto es imposible de llevar a la práctica. Por suerte la respuesta a esa pregunta es negativa. Lo que si se puede hacer, con menos costo y en tiempos razonables es simular el proceso un gran número de veces (aunque finito) adoptando cada vez valores diferentes en los parámetros. A la técnica de simular un proceso que contiene elementos aleatorios repitiendo el proceso una y otra vez para ver cómo se comporta se le llama Método de Montecarlo y es de aplicación usual en estudios empresariales y científicos. En el caso concreto de los modelos de simulación dinámica, el análisis de sensibilidad por el Método de Montecarlo está incorporado como una herramienta del software, de modo que lo importante es saber que datos alimentar a la simulación y cómo interpretar los resultados. Consideremos la siguiente situación: un fabricante de cervezas se encuentra con problemas para programar su producción. No conoce su participación exacta en el mercado, lo afecta la estacionalidad del consumo, desconoce la capacidad máxima de consumo del mercado al cual dirige su producto. Encarga un estudio, y le informan que el máximo consumo ronda el 1.000.000 de litros diarios, y que un estudio sobre 500 personas que probaron la bebida comparando con su principal competidor, 350 han elegido su producto. Sus asesores le dicen que sería adecuado formular un modelo de simulación sobre el cual se haga un análisis de sensibilidad considerando que la variable “consumo” se comporta según una Distribución Binomial. Así que un muy sencillo modelo de simulación dinámica, que considere una producción, un nivel de stock y un consumo le darán una primera aproximación rápida de cómo programar su producción. Este mismo modelo podrá luego ir completándose a efectos de considerar otras variables que afecten el consumo (estacionalidad, poder adquisitivo, aparición de nuevos productos, búsqueda de nuevos mercados...).
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
105
Una vez que se ha construido y probado el modelo, la elección de la herramienta de Análisis de Sensibilidad abre un cuadro que requiere definir algunos datos, dependiendo de la distribución que se elija. Las opciones son varias, si bien las más comunes son la distribución uniforme, que asigna a todos los valores igual probabilidad, y la distribución normal. En este ejemplo hemos elegido la binomial. Seleccionamos como variables aleatorias las que creemos que influyen de forma más decisiva en el comportamiento del sistema. Donde debemos poner mayor cuidado es cuando elegimos la distribución. En el caso de la binomial hemos de definir 6 parámetros. Se nos pide un valor mínimo, uno máximo, una probabilidad, el número de simulaciones, la media y la desviación estándar. Los dos primeros tienen que ver con la situación real, y pueden elegirse aprovechando los datos del ensayo. Los cuatro últimos tienen que ver con la distribución y para nuestro ejemplo del fabricante de cerveza serían 0.7, 500, 350 y 10.25. Así que completados los datos y ejecutado el análisis, veremos un gráfico que cubre una superficie y además presenta en su parte superior una referencia que dice 50%, 75%, 95% y 100%. 25%
50%
75%
100%
Estos son los límites de confianza. Sin entrar en detalles estadísticos, estos límites nos dan idea de la probabilidad de acertar en el análisis, razón por la cual el gráfico correspondiente a un 50% es más estrecho que el de 75%, y éste que el de 95%. Es decir, con un menor porcentaje obtenemos una predicción más centrada y precisa, pero tenemos mayor riesgo de equivocarnos. Más allá de la exactitud de las estimaciones, un análisis de sensibilidad, que podría también efectuarse simplemente cambiando varias veces el valor de un parámetro y observando lo que ocurre, nos muestra aquellas variables cuyos cambios afectan más el comportamiento del sistema, razón por la cual serán las que reciban mayor atención. 106
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
8.1. Caso. El equipo de ventas
El modelo de ventas que se comenta a continuación contiene un ciclo de realimentación positivo principal, en el que un mayor número de vendedores pueden generar más ventas, incrementando el beneficio y permitiendo contratar más vendedores. Existe además un ciclo de realimentación negativo que ajusta la fuerza de ventas mediante la contratación o los despidos. Crear el modelo ventas.mdl .
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
107
Para dibujar el signo + del ciclo, pulsar en el icono Com , y en la ventana que se abre desplegar el menú a la derecha de Image (en blanco) y seleccionar el símbolo +. Después marcar la opción de Loop Clkwse. Para dibujar un flujo de doble sentido, activar el icono de la mano, pulsar en el pequeño círculo del flujo con el botón derecho del ratón y marcar la opción Arrowhead
Ecuaciones del modelo Los parámetros temporales se pueden definir al hacer File – New Model o bien desde Model – Settings, son: INITIAL TIME = 0 FINAL TIME = 60 TIME STEP = 0.25 Unidades de Tiempo: Mes contratación neta= (vendedores deseados - Vendedores) / plazo de ajuste Units: personas/Mes pedidos= Vendedores * productividad de vendedores Units: unidad/Mes Facturación= pedidos * precio del artículo Units: $/Mes plazo de ajuste= 6 Units: Mes precio del artículo=100+step(10,20) Units: $/unidad presupuesto de ventas= Facturación * % a ventas Units: $/Mes productividad de vendedores = WITH LOOKUP ( Vendedores ((10,200),(50,200),(100,120) )) Units: unidad/(personas*Mes) 108
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
salarios= 2000 Units: $/(personas*Mes) Vendedores= contratación neta initial value = 50 Units: personas vendedores deseados= presupuesto de ventas / salarios Units: personas % a ventas= 0.1 Units: Dmnl
(Dmnl= sin dimensiones)
Simulación base Primero simularemos el modelo que se comporta de forma estable hasta el periodo 20 en el que incrementamos el precio del artículo de 100 a 110 para observar su comportamiento. - En la caja de edición del nombre de la simulación escribir baserun y pulsar Intro. - Pulsar en el icono de Simular. , pulsar dos veces en Vendedores y pulsar después en el icono de Gráfico. Repetir esta operación para la variable Facturación . Se observa que ambas variables crecen a partir del periodo 20 y luego se estabilizan.
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
109
- Pulsar alternativamente en los iconos dos salidas graficas.
para ver el diagrana del modelo o bien las
- Seleccionar en el Panel de Control el icono de Datasets y pulsar dos veces en baserun para dejarlo inactivo. Incertidumbre en múltiples parámetros Este modelo contiene cuatro constantes que podemos variar para examinar su efecto en la salida de la simulación. Son: precio del artículo, plazo de ajuste, salarios, y el % a ventas. Supongamos que conocemos los valores exactos para dos constantes: precio del artículo y % a ventas, porque son decisiones políticas que los gerentes pueden realmente definir. Los parámetros inciertos son plazo de ajuste y salarios. Seleccionaremos estos dos últimos elementos y les asignaremos los valores máximos y mínimos que creemos pueden tener, y también la distribución de probabilidad que pueden tener, para finalmente observar su impacto en el comportamiento del modelo. Observe que podríamos seleccionar sólo un parámetro si quisiéramos observar la sensibilidad del comportamiento del modelo a ese parámetro en especial. Inicio del análisis de sensibilidad - En la caja de nombre de la simulación teclear sensibilidad como el nombre de la nueva simulación (actualmente es baserun). - Pulsar en el icono de Sensibilidad
110
y se abre el menú:
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
- Asegúrese que está señalada la opción de Multivariate y que el número de simulaciones (Number of Simulations) esté en 200. El Método de Montecarlo trabaja probando un conjunto de números dentro de un cierto rango. Para realizar un análisis multivariable hace una muestra aleatoria de valores de la distribución para cada elemento especificado y los valores resultantes son el resultado de una simulación. Cuando el Número de Simulaciones es 200 este proceso se repetirá 200 veces. - Pulsar en el botón Parameter y se abrirá una caja de diálogo que mostrará todos los parámetros (elementos que son constantes) del modelo, que son los elementos que pueden seleccionarse para el análisis. Pulsar en plazo de ajuste y después en OK.
8.2. Distribuciones estadísticas Distribución Uniforme Aleatoria Para hacer un análisis de sensibilidad es necesario definir qué tipo de distribución de probabilidad se elije para cada parámetro. La distribución más simple es la Distribución Uniforme Aleatoria, en la que existe la misma probabilidad de que ocurra cualquier número entre el valor mínimo y máximo. Esta distribución es aplicable para la mayoría de los análisis de sensibilidad y se selecciona por omisión. Otra distribución comúnmente usada es la Distribución Normal (Campana de Gauss) en la que los valores cercanos a la media son más probables que ocurran que los valores lejos de la media.
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
111
Las distribuciones normalmente usadas son Uniforme, Normal y las distribuciones Triangulares. Si no tiene ningún motivo para seleccionar una distribución determinada, es conveniente elegir una Distribución Uniforme. Los valores mínimo y máximo se escogen para limitar el rango de cada parámetro. Observe que el valor real del esta variable en el modelo, que es 6, se indica debajo del botón Parameter – Model Value. - Pulsar en la caja Minimum Value (Valor Mínimo) y teclear 3. Pulsar en la caja Maximum Value (Valor Máximo) y teclear 12. Estos números son asimétricos alrededor del valor 6 del modelo; creemos que el valor podría ser un poco más bajo o mucho más grande. Pulsar en el icono Add Editing (Añadir Edición). - Pulsar en el icono Parameter (Parámetro), escoger salarios y pulsar en OK. Distribución Aleatoria Normal Para salarios escogeremos una distribución RANDOM NORMAL cuyos valores se obtienen según una Distribución Normal y se han de indicar los límites máximo y mínimo, así como una media y desviación estándar. - En la caja de Distribution seleccionar la opción RANDOM NORMAL de la lista. - Pulsar en la caja del Minimum Value (Valor Mínimo) y teclear 1800. Pulsar en la caja de Maximum Value (Valor Máximo) y teclear 2200. Pulsar en la caja Mean (Media) y teclear 2000. Pulsar en la caja Standard Deviation (Desviación Estándar) y teclear 100. Pulsar en la caja Add Editing (Añadir Edición). La pantalla debe aparecer similar a la imagen siguiente. - Pulsar en el icono Next (Siguiente).
112
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
8.3. Resultados. Variables de especial interés Los análisis de sensibilidad generan una cantidad muy grande de datos, por lo que es necesario limitar los datos guardados a esas variables en las que estamos muy interesados. Debemos guardar sólo valores para las variables que son de interés real; intentar guardar los valores del análisis sensibilidad para todas las variables en el modelo consume mucho tiempo y una gran cantidad de espacio en disco. - Pulsar en el botón Select (Seleccionar), se abrirá un menú mostrando todas las variables del modelo. Escoja Facturación y pulse en OK. Pulsar en el botón Add Editing (Añadir Edición). - Pulse en el icono Select (Seleccionar) y escoger Vendedores luego pulse en el icono de OK. Pulse en el icono Add Editing (Añadir Edición). NOTA podríamos simplemente teclear estos nombres individualmente en la caja de edición y pulsar en el icono Add Editing (Añadir Edición). El resultado debe ser como el siguiente:
- Pulsar en el icono de Finish (Terminar).
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
113
8.4. Análisis de sensibilidad El modelo se simulará y luego realizará 200 simulaciones adicionales mientras cambia automáticamente los parámetros plazo de ajuste y salarios. La simulación contiene el comportamiento estándar para todas las variables con los valores de las constantes originales del modelo, y un rango de valores para las variables Facturación y Vendedores generada por las 200 simulaciones. - Pulsar dos veces en la variable Facturación en la pantalla para seleccionarla.
Límites de confianza - Pulsar en el icono Sensitivity Graph (Gráfico de Sensibilidad) . Se genera un gráfico que muestra los límites de confianza para todos los valores de Facturación que se generaron cuando los dos parámetros se modificaron al azar alrededor de sus distribuciones estadísticas.
Los límites exteriores de incertidumbre (100%) muestran los valores máximos de aproximadamente 1,2 millones y un valor del mínimo de aproximadamente 750.000 al final de la simulación. Observe la posibilidad de una disminución en el Facturación. La simulación original (con los valores de las constantes definidos en el modelo) se dibuja como una línea azul indicada en la parte superior con el nombre de baserun. 114
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
Escalas de los gráficos Se puede ajustar la escala para mostrar con más detalle el rango inferior de los valores de la incertidumbre. Vamos a ver ampliada la zona de Facturación entre 500.000 y 1.5 M. - Poner el puntero en la línea horizontal del gráfico que muestra el Facturación en 1.5 M. Mantenga apretada la tecla Ctrl y luego pulse con el botón del ratón. Arrastre el ratón para que el cursor se mueva a la línea que muestra el Facturación igual a 500.000. Suelte el botón del ratón. No se observa ningún cambio en la pantalla hasta que pulsa en el icono Sensitivity Graph Percentiles. Obtenemos una gráfica con la zona 500.000 a 1.500.000 ampliada. - Poner el puntero en la línea vertical del gráfico que muestra el periodo 15. Mantener apretada la tecla Mayúsculas y luego pulsar con el botón del ratón. Arrastrar el ratón para que el cursor se mueva a la línea del periodo 24. Soltar el botón del ratón. No se observa ningún cambio en la pantalla hasta que pulsa el icono Sensitivity Graph Percentiles. Obtenemos una grafica similar a la siguiente en función de los puntos exactos donde hayamos pulsado en la gráfica y donde hayamos soltado el ratón.
Pulsando el icono se han simulado.
podemos ver una representación de las 200 trayectorias que
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
115
Los resultados del análisis de sensibilidad pueden mostrarse en forma de histograma. Éstos proporcionan una sección transversal de valores en un periodo de tiempo en particular. Los histogramas muestran el número de simulaciones para los que la variable estaba en un rango dado en el momento determinado. Los histogramas proporcionan un mecanismo para observar la distribución de los valores de una variable sobre todas las simulaciones realizadas y en un momento determinado. En Vensim PLE Plus el gráfico de barras está configurado para mostrar la sensibilidad en un periodo determinado. En otras versiones es posible definir los parámetros de la gráfica.
116
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
8.5. Ejercicio práctico. Kaibab El de modelo de los ciervos de la reserva del Kaibab (*) se presta a realizar un análisis de sensibilidad centrado en la evolución del número de ciervos. Tómelo para realizar un análisis de sensibilidad con total libertad en la selección de parámetros y en el tipo de distribución estadística. Considere que podemos modificar el área de la Reserva entre 500.000 y 1.200.000 acres, dividiéndola en dos y confinando los ciervos en una parte, o bien ampliando el parque con una zona adyacente. Considere una distribución Random Uniform. Realice ambas simulaciones por separado. En una de ellas, tomando entre 500.000 y 1.000.000 acres, que es el valor inicial, ha de obtener este resultado.
Comente los resultados obtenidos, y analice el impacto de utilizar otras distribuciones estadísticas.
(*) Libro “Teoría y ejercicios Prácticos de Dinámica de Sistemas” ISBN 84-607-9304-4 Capitulo 5.2 Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
117
9. Comparación modelo - realidad El presente capítulo permite una revisión de aspectos vistos en las páginas anteriores del libro, tanto para consolidar esos aspectos como para servir de autoevaluación al lector que lo desee.
9.1. Caso. Evolución del SIDA en el País Vasco A lo largo de la historia de la medicina, pocas enfermedades han tenido un impacto sanitario y social tan grande como el SIDA. El curso de la epidemiología del SIDA, está marcado por 3 hechos fundamentales: 1. La rápida propagación del VIH durante la década de los 80, sobre todo entre el colectivo de personas usuarios de drogas vía parenteral. En 1983 se aísla el virus y se bautiza como VIH. En el 1987 se lanza el primer fármaco al mercado, el AZT. 2. El progresivo descenso de la transmisión del VIH desde comienzo de los 90 se debió a los intensos programas de prevención que redujeron las prácticas de riesgo. El punto álgido de la epidemia se alcanzó en término de mortalidad a mediados de los años noventa. 3. La extensión de las terapias antirretrovirales (ARV) de alta eficacia desde 1997. Los programas de prevención que han contribuido al descenso en el contagio del SIDA han consistido en: programas de intercambio de jeringuillas, el Kit antisida, programas de mantenimiento con metadona, talleres de sexo seguro, uso de tratamientos ARV, campañas de publicidad, actividades en centros escolares, programas llevados a cabo por ONG´s, actividades en oficinas de farmacia, y acciones en las consultas de SIDA. Las terapias antirretrovirales (ARV): En 1997 se produjo un cambio de enorme magnitud en la evolución de la infección producida por el VIH que se debió fundamentalmente a: la introducción de nuevos grupos de fármacos ARV inhibidores de la proteasa e inhibidores no nucleósidos de la transcriptasa inversa, la utilización de los fármacos disponibles en terapias de combinación, y la utilización de la carga viral para medir la eficacia terapéutica de los antirretrovirales. Desde entonces, todos estos elementos han permitido aumentar la supervivencia y la calidad de vida de las personas infectadas por el VIH. En un principio, la única forma de medir la epidemia consistía en contabilizar el número de enfermos de SIDA. Los excelentes resultados obtenidos con las terapias combinadas han tenido como consecuencia, a partir de 1997, una drástica disminución del número de casos de SIDA perdiendo valor el único referente con el que se medía la evolución de la epidemia, ya que los casos de SIDA pierden fuerza y representatividad en relación al número de infectados por el VIH que, con la medicación, no desarrollan o lo hacen mucho más tarde la enfermedad. El único dato que podía dar una visión real de la situación es contabilizar cuántas personas se están infectando. En enero del 2002 se puso en marcha el Sistema. de Vigilancia de Nuevas Infecciones VIH que recoge los nuevos diagnósticos de infección 118
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
VIH. Además, retrospectivamente se recogieron los nuevos diagnósticos de los 5 años anteriores. Desde el inicio de la epidemia en 1984 hasta finales de 2001, se estima que se han infectado alrededor de 10.000 personas, de las que 4.653 han desarrollado la enfermedad, habiendo fallecido 2.605, lo que supone el 56% de las personas diagnosticadas. Se dispone de datos de nacimientos, defunciones y población, así como de datos de casos de enfermos SIDA anuales (Incidencia); datos de mortalidad por la enfermedad desde 1984 y de datos de las nuevas infecciones desde 1997. Estos datos están disponibles en una hoja de Excel.
9.2. Estructura del modelo El modelo analiza período desde 1980 a 2005 con un Time Step= 1 y unidades de tiempo año o Year. Omitiremos las unidades de las variables, que son personas en los niveles y personas/año en los flujos, y no tienen dimensiones en el resto de variables.
La estructura básica del modelo está dividida en tres áreas, acciones realizadas, riesgos y población. El área de las acciones realizadas incluye tres grandes grupos: las campañas de prevención, los tratamientos con los primeros fármacos, y por último la terapia combinada.
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
119
-
-
Campañas de prevención: Permite estimar en el modelo el efecto de las mismas sobre el riesgo de contagio. Tratamiento: Recoge el efecto de los primeros tratamientos antirretrovirales que se fueron introduciendo sobre la evolución de los infectados a enfermos de SIDA antes de que apareciera los tratamiento combinados Influye en el riego de desarrollo de la enfermedad y en el riesgo de muerte Terapia combinada: Recoge el efecto en el riesgo de contagio, el riesgo de desarrollo de la enfermedad, y el riesgo de muerte. Su acción disminuye en primer lugar el número de personas que se infectan al estar los infectados con carga viral indetectable lo que disminuye la probabilidad de transmitir la enfermedad, en segundo lugar el número de infectados que evolucionan a enfermos, y en tercer lugar el número de enfermos que mueren. El efecto de la terapia combinada ha disminuido drásticamente el número de enfermos y de muertes hasta un valor en el que se encontrarían aquellos pacientes que no están en tratamiento, que son resistentes a los fármacos, o que se diagnostican tarde.
El área de riesgos del diagrama incluye los relativos al contagio, al desarrollo de la enfermedad, y al de muerte por SIDA. El área de personas incluye la población sana, y los grupos de infectados y enfermos, así como los flujos que muestran el desarrollo de la enfermedad. Teniendo en cuenta el pequeño valor relativo de los enfermos de SIDA sobre el total de la población se omiten los flujos de mortalidad por causas ajenas a la enfermedad. En el modelo se omite la transmisión vertical de la enfermedad (madre‐hijo) por tener poca relevancia en el total de infectados. Como la población de enfermos de SIDA es muy pequeña respecto al total, se ha considerado la mortalidad de susceptibles como la de la población general. La tasa de contagio, hemos considerado un valor general que incluya la de todos los grupos de riesgo. Los datos de referencia se han tomado del Plan Estratégico de prevención control del SIDA 2003‐2006 del Departamento de Sanidad y del Instituto Vasco de Estadística www.eustat.es/ www.sidalava.org y se recogen en tres variables en el modelo.
120
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
Crear cuatro vistas en el modelo con los nombres de: Portada, Diagrama, Entradas y Salidas, y Sensibilidad. La vista Portada ha de tener: - El texto: “Modelo de simulación de la evolución del número de enfermos de SIDA en el País Vasco 1980-2005” - Una imagen relacionada con el tema. - Enlaces de navegación a las otras vistas - Gráficos que muestren la evolución de la enfermedad: personas que enferman, enfermos, y personas de este colectivo que mueren. El aspecto ha de ser similar al siguiente:
Esta vista nos permite hacer una explicación del problema a través de la evolución de las principales magnitudes relativas al número de personas afectadas por la enfermedad. Además nos permite acceder a las otras vistas de una forma rápida.
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
121
La vista Diagrama ha de contener el diagrama completo, junto con un enlace a la Portada. Las ecuaciones se indican y comentan más adelante.
Observar que en este diagrama aparecen algunas variables, en especial las relativas a la eficacia, que no se han mostrado antes en el esquema general. Estas variables nuevas se habían ocultado (Hide) para hacer más claro el diagrama básico y ahora se muestran. Las tres variables de datos oficiales así como los flujos de nacimientos y muertes toman sus valores de la hoja de Excel: Datos modelo SIDA.xls Los valores de los datos oficiales, con sus naturales limitaciones, son un punto de referencia esencial para la validación del modelo. Los datos de nacimientos y muertes de la población general se incorporan al modelo directamente sin manipular, ya que calcular las respectivas tasas anuales añadiría complejidad al modelo en un aspecto que tiene escasa influencia al análisis central que nos interesa realizar. La variable primeros infectados que no se hallan vinculada a ningún elemento aparentemente es en realidad el valor inicial del nivel de Infectados.
122
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
La vista Entradas y Salidas incluye: - Cursores de las variables eficacia campaña, eficacia tratamiento y eficacia terapia. - Gráficas de las tres acciones (campañas de prevención, tratamiento y terapia combinada) y los tres elementos de riesgo ( riesgo de contagio, riesgo de desarrollo de la enfermedad y riesgo de muerte) - Gráficas comparativas de los resultados del modelo con los datos oficiales de las variables de población (enferman, enfermos y muertes de enfermos)
Si bien disponemos de información descriptiva de las acciones realizadas, sean campañas de publicidad, tratamientos o terapias, y las fechas en las que tuvieron comienzo cada una de ellas, desconocemos el grado de eficacia de las mismas y la rapidez de su implantación. Para reproducir este aspecto en el modelo usamos las variables „eficacia‟ que muestran de un valor entre 0 y 1 la intensidad de la acción. Colocar una gráfica que muestre los valores de las acciones. Las acciones tienen una repercusión directa en los diferentes riesgos asociados a la enfermedad: riesgo de contagio, riesgo de desarrollar la enfermedad y riesgo de morir por su causa. Crear una gráfica que muestre los valores de los riesgos. Un aspecto clave es poder comparar la evolución de las principales magnitudes del modelo con los datos oficiales, crear graficas que muestren la evolución de las personas que enferman, de los enfermos y de las muertes de enfermos. Por último añadir cursores de las tres variables que recogen la eficacia de las acciones realizadas, para poder realizar posteriores simulaciones. Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
123
La vista de Sensibilidad muestra la influencia de los factores de riesgo en las personas que enferman.
En la imagen anterior se ha tomado para la variable factores de riesgo una distribución estadística RANDOM_UNIFORM con un valor central de 0.15, un valor mínimo de 0 y un valor máximo de 0.30. Se puede observar como la distribución no guarda simetría de forma que las desviaciones a uno y otro lado de la curva central son muy diferentes.
9.3. Ecuaciones del modelo (01) campañas de prevencion=prevencion inicial+RAMP(eficacia campaña, 1990, 1994) Es una variable que vale 1/3 antes de 1990, y hasta 1994 se incrementa en la magnitud de la eficacia de la campaña de prevención. (02) datos oficiales de enferman:= GET XLS modelo SIDA.xls' , 'Hoja1' , '5' , 'C7' ) 124
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
DATA(
'datos
Los datos de referencia se han tomado del Plan Estratégico de prevención control del SIDA 2003‐2006 del Departamento de Sanidad y del Instituto Vasco de Estadística www.eustat.es/ (03) datos oficiales de enfermos:= GET XLS DATA( 'datos modelo SIDA.xls' , 'Hoja1' , '5' , 'C8' ) Los datos de referencia se han tomado del Plan Estratégico de prevención control del SIDA 2003‐2006 del Departamento de Sanidad y del Instituto Vasco de Estadística www.eustat.es/ (04) datos oficiales de muertes de enfermos:= GET XLS DATA( 'datos modelo SIDA.xls' , 'Hoja1' , '5' , 'C9' ) Units: personas/año Los datos de referencia se han tomado del Plan Estratégico de prevención control del SIDA 2003‐2006 del Departamento de Sanidad y del Instituto Vasco de Estadística www.eustat.es/ (05) eficacia campaña = 0.1 Es el porcentaje de incremento de efectividad de las campañas desde su inicio. (06) eficacia terapia = 0.1 Es el porcentaje de incremento de efectividad de las terapias desde su inicio. (07) eficacia tratamiento = 0.1 Es el porcentaje de incremento tratamiento desde su inicio.
de
efectividad
del
(08) enferman=Infectados*riesgo de desarrollo de enfermedad *factores de riesgo Son las personas que desarrollan alguna enfermedad relacionada con el VIH (09) Enfermos= enferman-muerte de enfermos Initial value = 0 Son las personas que han desarrollado alguna enfermedad asociada al VIH (10) factores de riesgo = 0.15 Contante que permite regular la cantidad de personas que desarrollan la enfermedad teniendo en cuenta el riesgo de ello en cada periodo.
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
125
(11) Infectados= infectan-enferman Initial value = 40 Son las personas que tienen el VIH, se toma un valor inicial de 40 en 1980. (12) infectan = riesgo de contagio*Infectados Son las personas que se han infectado del VIH (13) muerte de enfermos= Enfermos*riesgo de muerte (14) muertes:= GET XLS DATA( 'datos modelo 'Hoja1' , '5' , 'C12' ) Datos obtenidos de http://www.eustat.es
SIDA.xls'
,
(15) nacimientos:= GET XLS DATA( 'datos modelo SIDA.xls' , 'Hoja1' , '5' , 'C13' ) Datos obtenidos de http://www.eustat.es (16) prevencion inicial=1/3 Se considera que 1/3 de la población estaba exenta de riesgo por motivos de edad, culturales o religiosos antes de la realización de las campañas de prevención. (17) riesgo de contagio= (1-campañas de prevencion)*(1terapia combinada) Recoge los efectos de las campañas de prevención y de la terapia combinada. El riesgo disminuye en función del aumento de estas variables. (18) riesgo de desarrollo de enfermedad= (1-tratamiento)* (1-terapia combinada) Recoge los efectos de los tratamientos y las terapias. El riesgo disminuye en función del aumento de estas variables. (19) riesgo de muerte=(1-terapia combinada)*(1-tratamiento) Recoge los efectos del tratamiento y de la terapia combinada. El riesgo disminuye en función del aumento de estas variables. (20) Sanos= nacimientos-infectan-muertes Initial value = 2136100 El nº de personas en este nivel es el mayor que el de los otros dos niveles, y podemos considerar que su mortalidad es la de la población general, así como sus nacimientos.
126
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
(21) terapia combinada= RAMP(eficacia terapia,1995,2002) Es una variable que vale 0 antes de 1995, y hasta 2003 se incrementa en la magnitud de la eficacia del tratamiento. (22) tratamiento=RAMP(eficacia tratamiento,1990,1999) Es una variable que vale 0 antes de 1990, y hasta 1999 se incrementa en la magnitud de la eficacia del tratamiento.
Crear las pantallas indicadas, introducir las ecuaciones del modelo, y comprobar que los resultados coinciden.
La evolución de las principales magnitudes del modelo en relación a los datos históricos permite aventurar la hipótesis de que el modelo reproduce bien la realidad, aunque es posible que el número real de personas que han enfermado sea superior a las cifras oficiales. Puede usar el modelo para ver la evolución de la enfermedad en un horizonte de los próximos 20 años y analice las causas. También puede usar el modelo para analizar el impacto que habría tenido una vacuna en fechas diferentes, pero ejemplo en el año 1990 o en el 2000. Si tiene alguna dificultad para crear el modelo puede ayudarte de las indicaciones del apartado siguiente.
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
127
9.4. Instrucciones para la creación del modelo Abrir el Vensim PLE Plus y en File – New Model indicar Initial Time = 1980, Final Time = 2005, Time step= 1 y units for time = año o Year. Crear vistas Pulsar en la parte inferior izquierda de la pantalla en el botón View 1, y después en New. Repetir este proceso hasta disponer de 4 vistas. Puede moverse de una vista a otra pulsando las fechas laterales de avance y retroceso. Después pulsar la opción View – Rename y cambiar por orden los nombres de las vistas a: Portada, Diagrama, Entradas y salidas, y Sensibilidad. Ir a la vista Diagrama y reproducir el diagrama de flujos siguiente:
Añadir en la parte superior izquierda las variables datos oficiales de enferman, datos oficiales de enfermos y datos oficiales de muertes de enfermos. Escribir las ecuaciones según se detalla en el punto anterior. Ejecutar el modelo y ver que funciona con normalidad. Guardar el modelo con el nombre sida.mdl
128
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
Funciones de importación de datos Los datos de las variables nacimientos, muertes, datos oficiales de enferman, datos oficiales de enfermos y datos oficiales de muertes de enfermos se importan de una hoja de Excel. Para ello se utiliza la función GET XLS DATA que permite importar una serie de datos. Abrir la hoja de Excel datos modelo SIDA.xls y guardarla en el mismo directorio o carpeta donde está el fichero sida.mdl Los argumentos de esta función deben de estar escritos entre comillas simples ( „ ). El primero de ellos debe de indicar el nombre exacto del fichero de Excel, el segundo el nombre de la hoja donde están los datos, el tercer argumento indica en qué fila están las fechas, y el cuarto argumento indica el primero de los valores de la serie. GET XLS DATA( 'datos modelo SIDA.xls', 'Hoja1' , '5' , 'C12')
Comentarios e imágenes Ir a la vista Portada, pulsar el icono Com y añadir el texto “Modelo de simulación de la evolución del número de enfermos de SIDA en el País Vasco 1980-2005” Buscar una imagen relacionada con el SIDA y copiarla entera o una parte con el editor de imágenes que posea. Ir a la vista Portada situarse en la zona izquierda, pulsar el botón Com, la opción Metafile y OK. Aparecerá en la pantalla la imagen seleccionada.
Input Output Object En la vista Portada pulsar el icono Input Output Object, y crear un gráfico para las variables: datos oficiales de enferman, datos oficiales de enfermos y datos oficiales de muertes de enfermos.
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
129
Enlaces de navegación En la vista Portada crear enlaces a las otras tres vistas, para ello pulsar el icono Com, seleccionar Box, y en Comment indicar el texto que aparecerá dentro del botón (por ejemplo Resultados), después en la parte derecha escoger el nombre de la vista que debe de abrirse en este caso (por ejemplo Entradas y salidas).
Repetir este proceso en cada una de las vistas creando botones que permitan acceder desde ellas directamente a la Portada. Pulsar el icono del candado y compruebe que los enlaces de navegación funcionan correctamente. Gráficas a medida Pulsar el botón de Control Panel o ir a través de Windows – Control Panel, y seleccionar Graph – New. Crear cinco gráficas, con las respectivas variables: Enferman o Enferman o Datos oficiales de enferman Acciones o Campañas de prevención o Tratamiento o Terapias combinadas Riesgos o Riesgo de contagio o Riesgo de desarrollo de la enfermedad o Riesgo de muerte
130
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
Enfermos o Enfermos o Datos oficiales de enfermos Muertes o Muertes de enfermos o Datos oficiales de muerte de enfermos Ir a la vista Entradas y salidas, seleccionar el icono de Input Output Object y crear una gráfica con la opción Output Custom Graph para cada una de las cinco variables.
Crear cursores para las constantes Ir a la vista Entradas y salidas, seleccionar el icono de Input Output Object y pulsar en la parte superior. Crear botones con la opción de Input Slider para las variables eficacia campaña, eficacia tratamiento, eficacia terapia.
En todos los casos indicar como valor mínimo 0, valor máximo 0.4 y un incremento 0.01 Pulsar el icono del Symthesim (Authomatically simulate on change) y comprobar el funcionamiento de las graficas. Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
131
Análisis de sensibilidad Ir a la pantalla Sensibilidad y pulsar en el icono Start Sensitivity Analysis.
Seleccionar el parámetro factores de riesgo, con un valor mínimo 0 y máximo de 30, pulsar el botón de Add Editing y Finish. En la pantalla siguiente escoger la variable enferman. En la vista de Sensibilidad donde nos hallamos pulsar el icono de Input Output Object y crear una para la variable enferman escogiendo en la parte inferior la opción Sensitivity Graph Percentiles.
132
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
10. Validación de un modelo Una vez que se ha desarrollado el modelo es necesario corroborar su validez. Para ello, y ante todo, no debe perderse de vista que un modelo “ es simplemente un conjunto ordenado de suposiciones acerca de un sistema complejo. Es un intento de entender algunos aspectos de un mundo infinitamente variado, seleccionando de nuestras percepciones y experiencias pasadas un conjunto de observaciones aplicable al problema que tenemos a mano. El modelo que construimos será, como todos los demás, imperfecto, simplificado en exceso, e incompleto” (Meadows). Diversos autores se han planteado el problema de la validación, y entre ellos Sterman (2000) establece que, en rigor, la validación y verificación son imposibles. Válido significa fundamentado por la verdad objetiva, y si se relee la definición anterior se verá que, de hecho, todos los modelos son más o menos erróneos. Esta salvedad es necesaria ya que nuestra humana condición puede llevarnos a construir pruebas de validación orientadas a probar que el modelo es correcto, impidiéndonos ver sus errores o desviaciones, y erosionando su credibilidad. Lo aconsejable entonces es no aplicar sólo una prueba de validez, sino buscar múltiples puntos de contacto entre el modelo y la realidad, apelando a fuentes de datos variadas y a diversas pruebas. Un modelo de simulación nos permite abordar una cuestión puramente teórica, en cuyo caso su finalidad será probablemente académica, o una situación real, como parte de un trabajo de consultoría orientado a dar una respuesta concreta. En ambos casos, el primer paso debiera ser plantearnos nuevamente qué problema quisimos resolver o entender mediante su aplicación, ya que puede ocurrir que a lo largo del esfuerzo de elaboración, se pierda de vista el objetivo inicial. Supongamos que se ha desarrollado un modelo para simular la respuesta de un organismo a la ingestión de un tóxico, será fundamental entonces preguntarse si alguno de sus elementos permiten observar el patrón de comportamiento del organismo frente al tóxico, que es precisamente lo que quiero conocer. Si la respuesta a esa primera pregunta es afirmativa, estamos razonablemente seguros de que se cumple el propósito del modelo. Podemos ahora preguntarnos acerca de sus límites. Los límites determinan que variables son tratadas como internas y cuales como externas. Si los límites resultan demasiado estrechos, el modelo no capta las respuestas del sistema a la aplicación de diferentes acciones o políticas, con lo cual sus resultados pueden no ser satisfactorios. Finalmente, en esta etapa debemos analizar también si, dado el horizonte temporal elegido, el modelo incluye como internos a aquellos factores que varían significativamente a través del tiempo de simulación. Llegados a este punto cabe considerar la diferencia entre validación interna y externa (Judd). La validación interna, aplicada fundamentalmente a modelos teóricos como los usuales en economía, apunta a comprobar si la estructura del modelo refleja en forma correcta el desarrollo conceptual que le dio origen. Se verificará si los resultados no resultan absurdos desde el punto de vista de las leyes básicas de la economía, la física o la química, o en última instancia, del sentido común. En términos generales, lo que hacemos es controlar el funcionamiento de las estructuras físicas y de decisión del modelo. Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
133
El software Vensim incluye una herramienta útil para verificar el funcionamiento del modelo, el Reality Check. Un Reality Check no es una verificación de ajuste del modelo a la realidad, sino que es una verificación del comportamiento lógico del modelo. El Reality Check permite agregar estructuras que den respuestas a las expectativas previas que podemos efectuar mentalmente, sin cambiar la estructura causal ni modificar los valores o ecuaciones de cálculo. Las ecuaciones vinculadas a un Reality Chek están implementadas como una extensión del Vensim, pero los conocimientos y experiencia necesarios para escribirlas son diferentes de las que se requieren para construir el modelo. El desarrollo de la estructura de Reality Checks requiere plantearse previamente los límites que consideramos razonables o físicamente posibles de las variables del modelo, tales como “sin mano de obra no hay producción” o “temperaturas debajo de 5º C detienen la reacción biológica”. Esto es necesario porque la sintaxis de las ecuaciones del Reality Check y los resultados que se obtienen al ejecutar el programa no suelen ser evidentes ni fáciles de interpretar. Los Reality Cheks también nos permiten analizar la robustez del modelo, es decir, su respuesta ante situaciones extremas, o lo que es lo mismo, ante valores límites de sus variables. En muchos casos, de su aplicación pueden derivarse ciertos cambios en la estructura interna del modelo o en sus ecuaciones, que eviten la reproducción de resultados absurdos frente a situaciones límites. Así por ejemplo, mediante un Reality Chek podemos detectar que en algún momento el divisor en una ecuación se hace cero, provocando el colapso del software. En ese caso podemos apelar a las funciones XIDZ e ZIDZ que permiten evitar el problema. Por otra parte, la validación externa trata de verificar si el modelo realiza alguna aportación nueva a la visión general del problema. Siguiendo con el ejemplo del tóxico, es probable que al creador de un modelo no le interese tanto desarrollar un modelo que simule a la perfección los mecanismos internos de eliminación de un tóxico, como obtener una visión más amplia del comportamiento del individuo sometido a un ambiente tóxico, con todas las complejidades de la realidad que ello acarrea: la fuente de generación del tóxico, las medidas tomadas para evitar su acumulación en el ambiente, las horas de trabajo del individuo, etc. En rigor, el enfoque sistémico - cuyos principales elementos son los ciclos de retroalimentación - tiende a internalizar o a incorporar como parte del sistema en estudio a variables que otros modelos dejan como externas. Asume que muchos cambios estructurales tienen que ver con las retroalimentaciones dominantes, y al efectuar la validación le interesa conocer el comportamiento futuro en distintos escenarios. Por ejemplo, en el modelo de los tóxicos uno podría plantearse que ocurre si se efectúa una paulatina mejora en los sistemas de ventilación, o si se baja la temperatura de la habitación. La validación externa requiere la recopilación de datos históricos, experiencias de campo o de laboratorio, o referencias bibliográficas que pasan a integrar la documentación del modelo. A partir de ellos se pueden aplicar diversas técnicas, tales como la calibración, la simulación de alternativas o los análisis de sensibilidad. A modo de síntesis, se enuncian algunos cuestionamientos que cabe efectuarse en la validación:
134
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
Con relación a las variables ¿Se han incluido las variables pertinentes - y excluido las innecesarias -? ¿Se corresponden las variables con el mundo real? ¿Una determinada variable deber ser un flujo o un nivel? Los parámetros elegidos como constantes, ¿son realmente constantes? ¿son realmente variables las variables? ¿Hay consistencia dimensional? Los nombres de las variables, ¿son claros? Con relación a la estructura ¿Soporta el modelo condiciones extremas? (por ejemplo que un denominador pueda valer cero) ¿Aparecen elementos clásicos como el estado deseado, el estado real, la diferencia y la acción? Si se aplican funciones de tabla, ¿su calibración es adecuada a la realidad? ¿Las estructuras “físicas” del sistema se desarrollan adecuadamente? (por ejemplo los Niveles no pueden tomar valores negativos) ¿Hay retrasos de información? ¿Las estructuras de información son consistentes con la realidad? ¿El intervalo de tiempo utilizado en el cálculo es adecuado? Verificación del comportamiento. ¿Reproduce el modelo el comportamiento esperado? ¿Se inicia en un estado libre de tensiones, donde el estado real iguala al deseado? ¿Cuáles son las formas posibles de equilibrio bajo tensión? ¿Cuál es el origen del comportamiento irregular? Análisis dinámico: ¿cómo responde el modelo a diferentes “inputs”? (rampas, escalones, señales sinusoidales) Sensibilidad del modelo: ¿Cómo responde en su comportamiento ante diferentes escenarios? ¿Refleja el modelo adecuadamente la resistencia al cambio habitualmente encontrada en el mundo real? ¿Es capaz el modelo de producir patrones de comportamiento a futuro realistas en función de períodos e interrelaciones seleccionadas para la simulación? ¿Cómo se ajusta el modelo a los datos reales, con referencia a la aplicación de algún test estadístico? Respuesta a las políticas aplicadas ¿Qué estructuras deben agregarse para poder efectuar una prueba de reacción al cambio? ¿Estas estructuras representan políticas o planes de acción que pueden ser realmente implementados? ¿Qué comportamiento del sistema sería deseable mejorar? ¿Qué acciones o controles pueden mejorarlo? ¿El modelo es sensible a las políticas aplicadas? Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
135
10.1. Las ecuaciones de Reality Check Vamos a comprobar si el modelo se comporta de una determinada forma en el caso de que una de sus variables tome unos valores determinados, sin modificar para ello el modelo. Por ejemplo, podemos comprobar que el auto se detiene siempre si la cantidad de gasolina en el depósito es cero, sin simular este valor en el modelo. El Reality Check es un lenguaje para indicar las condiciones que se han de cumplir para que un modelo sea correcto, y también las herramientas para verificar automáticamente el grado de ese cumplimiento. Las ecuaciones que se añaden a un modelo en un Reality Check no están integradas en el modelo sino que están separadas de las ecuaciones normales del modelo y no interfieren con su funcionamiento normal. Es posible ver con un Reality Check en qué aspectos un modelo cumple o no las restricciones que impone la realidad. Aunque las ecuaciones de Reality Check se escriben de forma similar a las del modelo, los conocimientos y la experiencia requeridos son diferentes en ambos casos. Las primeras consisten en afirmaciones sobre la naturaleza del comportamiento en la realidad, y no requieren la creación de una estructura capaz de generar un comportamiento particular. Las ecuaciones de Reality Check recogen unas reglas de comportamiento del sistema, y luego verifican si la estructura del modelo ofrece como respuesta un comportamiento correcto. Las ecuaciones de Reality Check se escriben de la misma manera que las ecuaciones del modelo. Estructuralmente las ecuaciones de Reality Check no se utilizan en ninguna ecuación del modelo, pero usan variables del modelo en sus definiciones. Cuando se efectúa un análisis con el Reality Check, se pueden cambiar el valor de las variables del modelo tanto como las ecuaciones usadas para calcularlas. Sin embargo, las ecuaciones de Reality Check no recogen la estructura causal sino que validan el comportamiento “Si pasa esto, entonces debe ocurrir esto”, y el resultado de un Reality Check es “correcto” o “falso”. Los nombres apropiados para ecuaciones Reality Check son diferentes de aquellas para variables de modelo. Las variables de modelo tienen nombres con significado más o menos obvio – Mano de obra, productividad, capacidad, determinación, propensión al ahorro y similares. Las ecuaciones de Reality Check deben de ser frases que describen la naturaleza de la verificación: sin trabajadores no hay producción, sin lluvia no hay inundación. La mejor guía para definir nombres en Reality Check es pensar en ellas como verdaderas o falsas, y dar al Reality Check el nombre con el texto de la condición que debe cumplirse cuando es verdadera. Hay dos tipos de ecuaciones en un Reality Check: Test Inputs (Entradas de prueba) y Constraints (Restricciones). 136
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
Los Test Inputs son la manera de especificar condiciones bajo las cuales queremos probar las Constraints. Queremos probar la respuesta del modelo a estas condiciones extremas, sin modificar la estructura el modelo. Las Constraints son afirmaciones acerca de las consecuencias que podrían resultar de un determinado conjunto de condiciones. Cuando no se cumple una Constraint existe un problema en el modelo.
10.2. Test Inputs Los Tests Inputs o Entradas de Prueba permiten definir condiciones alternativas cambiando las ecuaciones para una variable en el modelo. Su forma básica es: nombre :TEST INPUT: variable = expresión donde nombre es el nombre del Test Input. Lo que aparece a la derecha de :TEST INPUT: tiene el mismo formato de ecuación que se usa para definir una Variable Auxiliar y sólo puede contener variables del modelo. No se pueden usar funciones dinámicas (tal como SMOOTH), funciones de definición (como ACTIVE INITIAL), ni usar Macros.
Los Test Inputs sólo se pueden usar en las Constraints (Restricciones).
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
137
Test Inputs temporales
Para crear Test Inputs temporales disponemos de una serie de funciones: RC DECAY, RC GROW, RC RAMP y RC STEP. Se usan cuando queremos ver el impacto de un cambio en una variable en un período de tiempo. Por ejemplo, se puede desear que la producción caiga en forma de rampa hacia 0 entre el periodo 10 y el 12, pero antes del periodo 10 queremos dejar la producción tal como era anteriormente. TI Producción a cero :TEST INPUT: producción = RC RAMP (producción,0,2,10) Este Test Input provocará que la producción disminuya de su valor en el periodo 10 hasta el valor 0 en el periodo 12, como se explicará más adelante. Todas las funciones RC tienen dos argumentos opcionales: el periodo de inicio y la duración. Si se omite la duración el Test Input continúa en estado de cambio hasta el final de la simulación. Si se especifica una duración, el Test Input continuará activo hasta el periodo especificado, y luego la variable vuelve a su valor normalmente calculado. Si el periodo inicial (10 en el ejemplo anterior) se omite, y el modelo contiene la constante RC START TIME, el cambio comienza en ese periodo. Si RC START TIME no está incluida en el modelo, el cambio empezará a INITIAL TIME + TIME STEP. Es conveniente usar RC START TIME porque permite cambiar globalmente el periodo de tiempo en el cual los cambios producen efecto y permite eliminar argumentos adicionales en las funciones RC. Tener Test Inputs que comienzan durante la simulación es útil porque evita la interferencia entre el comportamiento del modelo y su verificación, y permite ejecutar simulaciones de prueba con diferentes valores relativos para las variables.
10.3. Constraints Las Constraints o Restricciones son ecuaciones que tienen la forma: nombre :THE CONDITION: condición :IMPLIES: consecuencia Usan una condición y una consecuencia que son expresiones lógicas. Por ejemplo: sin capital no hay producción :THE CONDITION: Capital = 0 :IMPLIES: producción = 0 Aunque durante la simulación del modelo no se cumpla en ningún momento la condición analizada (Capital = 0), el Reality Check verifica cómo se comportaría 138
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
el modelo si se cumpliese alguna vez. Si en esta hipotética situación la consecuencia no se cumple, aparece un aviso del Reality Check. Las expresiones se construyen usando comparaciones =, >, <, and <> junto a :OR:, :AND: y :NOT:. Una expresión lógica podría ser: Población > 8E9 :AND: (disponibilidad de alimentos < .75 :OR: Polución > polución crítica) Aquí se comparan varias situaciones, y esta expresión será cierta si Población > 8E9 y también la disponibilidad de alimentos < .75 o Polución > polución crítica, o ambas. Las expresiones lógicas pueden ser difíciles de comprender y se recomienda no combinar demasiadas en una misma Condición. En el segmento consecuencias, es a menudo usual tener muchos puntos combinados con :AND: pero raramente son útiles ecuaciones más complicadas. La parte correspondiente a la condición de una Constraint está restringida a la comparación de variables con variables y variables con números. La única excepción es que se puede usar variable = expresión, o un Test Input con nombre como componente de una de las condiciones lógicas. Esto es: población y capacidad de carga :THE CONDITION : Población < Capacidad de carga * 1.1 :IMPLIES: muertes por sobrepoblación < 1000 es errónea porque toma la forma de variable < expresión: población y capacidad de carga :THE CONDITION : Población = Capacidad de carga * 1.1 :IMPLIES: muertes por sobrepoblación < 1000 usa variable = expresión y es una expresión correcta. Los Test Inputs se usan en la Condición de una Constraint, como en: nombre de la constraint :THE CONDITION : nombre del test imput :IMPLIES: muertes por sobrepoblación < 1000 donde nombre del test imput es un Test Input. Los Test Inputs son tratados como variables lógicas que toman el valor „cierto‟ si están activos, o „falso‟ si no lo están. En una Constraint sólo podemos a usar funciones simples (MIN, MAX, SUM, etc.).
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
139
10.4. Funciones del Reality Check Las funciones de Reality Check son: 1) para Test Imputs o Condiciones :THE CONDITION: RC DECAY(basis,decaytime[,start[,duration]]) RC GROW(basis,growrate[,start[,duration]]) RC RAMP(basis,mult,ramptime[,start[,duration]]) RC STEP(basis,mult[,start[,duration]])
2) para Consecuencias :IMPLIES:
RC DECAY CHECK(grace,basis,decaytime[,start[,duration]]) RC GROW CHECK(grace,basis,growrate[,start[,duration]]) RC RAMP CHECK(grace,basis,mult,ramptime[,start[,duration]]) RC STEP CHECK(grace,basis,mult[,start[,duration]]) Las funciones RC y RC … CHECK son muy similares. Cada función controla los valores que toma una variable durante un plazo de tiempo, y define para ella unos nuevos valores. Estas funciones permiten indicar el periodo de tiempo en el cual se desea que ocurra el cambio a la nueva trayectoria, o bien cuando se desea que comience el Test con la variable RC START TIME. Normalmente RC START TIME es un valor que se coloca próximo al inicio de la simulación. Si no se ha definido RC START TIME la trayectoria de la variable cambia en el periodo INITIAL TIME + TIME STEP. Las funciones RC emplean los siguientes argumentos. basis es el nombre de la variable indicado en la parte izquierda de la comparación, y es el valor sobre el que se realizará el cambio de la trayectoria, y se multriplicará por el mult cuando empiece el cambio de la trayectoria. grace es el plazo de tiempo de espera hasta que empiece a actuar la función RC...CHECK. Se usa si deseamos empezar la prueba después del INITIAL TIME o del RC START TIME. mult es el valor por el que será multiplicado basis hasta lograr el nuevo valor. En general es número como 0 o 2. 140
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
Resumen RC DECAY( basis, decaytime [,start[,duration]]) RC DECAY CHECK( grace, basis, decaytime [,start[,duration]]) Fuerza a la variable basis a un descenso exponencial hacia cero en un plazo de tiempo (decaytime). RC GROW(basis, growrate [,start[,duration]]) RC GROW CHECK(grace, basis, growrate [,start[,duration]]) Fuerza a la variable a un crecimiento exponencial a una determinada tasa (growrate). . RC RAMP(basis , mult , ramptime [,start[,duration]]) RC RAMP CHECK(grace, basis, mult, ramptime [,start[,duration]]) Fuerza a una variación de valor (basis*mult) durante un plazo (ramptime). Este cambio es más progresivo que una RC STEP y es útil para verificar los efectos de cambios lentos hacia un nuevo valor en la variable. RC STEP(basis, mult [,start[,duration]]) RC STEP CHECK(grace, basis, mult [,start[,duration]]) Fuerza a un cambio brusco en la trayectoria de la variable en RC START TIME. La estructura de la función es: var = RC STEP(var,0.5,10) Esto provoca un incremento del 50% en el valor de la variable en el periodo 10 y después permanece constante. La estructura de la funcion RC STEP CHECK es: Sin población no hay producción :THE CONDITION: población = RC STEP(población,0,20) :IMPLIES: producción <= RC STEP CHECK(1,producción,0,20) Esto hace caer la población a 0 en el periodo 20 y luego comprobará que la producción también cae a 0 en el periodo siguiente porque grace=1.
Pruebas dinámicas en las consecuencias Las ecuaciones Reality Check tienen Test Inputs con funciones del tipo RC y usan una función RC….CHECK en la consecuencia. Las funciones RC…CHECK funcionan de una manera similar a las funciones RC de los Test Inputs. Mientras que los Test Inputs cambian el valor de una variable. La Consecuencia de una Constraint hace una comparación del valor de la variable. Las funciones RC….CHECK tienen un argumento más que la correspondiente función RC. Este argumento es el período de espera (grace) y permite comprobar las consecuencias con un retraso después que se produce el Test Input. Por ejemplo: TI Producción a cero :TEST INPUT: producción = RC STEP(production,0) RC Sin producción no hay entregas Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
141
:THE CONDITION: TI Producción a cero :IMPLIES: ventas <= RC RAMP CHECK(5, ventas,0) El Test Input hace que producción caiga a cero a RC START TIME. Después de un plazo de espera de 5 periodos verifica si las ventas son iguales o menores a 0 multiplicado por el valor que tenían a RC START TIME.
Verificaciones pasivas de las Constraints Si efectúa la verificación pasiva de una Constraint, se evalúa ambas mitades de la ecuación como si fueran una expresión lógica. Si la consecuencia es falsa mientras la condición es verdadera, muestra un error. Siempre se verifica la conformidad pasiva de todas las Constraints que no son explícitamente activas.
Verificaciones activas de las Constraints Durante las verificaciones activas de las Constraints, se fuerza la parte condicional de una Constraint a ser verdadera, cambiando los valores de las variables o la estructura del modelo cuando sea necesario. - Si la condición es una igualdad o un Test Input, se agrega la ecuación a la ya existente en el modelo. El nuevo valor de la variable se utiliza entonces cada vez que esta se usa. - Si la condición es una desigualdad, se verifica primero si la desigualdad es verdadera. - Si es verdadera, el valor de la variable no cambia. - Si no es verdadera, se la hace verdadera asignando el valor tal como si fuera una condición de igualdad. Dado que forzó las condiciones para que fueran verdad, se verifica si las consecuencias también son verdaderas.
10.5. Reality Check Control Antes de comentar la mecánica de ejecutar un Reality Check, es necesario describir muy brevemente lo que ocurre dentro del modelo. Las ecuaciones de un Reality Check afectan a la estructura básica del modelo, y pueden poner de manifiesto la necesidad de hacer cambios en el mismo. A efectos de cumplir los cambios indicados en las ecuaciones de Reality Check, Vensim reestructura el modelo, agregando ecuaciones y modificando la secuencia en que las ecuaciones se ejecutan. Después de ejecutar las ecuaciones de Reality Check, Vensim retorna el modelo a su estructura original.
142
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
En algunos casos, la reestructuración y reordenamiento pueden dejar al modelo “deformado”. El más común de los problemas es que el modelo podría contener ecuaciones simultáneas y por lo tanto, no se pueda simular. Si este es el caso, aparece un aviso del problema y no se ejecuta la simulación. Debido a la naturaleza vinculada al comportamiento de las ecuaciones Reality Check, la existencia de ecuaciones simultáneas no representa necesariamente un problema conceptual, pero impide la simulación. - Cuando se pulse en el icono Reality Check
, aparece el menú:
Test type permite especificar que tipo de Reality Check se desea ejecutar. Si está en blanco se verifican todos los tipos. Este campo sólo se tiene en cuenta cuando se usa el botón Test All. Si las Constraints no tienen una prioridad especificada, son tratadas con la máxima prioridad. Para mostrar un gráfico de una variable que está siendo verificada en las Consecuencias junto al comportamiento de esa variable debe cumplir, se usa Show Graphs. Always, si está marcada, genera un gráfico para cada Constraint verificada. Never, si está marcada, suprime la salida de un gráfico. Sim/Fail, si está marcada, produce la aparición de un gráfico siempre que falla una Reality Check, y también cuando se hace una simulación simple usando Sim Active o los botones Highlighted .On Fail, si está marcada, hace que el gráfico solo aparezca si Reality Check falla. Cuando se usa el botón Test All es lo mismo que Sim/Fail. Los botones Sim Active y Highlighted suprimen el gráfico a menos que realmente se produzca un error. Constraints es una lista de las Constraints que se han definido. Pulsando en una de ellas resaltara los correspondientes Test Inputs. Se puede entonces activar uno o más de estos Test Inputs. Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
143
Available Test Inputs es una lista de los Test Inputs disponibles. Esta lista incluye todo lo que se ha definido como Test Input, y todos los componentes condicionales de las ecuaciones Constraint. >> mueve los items resaltados en la lista de Test Inputs a la lista Active Test Inputs . << borra los items resaltados en la lista Active Test Inputs. Pulsar en un elemento de la lista lo resalta. Contrapulsar cambia el estado agregando o borrando la selección de elementos resaltados. Pulsar dos veces mueve el elemento a la lista Test Inputs . Active Test Inputs muestra una lista de los Test Inputs que están activos. Se usan si se pulsa el botón Simulate. Pulsar en un elemento lo resalta, y desmarca cualquier otro elemento resaltado. Contrapulsar cambia el estado de un elemento resaltado. Pulsar dos veces borra un elemento de la lista. Clear All Active borra todos los elementos de la lista Active Test Inputs. Sim Active simula el modelo usando los Test Inputs activos en la lista. Todas las otras Constraints se verifican pasivamente. Si la simulación se completa bien, los resultados se guardan como una simulación normal, y pueden ser revisados con las herramientas de trabajo. Se debe ser cuidadoso en observar que el seguimiento de causas no siempre da los resultados esperados dado que la estructura del modelo ha sido modificada durante la simulación. Highlighted simula el modelo usando el elemento que está resaltado en la lista de Constraints Debido a la estructura lógica de la parte condicional de una Constraint, esta realmente requiere más que una simulación. La simulación se guardará igual que la simulación normal. Test All verifica todas las Constraints en el modelo a un tiempo formando la colección de Test Inputs necesaria para activar cada Constraint. Debido a la estructura lógica de la parte condicional de una ecuación Constraint, puede tomar más de una simulación verificar una Constraint. Esta verificación puede consumir tiempo; los errores se muestran en una ventana separada. Ejecutar Test All no almacena ninguna simulación, simplemente muestra los resultados de Reality Check. Close cierra el diálogo Reality Check Control.
Resultados de un Reality Check Los resultados de un Reality Check se muestran en una ventana que indica qué condiciones se han comprobado y si no se cumplió alguna Constraint. Se abre una nueva ventana cada vez que se pulsa en Sim Active, Highlighted o Test All. A continuación vemos un ejemplo. Estos gráficos tienen por objeto mostrar el segmento de consecuencias de una Constraint:
144
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
Aquí la línea (1) muestra lo que hacen los envios (la condición) y la línea (2) muestra a que está siendo comparado (la consecuencia).
Revisar los resultados de una simulación Cada vez que se pulsa en Sim Active o Highlighted se efectúa una nueva simulación. Esta simulación recibe el nombre que se indica en el recuadro Runname. Mientras está abierto el Reality Check Control se pueden consultar los resultados de una simulación tal como se haría con cualquier otra simulación. Se puede entonces hacer otra simulación y revisar estos resultados. Si se desea comparar dos simulaciones Reality Check, se puede cerrar el Reality Check Control y luego comenzar de nuevo poniendo un nombre diferente en el recuadro Runname.
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
145
10.6. Caso. Crecimiento de la levadura
Una de las levaduras más comunes pertenece al género Saccharomyces, que significa “hongo del azúcar”. Dichos microorganismos son seres unicelulares, que esán más cerca en la escala evolutiva de los vertebrados que de las bacterias, por lo que tienen un metabolismo complejo capaz de generar toda una serie de productos. Dentro del género Saccharomyces (que engloba más de 20 especies), solo la S. Cerevisiae y la S. Bayanus, son importantes en la fermentación. El crecimiento de la levadura está condicionado por un número de factores (sustancias nutritivas, factores de crecimiento) y condicionantes físico-químicos (temperatura, pH, aireación). Así, llamamos "factor limitativo" a aquel cuya ausencia o modificación acarrea la detención del crecimiento. Evitando la ausencia de estos factores conseguiremos que crezca. Si colocamos algunas levaduras en un medio de cultivo (en nuestro caso la solución de agua y azúcar), estas se multiplicaran hasta agotar del factor limitativo (por ejemplo hasta que se acabe el azúcar) o hasta el momento en que un factor limitativo alcanza un valor critico (por ejemplo demasiado alcohol). El crecimiento de la levadura y la fermentación están íntimamente ligados. La fermentación es el proceso de transformación de azúcar en alcohol por una levadura. Si trazásemos curvas de la multiplicación de la levadura en función del azúcar fermentado, veríamos que ambas son siempre ascendentes, o dicho de otra manera, el azúcar se transforma en alcohol a medida que las levaduras se multiplican. Por lo tanto la fermentación será más rápida, cuando las levaduras se reproducen con rapidez.. Tenemos un sistema formado por 100 células de levadura que se reproducen por división a un ritmo de 10 células/minuto, durante 60 minutos. La temperatura es de 85 ºF.
Construiremos el modelo prueba1.mdl
146
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
con estas ecuaciones: Cantidad de levadura= +divisiones Initial value: 100 divisiones= 10 temperatura= 85 INITIAL TIME=0 FINAL TIME=60 Units for time=minuto
TIME STEP=1
Ejecutamos el modelo y observamos que la levadura pasa de 100 a 700 células en los 60 minutos.
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
147
Nos indican que la división celular se detiene si la temperatura baja de los 50ºF, y hemos de comprobar si la estructura actual del modelo cumple ese requisito. Para hacer esta comprobación añadimos en la parte inferior de la página unas shadow variables (para no confundir el modelo con la verificación) y el elemento “frio adormece”. Además ponemos de color rojo este elemento para indicar claramente que es una prueba con Reality Check.
Deseamos comprobar si es cierto en el modelo que cuando la temperatura baja de 50ºF las divisiones se detienen. Abrimos la Constraint frio adormece con el icono Y=X2, y la definimos como Type= Reality Check – Constraint. En :THE CONDITION: ponemos temperatura < 50 que es la hipótesis que deseamos comprobar, y en IMPLIES: indicar divisiones = 0 que es el resultado que debe producirse.
148
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
- Pulsar el botón de Run Reality Check de Test All.
y en la ventana que se abre pulsar el botón
Recibimos como respuesta el mensaje siguiente que nos indica que esa Constraint no se cumple nunca.
Es decir que el modelo no cumple la norma de detener la división celular cuando la temperatura baja de 50ºF. Podríamos haber llegado a esta misma conclusión colocando el valor de la variable temperatura en 40ºF y observando como la división no se detiene, pero NO deseamos modificar el modelo, sino a llegar a esta conclusión sin modificar el modelo. Podemos cambiar ahora las reglas, preguntando si cuando la temperatura es mayor de 50ºF las divisiones son mayores de 0. Para hacerlo en :THE CONDITION: ponemos temperatura > 50 que es la hipótesis que deseamos comprobar, y en :IMPLIES: Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
149
indicamos divisiones > 0 que es el resultado que debe producirse. Al hacer el Control Check la respuesta es que SI que se cumple esa Constraint. --------------------------Starting testing of Constraint- frio adormece Test inputs : temperatura>50 . . . testing - frio adormece --------------------------***************** 1 successes and 0 failures testing 1 Reality Check equations The Reality Check Index as run is 0.0714286 Closeness score is 100.0% on 1 measurements -------------------------Vamos a modificar la ecuación de forma que valide si la condición temperatura<50 fuerza a que las divisiones=0 a partir del periodo 15, y para ello modificamos la ecuación como se indica en la imagen siguiente.
En :IMPLIES: tenemos grace= 0, basis=divisiones, mult=0, start=15. Al pulsar el icono de Run Reality Check, y después el botón de Test All, obtenemos una respuesta que nos indica que la Constraint “frio adormece” se ha comprobado a partir del periodo 15, y que en ese instante (y posteriores) no se cumple la condición. -------------Starting testing of Constraint- frio adormece Test inputs : temperatura<50 . . . testing - frio adormece The constraint -frio adormece- violated at time 15 -------------Obtenemos la gráfica de la página siguiente que también nos lo ilustra. Guardar el modelo como prueba2.mdl antes de continuar. 150
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
Ahora simularemos que la temperatura desciende de 85ºF a 0ªF a partir del periodo 10, utilizando un Test Imput, y veremos los resultados. Modificaremos el diagrama de flujos añadiendo una variable de Test Imput con el nombre de temperatura test (indicando Type = Reality Check - Test Imput) y modificaremos las ecuaciones del Reality Check:
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
151
basis, mult, ramp time, start temperatura test :TEST INPUT:temperatura=RC RAMP (temperatura,0,2,10) frio adormece :THE CONDITION:temperatura test :IMPLIES:divisiones=0
como en prueba1.mdl
El cambio hipotético de la temperatura, que pasa de 85º a 0º entre los periodos 10 y 10+2=12 no provoca en el modelo que las divisiones sean 0, y obtenemos el mismo mensaje: ------Starting testing of Constraint- frio adormece Test inputs : temperatura test<50 . . . testing - frio adormece The constraint -frio adormece- violated at time 0 -------------Es decir que no importa lo que hagamos a la temperatura, porque las divisiones celulares no se ven afectadas. Para conseguir cumplir esta condición deberemos de vincular causalmente a la división celular con la temperatura. Guardar el modelo como prueba3.mdl antes de continuar.
152
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
Modelo Levadura 0 Se desea construir un nuevo modelo del crecimiento de la levadura para un plazo de tiempo de 300 minutos. Disponemos de 100 células de levadura en 100 ml. de agua y con 100 gramos de azúcar, tenemos una tasa de división de las células de 0.08 al minuto y una vida promedio de las células de 250 minutos. Todo está a una temperatura de 85 ºF. La primera versión del modelo es la siguiente:
Siendo los parámetros de tiempo: INITIAL TIME = 0 FINAL TIME =300 TIME STEP =1 Units for time = minuto Ecuaciones levadura 0.mdl Cantidad de levadura= divisiones-muertes, Inicial value = 100 Units: celulas divisiones= Cantidad de levadura * tasa de división Units: celulas/minuto muertes= Cantidad de levadura/vida promedio Units: celulas/minuto tasa de división= 0.08 Units: 1/minuto vida promedio= 250 Units: minuto
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
153
- Guardar el modelo levadura 0.mdl y ejecutarlo. Los resultados que se obtienen muestran un crecimiento exponencial sin límite de la Cantidad de levadura, que es consecuencia del predominio del ciclo positivo (divisiones – cantidad de levadura – divisiones).
Expresiones lógicas
Para incluir en las formulas las variables pulsar en el botón Variables, y para entrar las expresiones lógicas del tipo “<= “ o bien “ :AND:” pulsar en el botón More situado a la derecha del botón Functions.
154
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
Modelo levadura 1. Añadir el Reality Check Las seis reglas que se desea verificar con esta versión del modelo son: REGLA 1.- Si la temperatura baja de 50 grados, el crecimiento de la levadura se detiene y queda latente. REGLA 2- Si la temperatura supera los 100 grados la levadura muere. REGLA 3.- Si no hay azúcar y las levaduras no están latentes, mueren. REGLA 4.- Si no hay agua y las levaduras no están latentes, mueren. REGLA 5.- Si la levadura continúa creciendo, consumirá todo el azúcar. REGLA 6.- Si la levadura continua creciendo, consumirá toda el agua.
Vamos a construir ahora una segunda versión del modelo, el levadura 1.mdl, que incluya su validación con Reality Check. Ha de incorporar estas nuevas ecuaciones:
agua=100 Units: ml azúcar=100 Units: gramos temperatura= 85 Units: º F
Para introducir las condiciones del Reality Check abriremos una segunda ventana en el modelo. Ir al extremo inferior izquierdo, pulsar sobre el botón View 1, y cuando se abra el menú pulsar en **New**, lo que crea una segunda ventana. Colocarse en la View 2 y reproducir el diagrama siguiente:
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
155
No hay reglas fijas para estructura los diagramas de Reality Check. Es útil hacer una columna para las variables normales, otra para los Test Inputs y otra para las Constraints. Puede ser útil también usar un código de colores (por ejemplo azul para Test Inputs y rojo por Constraints). Las flechas pueden quedar un poco mezcladas de esta forma, pero no es un gran problema.
REGLA 1.- Si la temperatura baja de 50 grados, el crecimiento de la levadura se detiene y queda latente. Para ello pulsar sobre frío adormece, defínir la variable del tipo Reality Check Constraint y entrar la expresión: frio adormece :THE CONDITION: temperatura<50 :IMPLIES: divisiones = 0 tal y como se indica en la imagen siguiente. 156
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
Con esta ecuación comprobaremos si cuando la temperatura desciende de 50ºF (que es la condición) se cumple que la división de células de levadura se detiene (consecuencia). REGLA 2.- Si la temperatura supera los 100 grados la levadura muere. Hacemos la prueba de que la temperatura sea de 120 grados a partir del periodo 1. calor es mortal :THE CONDITION: temperatura = RC STEP(120,1) :IMPLIES: Cantidad de levadura <= RC DECAY CHECK(1,Cantidad de levadura,5) Para calor 120º y luego se usa levadura. Para comportamiento de totalmente.
es mortal hemos provocado un aumento en la temperatura a una función RC DECAY CHECK para verificar la Cantidad de este modelo es adecuada una función DECAY para ver el Cantidad de levadura ya que deseamos ver si desaparece
REGLA 3.- Si no hay azúcar y las levaduras no están latentes, mueren. La levadura queda latente si la temperatura baja de 50º según la Regla 1, y por ello la vamos a situar en la condición a más de 65º, ya que así no están latentes. En la consecuencia verificamos la condición de que sin azúcar la Cantidad de levadura cae a cero en un plazo de 15 minutos.
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
157
come o muere :THE CONDITION: azúcar=RC STEP(azúcar,0):AND:temperatura>65 :IMPLIES: Cantidad de levadura<=RC DECAY CHECK(1,Cantidad de levadura,15)
REGLA 4. - Si no hay agua y las levaduras no están latentes, mueren. Muy similar a la anterior pero ahora referida al agua en vez de al azúcar. Bebe o muere :THE CONDITION: Agua = RC STEP(Agua,0) :AND: temperatura > 65 :IMPLIES: Cantidad de levadura <= RC DECAY CHECK(1,Cantidad de levadura,1)
158
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
REGLA 5.- Si la levadura continúa creciendo, consumirá todo el azúcar. Creamos en una etapa intermedia un Test Imput, antes de escribir la ecuación de la Constraint. El Test Input se crea indicando Type= Reality Check - Test Input. gran crecimiento :TEST INPUT: divisiones = 1e+022
hambre por crecimiento :THE CONDITION: gran crecimiento :IMPLIES :azúcar <= RC DECAY CHECK TIME)
(1,azúcar,0.5,INITIAL
REGLA 6. - Si la levadura continua creciendo, consumirá toda el agua. sed por crecimiento :THE CONDITION: gran crecimiento :IMPLIES: Agua <= RC DECAY CHECK(1,Agua,0.5,INITIAL TIME) Observar que para las dos últimas Constraints la función RC DECAY CHECK usa el INITIAL TIME, ya que el Test Input comienza desde el inicio de la simulación. Si el Test Input hubiera usado una función RC STEP para comenzar durante la simulación, el argumento INITIAL TIME puede quitarse en los dos últimos RC DECAY CHECK. Finalmente añadiremos en el modelo la variable: RC START TIME = 10 El periodo de tiempo es arbitrario. Podría ocurrir que comenzando temprano hubiera unas pocas levaduras y cantidades de azúcar, mientras que empezando más tarde habría más levaduras y menos azúcar. En resumen, las ecuaciones del Reality Check son: RC START TIME= 10 Units: minuto Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
159
bebe o muere :THE CONDITION: agua= RC STEP(agua,0) :AND: temperatura>65 :IMPLIES:Cantidad de levadura<=RC DECAY CHECK (1,Cantidad de levadura,1) calor es mortal :THE CONDITION:temperatura=RC STEP (120,1) :IMPLIES:Cantidad de levadura<= RC DECAY CHECK (1,Cantidad de levadura,5) come o muere :THE CONDITION:azúcar= RC STEP (azúcar,0) :AND:temperatura>65 :IMPLIES:Cantidad de levadura <=RC DECAY CHECK(1,Cantidad de levadura,15) frio adormece :THE CONDITION: temperatura <50 :IMPLIES: divisiones=0 gran crecimiento :TEST INPUT: divisiones=1e+022 hambre por crecimiento :THE CONDITION: gran crecimiento :IMPLIES:azúcar<=RC DECAY CHECK(1,azúcar, 0.5, INITIAL TIME) sed por crecimiento :THE CONDITION:gran crecimiento :IMPLIES: agua <=RC DECAY CHECK(1,agua,0.5,INITIAL TIME) En este modelo no estamos hacienda uso de azúcar, agua o temperatura, los cuales se definen como constantes. Pulsar en el botón Reality Check.
160
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
En el diálogo Reality Check Control se muestra una lista de las Constraints del modelo. Debajo está la lista de Test Inputs. Uno, gran crecimiento, se creó explícitamente, mientras los otros se derivan de las diferentes Constraints. Pulsar el botón Test All. Comienza una serie de simulaciones y se muestra la lista de las condiciones que no se cumplen:
El informe resumido es: Starting testing of Constraint- bebe o muere The constraint -bebe o muere- violated at time 11 Starting testing of Constraint- calor es mortal The constraint -calor es mortal- violated at time 11 Starting testing of Constraint- come o muere The constraint -come o muere- violated at time 11 Starting testing of Constraint- frio adormece The constraint -frio adormece- violated at time 0 Starting testing of Constraint- hambre por crecimiento The constraint -hambre por crecimiento- violated at time 1 Starting testing of Constraint- sed por crecimiento The constraint -sed por crecimiento- violated at time 1 No se cumple ninguna de las Constraints. No es una gran sorpresa ya que el modelo sólo representa un mecanismo básico de crecimiento y no se ha incluido ningún
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
161
mecanismo de limitación del crecimiento, que son los aspectos que verificamos con las Constraints. Las tres primeras Constraints no se cumplen en el periodo 11 (RC START TIME=10 + grace=1), la cuarta Constrain no se cumple en el periodo 0 porque no se usa ninguna función RC, y las dos últimas Constrains no se cumplen en el periodo INITIAL TIME +1. Además de la ventana de Constrain checking se abren 6 gráficos tales como:
frio adormece 40 B
30 B
20 B
10 B
0 0
30
"divisiones"=
60
90
120 150 180 Time (Minute)
210
240
270
300
0
La línea superior creciente muestra la evolución de las divisiones, mientras que la línea sobre el valor 0 muestra la consecuencia que deseamos verificar. La ventana del resumen finaliza así: 0 successes and 6 failures testing 6 Reality Check equations The Reality Check Index as run is 0 Closeness score is 0.0% on 6 measurements La primera línea es un resumen estadístico que indica el número de las Constraints que se cumplen y las que no. La segunda línea muestra el Reality Check Index. Este se define como el número de éxitos dividido por el producto del número de variables del Reality Check del modelo por el total de variables en el modelo. Dado que por cada par de variables hay un potencial de una o más ecuaciones Reality Check, este índice es algo que debería estar siempre presente para validar un modelo. La tercera línea indica el grado de robustez del Reality Check, aunque en realidad se trata de un promedio de dicha robustez. Si se cumple un Reality Check, este valor es 1. 162
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
Si falla, es 1 menos el promedio del error absoluto promedio dividido por la desviación de la variable que está siendo verificada. Este indicador es una medida del grado en que son violadas las Condiciones.
Modelo levadura 2. Incluir la influencia de la temperatura Dos condiciones relacionan la temperatura al crecimiento. Si la temperatura es baja toda la levadura pasa a estado de latencia. Si la temperatura es alta la levadura muere. Se reemplazan las ecuaciones para divisiones y muerte con este propósito, y se crea levadura 2.mdl
Es posible que las condiciones no se cumplan porque las levaduras no se mueren lo suficientemente rápido cuando la temperatura se incrementa. En este caso, se puede reestructurar el modelo para que logre cumplir la Constraint, o suavizar levemente la condición, dependiendo de lo que sea más realista.
Nuevas Ecuaciones del modelo tabla de división y temperatura (0,0),(0.8,0),(1,1),(2,1) Units: Dmnl tabla de vida y temperatura (0,1),(1,1),(1.25,0.02),(2,0.001) Units: Dmnl Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
163
tasa de división=tasa de división normal*tabla de división y temperatura(temperatura/temperatura normal) Units: 1/minuto tasa de división normal= 0.08 Units: 1/minuto temperatura= 85 Units: º F temperatura normal= 80 Units: º F vida normal= 250 Units: minuto vida promedio = vida normal*tabla (temperatura /temperatura normal) Units: minuto
de
vida
y
temperatura
Ahora al verificar las Constraints se observará que se cumple frío adormece. Al ejecutar el Reality Ckeck obtenemos en resumen los mensajes: Starting testing of Constraint- bebe o muere The constraint -bebe o muere- violated at time 11 Starting testing of Constraint- calor es mortal The constraint -calor es mortal- violated at time 11 Starting testing of Constraint- come o muere The constraint -come o muere- violated at time 11 Starting testing of Constraint- hambre por crecimiento The constraint -hambre por crecimiento- violated at time 1 Starting testing of Constraint- sed por crecimiento The constraint -sed por crecimiento- violated at time 1 ***************** 1 successes and 5 failures testing 6 Reality Check equations The Reality Check Index as run is 0.0104167 Closeness score is 16.7% on 6 measurements
164
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
Modelo levadura 3. Incluir la Influencia del agua y el azúcar en las divisiones El agua y el azúcar son necesarios para sobrevivir. Se incluye en el modelo el impacto de falta de agua y azúcar tanto en la tasa de división como la vida promedio de las levaduras. El nuevo modelo tiene este esquema:
El Test Input elegido (divisiones=1e+022) causa problemas para calcular la cantidad de agua y azúcar, para evitar esto se modifica la ecuación para muertes. muertes = MIN(Cantidad de levadura/TIME STEP, Cantidad de levadura /vida promedio) Esta fórmula evita esos problemas pero puede provocar que la Cantidad de levadura sea cero. Esto obliga a modificar las ecuaciones de Azúcar promedio y Agua promedio: Azúcar promedio = ZIDZ(Azúcar, Cantidad de levadura) Agua promedio = ZIDZ(Agua, Cantidad de levadura) Las nuevas ecuaciones del modelo son: agua normal= 0.001 Units: ml/celulas Es la cantidad normal de agua por celula. Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
165
agua promedio= ZIDZ(agua,Cantidad de levadura) Units: ml/celulas Es la cantidad promedio de agua. Se usa ZIDZ para evitar el colapso del modelo si tenemos 0 células en algún período. azúcar normal=0.001 Units: gramos/celulas Es la cantidad normal de azucar azucar promedio=ZIDZ(azúcar,Cantidad de levadura) Units: gramos/celulas Es la cantidad de azucar promedio. Se usa ZIDZ para evitar el colapso del modelo cuando la Cantidad de levaduras sea 0. muertes=MIN(Cantidad de levadura/TIME STEP,Cantidad de levadura/vida promedio) Units: celulas/minuto Usamos MIN para evitar resultados poco razonables en condiciones extremas. tabla de división y temperatura (0,0),(0.8,0),(1,1),(2,1) Units: Dmnl tabla de divisiones y agua (0,0),(1,1) Units: Dmnl tabla de divisiones y azúcar (0,0),(1,1) Units: Dmnl tabla de vida y agua (0,0.001),(1,1) Units: Dmnl tabla de vida y azúcar (0,0.001),(1,1) Units: Dmnl tasa de división=tasa de división normal*tabla de división y temperatura(temperatura/temperatura normal)*tabla de divisiones y azúcar(azucar promedio/azúcar normal)*tabla de divisiones y agua( agua promedio/agua normal) Units: 1/minuto La tasa a la cual se dividen las levaduras. vida promedio=vida normal*tabla de vida y temperatura (temperatura/temperatura normal)*tabla de vida y agua (agua promedio/agua normal)*tabla de vida y azúcar(azucar promedio /azúcar normal) Units: minuto
166
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
Con la estructura modificada, el modelo supera con éxito cuatro de las seis Condiciones. Obtenemos este mensaje: Starting testing of Constraint- hambre por crecimiento The constraint -hambre por crecimiento- violated at time 1 Starting testing of Constraint- sed por crecimiento The constraint -sed por crecimiento- violated at time 1 ***************** 4 successes and 2 failures testing 6 Reality Check equations The Reality Check Index as run is 0.025 Closeness score is 66.7% on 6 measurements
Modelo levadura 4. Incluir agua y azúcar función de las divisiones Aún no se logró ajustar el modelo a las dos últimas Condiciones. El problema es que no hemos hecho la conexión entre lo que las levaduras están creciendo y cuanta agua y azúcar hay. La manera más simple de hacerlo es considerar el proceso de división como un consumidor de recursos de agua y azúcar. Pulsar con el botón derecho sobre las variables agua y azúcar y marcar Box para que dibuje una caja alrededor de cada variable ya que las vamos a usar como Niveles. Cuando escribamos sus ecuaciones hemos de indicar Type = Level.
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
167
Modificar las siguientes ecuaciones y guardar el modelo como levadura 4: agua= -consumo de agua Initial value: 100 Units: ml Es la cantidad de agua en el recipiente azúcar= -consumo de azúcar Initial value: 100 Units: gramos agua por división= 0.001 Units: ml/celulas azúcar por división= 0.001 Units: gramos/celulas consumo de agua=divisiones*agua por división Units: ml/minuto consumo de azúcar= divisiones*azúcar por división Units: gramos/minuto Al pulsar el Reality Check no se informa de ningún incumplimiento. Aunque no sea el propósito del ejercicio, consultamos la evolución de la Cantidad de Levadura.
168
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
Este modelo ya cumple todas las condiciones que se definieron. Pero, ¿es un buen modelo? En este caso la respuesta probablemente es “no todavía”. Para una representación detallada y segura del crecimiento de las levaduras necesitaríamos algunos datos experimentales, y calibrar el modelo para los efectos de la temperatura y la falta de recursos (agua y azúcar). No obstante este modelo no viola las Reality Check mas básicas que nos dicen los expertos en el tema.
Conclusiones El uso de Reality Check sirve a dos propósitos. Primero, es un registro escrito de aspectos que asumimos deben ser verdaderos para que el modelo tenga sentido. Estos aspectos quedan normalmente sin documentar aún cuando debieran ser el producto más importante del ejercicio de modelado. Cuestiones muy simples, como la noción de que si la levadura se mantiene en crecimiento podría quedarse sin agua, son muy importantes para entender el sistema. Otro propósito importante acerca de este ejemplo es que ilustra una manera de construir modelos de manera eficiente y eficaz. Se comienza desde un esquema básico y luego se agrega la estructura necesaria para cumplir las restricciones. Esto proporciona un rigor desde el principio del proceso de creación del modelo que puede incrementar ampliamente tanto la velocidad como la calidad del trabajo.
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
169
10.7. Ejercicios prácticos Ejercicio del joven ambicioso (*) Abra el modelo y añada un Reality Check para validar si cumple la legislación en el aspecto de que a partir de los 35 años no es posible trabajar más de 3.000 horas al año. No hay una única solución correcta a la petición pero de forma orientativa el objetivo es lograr obtener el siguiente mensaje y la gráfica: Starting testing of Constraint- horas de trabajo legales Test inputs : salario>0 . . . testing - horas de trabajo legales The constraint -horas de trabajo legales- violated at time 41 The constraint -horas de trabajo legales- not violated at time 60 --------------
La solución al ejercicio se halla en el CD (*) Libro “Teoría y ejercicios Prácticos de Dinámica de Sistemas” ISBN 84-607-9304-4 Cap 5.19 170
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
Ejercicio de la Reserva Natural de Kaibab (*)
Abrir el modelo e introducir un Reality Check para validar que una política de no aumentar la cantidad de pumas por encima de los 500 individuos iniciales garantiza llegar en 1950 a duplicar la población de ciervos existente en 1930.
La solución al ejercicio se halla en el CD (*) Libro “Teoría y ejercicios Prácticos de Dinámica de Sistemas” ISBN 84-607-9304-4 Capitulo 5.2 Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
171
Ejercicio. Modelo del Depósito (*)
Abrir el modelo e introducir un Reality Check para validar que el contenido del depósito es estable, a través de la comprobación que la entrada y la salida se hallan vinculadas de forma que un incremento del caudal de entrada se traduce en un incremento del caudal de salida de la misma magnitud. En concreto se propone ver la respuesta del sistema a un incremento progresivo del 100% en el caudal de entrada a partir del periodo 20.
La solución al ejercicio se halla en el CD (*) Libro “Teoría y ejercicios Prácticos de Dinámica de Sistemas” ISBN 84-607-9304-4 Cap. 5.23
172
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
ANEXO. FUNCIONES, TABLAS Y RETRASOS FUNCIONES
Una funcion FUNCION(#,A,B,C,... ) muestra la relación que existe entre los elementos. Así la función Y= 2 X nos indica que Y tomará siempre un valor doble del que tome X, sin ninguna otra restricción. Ejemplo: Cada silla cuesta 100 €, quiero saber el coste de comprar 1,2,3,4... sillas. La fórmula sería: Coste Total = Coste de cada silla x Número de Sillas o bien Coste Total = 100 x Número de Sillas El software Vensim® utiliza puntos “.” para señalar decimales y “,” para separar elementos de una formula. Existe más infomacion pulsando F1 (Search Index for a topic)
ABS(A) Calcula el valor absoluto de A. El valor absoluto (positivo) de la cifra. ABS(5.00) es igual a 5.00 y ABS (-5.00) es igual a 5.00. Actua como la función IF THEN ELSE (X < 0, - X, X), de forma que si X es negativo lo combia de signo, y por ello el resultado es siempre positivo. Ejemplo: En la puerta de una fábrica hay instalado un sensor que cuenta las personas que pasan por la puerta, de forma que cuenta +1 si la persona entra y –1 si la persona sale. Queremos saber el total de personas que pasan por la puerta con independencia de si salen o entran. Una posible forma de hacerlo es: Total = Entradas – Salidas o bien Total = Entradas + ABS(Salidas)
EXP(X) Calcula e (2.718...) elevado a X . Ejemplo: Se utiliza esta expresión en algunos modelos de sistemas . Por ejemplos e 2 es igual a 7,3875
IF THEN ELSE(cond,X,Y) El resultado es X si se cumple la condicion, si no se cumple el resultado es Y. Ejemplo: Cuando los Pedidos mensuales sean mayores de 100 quiero que el precio a aplicar en la factura mensual sea 30, y si no lo son quiero que el precio aplicado sea 50. Precio = IF THEN ELSE (Pedidos>100, 30, 50) Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
173
INTEGER DE X Da como resultado la parte entera del valor X si tiene decimales. Ejemplo: Un cajero automático solo puede entregar billetes de 1 euro como mínino. Si el cliente teclea que desea recibir una cantidad fraccionaria (5.5), el programa del cajero automático elimina los decimales, y seria Importe entregado=INTEGER(5.5) Y el resultado del importe entregado serían 5.0 (recordar que “.” indica decimal) LN(X) Calcula el logaritmo natural de X. Ejemplo: En algunos sistemas físicos se utiliza esta expresión. Por ejemplo tenemos que el valor de ln(50) es igual a 3,912
MAX(A,B) Calcula el maximo de A y B. El resultado será B cuando B>A, y será igual a A cuando B
MIN(A,B) Calcula el mínimo de A y B. El resultado será A cuando B>A, y será igual a B cuando B
PULSE(A,B) Esta función vale 1 a partir del periodo A durante B períodos. Antes y después el valor de la función es 0. Ejemplo. Un comercio abre a las 8 de la mañana y permanece abierto sin interrupción durante 12 horas. Hacemos: Estado del comercio = PULSE(8,12) y el Estado vale 1 cuando está abierto, entre las 8 y las 20 horas, y vale 0 cuando está cerrado.
174
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
PULSE TRAIN (A,B,C,D) Igual que la función Pulse pero empezando en el periodo A, con una duración de B periodos, que se repite cada C periodos y dejando de repetirse a partir del periodo D. Ejemplo Un enfermo ha de someterse a las sesiones de un tratamiento médico diario. Empieza cada dia a las 4 de la mañana, el tratamiento dura 2 horas y ha de empezar una sesion cada 6 horas. A las 18 horas ya no podemos empezar ninguna nueva sesión. La variable Tratamiento valdrá 1 en los periodos donde el enfermo tiene sesión de tratamiento y 0 si no la tiene Tratamiento= PULSE TRAIN(4, 2, 6, 18 )
RAMP(S,T1,T2) Valor 0 hasta el periodo T1, desde ese instante aumenta S unidades cada periodo hasta el periodo T2 , y luego permanece constante. Ejemplo: Deseamos abrir la compuerta de un pantano de forma progresiva, a partir de las 2 de la mañana hasta las 12 del mediodia. El valor de Compuerta es 0 si está cerrada y 100 si está completamente abierta. Compuerta=RAMP(10,2,12)
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
175
RANDOM UNIFORM(m,x,s) Devuelve una serie de valores aleatorios con un minimo de “m”, y máximo de “x”, “s” es el parametro de calculo de los numeros aleatorios, y puede ser cualquier cifra. Si se cambia “s” se modifica la serie de numeros aleatorios. Ejemplo: Queremos simular el comportamiento de la tempertura de un cuerpo que sabemos que a lo largo del dia oscila ente el valor 36 y 38 grados. Temperatura = RANDOM UNIFORM(36,38,99)
RANDOM NORMAL(m, n, p, x,s) Simular a la función RANDOM UNIFORM, devuelve una serie de valores aleatorios con un minimo de “m”, y máximo de “n”, centrados en el valor medio “p”, con una desviación típica de “x”, y siendo “s” el parametro de calculo de los numeros aleatorios, y puede ser cualquier cifra. Si se cambia “s” se modifica la serie de numeros aleatorios. Ejemplo: Temperatura mínima 36º, máxima 38º, media 36,5º y desviación tipo igual a 0,5º. Usaremos: Temperatura = RANDOM NORMAL(36, 38, 36.5, 0.5,99)
SIN(X) Calcula el seno de X en radianes. 176
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
SQRT(X) Calcula la raiz cuadrada de X.
STEP(H,T) El resultado es 0 hasta el momento T, a partir de entonces es H. Ejemplo: Una variable vale 0 hasta el periodo 15 ya partir de ese momento vale igual a 5. Variable = Step(5,15)
XIDZ(A,B,X) El resultado es A/B, excepto cuando B=0 que el resultado es X. Se usa cuando tenemos que hacer la division A/B y en algún instante B puede ser cero, lo que daria como resultado del cociente un valor infinito, y el colapso del modelo. En este caso, si se produce que B es igual a cero, el resultado del cociente es X.
ZIDZ(A,B) El resultado es A/B, excepto cuando B=0 que el resultado es 0. Se usa cuando tenemos que hacer la division A/B y en algún instante B puede ser cero, lo que daria como resultado del cociente un valor infinito, y el colapso del modelo. En este caso, si se produce que B es igual a cero, el resultado del cociente es cero.
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
177
TABLAS Vamos a crear un micro-modelo para ver mejor lo que es una Tabla y como se crea. Supongamos que tenemos un elemento "b" queremos que sea funcion de otro "a", o sea que "a" influye en "b", y que la relación ente ambos es compleja, de forma que no puede definirse con una relación aritmetica (del tipo b=4a+2). En estos casos se usan las Tablas. El software Vensim nos ofrece la posibilidad de crear Tablas en dos formatos, unas tablas que llamaremos externas, donde la tabla se añade como un elemento (que no lo es) en el Diagrama de Flujos, y otras que llamaremos internas, donde la tabla se coloca dentro de la fórmula de la variable dependiente. Problema a estudiar Sea "a" la cantidad de lluvia que cae, y "b" el porcentaje de personas con paraguas. No conocemos la relacion aritmetica que relaciona ambas variables, pero sabemos que "a mas lluvia, mayor porcentaje de personas con paraguas". En un estudio previo hemos encontrado algunas situaciones: - cuando no llueve el porcentaje de personas con paraguas es nulo (si a=0, b=0), - cuando llueven 30 litros el porcentaje es el 10% (a=10, b=10) - cuando llueven 50 litros, el porcentaje es del 100% (a=50, b=100) Si dibujamos en unos ejes X,Y estos valores tendriamos: punto 1: (0,0) punto 2: (30,10) punto 3 (50,100) Vamos a crear un pequeño modelo que nos calcule el porcentaje de personas que llevan paraguas en funcion de la cantidad de lluvia que cae. Tabla externa Es necesario seguir estos pasos: - abrir el Vensim y hacer File - New Model - ok - crear una variable auxiliar llamada lluvia, otra llamada paraguas y otra llamada tabla - dibujar una flecha desde lluvia a paraguas y otra desde tabla a paraguas.
- escribir la ecuacion de lluvia=ramp(1,1,50) ya que con ello simulamos que la lluvia se incrementa 1 litro cada periodo desde el periodo 1 al periodo 50. - escribir la ecuación de paraguas=tabla(lluvia) - escribir la ecuación de tabla, para ello seleccionar el icono de ecuaciones. - pulsar sobre el nombre de tabla y escoger la opción Type:Lookup - pulsar el icono AsGraph
178
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
- en la columas Input / Output entrar en las 3 primeras filas las parejas de valores: (0,0) , (30,10) y (50,100)
-
hacer ok y ok - pulsar el icono Run a Simulation - observar el comportamiento de lluvia y paraguas. Tabla interna Es necesario seguir estos pasos: - abrir el Vensim y hacer File - New Model - ok - crear una variable auxiliar llamada lluvia y otra llamada paraguas - dibujar una flecha desde lluvia a paraguas
- escribir la ecuacion de lluvia=ramp(1,1,50) ya que con ello simulamos que la lluvia se incrementa 1 litro cada periodo desde el periodo 1 al periodo 50. - escoger la opción Type: Auxiliary with Lookup
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
179
- escribir la ecuación de paraguas=With Lookup(lluvia) - pulsar el icono AsGraph - en la columas Input / Output entrar en las 3 primeras filas las parejas de valores: (0,0) , (30,10) y (50,100) como se indicaba en la explicación de las tablas externas. - hacer ok y ok - pulsar el icono Run a Simulation - observar el comportamiento de lluvia y paraguas La decisión de utilizar ua tabla externa o interna es ua cuestión de estilo de la persona que hace el modelo, no obstante las tablas externas crean una cierta confusión en los Diagramas de Flujos ya que parecen ser elementos del sistema cuando en realidad no lo son. Las tablas internas tienen la limitación de que no podemos escribir ecuaciones del tipo a = b x tabla(c) combinando varios elementos en la ecuación, sino sólo las del tipo a = tabla (c). En ambos ejemplos hemos creado una tabla para obtener el resultado de la variable dependiente (paraguas) en funcion de los valores que toma la variable independiente (lluvia).
RETRASOS En los sistemas nos encontramos con frecuencia que las respuestas de una variable en relación a otra no son instantáneas, sino que se producen retrasos. Se pueden modelar en función de que estas variables sean informaciones, o bien que estas variables sean materiales o físicas. También se pueden modelar considerando que la respuesta es muy fuerte al principio (primer orden) o bien que la respuesta presenta un importante retraso (tercer orden). RETRASOS DE INFORMACION DELAY1(I,T) Retraso exponencial de primer orden, para la variable I y periodo T. DELAY1I(I,T,N) Igual que DELAY1 pero empezando la simulacion en el valor N en vez de I. SMOOTH3(X,T) Retraso exponencial de tercer orden, para el valor X y el periodo T . SMOOTH3I(X,T,N) Igual que SMOOTH3 pero empezando la simulacion en el valor N en vez de X. DELAY FIXED (X,T,N) Retraso en escalón para el valor X y el periodo T empezando la simulacion en el valor N en vez del X. RETRASOS MATERIALES SMOOTH(X,T) Retraso exponencial de primer orden, para la variable X y periodo T SMOOTHI(X,T,N) Igual que SMOOTH pero empezando la simulacion en el valor N en vez del X. DELAY3(I,T) Retraso exponencial de tercer orden, para el valor I y el periodo T . DELAY3I(I,T,N) Igual que DELAY3 pero empezando la simulacion en el valor N en vez de I. Para probar los efectos de los diferentes retardos es útil crear un modelo muy sencillo y colocar los diferentes retardos que querenos comparar. 180
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
Ejemplo: Imaginemos que queremos simular la relación entre el momento que empieza a llover (minuto 10) y el porcentaje de personas que llevan paraguas. A continuación vemos el pequeño modelo y las ecuaciones con un retraso de tercer orden.
lluvia= step(100,10) paraguas=delay3(lluvia,tiempo de retraso) retraso= 8
y ahora usando diferentes tiempos de retaso para una función de primer orden.
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
181
182
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
Agradecimientos Han colaborado en la redacción de este texto dos amigos y colegas argentivos de amplios conocimientos en este campo, Mario Guido Pérez en la redacción, y Claudio Enrique en el trabajo de revisión y corrección final. El capítulo 9 sobre el SIDA se basa en un trabajo de los vascos Javier Casas, Mikel Errasti, Cruz Aguirre y Roberto Ibarretxe. Los dibujos que ayudan a hacer un poco más ameno el texto son una aportación del dibujante Antoni Lacasa Ruiz de Lleida, y los trabajos del alumno incluidos en el CD, que muestran de forma meticulosa cómo pueden realizarse los ejercicios han sido realizados por el matemático Juan Francisco Martinez Cerdá de Barcelona.
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas
183
184
Juan Martín García – Ejercicios avanzados en Dinámica de Sistemas