scieee AI-readable full text Open interactive document viewer

Análisis automático de modelos complejos utilizando herramientas de inteligencia artificial partiendo del ejemplo del World3

Retortillo Atienza, Pedro Manuel

Abstract

Departamento de Ingeniería de Sistemas y Automática

Full text

ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 UNIVERSIDAD de VALLADOLID ESCUELA de INGENIERÍAS INDUSTRIALES I II INGENIERO NGENIERO NGENIERO NGENIERO T TT TÉCNICO ÉCNICO ÉCNICO ÉCNICO I II INDUSTRIAL NDUSTRIALNDUSTRIAL NDUSTRIAL, ,, , ESPECIALIDAD EN ESPECIALIDAD EN ESPECIALIDAD EN ESPECIALIDAD EN M MM MECÁNICA ECÁNICAECÁNICA ECÁNICA PROYECTO FIN DE CARR PROYECTO FIN DE CARRPROYECTO FIN DE CARR PROYECTO FIN DE CARRERA ERAERA ERA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 Autor: Autor:Autor: Autor: Retortillo Atienza Retortillo AtienzaRetortillo Atienza Retortillo Atienza, , , , Pedro Manuel Pedro ManuelPedro Manuel Pedro Manuel Tutor TutorTutor Tutora aa a: :: : Mediavilla Pascual Mediavilla PascualMediavilla Pascual Mediavilla Pascual, , , , Margarita MargaritaMargarita Margarita In InIn Ingeniería de Sistemas y Automática geniería de Sistemas y Automáticageniería de Sistemas y Automática geniería de Sistemas y Automática SEPTIEMBRE SEPTIEMBRESEPTIEMBRE SEPTIEMBRE — —— — 20 2020 2013 1313 13 ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 PROYECTO FIN DE CARR PROYECTO FIN DE CARRPROYECTO FIN DE CARR PROYECTO FIN DE CARRERA ERAERA ERA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 Autor: Autor:Autor: Autor: Retortillo Atienza Retortillo AtienzaRetortillo Atienza Retortillo Atienza, , , , Pedro Manuel Pedro ManuelPedro Manuel Pedro Manuel SEPTIEMBRE SEPTIEMBRESEPTIEMBRE SEPTIEMBRE — —— — 20 2020 2013 1313 13 UNIVERSIDAD de VALLADOLID ESCUELA de INGENIERÍAS INDUSTRIALES DEDICATORIAS A mi padre que me introdujo en el mundo de la ingeniería. A toda mi familia que ha soportado conmigo la carga de este proyecto. A mis amig@s, por estar ahí. A Margarita Mediavilla que me enseñó la magia de la dinámica de sistemas y la potencia de Simulink. A Fernando Frechosos que me introdujo en el mundo de las Energías Renovables. A Yvan Dutil profesor asociado en la Universidad de Quebec en Rimonsky, que ha presentado nuestro trabajo a Dennis Meadows y Graham Turner. A mis socios del BAH! Valladolid, del Solar Decathlon Europe 2010 y del Área de Cooperación Internacional de la Uva, excelentes compañeros y compañeras con quienes he trabajado y trabajo en proyectos coherentes con los principios defendidos en este Proyecto Fin de Carrera. A TOD@S VOSOTR@S MUCHAS GRACIAS Resumen Proyecto Fin de Carrera ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 Septiembre 2013 Pedro Manuel Retortillo Atienza Resumen 1 INTRODUCCIÓN Este proyecto fin de carrera trata del análisis por computador utilizando herramientas de Inteligencia Artificial orientado a modelos socioeconómicos complejos basados en dinámica de sistemas. Estas herramientas las vamos a probar en un modelo ampliamente conocido y muy complejo como es el World3. El modelo World3 es una simulación por ordenador de las interacciones entre la población, el crecimiento industrial, la producción de alimentos y los límites de los ecosistemas de la Tierra (Donella Meadows, 1972). La dinámica de sistemas, situada en el área de conocimiento de la Teoría General de Sistemas y la Automática, nació en los años ’50 a partir de la aplicación de la teoría de los sistemas dotados de estructura de realimentación a un caso concreto de gestión industrial. (Aracil, 1986). Esta metodología, cuyo objetivo es construir modelos dinámicos de sistemas sociales basados en la opinión de expertos y el uso de la simulación mediante técnicas de computación, es una herramienta que cubre hoy un amplio campo de aplicaciones, desde la gestión de empresas a la construcción de modelos urbanos, sociológicos y ecológicos. El hecho de que las herramientas de dinámica de sistemas no estén pensadas para estos análisis con Inteligencia Artificial, requiere otras herramientas sacadas de la ingeniería como Matlab y Simulink. Simulink es una herramienta interactiva para modelar, simular y analizar sistemas dinámicos. Simulink nos permite construir diagramas de bloque gráficos, evaluar el rendimiento del sistema y refinar sus diseños. Una vez construido un modelo en Simulink podemos usar sus herramientas incorporadas de Inteligencia Artificial como el análisis de sensibilidad, el clustering o la lógica difusa. 2 JUSTIFICACIÓN Incluso la ejecución simple de un modelo de tamaño medio basado en sistemas dinámicos puede ser un proceso engorroso, ya que la incertidumbre de los parámetros obliga al modelista a considerar muchas simulaciones antes de estar seguro de cómo se comporta el modelo. Los paquetes estándar para simulaciones dinámicas incluyen algunas herramientas de análisis, pero en muchas ocasiones sería deseable poder personalizar estas herramientas. Por ejemplo, a otro le gustaría ser capaz de programar de forma iterativa distintas simulaciones y realizar operaciones matemáticas con los resultados, extraer información estadística de los datos. O también utilizar técnicas más sofisticadas, por ejemplo, las que provienen de la Inteligencia Artificial, tales como la lógica difusa (fuzzy logic), o las agrupaciones (clustering), y automatizar la revisión de los resultados. La lógica difusa ("fuzzy logic" en inglés) se adapta al mundo real en el que vivimos, e incluso puede comprender y funcionar con nuestras expresiones, del tipo "hace mucho calor", "no es muy alto", "el ritmo del corazón está un poco acelerado", etc. La agrupación de datos numéricos (clustering) constituye la base de clasificación y modelado de muchos sistemas de algoritmos. Fuzzy c-medios (FCM) es una técnica de agrupación de datos en donde cada punto de datos se caracteriza por un grado de pertenencia a cada grupo. Esta técnica es una mejora sobre métodos de agrupación anteriores. El uso de estas técnicas es interesante para nuestros propósitos ya que nos permite trabajar con el modelo de atrás hacia delante, es decir buscando qué simulaciones son interesantes (para evaluar esto utilizamos la lógica difusa sobre curvas seleccionadas como huella ecológica e índice de desarrollo humano) y vemos qué grupos de valores iniciales han generado esas curvas. Esos valores iniciales, los agrupamos en clústers y buscamos sus centros. Veremos casos de más de tres dimensiones, donde los análisis gráficos son imposibles y los análisis parciales son enormemente complicados de llevar a cabo. Las técnicas de clustering nos dan informaciones válidas y muy interesantes que condensan muchas características y mucha información en unos pocos parámetros y ejecuciones ejemplares o significativas. Este trabajo explora las posibilidades que un lenguaje de programación (Matlab- Simulink) nos da para el análisis de modelos basados en dinámica de sistemas. Asimismo, muestra las posibilidades de algunas de las herramientas tomadas de la oferta de la Inteligencia Artificial para el análisis de estos modelos. Hemos aplicado varias técnicas para el análisis de un modelo conocido y muy complejo: el World3. Estas herramientas han sido: el trazado de varias simulaciones, la agrupación en clústers, la lógica difusa, análisis de correlación, etc. Todas ellas permiten al programador automatizar el control de los resultados y dar más información sobre la relación entre los parámetros de entrada cambiantes y los resultados. Pretendemos mostrar que usando estas plataformas de ingeniería es fácil programar simulaciones automáticamente, extraer características estadísticas y analizar los resultados con mejores herramientas y ver la dependencia de los parámetros entre sí con los resultados. El coste de programación una vez que se conoce esta plataforma es muy bajo. Se ha visto que la lógica difusa aporta ideas interesantes a la hora de automatizar análisis de curvas. 3 ESTRUCTURA DEL PROYECTO Veamos cómo hemos organizado este proyecto: En el capítulo 2 introduciremos la dinámica de sistemas estudiando sus orígenes. En el capítulo 3 haremos un estudio a fondo del World 3 partiendo de los tres libros publicados por los autores hasta ahora.. Para ello hemos estudiado los escenarios descritos que podríamos agrupar en 3 tipos: • Por un lado el escenario 1 Bussinees as usual, el actual en el cual todo sigue como hasta ahora, • Por otro lado los escenarios de las soluciones tecnológicas que atacan a mejoras en la eficiencia energética, mejoras en la limitación de los impactos de la contaminación y mejoras en la productividad de la tierra. Estas medidas sólo tecnológicas parecen insuficientes para conseguir la sostenibilidad en el largo plazo. • Otro conjunto de escenarios que podríamos llamar “escenarios del mundo estabilizado” donde aparte de medidas tecnológicas, se nos presentan medidas de limitación voluntaria de la población y el consumo y limitar el crecimiento económico hasta hacerlo compatible con los límites biofísicos del planeta. • El World3 en su última versión (Meadows, Meadows, & Randers, 2004) contiene más lazos o subsistemas que no son contemplados en ninguno de los 13 escenarios descritos en los libros, pero que nosotros si hemos utilizado para ver cómo se modificaba el mundo al modificarlos. Estos lazos permiten ya políticas conducentes a la conservación del suelo, medidas tendentes a ampliar el periodo de vida de las instalaciones y productos industriales y de servicios y políticas de población más restrictivas. Una vez comprendido el alcance del modelo se nos ocurrieron ciertos experimentos como los antes mencionados que ya no se podían hacer con el Stella. Y otra cuestión muy recursiva en dinámica de sistemas: al hacer sistemas tan grandes, estos se convierten ya en cajas negras que sólo el modelador y no siempre comprende. ¿Cómo varían unas variables al variar otras? ¿Cómo de sensibles son con respecto a los resultados? Bien, si en los paquetes estándar de dinámica de sistemas no se pueden hacer estas cosas, pasémoslo a Simulink y hagamos esos estudios. Con Simulink podemos plantear de forma sencilla, gráfica e intuitiva ecuaciones diferenciales en el tiempo y utilizar sistemas de retroalimentación. En el capítulo 4 empezamos describiendo todo lo que necesitamos de Simulink para hacer modelos basados en dinámica de sistemas. Vimos como traducir todos los diagramas de Forrester utilizados en el World3 así como configurar los pasos de integración y los solvers para que fuesen idénticos en Stella y en Simulink. Una vez descritas las posibilidades y explicado el funcionamiento de Simulink nos pusimos a reconstruir una a una todas las estructuras de dinámica de sistemas descritas en el capítulo 2, tanto las simples como las más complejas, incluyendo retrasos, bloque condicionales y subsistemas. En el capítulo 5 se presenta cómo construimos el modelo completo, subsistema a subsistema, calibrando por separado cada uno de ellos, y una vez construidos y calibrados todos, procedimos a su ensamblaje. Figura1. El World3 en Stella dividido en 15 subsistemas. También se aprovecharon ya estos subsistemas traducidos para ir haciendo algunos experimentos sobre ellos. Después de calibrar uno a uno todos los subsistemas y de ir acoplándolos y después de cambiar sus entradas fijas estáticas por otras dinámicas procedentes de otros subsistemas y de hacer un subsistema con 18 entradas y 33 salidas tendremos ya construido el simuworl3.mdl, el World3 en Simulink. En el capítulo 6 presentamos el modelo completamente construido y enseñamos cómo usarlo aprovechando la plataforma de programación de Matlab con su lenguaje m y sus ficheros m_files. Presentamos una vista del simuworld3.mdl al abrirlo. Figura 2.- Pantalla principal del simuworld3.mdl En el capítulo 7 entramos de lleno en los experimentos que hacemos al modelo completamente construido. En el capítulo 8 contamos las conclusiones y en el 9 tenemos el listado de código y en el 10 la Bibliografía. 4 EXPERIMENTOS CON HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL Las herramientas de Inteligencia Artificial utilizadas en este trabajo han sido las siguientes: Simulaciones en bloque sobre el total de los escenarios descritos en los libros, moviendo todos los parámetros de entrada a la vez. Correlaciones. Hemos estudiado los coeficientes de correlación entre determinadas variables de entrada como políticas y años de cambio de las mismas con salidas de resultados. Por ejemplo el año de alargamiento de la vida útil del capital industrial, la cuantía de este alargamiento y la evolución del PIB per cápita a partir del año que se inicia esa política Estructura timeworkespace Tenemos 33 salidas al workspace Tenemos 18 entradas para generar políticas Lógica difusa. La utilizamos para evaluar determinadas curvas y valorar si se corresponden con escenarios de mundos equilibrados y sustentables Clustering. Mediante la técnica de fuzzy hemos seleccionado las curvas de HWI y HEF que de forma simultánea tienen un grado de bondad superior a 0.6. Ahora con las técnicas de clustering vamos a agrupar y a buscar los centros de las nubes de puntos que dan valores positivos. Veamos un pequeño ejemplo de lógica difusa, analizando la curva población. En la teoría de conjuntos difusos se definen también las operaciones de unión, intersección, diferencia, negación o complemento, y otras operaciones sobre conjuntos, en los que se basa esta lógica. La lógica difusa nos permite definir si el resultado de una simulación ha sido bueno, muy bueno o por el contrario, ha sido catastrófico y cómo de catastrófico ha sido. Veamos cómo analizaríamos una curva de población. Figura 3.- Criterios para valorar el carácter catastrófico de una simulación atendiendo a la curva de población. Figura 4.- Distintos ejemplos de evaluación del nivel de catástrofe de una simulación partiendo de la curva de población. 1900 1950 2000 2050 2100 0 5 10 x 10 9 Nivel de catástrofe = 0.54247 1900 1950 2000 2050 2100 0 2 4 6x 10 9 Nivel de catástrofe = 0.85865 1900 1950 2000 2050 2100 0 2 4 6x 10 9 Nivel de catástrofe = 1 1900 1950 2000 2050 2100 0 5 10 x 10 9 Nivel de catástrofe = 0.89482 SI la población final es baja O 0,5 * año del pico de la población es bajo O 0.7 * la pendiente final de la curva población es bajo ENTONCES  EL resultado es una catástrofe PEDRO MANUEL RETORTILLO ATIENZA 5 ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 9.11 CÓDIGO11. Fuzzy clustering con 18 entradas y una salida. .......................... 268 10. BIBLIOGRAFÍA .................................................................................................... 272 6 PEDRO MANUEL RETORTILLO ATIENZA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 PEDRO MANUEL RETORTILLO ATIENZA 7 ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 1. INTRODUCCIÓN Y OBJETIVOS DEL PROYECTO 8 PEDRO MANUEL RETORTILLO ATIENZA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 PEDRO MANUEL RETORTILLO ATIENZA 9 ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 1.1 INTRODUCCIÓN Este proyecto fin de carrera trata del análisis por computador utilizando herramientas de Inteligencia Artificial orientado a modelos socioeconómicos complejos basados en dinámica de sistemas. Estas herramientas las vamos a probar en un modelo ampliamente conocido y muy complejo como es el World3. Aprovechando estas herramientas vamos a intentar profundizar más en él. Debido a la complejidad de este modelo este análisis nos va permitir conocerlo mejor. El hecho de que las herramientas de dinámica de sistemas no estén pensadas para estos análisis con inteligencia artificial, requiere un análisis con otras herramientas sacadas de la ingeniería como Matlab y Simulink. Simulink es una herramienta interactiva para modelar, simular y analizar sistemas dinámicos. Simulink nos permite construir diagramas de bloque gráficos, evaluar el rendimiento del sistema y refinar sus diseños. Una vez construido un modelo en Simulink podemos usar sus herramientas incorporadas de inteligencia artificial como el análisis de sensibilidad, el clustering o la lógica difusa. Estas herramientas fueron desarrolladas en el departamento de Ingeniería de sistemas y automática de la EUP de Valladolid y sirvieron de base a un artículo “An attempt to automate the analysis of complex system dynamics models: an example of WORLD 3” (Mediavilla, Retortillo, de Miguel, & de Castro, 2008) La dinámica de sistemas, situada en el área de conocimiento de la Teoría General de Sistemas y la Automática, nació en los años ’50 a partir de la aplicación de la teoría de los sistemas dotados de estructura de realimentación a un caso concreto de gestión industrial. (Aracil, 1986). Este desarrollo, denominado Dinámica Industrial, y realizado por Jay W. Forrester, Ingeniero Electrónico del MIT (Instituto de Tecnología de Massachusetts) y sus discípulos, como Donella y Dennis Meadows, dio paso en los años 70 a una ampliación fundamental para el estudio del mundo como sistema dinámico. Esta metodología, cuyo objetivo es construir modelos dinámicos de sistemas sociales basados en la opinión de expertos y el uso de la simulación mediante técnicas de computación, es una herramienta que cubre hoy un amplio campo de aplicaciones, desde la gestión de empresas a la construcción de modelos urbanos, sociológicos y ecológicos. La dinámica de sistemas implica una reflexión acerca de cómo la estructura de un sistema determina su comportamiento, es decir, como van evolucionando en el tiempo las variables del sistema y las relaciones que las ligan. El modelo World3 es una simulación por ordenador de las interacciones entre la población, el crecimiento industrial, la producción de alimentos y los límites de los ecosistemas de la Tierra. Aunque inicialmente no fue ideado como herramienta predictiva, algunos estudios más recientes como los realizados por Graham Turner de la Commonwealth Scientific and Industrial Research Organisation (CSIRO) y publicados en el artículo “A comparison of the limits to growth with thirty years of reality” (Turner, A comparison of the limits to growth with thirty years of reality, 2008) han demostrado que las dinámicas internas de este modelo siguen teniendo vigencia hoy en día. 10 PEDRO MANUEL RETORTILLO ATIENZA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 1.2 JUSTIFICACIÓN La imposibilidad de asumir dinámicas de crecimiento exponencial ilimitado en un entorno de recursos finitos es una realidad cada vez más asumida no sólo en círculos ecologistas, también en organizaciones sociales de carácter sindical vecinal etc. Muchas Escuelas de Ingeniería de todo el mundo tienen alguna cátedra, algún área o departamento dedicados a tal fin. Sin embargo esta percepción de que es imposible que 7000 millones de personas puedan vivir como vive un alemán o un estadounidense medio que es compartida cada vez por más gente, no es tan comúnmente percibida por la clase política de ninguno de los países de los que habitualmente se tienen noticias, quizá con la salvedad de Cuba y Buthan. En el Club de Roma también tuvieron constancia de estas limitaciones y por eso encargaron al MIT un estudio al respecto. El resultado de este estudio fue el modelo basado en dinámica de sistemas World 3. La comprensión de este modelo es muy útil, a juicio de los autores, para comprender las relaciones existentes entre población, nivel de vida material de las personas, servicios elementales como sanidad y educación, recursos limitados del planeta, contaminación persistente y producción de alimentos. Su comprensión, como decimos, puede ayudarnos a diseñar el mundo en que queremos vivir sin comprometer el futuro de la vida en el Planeta. Y pensamos además que se le puede extraer más jugo si se analiza más en profundidad. Por ejemplo, en vez de estudiar los 14 escenarios que plantean los autores, uno puede querer ver qué políticas obtienen los Índices de desarrollo humano más altos con huellas ecológicas más bajas y además, en función de en qué año se puedan poner en marcha determinadas políticas correctoras, con qué intensidad se deben aplicar estas medidas. Incluso la ejecución simple de un modelo de tamaño medio basado en sistemas dinámicos puede ser un proceso engorroso, ya que la incertidumbre de los parámetros obliga al modelista a considerar muchas simulaciones antes de estar seguro de cómo se comporta el modelo. Los paquetes estándar para simulaciones dinámicas incluyen algunas herramientas de análisis, pero en muchas ocasiones sería deseable poder personalizar estas herramientas. Por ejemplo, a otro le gustaría ser capaz de programar de forma iterativa distintas simulaciones y realizar operaciones matemáticas con los resultados, extraer información estadística de los datos, o utilice las técnicas sofisticadas, por ejemplo, los que provienen de la inteligencia artificial, tales como la lógica difusa (fuzzy logic), o las agrupaciones (clústering), y automatizar la revisión de los resultados. En este trabajo exploramos las posibilidades de un lenguaje de programación Matlab, y su herramienta de simulación, Simulink, para aquellas posibilidades mencionadas. Estos leguajes que provienen del campo de la ingeniería ofrecen muchas posibilidades interesantes debido a su capacidad de programación. Permiten el desarrollo de herramientas de análisis personalizados a un costo muy bajo de programación. El modelo World3 es un ejemplo típico de un modelo grande, cuyo análisis se convierte en una tarea difícil. Hemos programado este modelo en Simulink para realizar un análisis de este modelo con las herramientas indicadas anteriormente. PEDRO MANUEL RETORTILLO ATIENZA 11 ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 1.3 OBJETIVOS El objetivo del proyecto es traducir a Matlab el World 3 (W3) en su versión 2003 y analizarlo con herramientas de inteligencia artificial. Para ello en primer lugar expondremos los fundamentos de la dinámica de sistemas (DS), explicando sus estructuras fundamentales, a través de los diagramas de Forrester. Utilizaremos varios subsistemas del W3 investigando las dinámicas que hay dentro, y después reconstruiremos todos los subsistemas, los acoplaremos y calibraremos los resultados del modelo original W3 2003 con los obtenidos al utilizar Matlab. Una vez traducido, utilizaremos las herramientas ingenieriles. Se puede utilizar la potencia de Matlab, para usando análisis de sensibilidad, clústers, fuzzy-logic, indagar las complejas relaciones económico-energéticas del modelo a escala mundial. Los pasos a dar para llevar este estudio son los siguientes: 1. Estudiar la dinámica de sistemas y sus características fundamentales: empleo de ecuaciones diferenciales, ciclos de realimentación y retrasos en la transferencia de información. 2. Representación de las estructuras típicas de DS en el programa Stella. El programa Stella es el soporte informático para construir las versiones 93 y 03 del W3. El W3 contiene todas las estructuras utilizadas en DS, así que utilizamos fragmentos del W3 para explicar todas las estructuras de la DS. 3. Estudiar el W3 y su alcance como modelo interpretativo, así como la validez de sus estimaciones. 4. Descripción de los escenarios presentados en el libro “Más allá de los límites del crecimiento” para entender cómo simular políticas e interpretar sus resultados. 5. Descripción de las herramientas de Simulink necesarias para hacer este proyecto. 6. Fragmentar el W3 en subsistemas y traducir cada subsistema a Simulink. 7. Calibrar cada subsistema y emplear algunas herramientas de Inteligencia Artificial como el análisis de sensibilidad para determinar qué variables de entrada tienen más incidencia sobre las variables de salida en el subsistema. Analizar las interacciones entre los bloques más significativos y repetir los análisis de sensibilidad. 8. Acoplar todos los subsistemas y calibrar el montaje global con respecto a algunos escenarios del W3 descritos en los libros de los límites del crecimiento. 9. Demostrar la potencia de Simulink para generar escenarios continuos utilizando rangos de valores en las variables de entrada. 10. Usar herramientas de inteligencia artificial sobre todo el modelo para evaluar qué políticas se pueden establecer a partir de ahora para lograr un alto nivel de desarrollo humano compatible con los recursos limitados del Planeta. 11. Elaborar unas conclusiones al trabajo realizado 12 PEDRO MANUEL RETORTILLO ATIENZA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 1.4 PLAN DE DESARROLLO DEL PROYECTO 1. En la Introducción del capítulo hemos presentado la descripción de los sistemas complejos, enumerando sus aspectos más básicos para presentar la dinámica de sistemas como uno de los métodos del enfoque sistémico. Cuando usamos los ordenadores para ayudarnos en el estudio de los sistemas dinámicos entramos en el mundo de los sistemas computerizados basados en dinámica de sistemas. 2. Como ejemplo de sistemas dinámicos informatizados hemos elegido el World3 por las siguientes razones: 2.1 Es uno de los más conocidos. 2.2 Es suficientemente complejo como para poder explicar todas las estructuras que utiliza la dinámica de sistemas. 2.3 El tema que estudia: Las posibilidades de crecimiento continuo en un entorno de recursos finitos. 2.4 Nos ofrece la posibilidad de avanzar en sus implicaciones, de sacarle más jugo al poder utilizar las herramientas de inteligencia artificial que posee Simulink de Matlab. 3. Hacemos un estudio más pormenorizado de la dinámica de sistemas presentando sus elementos y estructuras características. 3.1 Los diagramas causales. 3.2 Metodología del desarrollo de modelos. 3.3 Diagramas de Forrester. 3.4 Bucles de realimentación. 3.5 Retrasos 3.6 Sistemas genéricos y estructuras complejas. 4. A continuación analizamos estas estructuras propias de los diagramas de Forrester en el programa para dinámica de sistemas Stella con el que se construyeron la versión 91 y 03 del World3. 5. Antes de comenzar la traducción del modelo subsistema a subsistema hacemos una presentación de las distintas ediciones del World3: quiénes son sus autores, en cuántos subsistemas se descompone, con cuántos escenarios trabaja, a qué conclusiones llega. 6. Ya en el capítulo 5 empezamos a trabajar con Simulink, la aplicación de Matlab con la que desarrollaremos este proyecto. MATLAB (abreviatura de MATrixLABoratory, "laboratorio de matrices") es un software matemático que ofrece un entorno de desarrollo integrado (IDE) con un lenguaje de programación propio (lenguaje M). Está disponible para las plataformas Unix, Windows y Mac OS Simulink es un entorno de programación visual, que funciona sobre el entorno de programación Matlab. Simulink viene a ser una herramienta de simulación de modelos o sistemas, con cierto grado de abstracción de los fenómenos físicos involucrados en los mismos. En este capítulo desarrollaremos más extensamente las posibilidades de Simulink. También desarrollamos en este capítulo como representar las estructuras propias de la dinámica de sistemas: Así pues la estructura de este capítulo sería: 6.1 Presentación de las herramientas de Simulink. 6.2 Representación de estructuras simples: Niveles, flujos y funciones. PEDRO MANUEL RETORTILLO ATIENZA 13 ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 6.3 Representación de estructuras complejas: Búsqueda en tablas, bloques condicionales y retrasos. 6.4 Subsistemas. 7. Una vez explicado cómo montar todas las estructuras de Forrester utilizadas en el World3 pasamos a construir el World3 completo. 7.1 Primero fragmentamos el modelo en 15 subsistemas. 7.2 Creamos 15 ficheros en Stella sustituyendo las entradas al subsistema por valores constantes o por funciones o tablas. 7.3 Empezamos construyendo un subsistema simple. Elegimos para este menester el subsistema empleo. 7.4 Una vez construido el subsistema lo calibramos, comparando sus resultados con el mismo subsistema creado en Stella. 7.5 Pasamos a construir un subsistema más complejo: el subsistema industrial. 7.6 Calibramos el subsistema industrial, de dos formas, con entradas constantes y con entradas variables. Explicaremos las dos técnicas de calibrado en el capítulo 6. 7.7 Vinculamos dos subsistemas para ver si su comportamiento como par sigue siendo igual de fidedigno que con un único subsistema. Elegimos Energía con Producción Industrial. 7.8 Hacemos una introducción al uso de m_files utilizando estos dos subsistemas enlazados para ir valorando la potencia de Simulink para el análisis de sistemas complejos. 8. Una vez construido el World 3 en Simulink lo calibramos con la versión 2003 de Stella y también con los resultados reales desde 1970 apoyándonos en otro paper: Updated Comparison of The Limits to Growth with Historical Data 9. Con el modelo totalmente traducido a Simulink, utilizamos herramientas de Inteligencia Artificial como la lógica difusa, el análisis de sensibilidad y el clústering para conocer mejor el modelo e indagar en las complejas relaciones que hay dentro. 10. Finalmente presentamos un capítulo de conclusiones y futuras líneas de trabajo. También hay un anexo con todos los códigos empleados en la simulación. 14 PEDRO MANUEL RETORTILLO ATIENZA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 PEDRO MANUEL RETORTILLO ATIENZA 21 ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 hasta que la causa inicial produce un efecto indirecto sobre sí misma. Un aspecto clave del análisis de un sistema es centrar la atención sobre los bucles de realimentación. Podemos hablar de cuatro niveles jerárquicamente distintos de la estructura del sistema de realimentación: variable, enlace, bucle de realimentación y sistema de realimentación, Una variable es una cantidad que puede cambiar en función del tiempo. Puede ser una variable de decisión o una cantidad que se ve afectada por dichas decisiones. Cuando la variable no es afectada por otras variables del sistema, se denomina como <<exógena>>o externa al sistema. Una variable que es afectada por las otras variables del sistema se denomina “endógena”. Un enlace es la relación causa-efecto entre dos variables ilustrada mediante una flecha en el diagrama causal. Un bucle de realimentación consiste en dos o más enlaces conectados de tal modo que, a partir de cualquier variable, se puedan seguir las flechas y volverá la variable inicial. En toda ilustración causa-efecto de un bucle de realimentación están implícitos los retardos de tiempo desde cada decisión hasta cada una de sus consecuencias, y los retardos en la realimentación de la información de cada consecuencia hasta que influyen sobre la próxima decisión. Para lograr una mayor sencillez, las notaciones relativas a estos retardos de tiempo se omiten en los diagramas causales. Del mismo modo que los enlaces tienen dos direcciones posibles, los bucles de realimentación tienen también dos polaridades posibles, positiva o negativa, En la mitad de un bucle de realimentación se encuentra un símbolo que indica su polaridad, un signo positivo si el bucle actúa para reforzar los cambios de variables en la misma dirección que el cambio inicial, con lo que se contribuye al crecimiento o disminución sostenidos de las variables del bucle, y un signo menos si el bucle actúa para resistirse u oponerse a los cambios de variables, y de este modo produce una tendencia contraria al cambio inicial y contribuye a la fluctuación o al mantenimiento del equilibrio del bucle. Una manera sencilla de determinar la polaridad de un bucle de realimentación es contar el número de enlaces negativos: si es par, el bucle es positivo; si es impar, el bucle es negativo. Para evitar ecuaciones simultáneas en el modelo matemático derivado del diagrama causal, dentro del procedimiento del desarrollo del modelo se requiere un tratamiento especial para un bucle de realimentación. Una técnica, empleada en dinámica de sistemas, consiste en introducir en todo bucle de realimentación dos tipos especiales de variables, niveles y tasas de cambio. Una variable de nivel indica el estado del sistema, y una variable de tasa de cambio produce cambios en las variables de nivel a lo largo del tiempo, En el contexto de los diagramas causales, la relación causal entre una variable de tasa de cambio, tal como el índice de producción (estufas/semana), y una variable de nivel, tal como el inventario (estufas), es un <<flujo físico>> que estará representado por una línea sólida. No obstante, la relación entre la variable de nivel (inventario) y la variable de tasa de cambio (índice de producción) constituye un <<flujo de información>>. Es la información relativa al estado del inventario la que influye en el índice de producción. El inventario no se transfiere físicamente al lugar de producción, es decir, a la fábrica. Pero la producción de la fábrica, medida en estufas por semana, se acumula como entidades físicas en inventario. 22 PEDRO MANUEL RETORTILLO ATIENZA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 2.3 DESCRIPCIÓN DE LA METODOLOGÍA DE DESARROLLO DE MODELOS. La metodología empleada en esta monografía utiliza todas las clases relevantes empleadas en la dinámica de sistemas: variables de nivel, variables de tasa de cambio, variables auxiliares, constantes retrasos y búsqueda en tablas. El signo sobre una flecha continua nos indica si la tasa de cambio se añade o se sustrae del nivel de una variable de estado. Mientras que las flechas continuas indican flujos físicos, las flechas discontinuas en el diagrama causal definen flujos de información desde las variables de nivel hasta las tasas de cambio o variables de acción. Se llama variable auxiliar a cualquier variable intermedia en el camino desde una variable de nivel, o de una entrada exógena, hasta una variable de tasa de cambio. Los signos sobre las flechas discontinuas tienen la interpretación siguiente: un signo (+) significa que un aumento en el parámetro en el origen de la flecha causará un aumento en la variable de la punta de la flecha; un signo – significa que un aumento en el parámetro en el origen de la flecha causará una disminución en el parámetro de la punta de la flecha. Las entradas exógenas en un diagrama causal se identifican fácilmente porque no tienen flechas que terminen en las mismas, pero tienen una o más flechas cortadas que salen de ellas. En contraste, las variables auxiliares no forman parte del mismo sistema, sino que indican solamente su rendimiento y, por consiguiente, se identifican siempre porque están al final de una flecha discontinua, y no tienen flechas que emanen de ellas. Resumamos la convención de los diagramas causales: (1) las flechas describen la dirección de la causalidad entre pares de variables; (2) las líneas (continuas o discontinuas) denotan flujos (físicos o de información); y (3) los signos nos indican la naturaleza de la relación (directa o inversa) entre un par de variables dependientes-independientes. La metodología utiliza el lenguaje de ordenador STELLA asociado con la dinámica de sistemas. En terminología de las ecuaciones de diferencias, cualquier variable de nivel Li se expresa como función de las variables de tasa de cambio R i y el valor previo del nivel:    + =   + ∑    ,…   (Ec. 2.1) en donde las R i’s se suponen constantes en el intervalo desde t a t+dt. Las variables de tasa de cambio tienen la forma: R i (t)=F[  (t), E h (t), A ij (t), A kj (t)] (Ec. 2.2) en donde E k son los impactos de las variables auxiliares en los flujos causales desde la variable i y la entrada exógena k, respectivamente. PEDRO MANUEL RETORTILLO ATIENZA 23 ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 Puesto que las entradas exógenas son funciones conocidas del tiempo, o constantes, si se conocen los valores iniciales de las variables de nivel, todas las otras variables pueden calcularse a partir de ellas y para dicho intervalo de tiempo. Entonces, a partir de la ecuación Ec. 3.1 se pueden encontrar los nuevos valores de las variables de nivel para el próximo instante de tiempo. En vez de subíndices, S utiliza una notación especial en la que .K significa el tiempo actual, .J indica el tiempo pasado t-dt, y L significa el instante futuro de tiempo t+dt; dt se llama al intervalo de la solución, el tiempo transcurrido entre dos cálculos sucesivos de la simulación. Puesto que se supone que las variables de tasas de cambio son constantes en el intervalo dt, se usa la notación .jk para tasas de cambio a la derecha de una ecuación y .kl para tasas de cambio a la izquierda. 24 PEDRO MANUEL RETORTILLO ATIENZA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 2.4 UN LENGUAJE ELEMENTAL PARA LA DESCRIPCIÓN DE SISTEMAS. DIAGRAMAS DE FORRESTER La descripción mínima de un sistema viene dada por la especificación de las distintas partes que lo forman, mediante el conjunto C de su composición, y por la relación R que establece cómo se produce la influencia entre esas partes. Veamos mediante un sencillo ejemplo cómo podemos analizar la estructura sistémica de un proceso. Supongamos el hecho elemental de llenar un vaso de agua. En la Figura 2 se muestra una ilustración gráfica de ese proceso. Su descripción, en lenguaje ordinario, es muy simple: el que llena el vaso de agua, mediante la observación del nivel alcanzado en el vaso, actúa sobre el grifo, de modo que lo va cerrando según se alcanza el nivel que estima oportuno. El proceso que tiene lugar lo describiríamos como sigue: el agente (el que llena el vaso) compara el nivel alcanzado en el vaso con el nivel deseado, si existe discrepancia actúa sobre el grifo, con lo que se influye sobre el nivel alcanzado, que es de nuevo comparado (en realidad se trata de un proceso continuo) con el nivel deseado; según disminuya la discrepancia, se irá cerrando el grifo, hasta que al anularse esta, se cierre definitivamente. El proceso así descrito se puede representar de forma más sintética mediante un diagrama como el que se superpone en la Figura 3a. En este diagrama se indican los hitos más importantes que intervienen en el proceso, de acuerdo con la descripción anterior, y que son el nivel alcanzado en el vaso, la discrepancia entre ese nivel y el deseado, y el flujo de agua que modifica aquel nivel. Estos elementos básicos del proceso están unidos entre sí mediante flechas que indican las influencias que se establecen entre ellos. Por ejemplo, el nivel alcanzado depende del flujo de agua o, lo que es lo mismo, el flujo de agua influye sobre el nivel alcanzado, lo que se indica, en el diagrama, mediante una flecha que va desde «flujo de agua» a «nivel» alcanzado. Esta relación de influencia se escribe: Flujo de agua de nivel De forma análoga, la «discrepancia» se determina a partir del «nivel deseado» y del «nivel» alcanzado (en realidad es la diferencia entre ambas). Por último, la «discrepancia» determina el «flujo de agua». Articulando todas las relaciones de influencia se tiene el diagrama de la Figura 3a. En esta figura se observa que las flechas que unen la discrepancia con el flujo de agua, éste con el nivel alcanzado, para acabar de nuevo en la discrepancia, forman una cadena circular o cerrada de influencias. PEDRO MANUEL RETORTILLO ATIENZA 25 ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 Figura 2.1 - Diagrama básico de llenar un vaso de agua: (a) con un grafo orientado; (b) con un grafo signado. Es lo que se conoce como un bucle de realimentación , que es un elemento básico en la estructura del sistema y que trataremos con detalle en la Sección siguiente. Este ejemplo constituye una muestra de cómo se puede analizar un sistema, descomponerlo en sus elementos esenciales, y relacionar estos elementos mediante un bosquejo de cómo se producen las influencias entre ellos. De este modo se tiene la descripción más elemental que podemos tener de ese sistema, que se limita a establecer qué partes lo forman y cuáles de ellas se influyen entre sí. La influencia, en esta descripción, se mantiene a un nivel cualitativo, en el sentido de que únicamente se dice si se produce o no influencia, pero no la forma o magnitud que tenga. En general, si A y B son dos partes de un sistema, el hecho de que A influya sobre B se representa mediante un flecha de la forma A B e indica que B es una función de A, es decir B = ƒ(A), aunque no conozcamos la forma matemática exacta de la función. El conjunto de las relaciones entre los elementos de un sistema recibe la denominación de estructura del sistema y se representa mediante el diagrama de influencias o causal. Emplearemos preferentemente la denominación diagrama de influencias para lo que en literatura clásica de dinámica de sistemas se conoce también como diagrama causal. Esta última denominación tiene connotaciones más fuertes y se considera menos apropiada. El diagrama de influencias de la Figura 3ª constituye un ejemplo de la estructura de un sistema. La estructura juega un papel esencial en la determinación de las propiedades sistémicas. En su forma más simple el diagrama de influencias está formado por lo que se conoce como un grafo orientado. A las flechas que representan las aristas se puede asociar un signo. Este signo indica si las variaciones del antecedente y del consecuente son, o no, del mismo signo. Supongamos que entre A y B existe una relación de influencia positiva A + B Ello quiere decir que si A se incrementa, lo mismo sucederá con B; y, por el contrario, si A disminuye, así mismo lo hará B. Por otra parte, si la influencia fuese 26 PEDRO MANUEL RETORTILLO ATIENZA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 negativa a un incremento de A seguiría una disminución de B, y viceversa. De este modo, asociando un signo a las relaciones de influencia, se tiene un diagrama que suministra una información más rica sobre la estructura del sistema, aunque continúe conservando su carácter cualitativo. El grafo correspondiente se dice que está signado. En la Figura 2.1 se muestra el diagrama del proceso de llenar un vaso, con un grafo de este tipo. PEDRO MANUEL RETORTILLO ATIENZA 27 ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 2.5 BUCLE DE REALIMENTACIÓN NEGATIVA El proceso considerado en la Figura 2, al que se ha asociado el diagrama de influencias de la Figura 3, es un caso particular de la situación general que se considera en la Figura 4. En esta figura se tiene que el estado alcanzado por una cierta magnitud (el nivel de agua en el ejemplo anterior) viene determinado por una acción (el flujo de agua) que a su vez es consecuencia de la discrepancia entre el estado alcanzado por esa magnitud y el valor que se pretende que tenga, que en la Figura 4 se denomina objetivo. Es decir, la discrepancia entre el estado y objetivo determina la acción que modifica el estado en el sentido de que alcance el objetivo deseado (que la discrepancia se anule). El diagrama de la Figura 4 recibe la denominación de bucle de realimentación negativa, y representa un tipo de situación muy frecuente en el que se trata de decidir acciones para modificar el comportamiento con el fin de alcanzar un determinado objetivo. Un diagrama de esta naturaleza se puede aplicar tanto al sencillo acto de coger un lápiz, detectando mediante la vista la discrepancia entre las posiciones de la mano y del lápiz; al proceso de regulación de la temperatura en una habitación, en el que la discrepancia entre la temperatura deseada y la considerada confortable determina la actuación de un calefactor (si estamos en invierno) para corregir esa discrepancia (ver Figura 5); y tantos otros procesos de naturaleza semejante. El diagrama de un bucle de realimentación negativa aporta el esquema básico de todo comportamiento orientado a un objetivo. Su ubicuidad fue puesta de manifiesto por Norbert Wiener cuando, en el decenio de los años 40, sentó las bases de la cibernética . Figura 2.2. - Diagrama básico de un bucle de realimentación negativa 28 PEDRO MANUEL RETORTILLO ATIENZA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 Figura 2.3. - Estructura de realimentación negativa del proceso de regulación de temperatura Un bucle de realimentación negativa tiene la notable propiedad de que si, por una acción exterior, se perturba alguno de sus elementos, el sistema, en virtud de su estructura, reacciona tendiendo a anular esa perturbación. En efecto, consideremos el bucle de la Figura 6a, en el que los elementos se han representado, de forma general, mediante las letras A, B y C. Supongamos que uno cualquiera de ellos, por ejemplo el B, se incrementa. En virtud de las relaciones de influencia, el incremento de B determinará el de C, ya que la relación de influencia correspondiente es positiva. A su vez, el incremento de C determinará el decrecimiento de A, ya que así lo determina el carácter negativo de la influencia. El decrecimiento de A dará lugar al de B, pues la relación es positiva. Por tanto, el incremento inicial de B le «vuelve», a lo largo de la cadena de realimentación, como un decremento; es decir, la propia estructura de realimentación tiende a anular la perturbación inicial, que era un incremento, generando un decremento. De este modo se comprende que los bucles de realimentación negativa son bucles estabilizadores, que tienden a anular las perturbaciones exteriores. Por ello, los ingenieros que diseñan sistemas de regulación automática los incorporan en sus proyectos como elementos básicos para conseguir la acción reguladora (lo que logran mediante la adición de bucles de realimentación negativa a los procesos que diseñan). El efecto de un bucle de realimentación negativa es, por tanto, el tratar de conseguir que las cosas continúen como están, que no varíen. Son bucles que estabilizan los sistemas. Es conveniente observar que en un bucle de realimentación negativa lo que se realimenta es información. El agente necesita información sobre los resultados de sus decisiones para adaptarlas a los resultados que esas acciones van produciendo. Más adelante, en la Sección 3.3, volveremos sobre este punto. PEDRO MANUEL RETORTILLO ATIENZA 29 ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 Figura 2.4. - Estructura de realimentación negativa en (a) y comportamiento correspondiente en (b) 30 PEDRO MANUEL RETORTILLO ATIENZA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 2.6 BUCLE REALIMENTACIÓN POSITIVA La otra forma que puede adoptar un bucle de realimentación es la que se muestra en la Figura 7, en la que se tiene un bucle de realimentación positiva. Se trata de un bucle en el que todas las influencias son positivas (o si las hubiese negativas, tendrían que compensarse por pares). En general la Figura 7 representa un proceso en el que un estado determina una acción, que a su vez refuerza este estado, y así indefinidamente. En este caso el estado es una población, y la acción su crecimiento neto. En tal caso, cuanto mayor sea la población, mayor es su crecimiento, por lo que a su vez mayor es la población, y así sucesivamente. Se tiene, por tanto, un crecimiento explosivo de la población. Figura 2.5. – El crecimiento de una población como proceso de realimentación positiva En la Figura 8a se representa de forma esquemática, mediante las letras A, B y C, un bucle de esta naturaleza. Con ayuda de este diagrama se puede analizar, de forma general, el comportamiento que genera este bucle. Si cualquiera de sus elementos sufre una perturbación, ésta se propaga, reforzándose, a lo largo del bucle. En efecto, si A crece, entonces, en virtud del signo de la influencia, lo hará B, lo que a su vez determinará el crecimiento de C y, de nuevo, el de A. Por lo tanto, la propia estructura del sistema determina que el crecimiento inicial de A «vuelva» reforzado a A, iniciándose de este modo un proceso sin fin que determinará el crecimiento de A (Figura 8b). Este efecto se conoce popularmente como “círculo vicioso”, “efecto bola de nieve” o “pescadilla que se muerde la cola”. El cambio se amplifica produciendo más cambio. Se trata, por tanto, de una realimentación que amplifica las perturbaciones y que, por tanto, inestabiliza al sistema. En este sentido se puede decir que su efecto es contrario al de la realimentación negativa. Si aquella estabilizaba, esta desestabiliza. PEDRO MANUEL RETORTILLO ATIENZA 37 ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 Figura 2.13.- Cuadro de diálogo de Stella para componer funciones 2.9.2 Elementos característicos complejos Búsqueda en tablas, Bloques condicionales, Retrasos, Subsistemas 2.9.2.1 Búsqueda en tablas Figura 2.14.- Cuadro de diálogo de Stella para componer una función discontinua 2.9.2.2 Smooth1 Función de retraso de primer orden. Su sintaxis es: SMTH1(<input>,<averaging time>[,<initial>]). La función SMTH1 es equivalente a la estructura y ecuaciones mostradas en la figura inferior. 38 PEDRO MANUEL RETORTILLO ATIENZA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 Figura 2.15.- Estructura de un Smooth1 en Stella 2.9.2.3 Smooth3 Función de retraso de tercer orden SMTH3(<input>,<averaging time>[,<initial>]) El smooth3 lo que hace es suavizar una transición entre 2 valores en un tiempo determinado The SMTH3 function will return the value of Stock 3 in the structure and equations shown in Figure 7-24. Figura 2.16.- Estructura de un Smooth3 en Stella PEDRO MANUEL RETORTILLO ATIENZA 39 ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 2.9.2.4 Bloques condicionales Veamos cómo se organiza un bloque condicional siguiendo uno de los muchos ejemplos de este tipo de bloques que hay en el World3. En la figura 2.17 vemos una estructura condicional en el subsistema servicios. Se trata de cómo se degrada el capital servicios. Con esta estructura le podemos decir al modelo que hasta cierto año el capital en servicios se degradaba a un tanto por ciento anual y a partir de cierto año ese porcentaje se cambia por otro. Figura 2.17.- Estructura de un bloque condicional en Stella. s_avg_life_serv_capital_69 En la figura 2.18 vemos cómo escribir la expresión adecuada para que el sistema actúe como esperamos. La expresión que hemos de introducir es la siguiente: if (time > t_policy_year_150) then p_avg_life_serv_cap_2_69 else p_avg_life_serv_cap_1_69 Figura 2.18.- Estructura del bloque condicional en Stella. s_avg_life_serv_capital_69 serv ice capital 67 serv cap inv est 66 serv cap deprec 68s avg life serv cap 69 p av g lif e serv cap 2 69 p av g lif e serv cap 1 69 t policy year 150 industrial output 50 40 PEDRO MANUEL RETORTILLO ATIENZA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 2.9.2.5 Subsistemas Los subsistemas son usados cuando nuestro modelo se hace complicado, ya que aumenta de tamaño y complejidad. El agrupamiento es útil por una serie de razones: • Ayuda a reducir el número de bloques visualizados. • Permite mantener juntos los bloques que están funcionalmente relacionados. Una característica importante de los subsistemas es que recogen y ceden datos a otros subsistemas Vamos a explicarlo con un ejemplo. Vamos a seleccionar el subsistema de la fertilidad de la tierra. Este subsistema depende del subsistema polución que afectará negativamente al valor de la fertilidad de la tierra y del subsistema producción de alimentos que recoge también las políticas tendentes a mejorar la fertilidad de la tierra o a limitar los impactos de la contaminación. A su vez los valores cambiantes de las estructuras del subsistema pueden ser utilizados por otros subsistemas. Figura 2.19.- Representación de un subsistema sencillo. En este caso el de la fertilidad de la tierra, que recoge datos de otros dos subsistemas. Valor procedente del subsistema polución Valor procedente del subsistema producción de alimentos PEDRO MANUEL RETORTILLO ATIENZA 41 ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 3. EL WORLD3 42 PEDRO MANUEL RETORTILLO ATIENZA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 PEDRO MANUEL RETORTILLO ATIENZA 43 ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 3.1 DESCRIPCIÓN DEL MODELO El modelo World3 es una simulación por ordenador de las interacciones entre la población, el crecimiento industrial, la producción de alimentos y los límites de los ecosistemas de la Tierra. Fue encargado originalmente por el Club de Roma al MIT (Massachusetts Institute of Tecnology) quien produjo el citado modelo y el libro “Los límites del crecimiento” Los principales creadores del modelo fueron Donella Meadows, Dennis Meadows y Randers Jorgen. (Donella Meadows, 1972) El modelo ha sido documentado en el libro “Dinámica de crecimiento en un mundo finito” (Dennis L. Meadows, 1974). Se añade nuevas características al modelo World2 Jay W. Forrester. (Forrester, 1971). Desde que el World 3 fue creado originalmente ha tenido ajustes menores para llegar al modelo de World3/91 utilizado en el libro Más allá de los límites, más tarde mejorado para obtener el modelo de World 3/2003 distribuido por el Instituto para la Política e Investigación de Ciencias Sociales y, finalmente, el World3 / modelo 2003 usado en el libro Límites al crecimiento: la actualización de 30 años. A finales de los años 60 del siglo pasado la ONU encargó al Club de Roma un estudio sobre las posibilidades de un crecimiento ilimitado y exponencial que tiende hacia infinito en un entorno de recursos finitos como la Tierra. El estudio fue pilotado por los hermanos Dennis y Donella Meadows y Jorgen Randers todos ellos doctorados en el MIT. El World3 es el modelo matemático basado en dinámica de sistemas con el que se basa el trabajo encargado por al Club de Roma en 1970. Este estudio pretendía estimar los límites del crecimiento económico en un entorno finito. Con el estudio se publicó un libro en 1970 titulado “Los límites del crecimiento”. En su día fue un bestseller del que se vendieron 9 millones de copias en 29 idiomas. Las conclusiones fueron demoledoras, pero tan pronto se superaron los efectos coyunturales de la crisis del petróleo de 1973, los países más industrializados volvieron a comportarse como ciudades alegres y confiadas que continuaron con la economía del derroche y la cultura consumista, teniendo como objetivo el máximo crecimiento anual del producto interior bruto, como si no existieran límites al crecimiento económico ni al proceso de acumulación de riquezas por unos pocos países industrializados, mientras se agiganta la brecha entre los países pobres y ricos. 20 años más tarde, en 1991 se hizo una revisión del modelo (Dennis Meadows, Meadows, & Randers, 1992), que no afectó en lo fundamental a las conclusiones del mismo, salvo en que quizás fue demasiado optimista. En el momento en que fue publicada la primera versión, no faltaron voces que se negaron a admitir las consecuencias, pero las evidencias científicas han ido poniendo de manifiesto que estaba en lo cierto. Un crecimiento exponencial demanda materias primas también a un ritmo exponencial y también emite contaminantes a un ritmo exponencial. La capacidad de la tierra para asumir contaminantes y para suministrar determinados recursos es limitada. En concreto son limitados los recursos energéticos fósiles y el uranio, la tierra cultivable y por tanto la producción de alimentos, la capacidad de la tierra para asimilar el CO 2 procedente de la quema de combustibles fósiles hace tiempo que fue superada, la disponibilidad de agua dulce también tiene unas limitaciones anuales, la masa boscosa 44 PEDRO MANUEL RETORTILLO ATIENZA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 tiene una capacidad de producir madera que también ha sido superada, siendo así que ésta no para de descender año tras año, ya que año tras año se demanda más madera y se necesita más tierra cultivable para dar de comer a más personas, animales y coches. Las conclusiones del estudio serían las siguientes:  El empleo de los recursos y la generación de contaminantes han rebasado las tasas sostenibles.  Si no hay reducciones considerables en los flujos de energía y de material, el mundo está abocado a un declive rápido y fuera de control.  Para evitar este declive, será necesario reducir el crecimiento del consumo material.  Es técnica y económicamente realizable lograr una sociedad sostenible.  El paso a una sociedad sostenible ha de obtenerse mediante el equilibrio entre nuestros objetivos a corto y largo plazo, poniendo especial énfasis en la calidad de vida. El W3 es un modelo matemático complejo, pero su estructura básica no es difícil de entender. Está dividido en 15 subsistemas interconectados que se describirán de forma pormenorizada en esta obra. Tiene la intención de representar los flujos físicos derivados de la actividad humana interactuando dinámicamente con la Tierra. En tanto que sistema dinámico evoluciona con el tiempo. El W3 comienza representando el mundo físico en el año 1900 y tiene la pretensión de pronosticar el tamaño de estos flujos hasta el 2100. Es asimismo una aplicación abierta a cambios en las políticas en el empleo de los recursos no renovables, distribución de los recursos de la producción industrial, tamaño de familia deseado, mejoras en la tecnología de reducción de impactos derivados de la contaminación, periodos de amortización de la producción industrial, en general se pueden cambiar casi todos los parámetros y volver a correr la simulación para ver cuáles son las tendencias una vez variados esos parámetros. Evidentemente es una simplificación de la realidad. El W3 sólo valora los flujos físicos: Recursos no renovables, Producción Industrial, Producción de Servicios (asistenciales), Producción de Alimentos, Generación de Contaminación y Población. También tiene en cuenta la generación de empleos, la huella ecológica, la fertilidad de la Tierra (cultivable), el nivel de bienestar o la diversidad y cantidad de bienes de uso y consumo derivados de la actividad industrial. Como soporte al subsistema población cuenta con otros dos subsistemas que estiman la esperanza de vida, y el tamaño de familia deseado. Los flujos producen acumulaciones, crecimientos o decrecimientos que se representan en dinámica de sistemas como niveles. Por ejemplo, la población del planeta en un momento dado es un nivel que aumenta con los nacimientos (flujo positivo) y disminuye con las defunciones (flujo negativo), la producción industrial es un flujo que depende del capital industrial, de la mano de obra disponible, de la intensidad energética. El capital industrial (fábricas, máquinas…) es un nivel que aumenta con la fracción de la producción industrial destinada a la reinversión y disminuye con la depreciación física de los medios de producción. No tiene en cuenta este modelo diferentes áreas geográficas, desastres naturales, epidemias, el gasto de la administración ni los recursos consumidos por la corrupción PEDRO MANUEL RETORTILLO ATIENZA 45 ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 política, el gasto militar o las guerras ni conflictos regionales. En realidad todas no hacen más que empeorar las previsiones iniciales, y son posibles de reestimar sus consecuencias modificando en un momento dado de la simulación determinados niveles como población, capital industrial, capital servicios, aumentos repentinos de la contaminación provocando reducciones o aumentos bruscos de estos niveles. Tampoco tiene un apartado para el mundo de las finanzas, no es un modelo econométrico. No contiene estos condicionantes en su interior, pero al igual que en las otras incidencias, se pueden acoplar subsistemas que modifiquen algunos comportamientos, sobre todo en lo que hace a la demanda de recursos no renovables. En el campo de los indicadores de bienestar no evalúa los factores subjetivos productores de bienestar. Al estilo de la pirámide de Maslow, (Maslow, 1943) el W3 sólo valoraría los dos estamentos inferiores, es decir cobertura de necesidades materiales y ciertos aspectos relativos a la seguridad. Eso lo representaría en el bucle de producción de servicios. En el W3 como vemos, se pueden modificar los supuestos iniciales y mostrar una gama de resultados posibles que van desde el colapso hasta al mundo sostenible. En el libro publicado en 1991 “Más allá de los límites del crecimiento” los autores presentan 13 escenarios modificando paulatinamente políticas globales que van desde el Business as usual que podré provocar colapso entre el 2015 y el 2025 hasta modelos sostenibles, pasando por escenarios que retrasarían el colapso 10 ó 20 años. Se van modificando supuestos como las reservas probadas de combustibles fósiles, la inversión en renovables y eficiencia energética, la inversión en tecnologías que minimicen los impactos de la contaminación, la contención del crecimiento de la población, la contención de la producción industrial hasta igualarla a un nivel de producción industrial por persona deseado etc. Los resultados obtenidos en el W3 en su versión 03 han sido comparados con datos reales recientemente en dos estudios de Graham Turner de la Commonwealth Scientific and Industrial Research Organisation y son citados repetidas veces en esta obra. (Turner, A comparison of the limits to growth with thirty years of reality, 2008) (Turner, Updated Comparison of The Limits to Growth with Histrical Data, 2012) En nuestro proyecto hacemos algo parecido, elegimos unos parámetros críticos a modificar y luego los modificamos aleatoriamente dentro de unos márgenes de confianza haciendo correr un gran número de simulaciones sucesivas e interpretando los resultados para ver correlaciones y análisis de sensibilidad de unos parámetros con otros para así poder valorar cuáles son los más sensibles a la hora de mejorar la sostenibilidad. Es decir, ¿mejora mucho la sostenibilidad un alargamiento de la vida útil del capital industrial? ¿Y un aumento de los descubrimientos de petróleo, gas natural o carbón? ¿En qué año deberían tomarse estas medidas? ¿Estamos aún a tiempo de cambiar? Adelantamos algunas conclusiones para lograr la sostenibilidad:  En general todas las medidas necesarias para evitar el colapso deberían haberse tomado mucho antes.  Por lo demás, es necesario poner en marcha las siguientes medidas: transición rápida a energías renovables, grandes inversiones en la limitación 46 PEDRO MANUEL RETORTILLO ATIENZA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 de impactos derivados de la contaminación, limitación del crecimiento de la población, pero sobre todo, limitar el crecimiento de la producción industrial estableciendo un nivel óptimo por persona. PEDRO MANUEL RETORTILLO ATIENZA 53 ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 Ppoll_gen_rt_137 representa el caudal de contaminación y su valor es: Ppoll_gen_rt_137 = (ppoll_gen_ind_139+ppoll_gen_agr_140)*s_ppoll_gen_fact_138 Como de lo que se trata es de cerrar el grifo de contaminación que sale de la tubería en vez de actuar sobre las fuentes, vamos a actuar sobre s_ppoll_gen_fact_138 s_ppoll_gen_fact_138= if (time > t_policy_year_150) then p_ppoll_gen_fact_2_138 else p_ppoll_gen_fact_1_138 p_ppoll_gen_fact_1_138=1 A partir de 1995 entra p_ppoll_gen_fact_2_138 p_ppoll_gen_fact_2_138= SMTH3(ppoll_tech_PTD,tech_dev_del_TDD) El SMT3 retrasa el tiempo de implantación de las políticas un tiempo igual a tech_dev_del_TDD, que en este escenario seguimos dejando en su valor inicial = 20 Y ppoll_tech_PTD es un nivel que vale: ppoll_tech_PTD=_ℎ_ℎ__ ! " #$%% y ppoll_tech_chg_PTDR = if (time > t_policy_year_150) then p_ppoll_tech_chg_mlt_POLGFM*ppoll_tech_PTD else 0 p_ppoll_tech_chg_mlt_POLGFM es una función manipulable por los usuarios para producir escenarios. Es aquí uno de los sitios donde tenemos que actuar para configurar el escenario 3 y siguientes. Veamos de forma gráfica las relaciones entre las variables y stocks y cómo hemos retocado algunos parámetros para llegar a este escenario. Figura 3.9.- Descripción del subsistema contaminación Contaminación que entra Contaminación que sale Contaminación procedente de la agricultura: ppoll_gen_agr_140 Contaminación procedente del sector industrial La suma de la contaminación procedente de la agricultura + la procedente de la industria se multiplica por un factor: (ppoll_gen_ind_139+ppoll_gen_agr_140)*s_p poll_gen_fact_138 54 PEDRO MANUEL RETORTILLO ATIENZA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 Para entender cómo limitamos el impacto de la contaminación, tenemos que desplazarnos al nivel ppoll_tech_ptd que es el que va a producir el factor que puede reducir el caudal de salida de las dos contaminaciones. Este nivel tiene 1 como valor inicial, y para hacerlo trabajar hemos de modificar el año de implantación de la política y el porcentaje Figura 3.10.- Dónde ir dentro del subsistema contaminación para conseguir el escenario3 Cambiamos t_polcy_year de 4000 a 1995 La tabla que abriremos a continuación nos permite configurar la tasa de cambio con la que queremos limitar el impacto Esta salida nos calcula en términos de capital el aumento que debemos asignar a la limitación de los impactos y que será detraído de otros sectores PEDRO MANUEL RETORTILLO ATIENZA 55 ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 Figura 3.11.- Qué modificar dentro del subsistema contaminación para conseguir el escenario3 Veamos qué graficas nos producen estas modificaciones: Figura 3.12.- Estado del mundo en el escenario 3 Figura 3.13.- Nivel de vida material en el escenario 3 3.3.3.2 Interpretación de los resultados: En este escenario la contaminación continúa elevándose a pesar del programa de reducción debido a los retrasos en su realización y debido al continuo crecimiento subyacente de la agricultura y la producción industrial. Los rendimientos no decaen debido a que la pérdida de productividad de la tierra se compensa mediante el incremento de insumos agrícolas. Ejemplos del mundo real de este fenómeno son el uso de cal para limitar el impacto de la lluvia ácida o el empleo de fertilizantes para sustituir la baja capacidad de generar nutrientes que tienen los suelos a causa del uso intensivo de los pesticidas) La producción industrial alcanza un máximo en 2035 y a partir de ahí empieza a decaer a causa de la cantidad de capital derivado hacia la escasez de recursos y a la En la configuración inicial, aquí tenemos un cero, pero si queremos reducir un 3% anual, cambiamos el 0 por -0.03 56 PEDRO MANUEL RETORTILLO ATIENZA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 contaminación, lo que determina una escasez de capital para reponer la depreciación para reponer el parque industrial. Dado que la población sigue creciendo hasta el 2050, la producción industrial per cápita cae, la economía declina y se establece un colapso. Figura 3.14.- Reprcusión sobre los flujos de capital de las políticas establecidas en el escenario4 3.3.4 Escenario4: “Duplicación de recursos y tecnología para el control de la contaminación e incremento el rendimiento de la tierra” “En este escenario asumimos que se han duplicado los recursos, como en el escenario2, y que existe además una creciente tecnología de control de la contaminación, que pueda reducir la cantidad de contaminación generada por unidad de producto industrial en un 3% anual. La contaminación no obstante se eleva lo suficiente como para producir una crisis en la agricultura que drena capital de la economía a la agricultura y eventualmente lleva al estancamiento del sector industrial. En 1995 la sociedad mundial decide incrementar los rendimientos agrícolas más allá incluso que los rendimientos de la tecnología puede brindar. (Las tecnologías adicionales pueden ser, por ejemplo, tecnologías genéticas, añadidas a las extendidas tecnologías químicas difundidas en el siglo XX). También se da por supuesto que la implantación a escala mundial durará 20 años, costará algo en términos de capital y permitirá incrementar el rendimiento en torno a un 2% anual (dependiendo de las necesidades). Obsérvese que los crecimientos anuales Aumenta la parte de producción industrial destinada a aumentar el capital empleado en la producción de recursos energéticos y en la producción de alimentos. Disminuye la proporción de capital industrial que se puede reinvertir en el mantenimiento del parque industrial PEDRO MANUEL RETORTILLO ATIENZA 57 ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 del 2% logrados durante un siglo supondrían incrementos totales del rendimiento del suelo equivalentes a un factor de más de 7, en el supuesto de que no hubiera retrasos en el desarrollo de la tecnología. Veamos ahora cómo conseguir el escenario para analizar luego los resultados 3.3.4.1 Cómo conseguir el escenario Debemos añadir al modelo los cambios hechos en el escenario3 y además incrementar la productividad del terreno un 2% anual. Todo ello a partir de 1995 y con un retraso en la implantación de las medidas de 20 años. Veamos las estructuras que hay que modificar siguiendo las viñetas, pero antes describiremos las ecuaciones fundamentales: La producción de la tierra se representa con el valor de la variable: land_yield_103 que algebraicamente es igual a: land_yield_103 = s_land_yield_fact_104*land_fertility_121*land_yield_mlt_cap_102*s_yield_mlt_air_poll_105 las variables land_fertility_121, land_yield_mlt_cap_102, s_yield_mlt_air_poll_105, no se modifican en este escenario. La que nos interesa es s_land_yield_fact_104 s_land_yield_fact_104= if (time > t_policy_year_150) then p_land_yield_fact_2_104 else p_land_yield_fact_1_104 a partir de 1995, se pasa de p_land_yield_fact_1_104 a p_land_yield_fact_2_104 p_land_yield_fact_1_104=1, por lo tanto no afecta al valor de land_yield_103 p_land_yield_fact_2_104=SMTH3(yield_tech_LYTD,tech_dev_del_TDD) tech_dev_del_TDD = 20, es el tiempo de retraso en la implementación de las políticas yes común al smooth3 del escenario anterior. yield_tech_LYTDes un stock utilizado para configurar el factor s_land_yield_fact_104, su valor es: &'!ℎℎ() ! " #$%% +1 Y yield_tech_chg_rt_LYTDR=if (time > t_policy_year_150) then p_yield_tech_chg_mlt_LYCM*yield_tech_LYTD else 0 Y es finalmente en p_yield_tech_chg_mlt_LYCMdonde tenemos que actuar Veamos con viñetas lo que vamos a hacer: 58 PEDRO MANUEL RETORTILLO ATIENZA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 Figura 3.15.- Descrpición parcial del subsistema de producción de alimentos p_yield_tech_chg_mlt_LYCM depende de food_ratio127 y de des_food_ratio_DFR. Food_ratio_127 viene de dentro del subsistema de producción de alimentos y es igual a: food_pc__88 / subsist_food_pc_127, y representa la relación entre los alimentos por persona medido en calorías y las calorías de subsistencia. des_food_ratio_DFR, equivale al ratio deseado y se compara con el food_ratio para dimensionar la medida correctora a través de la función p_yield_tech_chg_mlt_LYCM que presentamos en la siguiente viñeta y que es donde debemos modificar uno de los puntos para conseguir ese incremento anual de un 0,02% La producción de la tierra es el producto de 4 parámetros : s_land_yield_fact_104 * land_fertility_121 * land_yield_mlt_cap_102 * s_yield_mlt_air_poll_105 El multiplicador artificial de la fertilidad de la tierra es: s_land_yield_fact_104 A partir de una fecha, en nuestro caso 1995, se aumenta artificialmente la productividad de la tierra. Estas medidas detraen capital industrial a través de este parámetro que se obtiene a partir de una función. PEDRO MANUEL RETORTILLO ATIENZA 59 ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 Figura 3.16. - Cómo modificar el subsistema alimentos para conseguir el escenario 4 Veamos qué graficas nos producen estas modificaciones: Figura 3.17.- Estado del mundo en el escenario 4 Figura 3.18.- Nivel de vida material en el escenario 4 3.3.4.2 Interpretación de los resultados: Esta nueva tecnología agrícola, combinada con la tecnología de reducción de la contaminación, mantiene en realidad el rendimiento de la tierra en rápido ascenso en el escenario 4, hasta que los promedios normales de rendimiento alcanzan casi cuatro veces Cuanto mayor es la diferencia entre el ratio deseado y el ratio real, mayor es la dotación en capital destinada a obtener incrementos en la productividad de la tierra mediante el uso de biotecnología En el modelo bussiness as usual, este valor es 0, para este escenario, ponemos 0.02 60 PEDRO MANUEL RETORTILLO ATIENZA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 los niveles de 1990 en el 2100. No obstante la producción de alimentos no se eleva mucho en su conjunto durante mucho más tiempo, de lo que se elevó en el escenario anterior, porque los mayores rendimientos se obtienen cada vez de menos tierra. La altísima intensificación de la actividad agrícola en este mundo simulado provoca la erosión galopante del suelo. Con menos tierra, los productores trabajan incluso para obtener mayores rendimientos de la tierra que queda, lo que ocasiona incluso mayor erosión, y así sucesivamente en un bucle de realimentación positiva que arrastra cuesta abajo al sistema de cultivo de forma acelerada. El sector agrícola, sometido a una sobrecarga, drena cada vez más capital y recursos humanos de la economía, en una época en la que la base de recursos no renovables, también en disminución, exige inversión. 3.3.5 Escenario5: “Duplicación de recursos y tecnología para el control de la contaminación, incremento del rendimiento de la tierra y protección de la erosión del suelo” En este escenario damos por supuesto que, partir de 1995, los progresos técnicos que reducen la contaminación por unidad industrial de producto e incrementan el rendimiento de la tierra han sido incorporados, pero añadimos un programa que reduce la erosión global de la tierra. Los dos primeros programas requieren inversión de capital, el tercero, damos por supuesto que no la requiere. 3.3.5.1 Cómo conseguir el escenario. Partiendo del escenario 4, vamos a localizar la parte del subsistema agrícola que se usa para limitar la erosión de la tierra y poder reducir la erosión global de tierra por tres. Vayamos pues al recorte de desarrollo y pérdida de tierra del subsistema de producción de alimentos arable land_85 Representa el stock de tierra cultivable. La tierra cultivable aumenta con la entrada de tierra potencialmente cultivable, como por ejemplo, la superficie boscosa y disminuye, o bien por erosión o bien por su uso para terreno urbano e industrial. land_erosion rt 116 representa la superficie de tierra que se erosiona cada año, y que es igual a la tierra cultivable dividido entre la vida media de la tierra land_erosion_rt_116 = arable_land_85/avg_life_land_112 avg life land 112 Representa la vida media de la tierra cultivable y es función de la vida media normal de la tierra avg_land_norm_112 y de s_land_life_yield_113 avg_life_land_112=avg_life_land_norm_112*s_land_life_mlt_yield_113 s_land_life_mlt_yield_113 Multiplicador de la vida del suelo del rendimiento de la tierra s_land_life_mlt_yield_113 = if (time > t_land_life_time) then 0.95 ./012._3456_3/71_./01 ∗ p_land_life_mlt_yield_1_114 +1 − 0.95 ./012._3456_3/71_./01  ∗ p_land_life_mlt_yield_2_115 Else p_land_life_mlt_yield_1_114 PEDRO MANUEL RETORTILLO ATIENZA 61 ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 t_land_life_time Es el parámetro que debemos modificar de 4000 a 1995 Figura 3.19.- Descripción del área de conservación - erosión de la tierra del subsistema producción de alimentos. Veamos los efectos que producen estos cambios: Figura 3.20.- Estado del mundo en el escenario 5: Figura 3.21.- Nivel material de vida en el escenario 5 arable land 85 pot arable land 86 urban ind land 120 land devel rt 96 land rem urb ind use 119 land erosion rt 116 urb ind land dev time 119 avg life land 112 avg life land norm 112 s land life mlt yield 113 ~ p land life mlt yield 1 114 ~ p land life mlt yield 2 115 urb ind land req 118 ~ dev cost per hect 97 land fr cult 84 ~ fr inp al land dev 108 pot arable land tot 84 population 1 industrial output 50 t land life time La erosión de la tierra es igual a arable_land entre avg_life_land_112, luego para disminuir land_erosion_116, deberemos aumentar avg_life_land_112 La vida media de la tierra es igual a la vida media normal, multiplicada por un parámetro: s_land_life_mlt_yield_113 A partir de 1995 se modifican los multiplicadores de vida del suelo 62 PEDRO MANUEL RETORTILLO ATIENZA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 3.3.5.2 Interpretación de los resultados: El resultado del escenario5 no es una crisis de recursos, contaminación o tierra, sino de todos más o menos al mismo tiempo. El alimento suficiente, la contaminación tolerable, la economía crece, la expectativa de vida aumenta, hasta aproximadamente el año 2020, cuando el coste de las diversas tecnologías, además del coste creciente de la obtención de recursos, simplemente exige más capital en cualquier momento del proceso que el que la economía puede proveer. 3.3.6 Escenario6: “Duplicación de recursos y tecnologías para el control de la contaminación, incremento del rendimiento de la tierra, protección de la erosión del suelo y tecnología eficiente en recursos” En el escenario 6 se inicia el escenario de simulación del año 1995 que reduce la cantidad de recursos no renovables necesarios por unidad de producto industrial en un 3% hasta que el consumo total de recursos no renovables desciende al nivel de 1975 (esto también reduce la contaminación). Entretanto, también se conservan operativos los programas de tecnologías de control de la contaminación, de rendimiento del suelo y de protección del suelo. 3.3.6.1 Cómo conseguir el escenario. Partiendo del escenario 5, vamos a localizar la parte del subsistema de recursos no renovables que se usa para limitar la intensidad energética. Estas políticas de aumento de eficiencia energética, tienen un retraso en la implantación de 20 años. La demanda anual de energía depende de la población y del consumo de energía por persona y de un factor: s_nr_res_use_fact. nr_res_use_rate_130 = population_1 * pc_res_use_mlt_132 * s_nr_res_use_fact_131 Figura 3.22.- Área del subsistema de recursos no renovable con el stock inicial de recursos fósiles Para mejorar la relación de energía consumida por cada unidad de producción industrial, debemos atacar este factor. nr resources 129 nr res use rate 130 ~ pc res use mlt 132 s nr res use fact 131 ind out pc 49 population 1 El stock de recursos no renovables engloba todos los recursos fósiles y para todos los escenarios menos para el primero se deja en 2e12 PEDRO MANUEL RETORTILLO ATIENZA 69 ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 La parte de la producción industrial que se reinvierte en formación de capital es igual a: ind_cap_invest_55 = fioa_ind_56*industrial_output_50; fioa_ind_56 = 1-s_fioa_agr_93-s_fioa_serv_63-s_fioa_cons_57 siendo: • s_fioa_agr_93, la fracción que se dedica a la formación de capital agrícola. • s_fioa_serv_63, la fracción que se dedica a la formación de capital en el sector servicios. • s_fioa_cons_57, la fracción que se dedica a consumo s_fioa_cons_57 if (time > t_ind_equil_time_57) then p_fioa_cons_var_59 else s_fioa_cons_const_58 Por el lado del 59 tenemos: Figura 3.35.- Gráfica para el equlibrado de la producción industrial en el World3-03 Según esta gráfica, si la producción industrial per cápita es mayor que la renta per cápita deseada, se destina menos fracción al consumo y más a la inversión y viceversa. En el punto de equilibrio se destina el 0,43 por ciento a consumo. Si con esta política, reducimos la renta deseada a 350, la relación entre ind_out_pc e ind_out_pc_des_59 aumenta y hay más posibilidad de consumir más parte del PIB. 70 PEDRO MANUEL RETORTILLO ATIENZA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 Figura 3.36.- Recorte del subsistema producción industrial desde donde se pueden modificar las estructuras para estabilizar la población. Veamos ahora qué resultados da: Figura 3.37.- Estado del mundo en el escenario 9: Figura 3.38.- Nivel de vida material en el estado 9: ind out pc des 59 industrial capital 52 ind cap deprec 53 ind cap inv est 55 s avg life ind cap 54 fioa ind 56 s fioa cons 57 s fioa agr 93 s fioa cons const 58 ~ p f ioa cons v ar 59 ind out pc 49 t ind equil time 57 t policy y ear 150 p av g lif e ind cap 1 54 p avg lif e ind cap 2 54 t policy year 150 p f ioa cons const 1 58 p f ioa cons const 2 58 s fioa serv 63 t_ind_equil_time lo ponemos también en 1995 Ind_out_pc_ des_59 = 350 PEDRO MANUEL RETORTILLO ATIENZA 71 ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 3.3.9.2 Interpretación de resultados Este podría ser un mundo con un nivel de servicios excelente para todos durante 75 años. Al limitarse el consumo se asignan más recursos a la formación de capital en servicios. Pero sin técnicas para reducir la contaminación, esta limita la producción del sector agrícola que no es capaz de mantener estables los alimentos por persona, lo que va haciendo aumentar la tasa de mortalidad, hasta que en el 2050 esta supera la tasa fijada de natalidad y la población comienza a declinar. Además, si no hay inversiones en mejorar la eficiencia energética ni tampoco las hay en mejorar las tecnologías de extracción, los recursos destinados a la obtención de energía empiezan a drenar las inversiones destinadas a reponer el parque industrial y la producción industrial per cápita también decae al mermar el capital industrial. 3.3.10 Escenario10 “Población e industria estabilizadas con tecnologías para reducir las emisiones, la erosión y el uso de recursos adoptadas en 1995” En este escenario se ponen en marcha las decisiones del escenario 6 más las decisiones del escenario 8, es decir, tamaño de familia de 2 hijos, renta media 350$ y tecnologías para mejorar el rendimiento del suelo, prevención de la erosión, limitar el impacto de la contaminación así como mejoras en la eficiencia energética y tecnologías para mejorar el rendimiento decreciente de las explotaciones mineras. Estimamos el tiempo de implantación de estas tecnologías en 20 años. Veamos el estado del mundo y el nivel de vida material Figura 3.39.- Estado del mundo en el escenario10: Figura 3.40.- Nivel material de vida en el escenario 10: 72 PEDRO MANUEL RETORTILLO ATIENZA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 3.3.10.1 Interpretación de resultados En el escenario 10 la población se nivela escasamente por debajo de los 8000 millones y logra un buen de vida material durante casi un siglo. Después del año 2010 su expectativa de vida se mantiene por encima de los 80 años, sus servicios por persona se elevan un 210% por encima del nivel de 1990 y hay suficientes alimentos para todos. La contaminación alcanza su máximo y empieza a decaer antes de causar daños irreversibles. Los recursos no renovables se extinguen tan lentamente que la mitad del stock inicial se encuentra presente en el 2100.El sistema se coloca debajo de sus límites, evita un colapso descontrolado y se sostiene casi, pero no del todo, en equilibrio. La palabra equilibrio en el lenguaje de sistemas significa que los ciclos positivos y negativos están compensados y que los grandes stocks se mantienen estables. A grandes rasgos son como ríos que mantiene estables su caudal, el agua que entra a partir de un punto es igual al agua que sale, a pesar de que fluye es siempre agua nueva. La sociedad del escenario 10 es una sociedad ideal todavía posible en 1995. El modelo World 3 permite aún más simulaciones y puede aún generar más aprendizajes. Podemos todavía alargar el periodo de vida del capital industrial con medidas de reutilización y reciclaje, podemos ver qué pasaría si las medidas que hemos tomado en 1995 las hubiésemos tomado en el año 2015 o en 1975 o podemos ver cómo se comporta todo si en vez de situar el nivel de vida material deseado en 350 lo hubiésemos puesto en 700$ 3.3.11 Escenario11 “Población e industrias estabilizadas con tecnologías para reducir las emisiones, la erosión y el uso de los recursos, adoptadas en 1975” El escenario 11 es exactamente igual al escenario 10 con la salvedad de que los cambios se llevan a efecto 20 años antes, es decir en 1975 Para conseguir este escenario hay que poner todas las variables temporales t_policy_year, t_land_life_time, t_fcaor_time, t_zero_pop_grow_time, t_ind_equil_time igual a 1975. Veamos las gráficas: Figura 3.41.- Estado del mundo en el escenario 11 Figura 3.42.- Nivel material del mundo en el escenario 11 PEDRO MANUEL RETORTILLO ATIENZA 73 ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 3.3.11.1 Interpretación de los resultados La entrada en el reino de la sostenibilidad 20 años antes ha producido un mundo más seguro y más rico, pero no es un mundo cualitativamente distinto, la población se limita antes, la contaminación no sube tanto e interfiere mucho menos en el rendimiento de las cosechas que en el escenario 10. La expectativa de vida alcanza los 80 años y se mantiene alta. Hay más recursos no renovables disponibles a finales del siglo XXI. 3.3.12 Escenario12 “Población e industrias estabilizadas con tecnologías para reducir las emisiones, la erosión y el uso de recursos, adoptadas en el 2015” El escenario 11 es exactamente igual al escenario 10 con la salvedad de que los cambios se llevan a efecto 20 años después, es decir en 2015. Para conseguir este escenario hay que poner todas las variables temporales t_policy_year, t_land_life_time, t_fcaor_time, t_zero_pop_grow_time, t_ind_equil_time igual a 2015. Veamos las gráficas: Figura 3.43.- Estado del mundo en el escenario 12 Figura 3.44.- Nivel material de vida en el escenario 12 3.3.12.1 Interpretación de los resultados Un retraso de 20 años supone una gran diferencia, como cabía esperar conociendo las consecuencias del crecimiento exponencial. Parece demasiado tarde para evitar algunas consecuencias. La población simulada del escenario 12 supera en más de 1500 millones a la del escenario 11y pese a que se fija el mismo nivel de vida, la producción industrial debe elevarse y no controla el impacto de la contaminación en la producción de alimentos. Una vez que los avances tecnológicos empiezan a tener efecto, hacia 2035, parece que la producción de alimentos se recupera así como la expectativa de vida. Se ha necesitado no obstante tal cantidad de inversión para corregir el sobrepasamiento, que no es suficiente lo que está disponible para sostener el nivel material de vida deseado. Que cae bruscamente, después de subir bruscamente y limitar el crecimiento de los servicios por persona. El equilibrio se alcanza muy al final del siglo, pero ya con los recursos no 74 PEDRO MANUEL RETORTILLO ATIENZA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 renovables por debajo del 40%, lo que eleva sobremanera su explotación y hace ya muy difícil mejorar la eficiencia energética de la producción industrial. 3.3.13 Escenario13 “Políticas de equilibrio pero con objetivos más altos de producción industrial y de alimentos” Usando todas las políticas del escenario 10 pero con un consumo deseado de 700$. . Para conseguir este escenario hay que poner todas las variables temporales t_policy_year, t_land_life_time, t_fcaor_time, t_zero_pop_grow_time, t_ind_equil_time igual a 1995. Vamos en este escenario los tiempos alargados hasta el año 2300: Figura 3.45.- Estado del mundo entre los años 1900 y 2300 en el escenario 13: Figura 3.46.- Nivel de vida material entre los años 1900 y 2300 en el escenario 13: 3.3.13.1 Interpretación de los resultados Lo primero que apreciamos es que la producción industrial se dispara motivada incentivada por el consumismo que dinamiza la economía. Pero pese a haber activado medidas tecnológicas muy avanzadas para contener la contaminación y mejorar la eficiencia energética, la inercia de la maquinaria industrial y la producción agrícola elevan la contaminación persistente hasta más del doble que en el escenario 10 y no se consigue detener hasta el 2035. Esta contaminación provoca una caída en la producción de alimentos que no obstante no provoca caídas en la población, ya que su aumento si está contenido desde 1995. La gran abundancia de capital disponible en todos los sectores hace asumible el coste de limitar la contaminación, extraer recursos, el sistema de servicios, las tecnologías para producir alimentos etc. pero ya en el año 2100, los recursos no renovables descienden del 40% y la producción industrial y de servicios cae lentamente durante el siglo XXII y más rápidamente un siglo después. El mundo simulado en este escenario es un mundo en el que no se ha renunciado al crecimiento estacionario, es un mundo con mucha eficiencia energética, hipertecnológico con la población limitada desde finales del siglo XX, pero con unas ambiciones materiales de PEDRO MANUEL RETORTILLO ATIENZA 75 ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 consumo nunca satisfechas. Una estimación a tan larguísimo plazo no puede ser tenida en cuenta nunca desde el punto de vista cuantitativo, el w3 no se concibió para eso. En este escenario la enseñanza que podemos sacar es que el mundo empieza a dar síntomas de fatiga a partir del 2100 si no se decide un nivel limitado de consumo material. 3.3.14 Algunas posibilidades más del World3 no recogidas en los escenarios descritos 3.3.14.1 Vida media del capital industrial En el subsistema industrial podemos alargar la vida media del capital industrial: Figura 3.47.- Estructura para alargar la vida del capital industrial La depreciación del capital industrial es igual ind_cap_deprec_54 ind_cap_deprec_54 = industrial_capital_52/s_avg_life_ind_cap_54 s_avg_life_ind_cap_54 =if (time > t_policy_year_150) then p_avg_life_ind_cap_2_54 else p_avg_life_ind_cap_1_54 por defecto en el escenario principal. p_avg_life_ind_cap 1 y 2 son igual a14. Si deseamos aumentar la vida de este capital es decir, alargar su periodo de amortización, deberemos modificar p_avg_life_ind_cap_2_54 y aumentarlo. Así, al cambiar t_policy_year_150, cosa que se hace ya en el tercer escenario, podremos alargar la vida del capital aumentando p_avg_life_ind_cap_2_54. Veamos el efecto que produce si lo aumentamos un 50% y lo dejamos en 21. Vamos a partir del escenario 2, modificando t_policy_year_150 dejándolo en 1995. Es un parámetro muy sensible, pasemos de 14 a 15 y veamos los efectos: industrial capital 52 ind cap deprec 53 s av g lif e ind cap 54 t policy y ear 150 p av g lif e ind cap 1 54 p avg lif e ind cap 2 54 76 PEDRO MANUEL RETORTILLO ATIENZA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 Figura 3.48.- A la izquierda el escenario 2 y a la derecha, el mismo escenario, pero con un aumento del capital industrial de 14 a 15 años. El aumento espectacular de un (15/14) anual de la producción industrial, provoca un aumento en la contaminación que repercute 3.3.14.2 Vida media del capital servicios En el subsistema servicios podemos alargar la vida media del capital servicios: Figura 3.49.- Estructuras para alargar la vida media del capital de servicios. La depreciación del capital servicios es igual serv_cap_deprec_69 serv_cap_deprec_68= service_capital_67/s_avg_life_serv_cap_69 s_avg_life_serv_cap_69 =if (time > t_policy_year_150) then p_avg_life_serv_cap_2_69 else p_avg_life_serv_cap_1_69 Hagamos el mismo experimento que en el punto anterior, partiendo del escenario2, vamos a aumentar la vida media del capital de servicios de 20 a 22, dejando igual todo lo demás. serv ice capital 67 serv cap deprec 68s avg life serv cap 69 p av g life serv cap 2 69 p av g life serv cap 1 69 t policy year 150 PEDRO MANUEL RETORTILLO ATIENZA 77 ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 Figura 3.50.- A la izquierda el escenario 2 y a la derecha, el mismo escenario, pero con un aumento del capital industrial de 14 a 15 años. El aumento espectacular de un (15/14) anual de la producción industrial, provoca un aumento en la contaminación que repercute 78 PEDRO MANUEL RETORTILLO ATIENZA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 3.3.14.3 Mejora de la eficiencia en la administración de servicios En el subsistema social también podemos mejorar la eficiencia en la administración de los servicios a partir del año elegido en t_policy_year. Figura 3.51.- Estructuras para mejorar la eficiencia en e servicios La producción de servicios es función del capital servicios y de su eficiencia en la gestión así como de la disponibilidad de mano de obra según las siguientes ecuaciones: service_output_70 = (service_capital_67*capacity_util_fr_83)/s_serv_cap_out_ratio_72 Por tanto la producción de servicios se ve afectada por s_serv_cap_out_ratio_72: s_serv_cap_out_ratio_72 = If (time > t_policy_year_150) then p_serv_cap_out_ratio_2_72 else p_serv_cap_out_ratio_1_72, Tanto p_serv_cap_out_ratio 1 como 2 están inicialmente igualados a 1, y dependen para entrar en juego de t_policy_year. Disminuyendo un 10% p_serv_cap_out_ratio_2_72 podemos ver qué efectos produce. Utilizamos de base el escenario2, como hicimos en el experimento anterior. service capital 67 serv cap inv est 66 serv cap deprec 68 service output 70 s serv cap out ratio 72 t policy year 150 p serv cap out ratio 1 72 p serv cap out ratio 2 72 ~ capacity util fr 83 PEDRO MANUEL RETORTILLO ATIENZA 85 ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 4. SIMULINK COMO POSIBILIDAD DE REPRESENTAR SISTEMAS DINÁMICOS . EL WORLD3 EN SIMULINK 86 PEDRO MANUEL RETORTILLO ATIENZA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 PEDRO MANUEL RETORTILLO ATIENZA 87 ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 4.1 ¿QUÉ ES SIMULINK? Simulink es una herramienta interactiva para modelar, simular y analizar sistemas dinámicos. Nos permite construir diagramas de bloque gráficos, evaluar el rendimiento del sistema y refinar sus diseños. Como una extensión de Matlab, Simulink añade muchas características específicas a los sistemas dinámicos, mientras conserva toda la funcionalidad del propósito general de Matlab. Así Simulink no es completamente un programa separado de Matlab, sino un anexo a él. El ambiente de Matlab está siempre disponible mientras se ejecuta una simulación en Simulink. Simulink tiene dos fases de uso: la definición del modelo y el análisis del modelo. La definición del modelo significa construir el modelo a partir de elementos básicos construidos previamente, tal como, integradores, bloques de ganancia o servomotores. El análisis del modelo significa realizar la simulación, linealización y determinar el punto de equilibrio de un modelo previamente definido. Para simplificar la definición del modelo Simulink usa diferentes clases de ventanas llamadas ventanas de diagramas de bloques. En estas ventanas se puede crear y editar un modelo gráficamente usando el ratón. Simulink usa un ambiente gráfico lo que hace sencillo la creación de los modelos de sistemas. Después de definir un modelo este puede ser analizado seleccionando una opción desde los menús de Simulink o entrando comandos desde la línea de comandos de Matlab. Simulink puede simular cualquier sistema que pueda ser definido por ecuaciones diferenciales continuas y ecuaciones en diferencias. Esto significa que se puede modelar sistemas continuos en el tiempo, discretos en el tiempo o sistemas híbridos. Simulink usa diagramas de bloques para representar sistemas dinámicos. Mediante una interfaz gráfica con el usuario se pueden arrastrar los componentes desde una librería de bloques existentes y luego interconectarlos mediante conectores y alambre. 88 PEDRO MANUEL RETORTILLO ATIENZA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 4.2 CONSTRUIR UN MODELO EN SIMULINK 4.2.1 Ventanas y Menús en Simulink Para comenzar SIMULINK, se debe arrancar primero MATLAB. En el indicador de MATLAB, se introduce la orden Simulink. El computador incluirá la ventana de órdenes de MATLAB y la ventana SIMULINK Block Library. La ventana SIMULINK Block Library visualiza los íconos de sus bibliotecas de bloque. Construye modelos copiando bloques de la biblioteca de bloques en una ventana de modelo. Cuando se ejecuta una simulación y se analizan sus resultados, se puede utilizar órdenes de MATLAB que se introducen desde la ventana de órdenes de MATLAB. SIMULINK utiliza ventanas separadas para visualizar una biblioteca de bloques, un modelo o la salida de una simulación gráfica. Estas ventanas no son ventanas de figura de MATHALAB y no se pueden manipular utilizando las órdenes del entorno gráfico de MATLAB. Los menús de SIMULINK aparecen cerca de la parte superior de cada ventana SIMULINK. Las órdenes del menú se aplican a los contenidos de esa ventana. Un error frecuente de los nuevos usuarios de SIMULINK es comenzar una simulación mientras el SIMULINK Block Library es la ventana activa. Hay que asegurarse de que la ventana del modelo es la ventana activa antes de comenzar una simulación. Para finalizar una sesión de SIMULINK se escoge Exit MATLAB en el menú File. 4.2.2 Construcción de un modelo Esta sección analiza las tareas que se llevan a cabo durante la construcción de un modelo. Para crear un nuevo modelo, se escoge la orden New en el menú File. Simulink crea una nueva ventana. Se puede mover la ventana de la misma forma que se hace con otras ventanas. Para editar el diagrama de un modelo existente, se debe hacer una de las dos acciones siguientes: • Escoger la orden Open en el menú File y especificar el archivo-M que describe el modelo que se desea editar. • Introducir el nombre del modelo en la ventana de orden de Matlab. Simulink crea una nueva ventana y visualiza ese modelo en la ventana. PEDRO MANUEL RETORTILLO ATIENZA 89 ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 4.2.3 Seleccionar objetos Muchas acciones de edición y construcción de modelos requieren que primero se seleccione uno o más bloques y líneas (objetos). 4.2.1.1 Selección de un objeto Para seleccionar un objeto, se sitúa el cursor encima del objeto y se pulsa el botón del ratón. Aparecen pequeñas asas en las esquinas del objeto. Por ejemplo, la figura que sigue muestra la selección de un bloque Sine Wave y de una línea: Figura 4.1.- Seleccionar un objeto Cuando selecciona un objeto pulsando encima de él, cualquier otro que lo estuviera deja de estarlo. 4.2.1.2 Selección de más de un objeto Puede seleccionar más de un objeto seleccionándolos uno a uno o todos a la vez si están próximos utilizando un recuadro que los englobe. 4.2.1.3 Selección de objetos de uno en uno Para seleccionar más de un objeto, haciéndolo de uno en uno, se debe mantener pulsada la tecla Shift y pulsar sobre cada objeto que se desea seleccionar. Para desactivar la selección de un objeto que está seleccionado, se pulsa otra vez sobre el mismo mientras se mantiene pulsada la tecla Shift. 4.2.1.4 Selección de objetos utilizando un cuadro de delimitación Una manera fácil de seleccionar más de un objeto en la misma área de la ventana es dibujar un cuadro de delimitación alrededor de los objetos. Para definir el cuadro de delimitación se debe hacer lo siguiente: • Se define la esquina de comienzo de un cuadro de delimitación posicionando el puntero en un ángulo del cuadro, a continuación se pulsa el botón del ratón. Figura 4.2.- Paso1 para seleccionar varios objetos • Luego se arrastra el puntero al ángulo opuesto del cuadro. Figura 4.3.- Paso2 para seleccionar varios objetos 90 PEDRO MANUEL RETORTILLO ATIENZA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 • Seguido se debe liberar el botón del ratón. Quedan seleccionados todos los bloques y líneas que están parcialmente encerrados por el cuadro de delimitación. Figura 4.4.- Paso 3 para seleccionar varios objetos 4.2.4 Manipulación de bloques • Se presentará cómo efectuar acciones útiles para construir modelos en los que intervienen bloques. • Copiar y mover bloques de una ventana a otra • Para copiar y mover bloques de una ventana a otra se deben hacer los siguientes pasos: • Abrir la biblioteca de bloques apropiada o la ventana del modelo fuente. • Arrastrar el bloque que se desea copiar en la ventana del modelo. • También se puede copiar bloques utilizando Copy y Paste en el menú Edit mediante los siguientes pasos: • Seleccionar el bloque que se desea copiar. • Escoger Copy en el menú Edit. • Seleccionar la ventana en el modelo de forma que sea la ventana activa. • Escoger Paste en el menú Edit. • Otra forma de copiar o mover bloques entre aplicaciones que sean compatibles, es empleando las órdenes Copy, Cut y Paste. • Mover bloques en un modelo • Para mover un solo bloque de un lugar a otro en una ventana de modelo, se de seleccionar y arrastrar a una nueva posición. • Para mover más de un bloque, incluyendo las líneas de conexión, se debe hacer lo siguiente: 4.2.4.1 Seleccionar los bloques y las líneas. • Arrastrar los bloques y las líneas seleccionadas a sus nuevas posiciones y liberar el botón del ratón. • Duplicar bloques en un modelo PEDRO MANUEL RETORTILLO ATIENZA 91 ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 La forma de duplicar bloques en un modelo depende del tipo de computador que se esté utilizando: • Windows: mantener pulsada la tecla Ctrl, con el botón izquierdo del ratón seleccionar el bloque y arrastrarlo a una nueva localización. También se puede seleccionar el bloque pulsando el botón derecho del ratón mientras el puntero se encuentra sobre el bloque y lo arrastra a una nueva posición. • Macintosh: mantener pulsada la tecla Crtl, seleccionar el bloque y arrastrarlo a una nueva localización. 4.2.4.2 Especificación de los parámetros del bloque Ciertos aspectos de una función de bloque se definen a través de sus parámetros. Se puede asignar valores a los parámetros de un bloque accediendo a su cuadro de diálogo. Haciendo doble clic, al bloque, se visualiza el cuadro de diálogo del bloque, que lista los parámetros y sus valores actuales. Se puede cambiar estos valores o aceptar los valores visualizados. • Suprimir bloques Para suprimir uno o más bloques, se debe seleccionar y pulsar la tecla Delete o escoger del menú Edit la opción Clear o Cut. La orden Cut escribe el bloque o los bloques en el portapapeles dejándolos disponibles para que se puedan pegar en un modelo. La utilización de la tecla Delete o la orden Clear no afecta a los contenidos del portapapeles. • Desconectar bloques Para desconectar un bloque del modelo sin suprimirlo, se debe mantener pulsada la tecla Shift y seleccionar y arrastrar el bloque desde su posición original en el modelo. • Cambiar la orientación de los bloques Hay varias órdenes que permiten cambiar la orientación de un bloque, éstas son:  La orden Rotate en el menú Options gira un bloque 90° en el sentido de las agujas de un reloj.  La orden Flip Horizontal (sistema Windows) o la orden Flip (sistema Macintosh) en el menú Options gira el bloque 180°.  La orden Orientation en el menú Style le permite seleccionar la orientación del bloque Left to Right, Right to Left, Up o Down. En la siguiente figura SIMULINK ordena los puertos después de cambiar la orientación de un bloque utilizando las órdenes Rotate y Flip. Los textos en los bloques indican su orientación. 92 PEDRO MANUEL RETORTILLO ATIENZA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 Figura 4.5.- Rotación de bloques • Redimensionar los bloques Para cambiar el tamaño de un bloque, se debe seleccionar y arrastrar cualquiera de sus asaderas de selección. El tamaño mínimo de un bloque es de cinco por cinco pixels. El tamaño máximo está limitado por el tamaño de la ventana. La forma del cursor refleja la esquina y la dirección en la que se está siendo arrastrada. Mientras el bloque está siendo redimensionado, un rectángulo punteado muestra el tamaño propuesto. • Manipulación de los nombres de los bloques Los nombres de bloques en un modelo deben ser únicos y deben contener al menos un carácter. Estos nombres aparecen debajo de los bloques si los puertos están en los laterales y a la derecha de los bloques si están en la parte superior o inferior. Puede cambiar los nombres de los bloques y sus localizaciones. • Cambiar los nombres de los bloques Se puede editar los nombres de los bloques de una de las tres formas:  Seleccionando el recuadro en el que se visualiza el nombre e introduciendo el nuevo.  Colocando el punto de inserción en el nombre e introduciendo el nuevo texto.  Arrastrando el ratón para seleccionar el trozo de texto a reemplazar e introduciendo el nuevo texto. Cuando se pulsa el puntero sobre otro bloque o se realiza cualquier otra acción, el nombre se acepta o se rechaza. Si intenta modificar el nombre de un bloque a un nombre que ya existe o a uno que no tiene caracteres, se visualiza un mensaje de error. PEDRO MANUEL RETORTILLO ATIENZA 93 ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 También se puede modificar las fuentes utilizadas en los nombres de los bloques seleccionando el bloque o los bloques y escogiendo un tipo fuente del submenú Fonts que está en el menú Style. • Cambiar la localización de un nombre de bloque Se puede cambiar la localización del nombre de un bloque eligiendo la opción Title que está en el menú Style:  Displayed, visualiza el nombre.  Hidden, no visualiza el nombre.  Top/Left coloca el nombre encima del bloque cuando su orientación en Left to Right o Right to Left o a la izquierda del bloque cuando su orientación es Up o Down.  Bottom/Right, coloca el nombre debajo del bloque cuando su orientación es Left to Right o Right to Left o a la derecha del bloque cuando su orientación es Up o Down.  Por ejemplo en la figura se muestra la posición de los nombres de bloque Top/Left. • Vectorización de los bloques Casi todos los bloques incorporados aceptan entradas escalares o vectoriales y le permiten especificar parámetros de uno u otro tipo. Para determinar qué líneas en un modelo llevan señales vectoriales, se elige la opción Wide Vector Lines en el menú Style, luego se dibuja las líneas que llevan vectores más gruesas que las que contienen escalares. Después de elegir esta opción y si ha cambiado el modelo, se debe actualizar explícitamente la visualización seleccionando la opción Update Diagram en el menú Style. Para comenzar la simulación también actualiza la visualización. • Expansión escalar de entradas y parámetros La expansión escalar es la conversión de un valor escalar en un vector de elementos idénticos. Se puede aplicar la expansión escalar a las entradas y parámetros de bloques.  Entradas: cuando se utilizan bloques que poseen más de un puerto de entrada, puede mezclar entradas vectoriales y escalares. Las entradas escalares se expanden en vectores que tienen la misma longitud que las entradas vectoriales. Por ejemplo, el bloque Sum muestra el resultado de expandir una entrada escalar para que concuerde el tamaño de una entrada vectorial al bloque.  Parámetros: se puede especificar los parámetros para bloques vectorizados como vectores o como escalares. Cuando se especifica parámetros, cada elemento se asocia con el vector de entrada correspondiente. Cuando se especifica parámetros escalares, se aplica la expansión escalar para convertirlos automáticamente en vectores del tamaño adecuado. Por ejemplo, la figura muestra el parámetro escalar (Gain) se expande para coincidir con el tamaño de la entrada al bloque, un vector de tres elementos. 94 PEDRO MANUEL RETORTILLO ATIENZA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 4.2.5 Manipulación de líneas Las líneas conectan la salida de un bloque a la entrada de otro bloque. Las líneas también conectan otras líneas a la entrada de un bloque. Pueden conectarse cualquier número de líneas a un puerto de salida, pero solamente se puede conectar una línea a cada puerto de entrada. (El bloque MUX es útil para combinar algunas líneas en una única línea vectorial). 4.2.5.1 Dibujar líneas entre bloques • Posicionar el cursor sobre el puerto de salida del primer bloque. No es necesario posicionar el cursor de forma precisa sobre el puerto. Figura 4.6.- Paso 1 para dibujar líneas entre bloques • Presionar y mantener pulsado el botón del ratón. El cursor cambia a una forma de cruz. Figura 4.7.- Paso 2 para dibujar líneas entre bloques • Arrastrar el puntero al puerto de entrada del segundo bloque. Se puede posicionar el cursor sobre o cerca del puerto o dentro del bloque. Si se coloca el cursor en el bloque, la línea se conecta al primer puerto de entrada disponible. Para conectar la línea a un puerto especifico, se debe posicionar el cursor sobre ese puerto antes de soltar el botón del ratón. Figura 4.8.- Paso 3 para dibujar líneas entre bloques • Soltar el botón del ratón. SIMULINK sustituye los símbolos de los puertos por una línea de conexión con una flecha que muestra la dirección del flujo de señal. Se puede crear líneas de conexión o desde la salida a la entrada o desde la entrada a la salida. En cualquier de los dos casos, la flecha se dibuja en el puerto de entrada apropiado y la señal es la misma. Figura 4.9.- Paso 4 para dibujar líneas entre bloques PEDRO MANUEL RETORTILLO ATIENZA 101 ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 Figura 4.20.- Seleccionar elementos de un subsistema. Cuando se suelta el botón del ratón, se seleccionan los bloques y todas las líneas de conexión.  Escoger Options, luego Group. SIMULINK reemplaza los bloques que están en el grupo por un único bloque subsystem. La figura muestra el modelo después de escoger la orden Group: Figura 4.21.- Agrupar elementos seleccionados en un subsistema. 102 PEDRO MANUEL RETORTILLO ATIENZA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 4.4 MODELAR ECUACIONES Uno de los temas más confusos para los nuevos usuarios de SIMULINK es cómo modelar ecuaciones. Algunos ejemplos ayudarán a comprender cómo modelarlas.  Conversión de grados centígrados en Fahrenheit Modelemos la ecuación que convierte grados centígrados a grados Fahrenheit: En primer lugar, consideremos los bloques que se necesitan para construir el modelo: • Un bloque Gain dela biblioteca Linear, para multiplicar la señal de entrada por 9/5 • Un bloque Constant de la biblioteca Sources, para definir una constante de 32 • Un bloque Sum de la biblioteca Linear, para sumar las dos cantidades • Un bloque Sine Wave de la biblioteca Sources, para introducir la señal • Un bloque Scope de la biblioteca Sinks, para visualizar la salida A continuación, reúna los bloques en la ventana de su modelo: Figura 4.22.- Ejemplo de creación de subsistemas. Paso 1. Se asignan valores a los bloques Gain y Constant abriendo cada uno de ellos (mediante una doble pulsación) e introduciendo los valores apropiados. Luego, pulsar el botón OK. Ajustar la amplitud del bloque Sine Wave a 10 para conseguir una mayor variación de temperatura. Ahora, se debe conectar los bloques. PEDRO MANUEL RETORTILLO ATIENZA 103 ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 Figura 4.23.- Ejemplo de creación de subsistemas. Paso 2. El bloque Sine Wave representa la temperatura en grados centígrados. El bloque Gain genera 915(Tc). Ese valor se suma a la constante 32 mediante el bloque Sum. La salida de ese bloque es la temperatura en grados Fahrenheit. Se debe abrir el bloque Scope para visualizar la salida. Se debe fijar la escala horizontal en algún pequeño valor de tiempo, por ejemplo 10 segundos. Luego, fijar la escala vertical de forma que se pueda visualizar todas las salidas - al menos 50. Manténgase abierto el bloque Scope. Se debe especificar los parámetros de simulación seleccionando Parameters en el menú Simulation. Especificar un tiempo de parada de 10 segundos y un tamaño de paso máximo de 0.1. Estos valores deberían ejecutar la simulación rápidamente. Ahora, se debe escoger Start en el menú Simulation para ejecutar la simulación.  Modelar un sistema continuo sencillo Modelemos la siguiente ecuación diferencial: x = -2x_ + u El bloque Integrator integra la entrada, dx/dt y produce x. Otros bloques necesitados en este modelo incluyen un bloque Gain y un bloque Sum. Para generar una onda cuadrada, se utiliza un bloque Signal Generator. Otra vez, se visualizará la salida empleando un bloque Scope. Se debe reunir los bloques y definir el valor de la ganancia del bloque Gain. Figura 4.24.- Ejemplo 2 de creación de subsistemas. 104 PEDRO MANUEL RETORTILLO ATIENZA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 En este modelo, para invertir la dirección del bloque Gain, se escoge Flip Horizontal en el menú Options. También, para crear la línea de la salida del bloque Integrator al bloque Gain se debe mantener pulsada la tecla Ctrl mientras se dibuja la línea. Posteriormente, conectar todos los bloques. Un concepto importante en este modelo es el bucle que incluye al bloque Sum, al bloque Integrator y al bloque Gain. En esta ecuación, x_ es la salida del bloque Integrator así como la entrada a los bloques que calculan x, sobre el cual se basa. Esta relación se implementa utilizando un bucle. El bloque Scope visualiza x_ en cada paso de tiempo. Para una simulación que dura 10 segundos y que el rango vertical del bloque Scope es de 1, la salida que resulta se muestra en la figura. Figura 4.25.- Ejemplo bloque scope.  Un ejercicio de construcción de un modelo Este ejemplo muestra cómo construir un modelo utilizando muchas de las órdenes y acciones que se utilizarán para desarrollar nuestros propios modelos. El modelo genera una onda sinusoidal utilizando un bloque Signal Generator. Modifica una copia de la forma de onda pasándola a través de un bloque Gain. Ambas señales, la original y la modificada, se combinan en una señal vectorial empleando un bloque Mux. Esa señal se visualiza utilizando un bloque Scope y enviándola a una variable del espacio de trabajo. El diagrama de bloques del modelo tiene el siguiente aspecto: PEDRO MANUEL RETORTILLO ATIENZA 105 ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 Figura 4.26.- Ejercicio de construcción de un modelo. Los bloques utilizados en este modelo, se obtienen de las bibliotecas siguientes: • Biblioteca Sources (para el bloque Signal Generator) • Biblioteca Linear (para el bloque Gain) • Biblioteca Connections (para el bloque Mux) • Biblioteca Sinks (para los bloques Scope y To Workspace) Primero, generar una nueva ventana de modelo seleccionando New en el menú File. Segundo, Abrir la biblioteca Sources para copiar el bloque Signal Generator. Para copiar un bloque desde la biblioteca de bloques, se arrastra dentro de la ventana del modelo. Para hacer esto, se posiciona el cursor sobre el bloque Signal Generator, a continuación se presiona el botón del ratón, manteniéndolo en esa posición. El cursor cambiará. Después, se arrastra el bloque dentro de la ventana del modelo. Cuando se mueve el bloque, se puede observar que el recuadro del bloque y su nombre se mueven con el puntero. Cuando el puntero se encuentre dentro de la ventana del modelo, se debe soltar el botón del ratón. Una copia del bloque Signal Generator se encontrará en la ventana del modelo. De la misma forma, se deben copiar el resto de los bloques dentro de la ventana del modelo. Se puede mover un bloque, desde un lugar a otro dentro de la ventana del modelo, utilizando la misma técnica de arrastre que se empleó para copiar el bloque. Cabe destacar que el bloque Mux tiene tres puertos de entradas pero sólo dos señales de entrada. Para ajustar el número de puertos de entrada, se debe abrir el bloque Mux dando un doble clic encima de él. SIMULINK visualiza su cuadro de diálogo. Cambia el valor del parámetro Number of inputs a 2, a continuación se pulsa el botón OK. SIMULINK ajusta el número de puertos de entrada. Con todos los bloques ya copiados en la ventana del modelo, el modelo debería tener un aspecto parecido al siguiente: Ahora se deben conectar los bloques. Si se examinan los íconos de los bloques, se verá un signo en forma de ángulo a la derecha del bloque Signal Generator y dos a la 106 PEDRO MANUEL RETORTILLO ATIENZA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 izquierda del bloque Mux. El símbolo > apuntando hacia fuera de un bloque es un puerto de salida; si el símbolo apunta hacia el bloque es un puerto de entrada. Cuando los bloques se conectan, los símbolos del puerto desparecen. Puerto de salida Figura 4.27.- Bloque mux 1 Puertos de entrada A continuación se conecta el bloque Signal Generator al bloque Mux. Posicionando el puntero sobre el puerto de salida en el lado derecho del bloque Signal Generator. Figura 4.28.- Bloque mux 2 Luego se presiona y se mantiene pulsado el botón del ratón. Se observa que el botón cambia a una forma de una cruz. Figura 4.29.- Bloque mux 3 Manteniendo pulsado el botón del ratón, se debe mover el cursor al puerto de entrada superior del bloque Mux o sobre el propio bloque Mux. Obsérvese que el cursor mantiene su forma de cruz y que una línea conecta el bloque Signal Generator con el puerto de entrada superior del bloque Mux. PEDRO MANUEL RETORTILLO ATIENZA 107 ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 Figura 4.29.- Bloque mux 4 Luego, se libera el botón del ratón. Los bloques se conectan. Figura 4.30.- Bloque mux 5 En el modelo que hay al comienzo se observa que la mayoría de las líneas conectan puertos de salida de bloques a puertos de entrada de otros bloques. Sin embargo, dos líneas conectan líneas a puertos de entrada de otros bloques. Estas líneas conectan la salida de Signal Generator al bloque Gain, y la salida Mux al bloque To Workspace y llevan la misma señal que las líneas desde las cuales se originan. Dibujar esta clase de línea es ligeramente diferente a dibujar la línea que se acaba de dibujar. Para unir una conexión a una línea ya existente, se deben seguir estos pasos. En primer lugar, posicionar el cursor sobre la línea que hay entre los bloques Signal Generator y Mux. Figura 4.31.- Bloque mux 5 Mientras se mantiene pulsado el botón del ratón, se debe presionar y mantener también pulsada la tecla ctrl. Luego, se arrastra el cursor al puerto de entrada del bloque Gain o sobre el propio bloque Gain. 108 PEDRO MANUEL RETORTILLO ATIENZA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 Figura 4.32.- Bloque mux 6 Ahora, se libera el botón del ratón. SIMULINK dibuja una línea entre el punto de comienzo y el puerto de entrada del bloque gain. Figura 4.33.- Bloque mux 7 De forma análoga se debe dibujar una línea similar entre la línea de salida del bloque Mux y el bloque To Workspace. Se debe acabar de realizar las conexiones. Cuando se ha finalizado de conectar los bloques, es necesario ajustar algunos de sus parámetros. En primer lugar, se debe abrir el bloque Gain y cambie el parámetro Gain a 2. A continuación, se debe abrir el bloque To Workspace y modificar el parámetro Variable name a testmtx. Éste es el nombre de la variable del espacio de trabajo que mantendrá la salida de la simulación. La salida por defecto del bloque signal generator es una onda sinusoidal con una amplitud de 1. Como esto es aceptable para este ejercicio, no hay necesidad de modificar ningún parámetro para este bloque. Se debe ejecute la simulación durante 10 segundos. Primero, se debe ajustar los parámetros de simulación seleccionando Parameters del menú Simulation. En el cuadro de diálogo que aparece, ajuste el Stop Time a 10 y cambie el Maximum Step Size a 0.1. A continuación se debe abrir el bloque Scope para visualizar la salida de la simulación. Antes de que comience la simulación, se debe ajustar los parámetros de forma que se pueda visualizar la simulación completa. Se modifican los parámetros Horizontal Range (tiempo) a 10 (segundos) y Vertical Range (para esta simulación, corresponde a la amplitud de la onda sinusoidal) a 3. Manteniendo abierta la ventana del bloque Scope se debe ejecutar la simulación. Se escoja Start en el menú Simulation y se observan las trazas del vector de entrada al bloque Scope. Para guardar este modelo, se selecciona Save en el menú File y se especifica el nombre y la localización del archivo-M que describe el modelo. Para finalizar SIMULINK y MATLAB se debe escoja Exit MATLAB en el menú File. PEDRO MANUEL RETORTILLO ATIENZA 109 ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3  Guardar el modelo o Se escoge la orden save o save as en el menú File. Simulink guarda el modelo generando un archivo.M que contiene las ordenes de MATLAB necesarias para recrear el modelo. o Si se está guardando por primera vez, se debe asignar un nombre y una localización al archivo.M, y luego pulsar OK para guardar.  Simulación y Análisis  Cómo trabaja Simulink Cada bloque mediante un modelo de Simulink tiene estas características generales: Un conjunto de entradas u, un conjunto de salidas y y un conjunto de estados x. El vector de estado puede constar de estados continuos, estados discretos o una combinación de ambos. La simulación consta de dos fases: inicialización y simulación. Algunas acciones tienen lugar durante la fase de inicialización. En primer lugar, los parámetros del bloque se pasan a MATLAB para su evolución. Los valores numéricos resultantes se utilizan como los parámetros actuales de bloque. En segundo lugar, la jerarquía del modelo se reduce a su nivel inferior. Es decir, cada subsistema se sustituye por los bloques que contiene. En tercer lugar, los bloques se disponen en el orden en que se necesita que se actualicen. El algoritmo de ordenación construye una lista tal que cualquier bloque con alimentación directa no se actualiza hasta que se calculan los bloques que excitan sus entradas. Es durante este paso cuando se detectan los lazos algebraicos. Finalmente, se comprueban las conexiones entre bloques para asegurar que la longitud del vector de salida de cada bloque coincide con la entrada que esperan los bloques a los que se conecta. Ahora ya la simulación está ya preparada para poderse ejecutar.  Lazos algebraicos Lazos algebraicos o implícitos ocurren cuando dos o más bloques con alimentación directa de sus entradas forman un lazo de realimentación. Cuando esto ocurre, SIMULINK debe efectuar iteraciones en cada paso para determinar si existe una solución a este problema. Ejemplos de bloques con alimentación directa son: • Bloques Gain • La mayoría de los boques no lineales • Bloques Transfer Fen, cuando el numerador y el denominador tienen el mismo orden • Bloques Zero-Pole, cuando hay tantos ceros como polos • Bloque State-Space, cuando hay una matriz D distinta de cero 110 PEDRO MANUEL RETORTILLO ATIENZA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 SIMULINK informa de un error cuando no puede resolver un lazo algebraico en 200 iteraciones de una rutina de Newton-Raphson. Para romper lazos algebraicos en lugar de permitir que SIMULINK que los resuelva de forma iterativa, inserte un bloque Memory entre dos bloque cualesquiera incluidos en el lazo.  Simulación Se puede ejecutar una simulación seleccionando órdenes desde los menús de SIMULINK o introduciéndolas desde la ventana de órdenes de MATLAB. • Seleccionar órdenes desde los menús es rápido de aprender. Se puede visualizar gráficamente la conducta del sistema con bloque tipo scope. • La introducción de órdenes de simulación y análisis desde la ventana de órdenes de MATLAB o desde los propios programas le permite visualizar los efectos de cambiar los bloques o parámetros de integración.  Parámetros de Simulación Antes de que se ejecute una simulación, se debe especificar los parámetros de simulación y elegir el método de integración. Los parámetros de simulación incluyen: • Tiempo de comienzo y finalización • Tamaño del paso mínimo • Tamaño del paso máximo • Tolerancia o error relativo • Variables de retorno Cuando se ejecuta la simulación utilizando órdenes del menú, se debe asignar los parámetros de simulación seleccionando Parameters en el menú Simulation, después selecciona un método de integración y rellenar los parámetros en el cuadro de dialogo de Control Panel(Windows).  Tiempos de comienzo y terminación Los parámetros Star Time y Stop Time especifican los valores de t en los que la simulación comienza y termina. El tiempo de simulación y el tiempo del reloj de pared no son iguales. La cantidad de tiempo que toma ejecutar una simulación depende de muchos factores, entre los que se incluyen la complejidad del modelo, los tamaños de paso mínimo y máximo y la velocidad del reloj del computador.  Tamaño de paso mínimo El parámetro Minimun Step Size es el tamaño de paso utilizado al comienzo de una simulación. Los integradores no emplean un tamaño de paso por debajo de este valor cuando generan un punto de salida a menos que el sistema contenga bloques discretos con períodos de muestreo más pequeños que el tamaño de paso mínimo. Un punto de salida es un punto generado en un bloque tipo sumidero (sink), tales como los bloques Scope o To PEDRO MANUEL RETORTILLO ATIENZA 117 ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 Clock Visualiza y proporciona el tiempo de simulación Constant Genera un valor constante Digital Clock Genera tiempo de simulación en el intervalo de muestreo especificado From File Lee datos de un archivo From Workspace Lee datos de una matriz definida en el espacio de trabajo Pulse Generator Genera pulsos a intervalos regulares Random Number Genera números aleatorios distribuidos normalmente Repeating Sequence Genera una señal arbitraria repetible regularmente Signal Generator Genera diferentes formas de ondas Sine Wave Genera una onda sinusoidal Step Input Genera una función en salto La biblioteca Sinks (Sumidero) incluye bloques que visualizan o escriben su salida. La tabla que se muestra a continuación describe los bloques de la biblioteca Sinks. Nombre del bloque Objetivo Auto-Scale Graph Scope Visualiza señales en ventanas de figuras de MATLAB autoescaladas Graph Scope Visualiza señales utilizando la ventana de figuras de MATLAB Hit Crossing Aumenta el número de pasos de simulación en tomo a un valor especificado. Scope Visualiza señales durante la simulación Stop Simulation Para la simulación cuando la entrada es distinta de cero To File Escribe datos en un archivo 118 PEDRO MANUEL RETORTILLO ATIENZA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 To Workspace Escribe datos en una matriz en el espacio de trabajo XY Graph Scope Visualiza gráficas X-Y de señales en la ventana de figuras de MATLAB La biblioteca Discrete (Discretos) contiene bloques que describen componentes de tiempo-discreto. La tabla que se muestra a continuación describe los bloques de la biblioteca Discrete. Nombre del bloque Objetivo Discrete-Time Integrator Realiza la integración en tiempo discreto de una señal Discrete-Time Limited Integrator Realiza la integración en tiempo discreto de una señal con límites. Discrete State-Space Implementa un sistema discreto en el espacio de estados Discrete Transfer Fcn Implementa una función de transferencia discreta Discrete Zero-Pole Función de transferencia discreta en términos de polos y ceros Filter Implementa filtros IIR y FIR First-Order Hold Implementa un muestreador-retenedor de orden uno Unit Delay Retarda una señal en un período de muestreo Zero-Order Hold Retenedor de orden cero de un período de muestreo La biblioteca Linear (Lineal) contiene bloques que describen funciones lineales estándar. La tabla que se muestra a continuación describe los bloques que contiene la biblioteca Linear. Nombre del bloque Objetivo Derivative Genera la derivada respecto al tiempo de la entrada PEDRO MANUEL RETORTILLO ATIENZA 119 ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 Gain Multiplica la entrada al bloque Inner Product Genera el producto escalar Integrator Integra una señal Matrix Gain Multiplica la entrada por una matriz Slider Gain Varía una ganancia escalar utilizando una corredera State-Space Implementa un sistema lineal en el espacio de estados Sum Genera la suma de las entradas Transfer Fcn Implementa una función de transferencia lineal Zero-Pole Función de transferencia especificada en términos de polos y ceros La biblioteca Nonlinear (No-lineal) contiene bloques que describen funciones no lineales estándar. La tabla que se muestra a continuación describe los bloques de la biblioteca Nonlinear. Nombre del bloque Objetivo Abs Genera el valor absoluto de la entrada Backlash Modela la conducta de un sistema con huelgo Combinatorial Logic Implementa una tabla de verdad Coulombic Friction Discontinuidad en cero con cualquier valor de ganacia lineal Dead Zone Proporciona una región de salida cero Fcn Aplica una expresión especificada a la entrada Limited Integrator Integra dentro de límites especificados Logical Operator Realiza operaciones lógicas especificadas sobre las entradas Look-Up Table Realiza una transformación lineal a tramos de la entrada 120 PEDRO MANUEL RETORTILLO ATIENZA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 MATLAB Fcn Aplica una función de MATLAB a la entrada Memory Saca la entrada al bloque en el paso de integración previo Product Multiplica las entradas Quantizer Discretiza la entrada en un intervalo especificado Rate Limiter Limita la velocidad de cambio de una señal Relational Operation Realiza las operaciones relacionales especificadas sobre la entrada Relay Conmuta la salida entre dos valores Reset Integrator Reinicializa los estados del integrador durante la simulación Saturation Limita el valor de una señal Sign Devuelve el signo de la entrada Switch Conmuta entre dos entradas Transpon Delay Retarda la entrada en una cantidad dada de tiempo 2-D Look-Up Table Realiza una transformación lineal a tramos de dos entradas Variable Transpon Delay Retarda la entrada una cantidad variable de tiempo La biblioteca Connections (Conexiones) contiene bloques que permiten multiplexación y de multiplexación, implementa Entradas/Salidas externas y crea subsistemas. La tabla que se muestra a continuación describe los bloques de la biblioteca Connections. Nombre del bloque Objetivo Demux Separa una señal vectorial en sus señales de salida Inport Proporciona un enlace a una entrada externa para linealización PEDRO MANUEL RETORTILLO ATIENZA 121 ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 Mux Combina algunas líneas de entrada en una línea vectorial Outport Proporciona un enlace a una salida externa para linealización Subsystem Representa un sistema dentro de otro sistema 122 PEDRO MANUEL RETORTILLO ATIENZA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 4.5 PRIMEROS PASOS EN LA TRADUCCIÓN DE ESTRUCTURAS DE DINÁMICA DE SISTEMAS Empecemos por el bloque más característico la estructura Figura 4.39.- Estructura básica Flujo de entrada-> Stock->Flujo de salida Deberemos elegir un nivel y dos flujos de las bibliotecas de Simulink. 4.5.1 El stock, nivel Integrator: Integrador continuo de la señal de entrada Figura 4.40.- Seleccionar un nivel en Simulink. 4.5.2 Flujos, Flows Los flujos de entrada y salida a un nivel se componen con la ayuda de un operador matemático que introduce el balance de pérdida ganancia en el nivel. En el ejemplo, x52 industrial capital es el nivel, x55 es un flujo de entrada, y x53 es un flujo de salida. industrial capital 52 ind cap deprec 53 ind cap invest 55 PEDRO MANUEL RETORTILLO ATIENZA 123 ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 Figura 4.41.- Estructura equivalente en Simulink a la estructura 4.40 de Stella. 4.5.3 Funciones Vamos a complicar ahora un poco más la estructura añadiendo funciones a los flujos: Figura 4.42.- Ejemplo de función del subsistema industrial. Previamente hay que definir un vector de 1 x n, siendo n el nº de los valores con los que se quiere operar. industrial capital 52 ind cap deprec 53 ind cap invest 55 s avg lif e ind cap 54 fioa ind 56 s f ioa cons 57 s fioa agr 93 t policy y ear 150 p av g lif e ind cap 1 54 p av g life ind cap 2 54 s fioa serv 63 En Simulink, la operación de restar la salida a la entrada se hace antes de la entrada en el integrador, fioa_ind_56 = 1- s_fioa_serv_63 - s_fioa_cons_57 – s_fioa_agr_93 124 PEDRO MANUEL RETORTILLO ATIENZA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 Figura 4.43.- Insertar una función en Simulik. 4.5.4 Constantes Constante: Salida de la constante especificada por el parámetro "valor constante Figura 4.44.- Insertar una constante en Simulik. Haciendo doble click sobre el icono, se nos abre el siguiente diálogo: Como fioa 56 depende de tres variables, antes del bloque función, colocamos un vector de tres entradas que recoja la señal de los tres orígenes PEDRO MANUEL RETORTILLO ATIENZA 125 ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 Figura 4.45.- Asignar un valor a una constante en Simulik. Si 'valor constante es un vector y' Interpretar parámetros vectoriales como 1-D 'está activada, el valor constante tratar como una matriz de 1-D. De lo contrario, la producción de una matriz con las mismas dimensiones que el valor constante. 126 PEDRO MANUEL RETORTILLO ATIENZA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 4.6 ELEMENTOS CARACTERÍSTICOS COMPLEJOS 4.6.1 Construcción de una tabla en Simulink Para construir la tabla x79 jobs per hect. en simuworld3 tenemos que conocer los valores los valores en worl3-2003 Abrimos la función en Stella haciendo doble click en el icono y copiamos los valores de agr_inp per Hect 101 de la ventana Graphical Function de Stella en el bloque de texto vector of input values de la ventana de Block Parameters de Simulink Figura 4.46.- Importante seleccionar la opción “use end values” para prevenir divisiones por cero. Importante seleccionar la opción Use end values para prevenir divisiones por cero PEDRO MANUEL RETORTILLO ATIENZA 133 ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 5 CONSTRUCCIÓN DEL WORLD3 EN SIMULINK 134 PEDRO MANUEL RETORTILLO ATIENZA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 PEDRO MANUEL RETORTILLO ATIENZA 135 ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 Vamos a construir el World3 en Simulink. Crearemos un nuevo modelo al que llamaremos simuworld3.mdl, los pasos a dar son los siguientes: 1. Especificaremos los mismos parámetros de simulación en ambos programas 2. Haremos un estudio de la Jerarquía de sistemas y subsistemas del World 3 en Stella. 3. Definiremos y segmentaremos los esquemas en Stella, definiendo las entradas y salidas de cada subsistema así como el nivel de profundidad o número de subsistemas que a su vez contiene cada subsistema. Para cada subsistema, definiremos un subsistema nuevo en su interior por cada stock. Hemos reconocido 15 subsistemas 4. Crearemos en Simulink los mismos subsistemas que hemos reconocido en Stella. 5. Con el World 3 en Stella haremos 15 modelos independientes. Las variables procedentes de otros subsistemas las cambiaremos por valores constantes, para que puedan funcionar de forma autónoma. 6. Uno a uno, iremos traduciendo cada subsistema a Simulink. 7. Después de cada traducción, haremos correr ambas versiones de cada subsistema y calibraremos los resultados, de Stella y Simulink para ver que dan los mismos resultados y así validar la traducción. 8. A medida que vayamos traduciendo subsistemas, iremos agrupando algunos de ellos para calibrarlos en conjunto. 9. Para una mejor comprensión del modelo, empezaremos los primeros experimentos sobre subsistemas agrupados. Utilizaremos los análisis de sensibilidad con el modelo industrial y el de los recursos. 10. Con todos los subsistemas traducidos, procederemos a enlazar todos los subsistemas. 11. Con todos los subsistemas enlazados procederemos a calibrar el conjunto intentando reproducir los escenarios 2 (bussiness as usual) el nº 6 (sólo soluciones tecnológicas) y el 12 (mundo estabilizado). 12. Finalmente, con el cuadro de resumen de escenarios presentado en la tabla 3.4.1 construiremos un gran subsistema que englobe los 15 subsistemas y le pondremos las entradas y salidas necesarias para reproducir los escenarios de los libros de los límites del crecimiento más las que consideremos necesarias para hacer los experimentos deseados. Con estos doce pasos cumplidos cerramos el capítulo de traducción a Simulink y ya podemos empezar los experimentos en el siguiente capítulo. 136 PEDRO MANUEL RETORTILLO ATIENZA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 5.1 PREPARAR LOS PARÁMETROS DE SIMULACIÓN En los parámetros de Simulación debemos decirle al programa de simulación que utilicemos el año de comienzo y el de finalización de la simulación, el paso de integración y el método. Para ello, veremos qué parámetros vienen configurados en la versión de Stella y los pondremos igual en Simulink. Empecemos por abrir este cuadro de diálogo en Stella: En el menú Run, elegimos Run Specs y se nos presenta el siguiente diálogo: Figura 5.1.- Configuración de parámetros de simulación en Stella Ahora vamos a configurar Simulink de la misma guisa, para ello vamos al menú Simulations y allí elegimos configuration parámeters y vamos a la siguiente pantalla: PEDRO MANUEL RETORTILLO ATIENZA 137 ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 Figura 5.2.- Configuración de parámetros de simulación en Simulink, hemos recortado un poco la pantalla para seleccionar sólo lo que nos afecta para este trabajo Una vez configurados los parámetros de simulación, tendremos que hacer bastantes ficheros hasta llegar al Simuworld3.mdl definitivo. Por un lado haremos los 15 subsistemas, cada uno será un fichero diferente. Luego, cuando agrupemos varios subsistemas en uno sólo, también haremos otro fichero para esos subsistemas agrupados 138 PEDRO MANUEL RETORTILLO ATIENZA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 5.2 ESTUDIO DE LAS JERARQUÍAS DEL WORLD3-2003 EN ESTELLA. Una primera aproximación al modelo world3-2003 permite diferenciar 15 subsistemas interconectados. Cada subsistema tiene unos orígenes bien definidos. y controla una parte de la actividad productiva mundial. Las fuentes de datos que alimentan cada subsistema pueden originarse en el propio subsistema (endógenas) o proceder de otro subsistema. Las variables procedentes de otros subsistemas están dibujadas en trazo punteado, mientras que las constantes iniciales están dibujadas en trazo continuo. La mayoría de los subsistemas giran en torno a un nivel o a una o varias cadenas de niveles. No obstante, también hay subsistemas que no contienen esta estructura. A su vez estos 15 subsistemas se pueden incluir en un gran subsistema global. Para construir el SimuWorl3 en Simulink es preciso definir un criterio de niveles: El primer nivel va a ser el nivel global que abarca todos los subsistemas. A este nivel se conectarán todas las entradas con las que queramos operar o modificar desde el código. También sacaremos de este subsistema todas las variables que queramos analizar con ficheros m-file. El segundo nivel será el que contenga todos los grandes subsistemas. Nº de Subsistemas = 15. Los subsistemas se conectan entre sí. A la hora de analizar un subsistema para reescribirlo en Simulink lo primero es contar, numerar y nombrar las entradas y las salidas. En la tabla 5.1 hemos preparado este primer análisis. Los siguientes niveles que se encuentra dentro de los subsistemas pueden ser simples o complejos. Los simples no contienen más subsistemas como por ejemplo los bloques if o los retrasos. Los complejos pueden tener a su vez varios niveles de subsistemas. En el World3, el subsistema que tiene mayores niveles de profundidad y complejidad es el food_production, con 4 niveles de profundidad. PEDRO MANUEL RETORTILLO ATIENZA 139 ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 5.3 DEFINICIÓN Y SEGMENTADO DE SUBSISTEMAS 5.3.1 Nivel 1 Definimos un subsistema con x entradas e y salidas y otro subsistema para mandar el time al workespace. Los nº entradas y salidas de momento no importan, las iremos definiendo a medida que vayamos necesitándolas al programar las simulaciones con el código m-file. Figura 5.3.- Vista del nivel principal de una aplicación en Simulik: Entradas->subsistema->salidas y time->workespace 140 PEDRO MANUEL RETORTILLO ATIENZA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 5.3.2 Nivel 2 Vamos a fragmentar el modelo en 15 subsistemas. Cada uno gira alrededor de uno o varios niveles o se agrupan para generar una salida función de otras que pueden estar en otros subsistemas. Figura 5.4.- World3-03 segmentado en sus 15 subsistemas 1º Localizamos las entradas procedentes de otros subsistemas en Stella que son fácilmente localizables por estar representads con un trazo punteado, las salidas se van definiendo en los subsistemas precedentes hasta cerrar el circulo. El nivel de profundidad viene definido por el nº de niveles que contiene el subsistema. Cada bloque if o cada bloque smooth suponen nuevos niveles de profundidad. Subsistem IdSub Description Total Population Sub1 Población Total del Planeta Population Age Sub2 Población Total del Planeta por edades Human Fertility Sub3 Tamaño de la familia Life Expectancy Sub4 Esperanza de Vida Jobs Sub5 Empleos, Utilización Población Activa. PEDRO MANUEL RETORTILLO ATIENZA 141 ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 Services Sub6 Producción de Servicios Industrial Sub7 Producción Industrial Non Renovable Sub8 Recursos no Renovables Pollution Sub9 Contaminación Land Fertility Sub10 Fertilidad de la Tierra Food Production Sub11 Producción de Alimentos Ecological Footprint Sub12 Huella Ecológica Human Welfare Sub13 Nivel de Bienestar Cons Ind pc Sub14 Consumo Industrial per capita Poll Intens Sub15 Intensidad de la Polución Tabla 5.1.- Definición de los 15 subsistemas Con este análisis previo ya podemos dibujar los 15 subsistemas con sus correspondientes entradas y salidas. Figura 5.5.- World3-03 segmentado en sus 15 subsistemas en su versión Simulink 142 PEDRO MANUEL RETORTILLO ATIENZA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 PEDRO MANUEL RETORTILLO ATIENZA 245 ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 val_corr3(tt)=correlation_3(1,2); val_corr4(tt)=correlation_4(1,2); val_corr5(tt)=correlation_5(1,2); val_corr6(tt)=correlation_6(1,2); end end plot(time, val_corr1,'g',time, val_corr2,'k--', time, val_corr3,'r',time, val_corr4,'b--',time, val_corr5,'m',time, val_corr6,'y--' ); hold on grid on title('Corrcoef: Verde->x54, Negro->t pol gen, Rojo->Limit consumo, Azul-> t equil , Magenta->NRCM, Amarillo->tfct'); % Add title and axis labels xlabel('Time'); ylabel('Correlations'); 246 PEDRO MANUEL RETORTILLO ATIENZA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 9.4 CÓDIGO4. Trazado de un escenario clear %Ponemos todos los tiempos en 4000 para la simulacion del escenario1 y los %vamos cambiando según el escenario que queramos recrear t_policy_year=[4000]; t_air_poll_time=[4000]; t_land_fert_time=[4000]; t_fcaor_time=[4000]; t_zero_pop_grow_time=[4000]; t_ind_equil_time=[4000]; t_fert_eff_time=[4000]; %inicialmente los retrasos son de 20 años in_TDD=[20]; %Parámetros que cambiamos en las políticas nr_resources=[1e12]; p_avg_life_agr_inp=[2]; chg_mlt_POLGM=[0]; chg_mlt_LYCM=[0]; chg_mlt_NRCM=[0]; des_fam_size=[2]; ind_out_pc_des=[400]; p_avg_life_ind_cap=[14]; p_avg_life_serv_cap=[20]; p_serv_cap_out_ratio=[2]; %x29 se usa para comparar los recursos restantes con los recursos iniciales x29=nr_resources; sim('simuworld3'); figure plot(time, population_1/1.2e10,'k',time, food/6e12,'g', time, industrial_output/4e12,'b',time, ppoll_index/40,'r',time, nr_resources/2e12,'y'); AXIS([1900 2100 0 1]) TITLE('State of world') %-- figure plot(time, food_pc/1000,'g',time, cons_ind_out_pc/250,'b', time, serv_out_pc/1000,'m',time, life_expectancy/90,'y'); AXIS([1900 2100 0 1]) TITLE('Material Standard') grid on %-- figure plot(time, HEF/4,'r',time, HWI/1,'g'); AXIS([1900 2100 0 1]) TITLE('Welfare, Footprint') grid on %-- figure PEDRO MANUEL RETORTILLO ATIENZA 247 ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 plot(time, nr_res_use_rate/2.4e10,'r',time, ppoll_gen_rt/1.2e9,'b',time, land_fert_degr/100,'m',time, land_erosion_rt/4e7,'g',time, land_rem_urb_ind_use/4e7,'y'); AXIS([1900 2100 0 1]) TITLE('Withdrawals from environment') grid on %-- figure plot(time, s_land_yield_fact/4,'g',time, s_nr_res_use_fact/1,'m',time, s_ppoll_gen_fact/1,'r',time, s_ind_cap_out_ratio/6,'b'); AXIS([1900 2100 0 1]) TITLE('Technology') grid on %-- figure plot(time, res_intens/0.01,'m',time, poll_intens_ind/2e-4,'r',time, land_yield/6000,'g',time, fert_cont_eff/1,'y',time, s_ind_cap_out_ratio/6,'b'); AXIS([1900 2100 0 1]) TITLE('Effects of Technology') grid on %-- figure plot(time, land_fertility/600,'m',time, agr_inp_per_hect/200,'r',time, land_yield/4000,'g',time, s_yield_mlt_air_poll/1,'y',time, lifet_mlt_food/2,'b'); AXIS([1900 2100 0 1]) TITLE('Agriculture') grid on %-- figure plot(time, fioa_ind/0.44,'b',time, s_fioa_agr/0.44,'g',time, s_fioa_cons/0.44,'m',time, s_fioa_serv/0.44,'k',time, s_fr_cap_al_obt_res/1,'y'); AXIS([1900 2100 0 1]) TITLE('Allocation of output') grid on %------ d=[time, HEF, HWI] xlswrite('simuworld3.xls', d, 'Datos', 'A1') 248 PEDRO MANUEL RETORTILLO ATIENZA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 9.5 CÓDIGO5. Varias simulaciones Código para lanzar varias simulaciones a la vez. Nos genera todos los escenarios a la vez y nos implementa también políticas no desarrolladas en ninguno de los escenarios clear clf %Ponemos todos los tiempos en 1975 y generamos 50 nºs aleatorios entre 1975 %y 2025 t_policy_year_init=[1975]; t_air_poll_time_init=[1975]; t_land_fert_time_init=[1975]; t_fcaor_time_init=[1975]; t_zero_pop_grow_time_init=[1975]; t_ind_equil_time_init=[1975]; t_fert_eff_time_init=[1975]; %inicialmente los retrasos son de 5 años y los ampliamos hasta 20 in_TDD_init=[5]; %Parámetros que cambiamos en las políticas, empezamos por el rango más bajo nr_resources_init=[1e12]; p_avg_life_agr_inp_init=[1]; chg_mlt_POLGM_init=[-0.06]; chg_mlt_LYCM_init=[0]; chg_mlt_NRCM_init=[-0.06]; des_fam_size_init=[1]; ind_out_pc_des_init=[350]; p_avg_life_ind_cap_init=[12]; p_avg_life_serv_cap_init=[18]; p_serv_cap_out_ratio_init=[0.5]; kk=1; for kk=1:25 rand('state',sum(100*clock)) %Modificamos los años de las políticas t_policy_year=t_policy_year_init+50*rand t_air_poll_time=t_air_poll_time_init+50*rand t_land_fert_time=t_land_fert_time_init+50*rand t_fcaor_time=t_fcaor_time_init+50*rand t_zero_pop_grow_time=t_zero_pop_grow_time_init+50*rand t_ind_equil_time=t_ind_equil_time_init+50*rand t_fert_eff_time=t_fert_eff_time_init+50*rand in_TDD=in_TDD_init+15*rand %Modificamos ahora los parámetros de las políticas %nr_resources va desde 1e12 a 2e12 nr_resources=nr_resources_init*(1+rand) %p_avg_life_agr_in va desde 1 a 3 p_avg_life_agr_inp=p_avg_life_agr_inp_init*(1+2*rand) %chg_mlt_POLGM de -0.06 a 0 PEDRO MANUEL RETORTILLO ATIENZA 249 ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 chg_mlt_POLGM=chg_mlt_POLGM_init+0.06*rand %chg_mlt_LYCM de 0 a 0.04 chg_mlt_LYCM=chg_mlt_LYCM_init+0.04*rand %chg_mlt_NRCM de -0.06 a 0 chg_mlt_NRCM=chg_mlt_NRCM_init+0.06*rand %des_fam_size de 1 a 3 des_fam_size=des_fam_size_init*(1+2*rand) %ind_out_pc_des de 350 a 700 ind_out_pc_des=ind_out_pc_des_init+350*rand %p_avg_life_ind_cap de 12 a 16 p_avg_life_ind_cap=p_avg_life_ind_cap_init+4*rand %p_avg_life_ind_cap de 18 a 22 p_avg_life_serv_cap=p_avg_life_serv_cap_init+4*rand %p_avg_life_serv_cap de 0.5 a 1.5 p_serv_cap_out_ratio=p_serv_cap_out_ratio_init+rand %x29 se usa para comparar los recursos restantes con los recursos %iniciales x29=nr_resources %Y ahora lanzamos la simulación sim('simuworld3'); subplot(2,1,1),plot(time, population_1/1.2e10,'k',time, food/6e12,'g', time, industrial_output/4e12,'b',time, ppoll_index/40,'r',time, nr_resources/2e12,'y'); AXIS([1900 2100 0 1]) TITLE('State of world') legend('population 1/1.2e10','food/6e12','industrial output/4e12', 'ppoll index/40', 'nr resources/2e12','Location','NorthEastOutside'); hold on grid on %-- subplot(2,1,2),plot(time, food_pc/1000,'g',time, cons_ind_out_pc/250,'b', time, serv_out_pc/1000,'m',time, life_expectancy/90,'y'); AXIS([1900 2100 0 1]) TITLE('Material Standard') legend('food pc/1000','cons ind out pc/6e12','serv out pc/1000', 'life expectancy/90','Location','NorthEastOutside'); hold on grid on %-- subplot(2,1,1),plot(time, HEF/4,'r',time, HWI/1,'g'); AXIS([1900 2100 0 1]) legend('time vs Human Ecological Footprint/4','time vs Human Welfare Index','Location','NorthEastOutside') TITLE('Welfare, Footprint') hold on grid on %-- 250 PEDRO MANUEL RETORTILLO ATIENZA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 subplot(2,1,2),plot(time, nr_res_use_rate/2.4e10,'r',time, ppoll_gen_rt/1.2e9,'b',time, land_fert_degr/100,'m',time, land_erosion_rt/4e7,'g',time, land_rem_urb_ind_use/4e7,'y'); AXIS([1900 2100 0 1]) legend('time vs nr res use rate/2.4e10','time vs ppoll gen rt/1.2e9','time vs land fert degr/100','time vs land erosion rt/4e7','time vs land rem urb ind use/4e7','Location','NorthEastOutside') TITLE('Withdrawals from environment') hold on grid on %-- subplot(2,1,1),plot(time, s_land_yield_fact/4,'g',time, s_nr_res_use_fact/1,'m',time, s_ppoll_gen_fact/1,'r',time, s_ind_cap_out_ratio/6,'b'); AXIS([1900 2100 0 1]) legend('time vs s land yield fact/4','time vs s nr res use fact','time vs s ppoll gen fact','time vs land erosion rt/4e7','time vs s ind cap out ratio/6','Location','NorthEastOutside') TITLE('Technology') hold on grid on %-- subplot(2,1,2),plot(time, res_intens/0.01,'m',time, poll_intens_ind/2e-4,'r',time, land_yield/6000,'g',time, fert_cont_eff/1,'y',time, s_ind_cap_out_ratio/6,'b'); AXIS([1900 2100 0 1]) legend('time vs s res intens/0.01','time vs s poll intens ind/2e-4','time vs land yield/6000','time vs fert cont eff/1','time vs s ind cap out ratio/6','Location','NorthEastOutside') TITLE('Effects of Technology') hold on grid on %-- subplot(2,1,1),plot(time, land_fertility/600,'m',time, agr_inp_per_hect/200,'r',time, land_yield/4000,'g',time, s_yield_mlt_air_poll/1,'y',time, lifet_mlt_food/2,'b'); AXIS([1900 2100 0 1]) legend('time vs land fertility/600','time vs agr inp per hect/200','time vs land yield/6000','time vs land yield/4000','time vs s yield mlt air poll/1','time vs lifet mlt food/2','Location','NorthEastOutside') TITLE('Agriculture') hold on grid on %-- subplot(2,1,2),plot(time, fioa_ind/0.44,'b',time, s_fioa_agr/0.44,'g',time, s_fioa_cons/0.44,'m',time, s_fioa_serv/0.44,'k',time, s_fr_cap_al_obt_res/1,'y'); PEDRO MANUEL RETORTILLO ATIENZA 251 ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 AXIS([1900 2100 0 1]) legend('time vs fioa ind/0.44','time vs s fioa agr/0.44','time vs s fioa cons/0.44','time vs s fioa serv/0.44','time vs s fr cap al obt res/1','Location','NorthEastOutside') TITLE('Allocation of output') hold on grid on end 252 PEDRO MANUEL RETORTILLO ATIENZA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 9.6 CÓDIGO6. Estudio de correlaciones clear clf %Ponemos todos los tiempos en 1975 y generamos 50 nºs aleatorios entre 1975 %y 2025 t_policy_year_init=[1975]; t_air_poll_time_init=[1975]; t_land_fert_time_init=[1975]; t_fcaor_time_init=[1975]; t_zero_pop_grow_time_init=[1975]; t_ind_equil_time_init=[1975]; t_fert_eff_time_init=[1975]; %inicialmente los retrasos son de 5 años y los ampliamos hasta 20 in_TDD_init=[5]; %Parámetros que cambiamos en las políticas, empezamos por el rango más bajo nr_resources_init=[1e12]; p_avg_life_agr_inp_init=[1]; chg_mlt_POLGM_init=[-0.06]; chg_mlt_LYCM_init=[0]; chg_mlt_NRCM_init=[-0.06]; des_fam_size_init=[1]; ind_out_pc_des_init=[350]; p_avg_life_ind_cap_init=[12]; p_avg_life_serv_cap_init=[18]; p_serv_cap_out_ratio_init=[0.5]; for k=1:100 rand('state',sum(100*clock)) %Modificamos los años de las políticas t_policy_year=t_policy_year_init+50*rand; t_air_poll_time=t_air_poll_time_init+50*rand; t_land_fert_time=t_land_fert_time_init+50*rand; t_fcaor_time=t_fcaor_time_init+50*rand; t_zero_pop_grow_time=t_zero_pop_grow_time_init+50*rand; t_ind_equil_time=t_ind_equil_time_init+50*rand; t_fert_eff_time=t_fert_eff_time_init+50*rand; in_TDD=in_TDD_init+15*rand; %Modificamos ahora los parámetros de las políticas %nr_resources va desde 1e12 a 2e12 nr_resources=nr_resources_init*(1+rand); %p_avg_life_agr_in va desde 1 a 3 p_avg_life_agr_inp=p_avg_life_agr_inp_init*(1+2*rand); %chg_mlt_POLGM de -0.06 a 0 chg_mlt_POLGM=chg_mlt_POLGM_init+0.06*rand; %chg_mlt_LYCM de 0 a 0.04 chg_mlt_LYCM=chg_mlt_LYCM_init+0.04*rand; PEDRO MANUEL RETORTILLO ATIENZA 253 ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 %chg_mlt_NRCM de -0.06 a 0 chg_mlt_NRCM=chg_mlt_NRCM_init+0.06*rand; %des_fam_size de 1 a 3 des_fam_size=des_fam_size_init*(1+2*rand); %ind_out_pc_des de 350 a 700 ind_out_pc_des=ind_out_pc_des_init+350*rand; %p_avg_life_ind_cap de 12 a 16 p_avg_life_ind_cap=p_avg_life_ind_cap_init+4*rand; %p_avg_life_ind_cap de 18 a 22 p_avg_life_serv_cap=p_avg_life_serv_cap_init+4*rand; %p_avg_life_serv_cap de 0.5 a 1.5 p_serv_cap_out_ratio=p_serv_cap_out_ratio_init+rand; %x29 se usa para comparar los recursos restantes con losrecursos %iniciales x29=nr_resources; %Y ahora lanzamos la simulación %Guardamos los timpos en vectores in_tpy(k)=t_policy_year; in_tiet(k)=t_ind_equil_time; in_tfct(k)=t_fcaor_time; in_tapt(k)=t_air_poll_time; in_tlft(k)=t_land_fert_time; in_tzpgt(k)=t_zero_pop_grow_time; in_tfet(k)=t_fert_eff_time; in_in_TDD(k)=in_TDD; %Guardamos las otras variables en vectores in_nr(k)=nr_resources; in_palai(k)=p_avg_life_agr_inp; in_POLGM(k)=chg_mlt_POLGM; in_NRCM(k)=chg_mlt_NRCM; in_LYCM(k)=chg_mlt_LYCM; in_dfs(k)=des_fam_size; in_iopd(k)=ind_out_pc_des; in_palic(k)=p_avg_life_ind_cap; in_palsc(k)=p_avg_life_serv_cap; in_pscor(k)=p_serv_cap_out_ratio; sim('simuworld3'); HEF_store(:,k)=HEF; end for tt=1:length(HEF) correlation_01=corrcoef(HEF_store(tt,:), in_tpy); correlation_02=corrcoef(HEF_store(tt,:), in_tiet); correlation_03=corrcoef(HEF_store(tt,:), in_tfct); correlation_04=corrcoef(HEF_store(tt,:), in_tapt); correlation_05=corrcoef(HEF_store(tt,:), in_tlft); correlation_06=corrcoef(HEF_store(tt,:), in_tzpgt); correlation_07=corrcoef(HEF_store(tt,:), in_tfet); correlation_08=corrcoef(HEF_store(tt,:), in_in_TDD); %-- correlation_09=corrcoef(HEF_store(tt,:), in_nr); correlation_10=corrcoef(HEF_store(tt,:), in_palai); correlation_11=corrcoef(HEF_store(tt,:), in_POLGM); 254 PEDRO MANUEL RETORTILLO ATIENZA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 correlation_12=corrcoef(HEF_store(tt,:), in_NRCM); correlation_13=corrcoef(HEF_store(tt,:), in_LYCM); correlation_14=corrcoef(HEF_store(tt,:), in_dfs); correlation_15=corrcoef(HEF_store(tt,:), in_iopd); correlation_16=corrcoef(HEF_store(tt,:), in_palic); correlation_17=corrcoef(HEF_store(tt,:), in_palsc); correlation_18=corrcoef(HEF_store(tt,:), in_pscor); %-- val_corr01(1)=0; val_corr02(1)=0; val_corr03(1)=0; val_corr04(1)=0; val_corr05(1)=0; val_corr06(1)=0; val_corr07(1)=0; val_corr08(1)=0; val_corr09(1)=0; val_corr10(1)=0; val_corr11(1)=0; val_corr12(1)=0; val_corr13(1)=0; val_corr14(1)=0; val_corr15(1)=0; val_corr16(1)=0; val_corr17(1)=0; val_corr18(1)=0; if tt>1 val_corr01(tt)=correlation_01(1,2); val_corr02(tt)=correlation_02(1,2); val_corr03(tt)=correlation_03(1,2); val_corr04(tt)=correlation_04(1,2); val_corr05(tt)=correlation_05(1,2); val_corr06(tt)=correlation_06(1,2); val_corr07(tt)=correlation_07(1,2); val_corr08(tt)=correlation_08(1,2); val_corr09(tt)=correlation_09(1,2); val_corr10(tt)=correlation_10(1,2); val_corr11(tt)=correlation_11(1,2); val_corr12(tt)=correlation_12(1,2); val_corr13(tt)=correlation_13(1,2); val_corr14(tt)=correlation_14(1,2); val_corr15(tt)=correlation_15(1,2); val_corr16(tt)=correlation_16(1,2); val_corr17(tt)=correlation_17(1,2); val_corr18(tt)=correlation_18(1,2); end end figure plot(time, val_corr01,'g',time, val_corr02,'k', time, val_corr03,'r',time, val_corr04,'b',time, val_corr05,'m',time, val_corr06,'y',... time, val_corr07,'c') legend('t policy year','t ind equil time','t fcaor time','t air polltime','t land fert time','t zero pop grow time','t fert eff time',... 'in TDD','Location','NorthEastOutside'); PEDRO MANUEL RETORTILLO ATIENZA 261 ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 for k=1:num_carr rand('state',sum(100*clock)) %Modificamos los años de las políticas t_policy_year=t_policy_year_init+50*rand; t_air_poll_time=t_air_poll_time_init+50*rand; t_land_fert_time=t_land_fert_time_init+50*rand; t_fcaor_time=t_fcaor_time_init+50*rand; t_zero_pop_grow_time=t_zero_pop_grow_time_init+50*rand; t_ind_equil_time=t_ind_equil_time_init+50*rand; t_fert_eff_time=t_fert_eff_time_init+50*rand; in_TDD=in_TDD_init+15*rand; %Modificamos ahora los parámetros de las políticas %nr_resources va desde 1e12 a 2e12 nr_resources=nr_resources_init*(1+rand); %p_avg_life_agr_in va desde 1 a 3 p_avg_life_agr_inp=p_avg_life_agr_inp_init*(1+2*rand); %chg_mlt_POLGM de -0.06 a 0 chg_mlt_POLGM=chg_mlt_POLGM_init+0.06*rand; %chg_mlt_LYCM de 0 a 0.04 chg_mlt_LYCM=chg_mlt_LYCM_init+0.04*rand; %chg_mlt_NRCM de -0.06 a 0 chg_mlt_NRCM=chg_mlt_NRCM_init+0.06*rand; %des_fam_size de 1 a 3 des_fam_size=des_fam_size_init*(1+2*rand); %ind_out_pc_des de 350 a 700 ind_out_pc_des=ind_out_pc_des_init+350*rand; %p_avg_life_ind_cap de 12 a 16 p_avg_life_ind_cap=p_avg_life_ind_cap_init+4*rand; %p_avg_life_ind_cap de 18 a 22 p_avg_life_serv_cap=p_avg_life_serv_cap_init+4*rand; %p_avg_life_serv_cap de 0.5 a 1.5 p_serv_cap_out_ratio=p_serv_cap_out_ratio_init+rand; %x29 se usa para comparar los recursos restantes con los recursos %iniciales x29=nr_resources; %Y ahora lanzamos la simulación %iniciamos vectores %Guardamos los timpos en vectores in_tpy(k,1)=t_policy_year; in_tiet(k,1)=t_ind_equil_time; in_tfct(k,1)=t_fcaor_time; in_tapt(k,1)=t_air_poll_time; in_tlft(k,1)=t_land_fert_time; in_tzpgt(k,1)=t_zero_pop_grow_time; in_tfet(k,1)=t_fert_eff_time; in_in_TDD(k,1)=in_TDD; %Guardamos las otras variables en vectores in_nr(k,1)=nr_resources; in_palai(k,1)=p_avg_life_agr_inp; in_POLGM(k,1)=chg_mlt_POLGM; in_NRCM(k,1)=chg_mlt_NRCM; in_LYCM(k,1)=chg_mlt_LYCM; in_dfs(k,1)=des_fam_size; in_iopd(k,1)=ind_out_pc_des; 262 PEDRO MANUEL RETORTILLO ATIENZA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 in_palic(k,1)=p_avg_life_ind_cap; in_palsc(k,1)=p_avg_life_serv_cap; in_pscor(k,1)=p_serv_cap_out_ratio; sim('simuworld3'); %Human Ecological Footprint k max_HEF=max(HEF) final_HEF=HEF(length(HEF)) fin_slo_HEF=slope_HEF(length(slope_HEF)) bHEF=find(HEF==max_HEF) max_timeHEF=time(bHEF) max_HEF_high=smf(max_HEF,[1 4]) max_HEF_low=1-max_HEF_high final_HEF_high=smf(final_HEF,[0.8 1.2]) final_HEF_low=1-final_HEF_high slope_HEF_high=smf(fin_slo_HEF,[-1 1]) slope_HEF_low=1-slope_HEF_high max_timeHEF_high=smf(max_timeHEF, [1900 2100]) max_timeHEF_low=1-max_timeHEF_high HEF_asumible=probor([slope_HEF_low; max_HEF_low; final_HEF_low]) asum_HEFstore(k)=HEF_asumible %Human Welfare Index max_HWI=max(HWI) final_HWI=HWI(length(HWI)) max_HWI_high=smf(max_HWI,[0.5 1]) final_HWI_high=smf(final_HWI,[0.5 1]) var_HWI=max_HWI-final_HWI var_HWI_high=smf(var_HWI,[0 0.2]) %se busca que la diferencia entre el máximo y el final sea pequeño %var_HWI_low estará próximo a 1 cuando la diferencia sea pequeña var_HWI_low=1-var_HWI_high HWI_optimo=var_HWI_low*final_HWI_high optim_HWIstore(k)=HWI_optimo %Y la calificación global de la simulación: calif_global=HWI_optimo*HEF_asumible calif_global_store(k,1)=calif_global; if HEF_asumible>0.8 if HWI_optimo>0.7 if kk<5 subplot(2,2,kk),plot(time, HEF/4,'r', time, HWI,'g') f_hef=num2str(asum_HEFstore(k)) g_hef=['HEF asumible = ',f_hef] f_hwi=num2str(optim_HWIstore(k)) g_hwi=['HWI optimo = ',f_hwi] legend(g_hef,g_hwi,'Location','SouthOutside') AXIS([1900 2100 0 1]) hold on grid on kk=kk+1 end PEDRO MANUEL RETORTILLO ATIENZA 263 ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 end end end m_global=[in_tpy(:,1), in_tiet(:,1), in_tfct(:,1), in_tapt(:,1), in_tlft(:,1), in_tzpgt(:,1), in_tfet(:,1), in_in_TDD(:,1),... in_nr(:,1), in_palai(:,1), in_POLGM(:,1), in_NRCM(:,1), in_LYCM(:,1), in_dfs(:,1),... in_iopd(:,1), in_palic(:,1), in_palsc(:,1), in_pscor(:,1), calif_global_store(:,1)] i=find(calif_global_store>0.6) m_selecc=m_global(i,:) xlswrite('matrizoptima.xls', m_selecc, 'Datos', 'A1') 264 PEDRO MANUEL RETORTILLO ATIENZA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 9.10 CÓDIGO10. Fuzzy clustering seleccionado 2 entradas y una salida clear clf %Ponemos todos los tiempos en 1975 y generamos 50 nºs aleatorios entre 1975 %y 2025 t_policy_year_init=[1975]; t_air_poll_time_init=[1975]; t_land_fert_time_init=[1975]; t_fcaor_time_init=[1975]; t_zero_pop_grow_time_init=[1975]; t_ind_equil_time_init=[1975]; t_fert_eff_time_init=[1975]; %inicialmente los retrasos son de 5 años y los ampliamos hasta 20 in_TDD_init=[5]; %Parámetros que cambiamos en las políticas, empezamos por el rango más bajo nr_resources_init=[1e12]; p_avg_life_agr_inp_init=[1]; chg_mlt_POLGM_init=[-0.06]; chg_mlt_LYCM_init=[0]; chg_mlt_NRCM_init=[-0.06]; des_fam_size_init=[1]; ind_out_pc_des_init=[350]; p_avg_life_ind_cap_init=[12]; p_avg_life_serv_cap_init=[18]; p_serv_cap_out_ratio_init=[0.5]; kk=1; num_carr=200; in_tpy = zeros(1,num_carr); in_tiet =zeros(1,num_carr); in_tfct=zeros(1,num_carr); in_tapt=zeros(1,num_carr); in_tlft=zeros(1,num_carr); in_tzpgt=zeros(1,num_carr); in_tfet=zeros(1,num_carr); in_in_TDD=zeros(1,num_carr); %Guardamos las otras variables en vectores in_nr=zeros(1,num_carr); in_palai=zeros(1,num_carr); in_POLGM=zeros(1,num_carr); in_NRCM=zeros(1,num_carr); in_LYCM=zeros(1,num_carr); in_dfs=zeros(1,num_carr); in_iopd=zeros(1,num_carr); in_palic=zeros(1,num_carr); in_palsc=zeros(1,num_carr); in_pscor=zeros(1,num_carr); for k=1:num_carr rand('state',sum(100*clock)) %Modificamos los años de las políticas t_policy_year=t_policy_year_init+50*rand; PEDRO MANUEL RETORTILLO ATIENZA 265 ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 t_air_poll_time=t_air_poll_time_init+50*rand; t_land_fert_time=t_land_fert_time_init+50*rand; t_fcaor_time=t_fcaor_time_init+50*rand; t_zero_pop_grow_time=t_zero_pop_grow_time_init+50*rand; t_ind_equil_time=t_ind_equil_time_init+50*rand; t_fert_eff_time=t_fert_eff_time_init+50*rand; in_TDD=in_TDD_init+15*rand; %Modificamos ahora los parámetros de las políticas %nr_resources va desde 1e12 a 2e12 nr_resources=nr_resources_init*(1+rand); %p_avg_life_agr_in va desde 1 a 3 p_avg_life_agr_inp=p_avg_life_agr_inp_init*(1+2*rand); %chg_mlt_POLGM de -0.06 a 0 chg_mlt_POLGM=chg_mlt_POLGM_init+0.06*rand; %chg_mlt_LYCM de 0 a 0.04 chg_mlt_LYCM=chg_mlt_LYCM_init+0.04*rand; %chg_mlt_NRCM de -0.06 a 0 chg_mlt_NRCM=chg_mlt_NRCM_init+0.06*rand; %des_fam_size de 1 a 3 des_fam_size=des_fam_size_init*(1+2*rand); %ind_out_pc_des de 350 a 700 ind_out_pc_des=ind_out_pc_des_init+350*rand; %p_avg_life_ind_cap de 12 a 16 p_avg_life_ind_cap=p_avg_life_ind_cap_init+4*rand; %p_avg_life_ind_cap de 18 a 22 p_avg_life_serv_cap=p_avg_life_serv_cap_init+4*rand; %p_avg_life_serv_cap de 0.5 a 1.5 p_serv_cap_out_ratio=p_serv_cap_out_ratio_init+rand; %x29 se usa para comparar los recursos restantes con los recursos %iniciales x29=nr_resources; %Y ahora lanzamos la simulación %iniciamos vectores %Guardamos los timpos en vectores in_tpy(k,1)=t_policy_year; in_tiet(k,1)=t_ind_equil_time; in_tfct(k,1)=t_fcaor_time; in_tapt(k,1)=t_air_poll_time; in_tlft(k,1)=t_land_fert_time; in_tzpgt(k,1)=t_zero_pop_grow_time; in_tfet(k,1)=t_fert_eff_time; in_in_TDD(k,1)=in_TDD; %Guardamos las otras variables en vectores in_nr(k,1)=nr_resources; in_palai(k,1)=p_avg_life_agr_inp; in_POLGM(k,1)=chg_mlt_POLGM; in_NRCM(k,1)=chg_mlt_NRCM; in_LYCM(k,1)=chg_mlt_LYCM; in_dfs(k,1)=des_fam_size; in_iopd(k,1)=ind_out_pc_des; in_palic(k,1)=p_avg_life_ind_cap; in_palsc(k,1)=p_avg_life_serv_cap; in_pscor(k,1)=p_serv_cap_out_ratio; sim('simuworld3'); 266 PEDRO MANUEL RETORTILLO ATIENZA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 %Human Ecological Footprint k max_HEF=max(HEF); final_HEF=HEF(length(HEF)); fin_slo_HEF=slope_HEF(length(slope_HEF)); bHEF=find(HEF==max_HEF); max_timeHEF=time(bHEF); max_HEF_high=smf(max_HEF,[1 4]); max_HEF_low=1-max_HEF_high; final_HEF_high=smf(final_HEF,[0.8 1.2]); final_HEF_low=1-final_HEF_high; slope_HEF_high=smf(fin_slo_HEF,[-1 1]); slope_HEF_low=1-slope_HEF_high; max_timeHEF_high=smf(max_timeHEF, [1900 2100]); max_timeHEF_low=1-max_timeHEF_high; HEF_asumible=probor([slope_HEF_low; max_HEF_low; final_HEF_low]); asum_HEFstore(k)=HEF_asumible; %Human Welfare Index max_HWI=max(HWI); final_HWI=HWI(length(HWI)); max_HWI_high=smf(max_HWI,[0.5 1]); final_HWI_high=smf(final_HWI,[0.5 1]); var_HWI=max_HWI-final_HWI; var_HWI_high=smf(var_HWI,[0 0.2]); %se busca que la diferencia entre el máximo y el final sea pequeño %var_HWI_low estará próximo a 1 cuando la diferencia sea pequeña var_HWI_low=1-var_HWI_high; HWI_optimo=var_HWI_low*final_HWI_high; optim_HWIstore(k)=HWI_optimo; %Y la calificación global de la simulación: calif_global=HWI_optimo*HEF_asumible; calif_global_store(k,1)=calif_global; end i=find(calif_global_store>0.6) M=[in_tpy(i,1) in_iopd(i,1) calif_global_store(i,1)] pause figure hold on; num_centros=4; [center,u,obj_fcn] = fcm(M,num_centros) plot3(M(:,1),M(:,2),M(:,3),'o') box on; % Set the viewing angle and the axis limits view(26, 42); axis([1975 2015 350 700 0.5 1]); hold on grid on plot3(center(:,1),center(:,2),center(:,3),'ro'); xlabel('t ind equil time'); ylabel('ind out pc des'); zlabel('calif global'); PEDRO MANUEL RETORTILLO ATIENZA 267 ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 matrix_clusters=zeros(3,num_centros); for n=1:num_centros matrix_clusters(1,n)=n; end for c=1:length(u); maxu=max(u(:,c)); l=find(u(:,c)==maxu); matrix_clusters(2,l)=matrix_clusters(2,l)+1; matrix_clusters(3,l)=(matrix_clusters(3,l)+maxu); end for n=1:num_centros matrix_clusters(3,n)=matrix_clusters(3,n)/matrix_clusters(2,n); end matrix_clusters 268 PEDRO MANUEL RETORTILLO ATIENZA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 9.11 CÓDIGO11. Fuzzy clustering con 18 entradas y una salida. clear clf %Ponemos todos los tiempos en 1975 y generamos 50 nºs aleatorios entre 1975 %y 2025 t_policy_year_init=[1975]; t_air_poll_time_init=[1975]; t_land_fert_time_init=[1975]; t_fcaor_time_init=[1975]; t_zero_pop_grow_time_init=[1975]; t_ind_equil_time_init=[1975]; t_fert_eff_time_init=[1975]; %inicialmente los retrasos son de 5 años y los ampliamos hasta 20 in_TDD_init=[5]; %Parámetros que cambiamos en las políticas, empezamos por el rango más bajo nr_resources_init=[1e12]; p_avg_life_agr_inp_init=[1]; chg_mlt_POLGM_init=[-0.06]; chg_mlt_LYCM_init=[0]; chg_mlt_NRCM_init=[-0.06]; des_fam_size_init=[1]; ind_out_pc_des_init=[350]; p_avg_life_ind_cap_init=[12]; p_avg_life_serv_cap_init=[18]; p_serv_cap_out_ratio_init=[0.5]; kk=1; num_carr=500; in_tpy = zeros(1,num_carr); in_tiet =zeros(1,num_carr); in_tfct=zeros(1,num_carr); in_tapt=zeros(1,num_carr); in_tlft=zeros(1,num_carr); in_tzpgt=zeros(1,num_carr); in_tfet=zeros(1,num_carr); in_in_TDD=zeros(1,num_carr); %Guardamos las otras variables en vectores in_nr=zeros(1,num_carr); in_palai=zeros(1,num_carr); in_POLGM=zeros(1,num_carr); in_NRCM=zeros(1,num_carr); in_LYCM=zeros(1,num_carr); in_dfs=zeros(1,num_carr); in_iopd=zeros(1,num_carr); in_palic=zeros(1,num_carr); in_palsc=zeros(1,num_carr); in_pscor=zeros(1,num_carr); for k=1:num_carr rand('state',sum(100*clock)) %Modificamos los años de las políticas t_policy_year=t_policy_year_init+50*rand; t_air_poll_time=t_air_poll_time_init+50*rand; PEDRO MANUEL RETORTILLO ATIENZA 269 ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 t_land_fert_time=t_land_fert_time_init+50*rand; t_fcaor_time=t_fcaor_time_init+50*rand; t_zero_pop_grow_time=t_zero_pop_grow_time_init+50*rand; t_ind_equil_time=t_ind_equil_time_init+50*rand; t_fert_eff_time=t_fert_eff_time_init+50*rand; in_TDD=in_TDD_init+15*rand; %Modificamos ahora los parámetros de las políticas %nr_resources va desde 1e12 a 2e12 nr_resources=nr_resources_init*(1+rand); %p_avg_life_agr_in va desde 1 a 3 p_avg_life_agr_inp=p_avg_life_agr_inp_init*(1+2*rand); %chg_mlt_POLGM de -0.06 a 0 chg_mlt_POLGM=chg_mlt_POLGM_init+0.06*rand; %chg_mlt_LYCM de 0 a 0.04 chg_mlt_LYCM=chg_mlt_LYCM_init+0.04*rand; %chg_mlt_NRCM de -0.06 a 0 chg_mlt_NRCM=chg_mlt_NRCM_init+0.06*rand; %des_fam_size de 1 a 3 des_fam_size=des_fam_size_init*(1+2*rand); %ind_out_pc_des de 350 a 700 ind_out_pc_des=ind_out_pc_des_init+350*rand; %p_avg_life_ind_cap de 12 a 16 p_avg_life_ind_cap=p_avg_life_ind_cap_init+4*rand; %p_avg_life_ind_cap de 18 a 22 p_avg_life_serv_cap=p_avg_life_serv_cap_init+4*rand; %p_avg_life_serv_cap de 0.5 a 1.5 p_serv_cap_out_ratio=p_serv_cap_out_ratio_init+rand; %x29 se usa para comparar los recursos restantes con los recursos %iniciales x29=nr_resources; %Y ahora lanzamos la simulación %iniciamos vectores %Guardamos los timpos en vectores in_tpy(k,1)=t_policy_year; in_tiet(k,1)=t_ind_equil_time; in_tfct(k,1)=t_fcaor_time; in_tapt(k,1)=t_air_poll_time; in_tlft(k,1)=t_land_fert_time; in_tzpgt(k,1)=t_zero_pop_grow_time; in_tfet(k,1)=t_fert_eff_time; in_in_TDD(k,1)=in_TDD; %Guardamos las otras variables en vectores in_nr(k,1)=nr_resources; in_palai(k,1)=p_avg_life_agr_inp; in_POLGM(k,1)=chg_mlt_POLGM; in_NRCM(k,1)=chg_mlt_NRCM; in_LYCM(k,1)=chg_mlt_LYCM; in_dfs(k,1)=des_fam_size; in_iopd(k,1)=ind_out_pc_des; in_palic(k,1)=p_avg_life_ind_cap; in_palsc(k,1)=p_avg_life_serv_cap; in_pscor(k,1)=p_serv_cap_out_ratio; sim('simuworld3'); %Human Ecological Footprint k max_HEF=max(HEF); final_HEF=HEF(length(HEF)); fin_slo_HEF=slope_HEF(length(slope_HEF)); bHEF=find(HEF==max_HEF); 270 PEDRO MANUEL RETORTILLO ATIENZA ANÁLISIS AUTOMÁTICO DE MODELOS COMPLEJOS UTILIZANDO HERRAMIENTAS DE INTELIGENCIA ARTIFICIAL PARTIENDO DEL EJEMPLO DEL WORLD3 max_timeHEF=time(bHEF); max_HEF_high=smf(max_HEF,[1 4]); max_HEF_low=1-max_HEF_high; final_HEF_high=smf(final_HEF,[0.8 1.2]); final_HEF_low=1-final_HEF_high; slope_HEF_high=smf(fin_slo_HEF,[-1 1]); slope_HEF_low=1-slope_HEF_high; max_timeHEF_high=smf(max_timeHEF, [1900 2100]); max_timeHEF_low=1-max_timeHEF_high; HEF_asumible=probor([slope_HEF_low; max_HEF_low; final_HEF_low]); asum_HEFstore(k)=HEF_asumible; %Human Welfare Index max_HWI=max(HWI); final_HWI=HWI(length(HWI)); max_HWI_high=smf(max_HWI,[0.5 1]); final_HWI_high=smf(final_HWI,[0.5 1]); var_HWI=max_HWI-final_HWI; var_HWI_high=smf(var_HWI,[0 0.2]); %se busca que la diferencia entre el máximo y el final sea pequeña %var_HWI_low estará próximo a 1 cuando la diferencia sea pequeña var_HWI_low=1-var_HWI_high; HWI_optimo=var_HWI_low*final_HWI_high; optim_HWIstore(k)=HWI_optimo; %Y la calificación global de la simulación: calif_global=HWI_optimo*HEF_asumible; calif_global_store(k,1)=calif_global; end i=find(calif_global_store>0.6) Tit=['in_tpy', 'in_tiet', 'in_tfct', 'in_tapt', 'in_tlft', 'in_tzpgt', 'in_tfet', 'in_in_TDD',... 'in_nr', 'in_palai', 'in_POLGM', 'in_NRCM', 'in_LYCM', 'in_dfs', 'in_iopd', 'in_palic', 'in_palsc', 'in_pscor',... 'calif_global_store'] M=[in_tpy(i,1) in_tiet(i,1) in_tfct(i,1) in_tapt(i,1) in_tlft(i,1) in_tzpgt(i,1) in_tfet(i,1) in_in_TDD(i,1),... in_nr(i,1) in_palai(i,1) in_POLGM(i,1) in_NRCM(i,1) in_LYCM(i,1) in_dfs(i,1) in_iopd(i,1) in_palic(i,1) in_palsc(i,1) in_pscor(i,1),... calif_global_store(i,1)] num_centros=8; [center,u,obj_fcn] = fcm(M,num_centros) matrix_clusters=zeros(3,num_centros); for n=1:num_centros matrix_clusters(1,n)=n; end for c=1:length(u); maxu=max(u(:,c)); l=find(u(:,c)==maxu); matrix_clusters(2,l)=matrix_clusters(2,l)+1; matrix_clusters(3,l)=(matrix_clusters(3,l)+maxu); end for n=1:num_centros matrix_clusters(3,n)=matrix_clusters(3,n)/matrix_clusters(2,n); end matrix_clusters center_time=[center(:,1) center(:,2) center(:,3) center(:,4) center(:,5) center(:,6) center(:,7)]