Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Evaluación de rendimiento y estudio de adaptabilidad de GenOptr (Generic Optimization) como libreŕıa de métodos matemáticos de optimización a ser empleada en la creación de un ambiente de estudio y simulación para la ingenieŕıa de procesos en la producción de gas metano. Caso de estudio: Metanol de Oriente (METOR), S.A. Eduardo José Sánchez Peiró Informe Final de Pasant́ıa presentado ante el Departamento de Computación de la Facultad Experimental de Ciencias y Tecnoloǵıa como requisito parcial para la obtención del grado de Licenciado en Computación por la Universidad de Carabobo Abril de 2009 Universidad de Carabobo Facultad Experimental de Ciencias y Tecnoloǵıa Departamento de Computación Evaluación de rendimiento y estudio de adaptabilidad de GenOptr (Generic Optimization) como libreŕıa de métodos matemáticos de optimización a ser empleada en la creación de un ambiente de estudio y simulación para la ingenieŕıa de procesos en la producción de gas metano. Caso de estudio: Metanol de Oriente (METOR), S.A. Informe Final de Pasant́ıa Autor: Br. Eduardo José Sánchez Peiró. Tutor Académico: Germán A. Larrazábal S, Ph.D. Tutor Empresarial: Jesús E. Rodŕıguez A, Ph.D. Licenciatura en Computación Abril de 2009 Evaluación de rendimiento y estudio de adaptabilidad de GenOptr (Generic Optimization) como libreŕıa de métodos matemáticos de optimización a ser empleada en la creación de un ambiente de simulación para la ingenieŕıa de procesos en la producción de gas metano. Caso de estudio: Metanol de Oriente (METOR), S.A. Autor: Br. Eduardo José Sánchez Peiró. Tutor Académico: Germán A. Larrazábal S, Ph.D. Tutor Empresarial: Jesús E. Rodŕıguez A, Ph.D. Resumen El área de estudio de la optimización de procesos es bien conocida por su alta complejidad desde el punto de vista matemático, aśı como por su alto potencial de aplicabilidad. Esta complejidad desde el pun- to de vista teórico, trae como consecuencia desafiantes esquemas de implementación computacional cuando se desea realizar aplicaciones donde se requieran resultados de este estilo, permitiendo ver que la implementación de estos métodos a nivel de software no es una tarea sencilla, aśı como tampoco lo es la elección de libreŕıas previamente construidas para el tratamiento de un problema en particular. Este trabajo presenta los resultados de un estudio de adaptabilidad y de rendimiento computacional con respecto a tiempo de ejecución y precisión de GenOptr (Generic Optimization) como libreŕıa de méto- dos matemáticos de optimización a ser empleada en simulaciones de procesos de producción. Se presenta, luego de los detalles administrativos del proyecto, una introducción al marco teórico requerido para su realización, seguido de un resumen del marco teórico de los algoritmos implementados por la libreŕıa. Se describe su arquitectura aśı como sus aspectos informáticos más importantes y luego se estudian los problemas de prueba que se implementaron con el fin de hacer el estudio. Por cada uno de estos problemas, se incluye un resumen del marco teórico asociado aśı como los aspectos de su implementación computacional, para finalmente, en función a resultados de referencia descritos, presentar una conclusión concisa sobre los resultados obtenidos. Para finalizar, se concluye sobre los aspectos más importantes a considerar sobre su implementación y se presentan recomendaciones importantes respecto a su empleo. A José Agust́ın Peiró Mart́ı; mi t́ıo. Su ayuda fue, sin duda, condición necesaria para lograr esto. ¡Gracias Pepo! Agradecimientos El desarrollo del proyecto durante sus veintiún semanas de duración no podŕıa haber sido posible sin la ayuda directa o indirecta de las personas que nom- bro a continuación. Principalmente, le agradezco a José Gustavo Zerpa. El fue mi referencia profesional dentro de la compañia, facilitando mis comienzos con ellos. Siem- pre ha sido un buen amigo, aśı como un sólido punto de apoyo. Gracias. Mi tutor empresarial, Enrique Rodŕıguez, quien me dio la oportunidad de relizar este trabajo al abrirme las puertas en la compañia, además de mos- trarme su comprensión en todo momento ante mis responsabilidades en la universidad. Aprend́ı mucho de el; en muchos aspectos importantes. Gracias. Mi co-tutor empresarial, David Vásquez, estuvo a mi lado cuando las cuentas no daban. Siempre mostró comprensión y propuso ideas valiosas que a mi jamás se me hubiesen ocurrido, las cuales permitieron que el trabajo siguiera adelante. Gracias. A mi familia, mi mamá, mi papá, mi hermanita y en especial, a mi t́ıo, José Peiró, pues su ayuda fue incondicional y necesaria en todo momento del desarrollo de este trabajo. Nunca me puso “peros” y siempre estuvo ah́ı para ayudarme incluso bajo condiciones anormalmente complicadas. Gracias t́ıo. A mi profesora de Sistemas de Información, Reina Loaiza, le agradezco profundamente su ayuda con respecto a las obligaciones académicas. Gracias. A mi tutor de tésis, Germán Larrazábal, pues nunca le importó ayudarme con este trabajo, aún sin que este tenga nada que ver con el trabajo que de- sarrollo con el. Pero más aún, quiero agradecerle por sus consejos y regaños. En su momento fueron y actualmente son de una ayuda inmensa. Gracias. Finalmente, al final del trabajo, cuando estaba más complicado cada d́ıa, Gaby no solo me mostró la comprensión que nadie en su lugar me hab́ıa mostrado antes, sino que me ayudó incluso a organizar mi tiempo, muestra de lo afortunado que soy al estar a su lado. Gracias Gaby. Índice general 1. Descripción de la empresa y contexto del proyecto 1 1.1. Nombre y ubicación de la empresa . . . . . . . . . . . . . . . . 1 1.2. Descripción de la empresa . . . . . . . . . . . . . . . . . . . . 1 1.3. Misión y visión de la empresa . . . . . . . . . . . . . . . . . . 2 1.4. Organigrama y estructura organizacional de la empresa . . . . 2 1.5. Información sobre el Tutor Empresarial . . . . . . . . . . . . . 3 1.6. Descripción y contexto del proyecto . . . . . . . . . . . . . . . 4 1.7. Antecedentes del proyecto en la empresa . . . . . . . . . . . . 4 1.8. Áreas de conocimiento . . . . . . . . . . . . . . . . . . . . . . 5 1.9. Objetivos y descripción del proyecto . . . . . . . . . . . . . . . 5 1.10. Plan de trabajo, metodoloǵıa y alcance del proyecto . . . . . . 6 2. Marco teórico e informático del proyecto 11 2.1. Una observación sobre la notación . . . . . . . . . . . . . . . . 11 2.2. Fundamentos de Optimización . . . . . . . . . . . . . . . . . . 12 2.2.1. Problemas con variables cont́ınuas . . . . . . . . . . . . 13 2.2.2. Problemas con variables cont́ınuas con restricciones . . 14 2.2.3. Problemas con variables discretas . . . . . . . . . . . . 14 2.2.4. Problemas mixtos . . . . . . . . . . . . . . . . . . . . . 14 2.2.5. Problemas mixtos con restricciones . . . . . . . . . . . 15 2.3. Introducción a GenOptr (Generic Optimization) . . . . . . . 15 2.4. Arquitectura, ambiente de prueba e interfaz gráfica . . . . . . 16 2.4.1. Configuración de ejecuciones de prueba en alto nivel . . 20 2.5. Especificaciones de instalación . . . . . . . . . . . . . . . . . . 21 3. Marco teórico de la libreŕıa 27 3.1. Algoritmos para optimización unidimensional . . . . . . . . . 27 3.1.1. Algoritmos de división interna . . . . . . . . . . . . . . 27 II ÍNDICE GENERAL 3.2. Algoritmos para optimización multidimensional . . . . . . . . 29 3.2.1. Algoritmos de búsqueda generalizada de patrones . . . 29 3.2.2. Algoritmo del gradiente discreto de Armijo . . . . . . . 32 3.2.3. Optimización por enjambre de part́ıculas . . . . . . . . 32 3.2.4. Algoritmo h́ıbrido de búsqueda generalizada de patro- nes con optimización a través de enjambre de part́ıculas 33 3.2.5. Algoritmo de Hooke-Jeeves . . . . . . . . . . . . . . . . 33 3.2.6. Método Simplex de Nelder y Mead con laextensión de O’Neill . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 3.3. Algoritmos para análisis de sensibilidad . . . . . . . . . . . . . 34 3.4. Esquemas para el manejo de restricciones . . . . . . . . . . . . 35 3.4.1. Restricciones sobre las variables independientes . . . . 35 3.4.2. Restricciones sobre las variables dependientes . . . . . 35 3.5. Selección de algoritmos de acuerdo al tipo de problema . . . . 37 3.5.1. Pc unidimensionales . . . . . . . . . . . . . . . . . . . 37 3.5.2. Pc multidimensionales . . . . . . . . . . . . . . . . . . 37 3.5.3. Pcg unidimensionales . . . . . . . . . . . . . . . . . . . 37 3.5.4. Pcg multidimensionales . . . . . . . . . . . . . . . . . . 38 3.5.5. Pd, Pcd y Pcdg . . . . . . . . . . . . . . . . . . . . . . 38 4. Problemas de prueba comparativos seleccionados 39 4.1. Maximización de la producción de Wozac . . . . . . . . . . . . 39 4.1.1. Descripción del problema . . . . . . . . . . . . . . . . . 39 4.1.2. Modelo matemático . . . . . . . . . . . . . . . . . . . . 40 4.1.3. Implementación computacional . . . . . . . . . . . . . 41 4.1.4. Análisis de resultados . . . . . . . . . . . . . . . . . . . 41 4.2. Optimización de redes a gran escala . . . . . . . . . . . . . . . 42 4.2.1. Introducción a los modelos de redes . . . . . . . . . . . 42 4.2.2. Descripción del problema . . . . . . . . . . . . . . . . . 43 4.2.3. Modelo matemático . . . . . . . . . . . . . . . . . . . . 43 4.2.4. Implementación computacional . . . . . . . . . . . . . 45 4.2.5. Análisis de resultados . . . . . . . . . . . . . . . . . . . 45 4.3. Modelo seleccionado de optimización no lineal . . . . . . . . . 46 4.3.1. Descripción del problema . . . . . . . . . . . . . . . . . 46 4.3.2. Modelo matemático . . . . . . . . . . . . . . . . . . . . 46 4.3.3. Implementación computacional . . . . . . . . . . . . . 46 4.3.4. Análisis de resultados . . . . . . . . . . . . . . . . . . . 47 ÍNDICE GENERAL III 4.4. Modelos seleccionados de optimización no lineal mediante méto- dos de programación evolutiva . . . . . . . . . . . . . . . . . . 47 4.4.1. Descripción del problema . . . . . . . . . . . . . . . . . 48 4.4.2. Modelo matemático . . . . . . . . . . . . . . . . . . . . 48 4.4.3. Implementación computacional . . . . . . . . . . . . . 50 4.4.4. Análisis de resultados . . . . . . . . . . . . . . . . . . . 50 5. Conclusiones, recomendaciones y trabajo futuro 51 A. Resumen de instalación guiada y ejecución 53 IV ÍNDICE GENERAL Índice de figuras 1.1. Organigrama de MS 2 Consulting Group . . . . . . . . . . . . . 3 1.2. Diagrama de actividades para la primera parte. . . . . . . . . 7 1.3. Diagrama de actividades para la segunda parte. . . . . . . . . 8 1.4. Diagrama de actividades para la tercera parte. . . . . . . . . 9 2.1. Arquitectura de GenOptr como programa externo de simu- lación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.2. Interfaz gráfica de GenOptr como programa externo de op- timización. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.3. Diagrama de clases resumido de la libreŕıa. . . . . . . . . . . . 19 3.1. Vista intuitiva del escenario detrás de los algoritmos de búsque- da generalizada de patrones. . . . . . . . . . . . . . . . . . . . 30 4.1. Modelo de red generado para l = 2. . . . . . . . . . . . . . . . 44 4.2. Primera función para el problema 4. . . . . . . . . . . . . . . . 48 4.3. Segunda función para el problema 4. . . . . . . . . . . . . . . 49 4.4. Tercera función para el problema 4. . . . . . . . . . . . . . . . 49 A.1. Pantalla inicial. . . . . . . . . . . . . . . . . . . . . . . . . . . 54 A.2. Pantalla de muestra de licencia. . . . . . . . . . . . . . . . . . 55 A.3. Pantalla de muestra de ubicación de la instalación. . . . . . . 56 A.4. Pantalla de muestra de progreso. . . . . . . . . . . . . . . . . 57 A.5. Pantalla de muestra de progreso. . . . . . . . . . . . . . . . . 58 A.6. Pantalla de confirmación de la instalación. . . . . . . . . . . . 59 A.7. Ejecución de muestra. . . . . . . . . . . . . . . . . . . . . . . 60 VI ÍNDICE DE FIGURAS Caṕıtulo 1 Descripción de la empresa y contexto del proyecto Este caṕıtulo tiene como objetivo explicar el contexto del proyecto aśı co- mo su necesidad dentro del ámbito de la empresa. Para esto, previamente se presenta la empresa a través de sus datos más relevantes y posteriormente, se detallan los aspectos administrativos del proyecto como su planificación aśı como su distribución en el tiempo conformando aśı el plan de trabajo para la realización de la pasant́ıa. 1.1. Nombre y ubicación de la empresa El proyecto fue desarrollado en: MS2 (Mathematical and Stochastical Simulations) Consulting Group Empresa ubicada en la siguiente dirección: Avenida Francisco de Miranda, Edificio Roraima, piso 7, oficina B, Cha- cao, Caracas, Venezuela. Referencia: diagonal al Centro Lido. 1.2. Descripción de la empresa MS 2 Consulting Group es una compañia que inicia sus actividades en mayo de 2003. Presenta una estructura de organización formal, conforma- da por un grupo de profesionales de alto nivel y desempeño con experiencia en: asesoŕıa técnica, educación, consultoŕıa y desarrollo de proyectos. Con 2 Descripción de la empresa y contexto del proyecto capacidad de abordar problemas de alta complejidad y trabajar en forma multidisciplinaria. MS 2 Consulting Group, lleva a cabo varias iniciativas con empresas com- plementarias tales como: GC Consulting. Desarrollo de recursos humanos. MB Solutions. Optimización de procesos. FactBase. Business Inteligence. Finansoft. Soluciones y tecnoloǵıa bancaria. TCS. Desarrollo y representación de software. TeamBuilding Consultores. Integración y desarrollo de recursos huma- nos. ONUVA. Desarrollos basados en software libre. 1.3. Misión y visión de la empresa La compañia tiene como misión: Apoyar a las empresas en asegurar su viabilidad y en maximizar su valor agregado, mediante tecnoloǵıas para la toma de decisio- nes y optimización de procesos en presencia de incertidumbre, modelaje y simulación, estad́ıstica, extracción de conocimiento, desarrollos computacionales, automatización de procesos e inte- gración de datos. Tiene como visión: Ser referencia como empresa de desarrollo de soluciones en el área de procesos manufactureros y de servicio por el aporte en valor agregado y viabilidad a sus clientes. 1.4. Organigrama y estructura organizacio- nal de la empresa Al momento de culminar el proyecto de pasant́ıa, la empresa poséıa la estructura organizacional que se muestra en la Figura 1.1. 1.5 Información sobre el Tutor Empresarial 3 Figura 1.1: Organigrama de MS 2 Consulting Group 1.5. Información sobre el Tutor Empresarial El desarrollo del proyecto de pasant́ıa fue llevado a cabo bajo la tutela de Jesús Enrique Rodŕıguez Arias, Ph.D. Licenciado en Matemáticas. Master en Optimización y Master en Exploración y Producción en la Escuela de Petróleo y Motores de Paŕıs, Francia. Ph.D. en Matemática Aplicada (Análisis Numérico) en la Universidad de Pau, Francia. Postdoctorado como cient́ıfico visitante en el Centro de Supercompu- tación en San Diego, California, Estados Unidos. 4 Descripción de la empresa y contexto del proyecto Más de veinte años de experiencia en modelaje matemático de procesos y simulación numérica. Más de veinte trabajos publicados en revistas arbitradas o presentados en eventos de internacionales. Experiencia docente a nivel de pre y postgrado en el Instituto Universi- tario de Tecnoloǵıa Región Capital y en la Universidad Simón Boĺıvar. Su cargo dentro de la compañia es el de Director General y sus datos de contactos son: Cédula de Identidad: V-3.720.757. Correo electrónico: enriquera03@yahoo.es Telefono: +58 (0212) 952.7568. 1.6. Descripción y contexto del proyecto El desarrollo del estudio viene justificado bajo la creación deun am- biente de simulación para la ingenieŕıa de procesos en Metanol de Oriente (METOR), S.A, planta de tratamiento y producción ubicada en San José de Anzoátegui. La estructura de la aplicación requiere una capa de estudios para la optimización de procesos, requerimiento que llevó a la necesidad de decidir entre la creación o la búsqueda de una libreŕıa de dominio público orientada a la solución computacional de alto desempeño de problemas de optimización. En esta búsqueda surge GenOptr (Generic Optimization) aśı como surge la necesidad de realizar el presente estudio para decidir sobre su adaptabilidad con respecto al marco de la aplicación. 1.7. Antecedentes del proyecto en la empresa Aunque la empresa posee una muy amplia trayectoria de desarrollo, esta es la primera vez que se realiza un estudio metodológicamente diseñado de esta ı́ndole, por lo que se puede decir que el trabajo realizado, es el primero en su estilo dentro de la compañia. 1.8 Áreas de conocimiento 5 1.8. Áreas de conocimiento Para el desarrollo del proyecto fue importante poseer conocimiento previo en las áreas de: 1. Fundamentos de Programación. ACM-CCS 1998: D.1: Programming techniques. 2. Análisis Numérico. ACM-CCS 1998: G.1: Numerical analysis. AMS-MSC 2000: 65-xx: Numerical analysis. 3. Fundamentos de Optimización. AMS-MSC 2000: 90-xx: Operations research and mathematical pro- gramming. Y consecuentemente todas las áreas que presten conocimientos requeridos por estas. 1.9. Objetivos y descripción del proyecto El proyecto tiene como objetivo general: Realizar un estudio de adaptabilidad, evaluación de rendimien- to y puesta en marcha de GenOptr (Generic Optimization), li- breŕıa de técnicas numéricas de optimización de dominio público desarrollada por los Lawrence Berkeley National Laboratories en California, Estados Unidos, para implementarse en la capa de optimización de un ambiente de estudio y simulación de la inge- nieŕıa de los procesos en la producción y tratamiento de gas me- tano, tomando como caso de estudio la planta Metanol de Oriente (METOR), S.A, ubicada en el Complejo Industrial Petroqúımi- co y Petrolero General José Antonio Anzoátegui, en Anzoátegui, Venezuela. Más espećıficamente se desea: 1. Estudiar la instalación y configuración de la libreŕıa en los sistemas operativos: Microsoftr WindowsTM XP y GNU Linux. 6 Descripción de la empresa y contexto del proyecto 2. Desarrollar y documentar una descripción teórica y computacional de cada uno de los métodos. 3. Estudiar y documentar la arquitectura de la libreŕıa. 4. Crear o evaluar códigos de prueba que ejemplifiquen la utilización de las rutinas fundamentales para el análisis de casos de estudio. 1.10. Plan de trabajo, metodoloǵıa y alcance del proyecto El plan de trabajo de la pasant́ıa que se adoptó fue el de tiempo parcial, de manera que esta tuvo una duración exacta de veintiún semanas. El de- sarrollo del proyecto se conceptualizó para llevárse a cabo en tres partes de seis, siete y ocho semanas cada una. La primera parte estuvo orientada tanto a aspectos informáticos co- mo a aspectos puramente teóricos. Se desglosa esta parte en las siguientes actividades descritas de manera más éxplicita: 1. Discusión inicial de aspectos administrativos. 2. Estudiar y documentar la instalación y configuración de la libreŕıa en los sistemas operativos: Microsoftr WindowsTM XP y GNU Linux. 3. Estudio y puesta en marcha de ejemplos propios. 4. Desarrollo y documentación de una descripción teórica y computacional de cada uno de los métodos. 5. Estudio de que métodos son más adecuados de acuerdo a los tipos de problemas. 6. Estudio de la mecánica de inicialización de ejemplos y descripción y estudio de las sintaxis para los archivos de configuración de las pruebas. Estas actividades se distribuyen en el tiempo planificado como se muestra en la Figura 1.2. 1.10 Plan de trabajo, metodoloǵıa y alcance del proyecto 7 Sem 1 Sem 2 Sem 3 Sem 4 Sem 5 Sem 6 Act 1 Act 2 Act 3 Act 4 Act 5 Act 6 Figura 1.2: Diagrama de actividades para la primera parte. La segunda parte se compone del estudio y desarrollo de los dos casos de prueba iniciales. Se estimó un tiempo promedio de tres semanas para el desa- rrollo de cada uno. Para cada problema se hicieron estudios teóricos aśı como estudios referentes a cuestiones de implementación computacional. De mane- ra más detallada las actividades se describen a continuación y pueden verse planificadas en el tiempo en la Figura 1.3. 1. Estudio del problema de prueba número 1. Modelado matemático. 2. Diseño del programa de simulación externo (evaluación de la función objetivo en este caso) para la implementación del ejemplo. 3. Estructuración bajo el ambiente de prueba de la libreŕıa. Creación de archivos de configuración y análisis de resultados. 4. Estudio del problema de prueba número 2. Modelado matemático. 5. Diseño del programa de simulación externo (evaluación de la función objetivo en este caso) para la implementación del ejemplo. 6. Estructuración bajo el ambiente de prueba de la libreŕıa. Creación de archivos de configuración y análisis de resultados. 8 Descripción de la empresa y contexto del proyecto Sem 1 Sem 2 Sem 3 Sem 4 Sem 5 Sem 6 Sem 7 Act 1 Act 2 Act 3 Act 4 Act 5 Act 6 Figura 1.3: Diagrama de actividades para la segunda parte. Finalmente, la tercera parte se compone del desarrollo de los dos casos de prueba finales, aśı como el reporte y análisis de los resultados del estudio. Estas actividades se desglosan a continuación y de manera análoga a las anteriores, se esbozan en el tiempo en la Figura 1.4. 1. Estudio del problema de prueba número 3. Modelado matemático. 2. Diseño del programa de simulación externo (evaluación de la función objetivo en este caso) para la implementación del ejemplo. 3. Estructuración bajo el ambiente de prueba de la libreŕıa. Creación de archivos de configuración y análisis de resultados. 4. Estudio del problema de prueba número 4. Modelado matemático. 5. Diseño del programa de simulación externo (evaluación de la función objetivo en este caso) para la implementación del ejemplo. 6. Estructuración bajo el ambiente de prueba de la libreŕıa. Creación de archivos de configuración y análisis de resultados. 7. Reporte de resultados y creación de informes pertinentes. 1.10 Plan de trabajo, metodoloǵıa y alcance del proyecto 9 Sem 1 Sem 2 Sem 3 Sem 4 Sem 5 Sem 6 Sem 7 Sem 8 Act 1 Act 2 Act 3 Act 4 Act 5 Act 6 Act 7 Figura 1.4: Diagrama de actividades para la tercera parte. 10 Descripción de la empresa y contexto del proyecto Caṕıtulo 2 Marco teórico e informático del proyecto Este caṕıtulo busca presentar algunos conceptos previos referentes al de- sarrollo del proyecto en cuanto a los aspectos teóricos inherentes a las áreas de estudio requeridas, aśı como a los aspectos informáticos que conforman el ambiente de pruebas y de programación de la libreŕıa, de manera de poder documentar aspectos como compatibilidad, portabilidad y requerimientos de plataforma y/o ambientes de desarrollo con el fin de establecer un punto de partida para cualquier trabajo futuro. 2.1. Una observación sobre la notación Antes de comenzar con la discusión, es importante hacer una pequeña aclaratoria con respecto a la notación. Para ser consistentes con la documen- tación principalmente utilizada, aquella en (6), muchas veces habremos de denotar a los elementos de Rn con simple letras del alfabeto latino. Más aún, si x ∈ Rn, entonces x siempre será un vector columna y xi será un elemento de x. Si, aśı es; se denotan mediante un supeŕındice. El resto de la notación utilizada a partir de este punto, permanece bas- tante regular por lo que, en caso de ser muy irregular en un punto, se hará la observación adecuada. 12 Marco teórico e informático del proyecto 2.2. Fundamentosde Optimización En este punto, se desea dar una introducción al área de la optimización, bajo el contexto del marco teórico presentado por el proyecto. Esto es útil para definir algunos términos que serán usados a lo largo de la discusión. Dentro del área de los estudios de optimización, se busca establecer un enfoque cient́ıfico para asistir en la toma de las mejores decisiones posibles al operar un sistema. Como sistema se quiere dar a entender una serie de componentes interdependientes, que trabajan juntos para lograr un objetivo en común. Por ejemplo, Ford Motor Company puede ser visto como un sis- tema cuya meta es maximizar las utilidades que se puedan ganar mediante la producción de veh́ıculos. Por supuesto, la situación debe representarse a través de un modelo ma- temático para poder estudiarse sin ambigüedad y con exactitud y para esto se utilizan modelos de optimización los cuales se componen de: Función(es) objetivo. Variables de decisión o parámetros. Restricciones. Claramente, el planteamiento de estos modelos conllevan a los proble- mas de optimización, donde se desea encontrar valores, entre el conjunto de todos los valores para las variables de decisión o parámetros, que op- timicen (maximicen o minimicen) una función objetivo considerando las restricciones dadas. Antes de continuar, se habrá de desarrollar una clasificación general de estos, en la cual se ditingue principalmente entre los problemas con: Variables continuas. Variables discretas. Ambos. Sin embargo, antes de estudiar dicha clasificación general, se debe hacer una pequeña clasificación previa. Cuando se desea hallar solo una variable o parámetro para optimizar la función objetivo estamos hablando de un pro- blema de optimización unidimensional. Por otro lado para más de una variable hablamos de optimización multidimensional. 2.2 Fundamentos de Optimización 13 Además de estos conceptos previos, es importante definir los siguientes: Se dice que cualquier especificación de las variables de decisión que cumple con todas las restricciones del modelo se encuentra en la región factible. Definimos como la solución óptima a la especificación de puntos de la región factible que optimiza la función objetivo. Finalmente y antes de continuar con la clasificación general, por ser im- portante para el análisis de los problemas de prueba, se presenta una clasi- ficación final de los modelos matemáticos en los problemas de optimización, los cuales pueden ser: Modelos estáticos o modelos dinámicos. Modelos lineales y modelos no lineales. Modelos determińısticos y modelos estocásticos. Cabe mencionar que estos conceptos se definen apropiadamente en (4). 2.2.1. Problemas con variables cont́ınuas En los problemas con variables continuas, habremos de denotar el con- junto de posibles parámetros continuos como: Xc , { x ∈ Rnc|xi ∈ R ∧ i ∈ N } (2.1) En base a esto, denotaremos este tipo de problemas como Pc (2.2) En los cuales, se busca un valor x tal que se pueda asegurar el valor mı́n x∈Xc f(x) (2.3) donde f : Rn 7→ R (2.4) es una función objetivo diferenciable al menos una vez. 14 Marco teórico e informático del proyecto 2.2.2. Problemas con variables cont́ınuas con restriccio- nes Este tipo de problemas se denotan Pcg (2.5) En ellos, tambien se quiere hallar el valor adecuado para los parámetros tal que se pueda asegurar el valor mı́n x∈Xc f(x) (2.6) pero además se considera un conjunto de restricciones de la forma g(x) ≤ 0 (2.7) donde g : Rn 7→ Rm (2.8) 2.2.3. Problemas con variables discretas Denotamos el conjunto de posibles parámetros discretos como: Xd ⊂ Znd (2.9) Análogamente, denotaremos este tipo de problemas como Pd (2.10) en donde, de igual manera, debemos hallar un valor x que permita hallar el valor mı́n x∈Xd f(x) (2.11) 2.2.4. Problemas mixtos En este tipo de problemas, el conjunto de posibles parámetros se define y denota como: X , Xc ×Xd (2.12) Estos problemas se denotan Pcd (2.13) 2.3 Introducción a GenOptr (Generic Optimization) 15 Y claramente se busca conseguir el valor mı́n x∈X f(x) (2.14) donde f : Rnc × Znd 7→ R (2.15) es la función objetivo. 2.2.5. Problemas mixtos con restricciones Claramente es el caso más general. Estos problemas se denotan Pcdg (2.16) Y de igual manera se busca conseguir el valor mı́n x∈X f(x) (2.17) pero considerando restricciones de la forma g(x) ≤ 0 (2.18) donde g : Rn 7→ Rm (2.19) 2.3. Introducción a GenOptr (Generic Op- timization) De acuerdo a (1) y a (6), GenOptr es, hablando bajo un enfoque teóri- co, una libreŕıa de optimización implementada bajo Java como lenguaje de programación, para minimizar una función objetivo, que es evaluada por un programa externo de simulación como por ejemplo los que se mencionan en (1): EnergyPlus, TRNSYS, SPARK, IDA-ICE o DOE-2. De acuerdo a (1), GenOptr posee en su libreŕıa, algoritmos de optimización locales y globales, uni y multidimensionales aśı como algoritmos para ejecuciones paramétricas (análisis de sensibilidad). 16 Marco teórico e informático del proyecto Ha sido diseñada para tratar con problemas de optimización donde eva- luar la función objetivo es costoso computacionalmente y donde sus derivadas no se conocen o donde ni siquiera existen. De igual forma, los diseñadores en (6) establecen, con respecto a su efi- ciencia, que no ha sido diseñada para problemas de programación lineal, ni para problemas de programación cuadrática ni para problemas donde se dis- pone de los valores del gradiente de la función. Ellos afirman que para esos problemas hay otras aplicaciones más eficientes. En śıntesis, la libreŕıa ha sido diseñada para problemas de optimización donde la función de costo es cara de evaluar computacionalmente hablando y donde no se tiene información de sus propiedades anaĺıticas o donde ni siquiera existen. 2.4. Arquitectura, ambiente de prueba e in- terfaz gráfica GenOptr posee una simple aplicación que implementa las rutinas con una interfaz gráfica muy simple (Figura 2.2) que permite hacer pruebas de las rutinas para problemas de optimización cuyo modelo ha sido implementado por un programa externo de simulación, de manera que esto simplifica las pruebas considerablemente. Esta interfaz muestra tanto gráficamente como en texto, la variación de las variables de decisión aśı como el valor de la función objetivo, a medida que ocurren las iteraciones. Conceptualmente, esta arquitectura se describe por si misma en la Figura 2.1. 2.4 Arquitectura, ambiente de prueba e interfaz gráfica 17 Figura 2.1: Arquitectura de GenOptr como programa externo de simulación. Con respecto al desarrollo de rutinas de optimización propias del usuario, según (1), estas pueden agregarse a la libreŕıa de algoritmos de optimiza- ción de GenOptr a través de la interfaz1 que ella provee, es decir, a través del mecanismo de herencia, simplemente se hereda de una superclase cuyos métodos utilizan las funcionalidades de GenOptr, por lo tanto, para imple- mentar cualquier algoritmo de optimización propio no es necesario conocer ni modificar la estructura general de la aplicación. Esto puede resumirse gráfi- camente en un diagrama de clases simplificado, el cual es mostrado en la Figura 2.3. En ese diagrama se muestra, principalmente, la primera parte fundamen- tal de GenOptr, que es su núcleo, es cual interactúa directamente con el programa de simulación externo. Este programa de simulación debe poseer entrada y salida basada en archivos de texto (6), además debe de poder ser llamado por la ĺınea de comandos y debe poder terminar automáticamente. A nivel algoŕıtmico, la superclase Optimizer ofrece una interfaz para la herencia de los algoritmos de optimización (que serán estudiados más ade- lante) y además posee funcionalidades para: 1Cuando se dice interfaz, en este contexto se está pensando en el mecanismo del lenguaje Java que permitecrear clases definidas como clases abtractas, útiles para, a través del mecanismo de herencia y minimizando la redundancia de trabajo de codificación, poder crear clases hijas, logrando que estas tengan propiedades en común. 1 8 M a r c o te ó r ic o e in fo r m á ti c o d e l p r o y e c to Figura 2.2: Interfaz gráfica de GenOptr como programa externo de optimización. 2.4 Arquitectura, ambiente de prueba e interfaz gráfica 19 Lectura de datos. Evaluaciones sencillas de funciones de costo. Reporte de datos. Reporte de errores. Esta interfaz y sus herederas, interactúan con las clases adicionales, las cuales están en una libreŕıa compartida. Estas implementan métodos muy comunes en: Álgebra Lineal. Chequeo de optimalidad. Búsqueda lineal. Operaciones matemáticas. Figura 2.3: Diagrama de clases resumido de la libreŕıa. 20 Marco teórico e informático del proyecto 2.4.1. Configuración de ejecuciones de prueba en alto nivel Para poder configurar una ejecución de prueba, el usuario debe de: 1. Definir una función costo (la que se necesite minimizar). Esta debe implementarse como un programa de computador el cual sea capaz de leer su entrada a través de argumentos por la ĺınea de comandos de cualquiera sea el sistema operativo en el que se este trabajando. Este programa debe, además del que se acaba de mencionar, satisfacer los requerimientos descritos en (6). 2. Especificar a nivel teórico sus restricciones y luego implementarlas a través de las diferentes maneras que hay para esto, descritas más ade- lante. 3. Verificar que el programa de simulación maneje los requerimientos de precisión descritos en (6) entre los cuales se menciona que el programa que implementa la función objectivo debe manejar los valores sin trun- car y bajo la mayor precisión posible, pues lógicamente esto habrá de afectar el desempeño numérico del proceso de optimización de parte de la libreŕıa. 4. Crear los archivos de configuración que representan el v́ınculo entre GenOptr, el programa externo de simulación y el sistema operativo. Estos archivos deben crearse bajo el formato descrito en (6), el cual será bre- vemente discutido a continuación. Archivos de configuración La sintaxis de estos archivos está completamente documentada en (6), sin embargo brevemente habremos de discutir la utilidad de cada uno de ellos: Archivo de configuración (*.cfg): Este archivo contiene detalles de la interacción con el sistema operativo. Archivo de ordenes (*.txt): Contiene los detalles de la ejecución como por ejemplo, los parámetros del algoritmo elegido. Este archivo implica directamente la creación del siguiente archivo a describir. 2.5 Especificaciones de instalación 21 Archivo de plantilla de argumentos (*.txt): Contiene la expresión que describe que parámetro es que variable en la llamada del programa. Todos estos son utilizados por el archivo maestro denominado archivo de inicialización (*.ini) el cual informa a GenOptr sobre ellos a parte de dar comienzo a la ejecución de la optimización. 2.5. Especificaciones de instalación Con respecto a los detalles inherentes a la instalación, podemos mencio- nar a que la aplicación y la libreŕıa están desarrolladas en Java y por lo tanto son muy portables, hasta el punto en que el usuario de hecho se descarga el instalador como un archivo ejecutable de Java (un archivo *.jar) el cual se ejecuta permitiendo una instalación guiada, en modo gráfico en cualquiera de estos sistemas. Con respecto a las dependencias, según (7), solo debe te- nerse instalado previamente la máquina virtual de Java (JRE, Java Runtime Enviroment) en su versión 1.5.0 o superior. El instalador denominado (por defecto) genopt-install.jar toma pro- vecho de las potencialidades de portabilidad de Java al permitir una instala- ción guiada, en modo gráfico en cualquier sistema. Al ejecutar el instalador se obtiene la siguiente pantalla: 22 Marco teórico e informático del proyecto Aqúı solo se debe, después de leer la información si se requiere, seleccionar la opción Next. Luego se obtiene la pantalla que se muestra en la siguiente figura, la cual, muestra los acuerdos de licencia. Una vez más en caso de ser requerido solo se debe seleccionar el botón titulado: I accept the terms of this license agreement. Y luego seleccionar la opción Next. Luego el instalador solicitará escoger la ruta de instalación a través de la pantalla que se muestra en la siguiente Figura: 2.5 Especificaciones de instalación 23 Para esto se utiliza el botón Browse... y luego, se selecciona donde habrán de copiarse los archivos que conforman la aplicación. Una vez seleccionada la ruta se escoge la opción Next. En caso de que, por cuestiones de permisos, no se pueda escribir en la ruta especificada, el instalador hace uso del siguiente cuadro de dialogo para informar al usuario sobre esto: En este caso sólo debe seleccionarse otra ruta y seleccionar la opción Next. Otra posible advertencia es cuando se selecciona como ruta un directorio previamente creado. En este caso, la siguiente advertencia informa sobre esto: 24 Marco teórico e informático del proyecto Una vez más, solo debe especificarse una nueva ruta. Finalmente, de no haber problemas con la ruta dada, el instalador informa que el directorio que se ha especificado va a crearse, mediante el siguiente cuadro de dialogo: Ya en este punto, al aceptar la creación, se procederá a copiar los archi- vos necesarios en la ruta dada, progreso que puede examinarse mediante la siguiente pantalla: Aqúı solo debe seleccionarse la opción Next para finalizar la instalación, resumen que se muestra de la siguiente forma. 2.5 Especificaciones de instalación 25 Donde debe seleccionarse la opción Done para finalizar la instalación y salir del instalador. En resumen, la instalación de por si fue estudiada y mencionada aqúı por simple fines de documentación pues en realidad, como puede verse, no posee mayor complejidad. De esta misma forma, esta puede llevarse a cabo bajo otros sistemas operativos tal cual como se muestra en el Apéndice A. 26 Marco teórico e informático del proyecto Caṕıtulo 3 Marco teórico de la libreŕıa Este caṕıtulo busca resumir el marco teórico fundamental de los algorit- mos de optimización que se encuentran por defecto implementados en Gen- Optr. 3.1. Algoritmos para optimización unidimen- sional Para el tratamiento de funciones de una sola variable, la libreŕıa presenta algoritmos que implementan el método de división interna. Explicaremos el algoritmo principal y luego como se implementa en dos maneras diferentes. 3.1.1. Algoritmos de división interna Los algoritmos de división interna minimizan una función f : R 7→ R sobre un intervalo especificado por el usuario. No requieren las derivadas y solo requieren una evaluación de la función por cada división, excepto por la inicialización. Para dos valores x0, x3 ∈ R, con x0 < x3, sea X = [x0, x3]. Supongamos queremos minimizar f sobre X y supóngase que f : R 7→ R tiene un único punto óptimo x∗ ∈ X. Para un s ∈ (0, 1), sea x1 = x0 + s(x3 − x0) (3.1) x2 = x1 + s(x3 − x1) (3.2) 28 Marco teórico de la libreŕıa Si f(x1) ≤ f(x2), entonces x∗ ∈ [x0, x2]. Por lo tanto podemos eliminar el intervalo (x2, x3] y restringir nuestra búsqueda a [x0, x2]. Similarmente, si f(x1) > f(x2), entonces x ∗ ∈ [x1, x3] y podemos eliminar [x0, x1). Por lo tanto, hemos reducido el intervalo inicial, a un intervalo que contiene al mi- nimizante x∗. Por supuesto, hace falta definir un criterio para saber en cual punto del intervalo se va a hacer la evaluación. Como se verá en seguida, ambas imple- mentaciones de este método difieren en esto. División interna por el método de la sección dorada En esta implementación, el nuevo punto se elige de manera que los inter- valos producto de la división permanezcan uniformes en longitud, es decir, se elige el x2 talque q + x1 + x2 x0 − x3 = 1 − q (3.3) donde q = 3 − √ 5 2 ≈ 0,382 (3.4) fracción que correponde al famoso número de la sección dorada dando su nombre al algoritmo. División interna por el método de Fibonacci Supongase que estamos optimizando sobre un intervalo de la forma [x0,i, x3,i]. Si dividimos este intervalo en tres segmentos simétricamente alrededor de su punto medio y denotamos las distancias de estos segmentos como d1,i < d2,i < d3,i, esta implementación plantea que se puede definir la distancia del nuevo intervalo como d3,(i+1) = d2,i = d1,(i+1) + d2,(i+1) (3.5) donde d1,i = Fm−i Fm−i+2 , d2,i = Fm−i+1 Fm−i+2 , i ∈ {0, 1, . . . , m} (3.6) El algoritmo debe su nombre al uso de los números de Fibonacci Fi utiliza- dos en la definición anterior, los cuales pueden ser definidos recurrentemente como F0 = F1 = 1 (3.7) Fi = Fi−1 + Fi+2, i ∈ {2, 3, . . .} (3.8) 3.2 Algoritmos para optimización multidimensional 29 Basta definir quem es el máximo de iteraciones y que es función de la fracción de reducción del intervalo r, a saber r = 1 Fm+2 (3.9) de la siguiente forma: m = mı́n m∈N { m|r ≥ 1 Fm+2 } (3.10) 3.2. Algoritmos para optimización multidimen- sional Estudiaremos los algoritmos para la optimización de funciones objetivo del tipo f : Rn 7→ R para n ≥ 2. 3.2.1. Algoritmos de búsqueda generalizada de patro- nes Estos son algoritmos que no requieren información sobre las propiedades diferenciales de la función objetivo y pueden ser utilizados para tratar pro- blemas del tipo Pc y del tipo Pcg. Intuitivamente, estos algoritmos definen la construcción de una malla Mk en Rn (figura 3.2.1) la cual es explorada de acuerdo a ciertas reglas. Si no se obtiene un decremento en el costo en los puntos de la malla alrededor del punto en la iteración actual, entonces la distancia entre los puntos se reduce y se repite el proceso. ¿Que reglas son usadas? Eso depende de la implementación. Sin embargo, a manera de resumen, debemos presentar dos conceptos importantes; uno es la definición formal de la malla y otro es la definición de la matriz de búsque- da Mk, la cual, varia en cada implementación. Para definir la malla debemos previamente definir que la secuencia de los parámetros para el tamaño de la malla satisface que ∆k = 1 rsk (3.11) 30 Marco teórico de la libreŕıa donde ∀k: sk = s0 + k−1 ∑ i=0 ti (3.12) de esta manera podemos definir Mk = { x0 + ∆kDm|m ∈ N2n } (3.13) Es importante observar que la malla se define en función a la matriz D de direcciones de búsqueda; la cual se define como: D = [−e1,+e1, . . . ,−en,+en] ∈ Zn×2n (3.14) donde {ei}ni=1 denota la sucesión de vectores unitarios en Rn. ¿Como se explora la malla de acuerdo a D? Para esto se definen un conjunto de funciones cuyo dominio son los conjuntos implicados en la eje- cución del algoritmo. Las diferentes definiciones de estas funciones permiten el control de la búsqueda local y de la búsqueda global. Estas vaŕıan con las distintas implementaciones y se habrán de estudiar enseguida. Figura 3.1: Vista intuitiva del escenario detrás de los algoritmos de búsqueda generalizada de patrones. 3.2 Algoritmos para optimización multidimensional 31 Algoritmo de búsqueda coordinada En esta implementación, la matriz de direcciones búsqueda se define es- pećıficamente como D = { +s1e1,−s1e1, . . . ,+snen,−snen } (3.15) donde si ∈ R, i ∈ {1, . . . , n}, es un parámetro de escala dado en la entrada a través de la variable Step. El parámetro r en (3.11) se define, a nivel de implementación computacio- nal, por el parámetro de entrada MeshSizeDivider. El parámetro inicial para el exponente del tamaño de la malla s0 en (3.12) está definido por el paráme- tro de entrada InitialMeshSizeExponent y el incremento tk en (3.11) por el parámetro de entrada MeshSizeExponentIncrement. Es importante mencionar que en esta implementación no hay búsqueda global. Algoritmo de Hooke-Jeeves Esta implementación es muy similar a la implementación anterior en cuan- to a la definición de D, r, s0 y tk pero además permite búsquedas globales a través de la definición de la función de búsqueda apropiada. Algoritmos de búsqueda generalizada de patrones con inicialización múltiple Todos los algoritmos búsqueda generalizada de patrones pueden ejecutar- se utilizando multiples puntos iniciales. Esto permite incrementar la proba- bilidad de hallar un mı́nimo global en caso de que la función objetivo tenga varios mı́nimos locales y más aún, decrementa el riesgo de no encontrar un mı́nimo cuando la función no es continuamente diferenciable, el cual es el caso más común cuando se trabaja con programas externos de simulación. Simplemente el usuario especifica un punto inicial y luego los otros pun- tos son aleatoriamente distribuidos, con una distribución uniforme entre las fronteras de la región factible en M0 permitiendo aśı, menos evaluaciones de la función objetivo. 32 Marco teórico de la libreŕıa 3.2.2. Algoritmo del gradiente discreto de Armijo Este algoritmo puede utilizarse para resolver problemas Pc donde f es continuamente diferenciable. Este algoritmo aproxima el gradiente utilizando diferencias finitas. Puede ser utilizado para problemas donde la función objetivo es evaluada compu- tacionalmente definiendo una función continuamente diferenciable pero para la cual obtener expresiones anaĺıticas para el gradiente es impractico o sim- plemente imposible. 3.2.3. Optimización por enjambre de part́ıculas Los algoritmos de optimización por enjambre de part́ıculas son algorit- mos estocásticos de optimización basados en la evolución de poblaciones para resolver problemas tipo Pc con posibles discontinuidades en la función obje- tivo. Además de esto, estos métodos permiten resolver problemas de tipo Pd y Pcd Estos algoritmos explotan un conjunto de potenciales soluciones al pro- blema de optimización. Cada potencial solución se denomina part́ıcula y el conjunto de potenciales soluciones en cada iteración se denomina población. Estos algoritmos implementan métodos de optimización global los cuales no requieren aproximaciones del gradiente de la función. La primera población se inicializa t́ıpicamente utilizando un generador de números aleatorios para esparcir las part́ıculas uniformemente en un hi- percubo definido por el usuario. Una ecuación para la actualización de las part́ıculas determina la localización de cada una en la siguiente generación. Podemos denotar a la i-ésima part́ıcula en la k-ésima generación como xi(k) ∈ Rn i ∈ {1, . . . , n} (3.16) además de que debemos denotar la velocidad de la part́ıcula como vi(k) ∈ Rn (3.17) La ecuación de actualización se define para c1, c2 ∈ R+ y para ρ1(k), ρ2(k) ∽ U(0, 1) (3.18) como xi(k + 1) = xi(k) + vi(k + 1) (3.19) 3.2 Algoritmos para optimización multidimensional 33 donde vi(k + 1) = vi(k) + c1ρ1(k)(pl,i(k) − xi(k)) + c2ρ2(k)(pg,i(k) − xi(k)) (3.20) además de que ∀i: vi(0) = 0 y pl,i(k) = mı́n x∈{xi(j)} k j=0 f(x) (3.21) pg,i(k) = mı́n x∈{{xi(j)}kj=0}ni=1 f(x) (3.22) Es importante acotar que existe diferencia clara entre los dominios para los problemas discretos y para los problemas continuos. Optimización por enjambre de part́ıculas sobre un mallado Una modificación importante que se puede hacer sobre el algoritmo ante- rior para evaluar la función objetivo, es que se pueden modificar los paráme- tros para que pertenezcan a una malla establecida en Rn, de esta manera, se reducen las evaluaciones de la función objetivo (llamadas al simulador, de ser ese el caso) pues en las iteraciones finales estos valoren tienden a agruparse. 3.2.4. Algoritmo h́ıbrido de búsqueda generalizada de patrones con optimización a través de enjambre de part́ıculas Útil para problemas tipo Pc, Pcd, Pcg y Pcdg. Este algoritmo, como su nombre lo indica es un h́ıbrido el cual, primero empieza estableciendo sobre un mallado una ejecuciónde optimización por enjambre de part́ıculas para un número de generaciones dado por el usuario nG ∈ N luego, inicializa el algoritmo búsqueda generalizada de patrones bajo la implementación de Hooke-Jeeves utilizando los parámetros de las part́ıculas con menor costo asociado a la evaluación de la función objetivo. 3.2.5. Algoritmo de Hooke-Jeeves Este es un algoritmo que no requiere derivadas que puede usarse para resolver problemas tipo Pc y Pcg. Si la función objetivo es continuamente diferenciable y tiene conjuntos de 34 Marco teórico de la libreŕıa nivel acotados, este algoritmo converge a un punto x∗ ∈ Rn que satisface que || ▽ f(x∗)|| = 0. Sin embargo para la versión actual de GenOptr, este algoritmo se incluye solo por cuestiones de compatibilidad pero ya no está soportado directamen- te. Los diseñadores de GenOptr recomiendan utilizar la implementación del mismo nombre que se encuentra en los algoritmos de búsqueda generalizada de patrones. 3.2.6. Método Simplex de Nelder y Mead con la ex- tensión de O’Neill Este es un algoritmo que no requiere derivadas y que puede usarse para resolver problemas tipo Pc y Pcg donde el número de parámetros debe ser estrictamente mayor que 1, es decir, problemas multidimensionales. El algoritmo Simplex construye un simplex n-dimensional en el espacio que es generado por las variables de decisión Se evalúa la función en los (n+ 1) puntos extremos del simplex. En cada iteración, el punto con el más alto valor para la función objetivo es reemplazado por otro punto. 3.3. Algoritmos para análisis de sensibilidad Estos algoritmos son utilizados para saber que tan sensible es una función con respecto a los cambios en sus variables independientes. El primer esquema que se presenta es el esquema para ejecuciónes paramétricas por variación simple, el cual es implementado por el al- goritmo Parametric, el cual permite hacer estas ejecuciones variando un parámetro a la vez e inicializando todos los otros parámetros a su valor ori- ginal. Cada parámetro debe tener un cota inferior y superior. El otro esquema disponible es el esquema de ejecución paramétrica sobre un mallado, implementado por el algoritmo EquMesh, que permite hacer este análisis sobre una malla ortogonal equidistante la cual es generada en el espacio propio de los parámetros. Al igual que en el método anterior, cada parámetro debe tener cotas superiores e inferiores. 3.4 Esquemas para el manejo de restricciones 35 3.4. Esquemas para el manejo de restriccio- nes En GenOptr podemos establecer restricciones sobre las variables depen- dientes y sobre las variables independientes. 3.4.1. Restricciones sobre las variables independientes Para establecer las restricciones en las variables independientes se pueden utilizar los métodos de Restricciones de caja. Restricciones lineales acopladas. En el primero, se definen restricciones a través de desigualdades del tipo X = {x ∈ Rn|li ≤ xi ≤ ui, i ∈ {1, . . . , n}} (3.23) las cuales son implementadas por GenOptr estableciendo expĺıcitamente que f(x) = ∞ para iteraciones que no satisfacen los criterios o, en algunos casos, la variable x ∈ X se transforma en una nueva variable sin restricciónes que denominaremos t ∈ Rn. En vez de optimizar la variable restringida x ∈ X, optimizaremos con respecto a t. En el segundo método las restricciones deben ser formuladas en términos de un sistema de ecuaciones lineales de la forma Ax = b (3.24) 3.4.2. Restricciones sobre las variables dependientes Estas son usadas para la optimización bajo restricciones no lineales sobre las variables dependientes de la forma g(x) ≤ 0 (3.25) donde g : Rn 7→ Rm es al menos una vez continuamente diferenciable. Estas pueden implementarse a través de los métodos de Funciones de barrera. Funciones de penalidad. 36 Marco teórico de la libreŕıa Funciones de barrera En el primer método definimos la imposición de un castigo cuando la variable dependiente se acerca a las fronteras de la región factible, de manera que mientras más cerca va, más alto es el valor de la función barrera. Para implementar esto redefinimos la función objetivo como: f̃(x, µ) = f(x) + µ 1 m ∑ i=1 gi(x) donde f̃ : Rn × R 7→ R y donde los factores de peso µi deben satisfacer 0 < µ0 < . . . < µi < µi+1 < . . . (3.26) con ĺım i→∞ µi = ∞ (3.27) Acto seguido aplicamos el algoritmo de optimización a f̃ . Es importante resaltar que en la definición anterior se requiere que x se encuentre en la región factible. Funciones de penalidad Este segundo método, permite además restricciones de la forma h(x) = 0 (3.28) donde h : Rn 7→ Rm pues en contraste con el primero, este método permite salirse de la región factible y cada vez que un parámetro viola una restricción, se le agrega un término positivo a la función objetivo. Para esto definimos: f̃(x, µ) = f(x) + µ m ∑ i=1 máx(0, gi(x))2 (3.29) donde f̃ : Rn × R 7→ R es una vez continuamente diferenciable en x. Luego aplicamos el algoritmo de optimización a f̃ . 3.5 Selección de algoritmos de acuerdo al tipo de problema 37 3.5. Selección de algoritmos de acuerdo al ti- po de problema Después del análisis anterior, se puede establecer una asignación entre los distintos tipos de problemas de optimización que existen y que algoritmos de la libreŕıa presentan puntos fuertes para tratar con ellos. Este resultado es muy importante pues como se vera más adelante, el desempeño de las rutinas esta fuertemente relacionado a la estructura del modelo a resolver. 3.5.1. Pc unidimensionales Para este tipo de problemas puede utilizarse cualquiera de los algoritmos de division interna que se discutieron previamente. En caso de realizarse un análisis de sensibilidad, este puede implementarse computacionalmente a través del algoritmo Parametric el cual, de igual forma, ya fue discutido. 3.5.2. Pc multidimensionales La elección es importante realizarla en función al conocimiento de las propiedades diferenciales de la función objetivo. Las siguientes elecciones son adecuadas en cualquier caso. Algoritmo h́ıbrido de búsqueda generalizada de patrones con optimiza- cion por enjambre de part́ıculas. Algoritmos de búsqueda generalizada de patrones implementados bajo el algoritmo de Hooke-Jeeves. Algoritmo del gradiente discreto de Armijo. Aunque, en caso de absoluto desconocimiento, se puede implementar Optimización por enjambre de part́ıculas 3.5.3. Pcg unidimensionales Pueden implementarse de manera análoga al caso sin restricciones consi- derando además, la implementación de las restricciones bajo un esquema de funciones de penalidad, con un valor inicial de los factores de peso µ alto. 38 Marco teórico de la libreŕıa 3.5.4. Pcg multidimensionales Este caso es también análogo al caso sin restricciones pero manejando las restricciones bajo un esquema de funciones de barrera. Aunque en la práctica se hace notorio el hecho de que, cuando la función es altamente no lineal y está sujeta a restricciones lineales, puede haber una divergencia ćıclica en el recorrido del dominio de búsqueda (5), por lo que se recomienda en estos casos implementar cualquiera de los: Algoritmos de búsqueda generalizada de patrones con inicialización múltiple 3.5.5. Pd, Pcd y Pcdg Teóricamente, el caso de la optimización para funciones de variables dis- cretas es complicado. Para este caso, al igual que para su análogo con res- tricciones, debe usarse el método de Optimización por enjambre de part́ıculas Y finalmente, para el caso de problemas mixtos, considerando el resultado previo, no resulta extraño que, al considerar posibles valores continuos, po- demos ahora pensar en implementar el método de Algoritmo h́ıbrido de búsqueda generalizada de patrones con optimiza- cion por enjambre de part́ıculas. Esta recomendación fue pensada como un método de referencia para comen- zar a atacar un problema en particular. Sin embargo, como se vera al mo- mentode las conclusiones, un análisis de control de los parámetros de los algoritmos debe ser llevado a cabo prácticamente como condición necesaria para, dependiendo del problema, lograr una precisión adecuada. Caṕıtulo 4 Problemas de prueba comparativos seleccionados Este caṕıtulo tiene el propósito de describir los problemas de prueba se- leccionados para el análisis. Cada uno de ellos, dentro de su propio contexto, presenta un modelo matemático que posteriormente fundamentó un modelo computacional que permitió la descripción de la función objetivo propia de cada uno. Para hacer el análisis, se eligieron cuatro problemas en función a su com- plejidad matemática y computacional y se resolvieron utilizando los algorit- mos de la libreŕıa. Esto permitió hacer comparaciones entre los algoritmos en cuanto a rapidez de convergencia, precisión de las soluciones y necesidad de ajustes en los parámetros de acuerdo a los resultados de referencia. 4.1. Maximización de la producción de Wo- zac Este problema se seleccionó por la simplicidad del escenario y a la vez por la complejidad relativa, la cual, se prestaba suficiente para una primera prueba. Este problema esta basado en (4). 4.1.1. Descripción del problema En este problema se plantea la situación de Eli Daisy, quien fabrica Wozac en enormes cargas, mediante el calentamiento de una mezcla qúımica en un 40 Problemas de prueba comparativos seleccionados contenedor presurizado. Cada vez que se procesa una carga, se produce una cantidad distinta de Wozac. La cantidad producida es el rendimiento del proceso (medido en libras). A Daisy le interesa comprender los factores que influyen en el rendimiento del proceso de producción de Wozac. 4.1.2. Modelo matemático Sean: V el volumen del contenedor en litros. P la presión del contenedor en mililitros. T la temperatura del contenedor en grados Celsius. A, B y C los porcentajes de composiciones qúımicas de la mezcla pro- cesada. El problema desea maximizar el rendimiento del proceso, z, descrito mediante la siguiente relación: z = 300 + 0,8V + 0,01P + 0,06T + 0,001TP − 0,01T 2 − 0,001P 2 +11,7A+ 9,4B + 16,4C + 19AB + 11,4AC − 9,6BC sujeto a las siguientes restricciones: El volumen debe estar entre 1 y 5 litros. V ≤ 5 (4.1) V ≥ 1 (4.2) La presión debe ser de entre 200 y 400 mililitros. P ≤ 400 (4.3) P ≥ 200 (4.4) La temperatura debe estar entre 100 y 200 ◦C. T ≤ 200 (4.5) T ≥ 100 (4.6) 4.1 Maximización de la producción de Wozac 41 La mezcla debe estar compuesta solo de A, B y C. A+ B + C = 1 (4.7) A, B y C deben ser números positivos. A ≥ 0 (4.8) B ≥ 0 (4.9) C ≥ 0 (4.10) Para que el fármaco se comporte de manera adecuada, solo la mitad de la mezcla cuando mucho puede ser del producto A. A ≤ 0,5 (4.11) 4.1.3. Implementación computacional La implementación computacional se llevó a cabo bajo ISO C++ como lenguaje de programación aśı como el resto de las implementaciones realiza- das en el proyecto. Se resumen las cuestiones de implementación a continuación: Archivo ejecutable: funcion.exe Algoritmo utilizado para la resolución: Algoritmo de búsqueda genera- lizada de patrones de Hooke-Jeeves. Parámetros de ejecución: Main = GPSHookeJeeves; MeshSizeDivider = 100; InitialMeshSizeExponent = 0; MeshSizeExponentIncrement = 1; NumberOfStepReduction = 4; 4.1.4. Análisis de resultados Para este problema se consideró como resultado de referencia el arrojado por el programa Microsoftr Excel Solver 2003. (P, V, T, A, B, C) = (5, 200, 100, 0,294, 0, 0,706) (4.12) 42 Problemas de prueba comparativos seleccionados solución para la cual z = 209,39. La implementación arrojó como resultado: -209.387585 5.0 200.0 100.0 0.29356 0.0 0.70676 Minimum point. alcanzado a las 2655 iteraciones. Este resultado se muestra prometedor y además constituye la primera muestra realizada dentro del desarrollo del proyecto del hecho de que la libreŕıa puede de hecho interactuar con un programa externo de simulación. 4.2. Optimización de redes a gran escala Este problema se concibió bajo el propósito de ser agresivos contra la libreŕıa en sus pruebas. De esta forma se pudieron hacer análisis con respecto a su estabilidad para problemas de gran escala. 4.2.1. Introducción a los modelos de redes Antes de continuar con la descripción del problema, se presentan unos conceptos propios relacionados de suma importancia. Una red (o grafo), según (4) se define mediante dos conjuntos de śımbo- los: nodos y arcos. Es decir, podemos definir un grafo G como: G = (V,A) (4.13) donde, por ejemplo V = {1, 2, 3} (4.14) A = {(1, 2), (2, 3), (1, 3)} (4.15) El cual tiene la siguiente representación gráfica: 1 2 3 4.2 Optimización de redes a gran escala 43 Continuando con las definiciones, en una red G, podemos definir una función de costo de la forma ψ : A 7−→ R; (R ⊆ R) (4.16) de tal forma de asociar a cada arco un costo propio de cualquier contexto1. 4.2.2. Descripción del problema En este tipo de problema se quiere trabajar sobre redes un tanto más grandes. Estas se generan paramétricamente de la siguiente forma para un valor l dado: Se crearán n nodos donde: n = (2l + 2) (4.17) Se crearán m arcos donde: m = 2(2l + 1)(2l + 2) (4.18) Un ejemplo de una red generada para l = 2 se muestra en la Figura 4.1. Para este problema se decidió trabajar con l = 8 generando aśı una red de 324 nodos y 612 arcos, la cual es proporcionalmente análoga a la que se muestra en la figura. 4.2.3. Modelo matemático Bajo el contexto previamente presentado, se define la función objetivo como f(x) = ( 1 100 n ∑ k=1 αkx 2 k ) + 1 100 α(A+B) (4.19) donde A = n ∑ k=1 √ 1 + x2k + (xk − xk+1)2 (4.20) B = 1 1200 [ 10 + n ∑ k=1 (−1)kxk ]4 (4.21) 1Dependiendo del problema también pueden asociarse costos a los nodos. 44 Problemas de prueba comparativos seleccionados Necesitando definir al vector α como α = { 10 jk−1 l−1 log(c) si jk ≥ 1 0 si jk = 0 donde c y j son parámetros de entrada dados. Las restricciones se manejan bajo un esquema de penalidad y vienen dadas de la forma: Ax = b (4.22) Donde: A es la matriz de incidencia de 324 x 612 de la red asociada. x es el vector de variables de decisión (vector de decisión). b es el vector de demandas. 31 32 33 34 35 36 25 26 27 28 29 30 19 20 21 22 23 24 13 14 15 16 17 18 7 8 9 10 11 12 1 2 3 4 5 6 56 57 58 59 60 46 45 35 48 47 37 50 49 39 52 51 41 54 53 43 55 44 34 36 38 40 42 23 25 27 29 31 24 26 28 30 32 33 13 15 17 19 21 22 12 14 16 18 20 2 11 1 3 4 5 6 8 7 9 10 Figura 4.1: Modelo de red generado para l = 2. 4.2 Optimización de redes a gran escala 45 4.2.4. Implementación computacional Se resumen las cuestiones de implementación a continuación: Archivos ejecutables: Se crearon dos, creador.exe el cual crea los ar- chivos de configuración necesarios para la ejecución de GenOptr y funcion.exe el cual implementa la función objetivo. Algoritmo utilizado para la resolución: Algoritmo de búsqueda genera- lizada de patrones con inicialización múltiple. Parámetros de ejecución: Main = GPSCoordinateSearch; MultiStart = Uniform; Seed = 2; MeshSizeDivider = 2; InitialMeshSizeExponent = 0; MeshSizeExponentIncrement = 1; NumberOfStepReduction = 3; 4.2.5. Análisis de resultados Para este problema, el mejor valor óptimo conocido es f = 10, 5849 (4.23) según GenOptr el mejor antes de detenerse por falta de recursos de hardware fue de f = 12, 1353 (4.24) Obtenidos bajo un: Execution time: 02:40:49 Error message: ************** java.lang.OutOfMemoryError: Java heap space GenOpt terminated with error. En este problema, aunque no se consiguió un resultado exacto, la conver- gencia de la simulación se mostraba prometedora. 46 Problemas de prueba comparativos seleccionados 4.3. Modelo seleccionado de optimización no lineal Los problemas anteriores muestran combinaciones con respecto ala pro- piedad de linealidad. Por ejemplo, el problema 1 mostraba un modelo que poséıa una función no lineal bajo restricciones lineales. El problema 2 mostra- ba un modelo que, de igual forma, poséıa una función no lineal y restricciones lineales. 4.3.1. Descripción del problema El siguiente problema busca evaluar el desempeño de la libreŕıa bajo un esquema de restricciones no lineales. El problema es propuesto como proble- ma de prueba en el proyecto Princeton Library of Nonlinear Programming Models, llevado a cabo por la sección de Performance de GAMS World (8). 4.3.2. Modelo matemático Se busca minimizar para un vector c dado2: f(x) = 10 ∑ j=1 exj (cj + xj − log ( 10 ∑ k=1 exk ) ) (4.25) considerando las siguientes restricciones: ex1 + 2ex2 + 2ex3 + ex6 + ex10 = 2 (4.26) ex4 + 2ex5 + ex6 + ex7 = 1 (4.27) ex3 + ex7 + ex8 + 2ex9 + ex10 = 1 (4.28) 4.3.3. Implementación computacional Se resumen las cuestiones de implementación a continuación: Archivo ejecutable: Se creo funcion.exe el cual implementa la función objetivo. 2Nótese que se ha vuelto a adoptar la convención notacional clásica de las cantidades no escalares, es decir, se denotan en negrita y se indexan mediante un sub́ındice. 4.4 Modelos seleccionados de optimización no lineal mediante métodos de programación evolutiva 47 Algoritmo utilizado para la resolución: Método Simplex de Nelder y Mead con la extensión de O’Neill. Parámetros de ejecución: Main = NelderMeadONeill; Accuracy = 0.001; SteepSizeFactor = 0.1; BlockRestartCheck = 2; ModifyStoppingCriterion = true; 4.3.4. Análisis de resultados Para este problema, según (9), el mejor valor conocido es f = −47, 761 (4.29) según GenOptr el mejor valor es -47.1079 with -2.4365029219565306 -1.5273129185441103 -0.4270876633778027 -2.9721034945505282 -1.0362517756224303 -2.4985229436941347 -1.8498397901215604 -3.3789435478672845 -3.42510219995775 -2.392600106799054 as Minimum point. Este resultado, considerando la complejidad de la función objetivo, aśı co- mo la complejidad de las restricciones, se muestra aceptable aunque en este punto del estudio se sabe que pudiese mejorar o empeorar drásticamente dependiendo de como se afinen los parámetros de ejecución. 4.4. Modelos seleccionados de optimización no lineal mediante métodos de progra- mación evolutiva Estas funciones se presentan en (3) y fueron consideradas en primer lu- gar para ser optimizadas mediante un algoritmo genético simple, pues estas buscan burlar los métodos numéricos convencionales. 48 Problemas de prueba comparativos seleccionados 4.4.1. Descripción del problema Se presentan tres funciones las cuales se definen solo bajo restricciones de dominio y son altamente no lineales. 4.4.2. Modelo matemático Las funciones a maximizar son la siguientes: la primera se define como f(x, y) = x2 + y2 − 0,3 cos(3πx) − 0,4(4πy) + 0, 7 (4.30) cuya representación gráfica es como se muestra: Figura 4.2: Primera función para el problema 4. La segunda función, se define como: f(x, y) = ( sin( √ x2 + y2) )2 − 0,5 1 + 0,001(x2 + y2) (4.31) y su representación gráfica es como se muestra en la Figura 4.3. 4.4 Modelos seleccionados de optimización no lineal mediante métodos de programación evolutiva 49 Figura 4.3: Segunda función para el problema 4. Finalmente la tercera función se define como f(x, y) = 21,5 + x sin(4πx) + y sin(20πy) (4.32) y su representación gráfica es como se muestra en la Figura 4.4. Figura 4.4: Tercera función para el problema 4. 50 Problemas de prueba comparativos seleccionados 4.4.3. Implementación computacional Se resumen las cuestiones de implementación a continuación: Archivo ejecutable: Se crearon tres archivos llamados funcion.exe los cuales implementan las funciones objetivo. Algoritmo utilizado para la resolución: En los tres casos se imple- mentó el algoritmo de búsqueda generalizada de patrones con iniciali- zación múltiple. Parámetros de ejecución: Main = GPSCoordinateSearch; MultiStart = Uniform; Seed = 5; NumberOfInitialPoint = 5; MeshSizeDivider = 100; InitialMeshSizeExponent = 0; MeshSizeExponentIncrement = 1; NumberOfStepReduction = 4; 4.4.4. Análisis de resultados Según MaplesoftrMaple 12, los tres resultados son: f1 = 250, 67 f2 = 1 f3 = 27, 65 (4.33) Y según GenOptr se tienen los siguientes: Para f1: -250.665483 10.0 -10.0 Minimum point. alcanzado en 70 iteraciones en 5 segundos. Para f2: -1.0 0.0 0.0 Minimum point. alcanzado en 43 iteraciones en 7 segundos y finalmente para f3: -27.651024 -3.127 3.025012 Minimum point. alcanzado en 314 iteraciones en 41 segundos. Estos resultados son excelentes, tomando en cuenta que para el último resultado, Maple 12 tarda 3 segundos más de ejecución, aún considerando los distintos contratiempos computacionales que tiene GenOptr y que se discuten en (1). Caṕıtulo 5 Conclusiones, recomendaciones y trabajo futuro Como conclusiones puntuales podemos resaltar que: 1. La libreŕıa posee una precisión excelente. 2. Considerando su contexto de funcionamiento el desempeño en tiempo de ejecución es bueno. A parte de todo esto, a nivel macro es un proyecto bien elaborado pues: Posee soporte on-line, disponible en (7). La documentación es excelente y contempla el marco teórico de los algoritmos. Aunque algunos algoritmos poseen comportamientos muy poco intuitivos. Algunas recomendaciones importantes: Debido a lo poco intuitivo de los algoritmos es importante usarla bajo un marco de referencia (mejor valor óptimo conocido) en caso de no comprender en su totalidad el funcionamiento del algoritmo en parti- cular a implementar. Aunque los problemas de prueba son en promedio más exigentes de lo que podŕıa esperarse en el contexto del desarrollo del simulador es importante hacer una prueba bajo ese contexto. 52 Conclusiones, recomendaciones y trabajo futuro Apéndice A Resumen de instalación guiada y ejecución Las siguientes tomas de pantalla muestran una instalación guiada y una ejecución bajo el sistema operativo NovellrOpen SuSE Linux v10.1 con fines de mostrar en breves cuentas su nivel de portabilidad: 54 Resumen de instalación guiada y ejecución F igu ra A .1: P an talla in icial. 5 5 Figura A.2: Pantalla de muestra de licencia. 5 6 R e su m e n d e in st a la c ió n g u ia d a y e je c u c ió n Figura A.3: Pantalla de muestra de ubicación de la instalación. 5 7 Figura A.4: Pantalla de muestra de progreso. 58 Resumen de instalación guiada y ejecución F igu ra A .5: P an talla d e m u estra d e p rogreso. 5 9 Figura A.6: Pantalla de confirmación de la instalación. 60 Resumen de instalación guiada y ejecución F igu ra A .7: E jecu ción d e m u estra. Bibliograf́ıa [1] Michael Wetter. GenOpt - A Generic Optimization Program. Simula- tion Research Group. Building Technologies Department. Environmen- tal Energy Technologies Division. Lawrence Berkeley National Labora- tory. [2] Ph. L. Toint y D. Tuyttens. On large scale nonlinear network optimiza- tion. Mathematical Programming, V. 48 (125-159). 1990. [3] Marcin Molga y Czeslaw Smutnick. Test functions for optimization needs. 2005. [4] Wayne L. Winston. Investigación de Operaciones. Aplicaciones y Algo- ritmos. Cuarta edición. Thompson Editores, S.A. de C.V. México D.F, México. ISBN: 970-686-362-1. [5] Eduardo J. Sánchez P. Investigación de Operaciones. Notas de Cátedra. Primera edición. Universidad de Carabobo. Carabobo, Venezuela, 2009. [6] Lawrence Berkeley National Laboratory. Building Technologies Depart- ment. Simulation Research Group. GenOpt(R) Generic Optimization Program User Manual. Versión 2.1.0. [7] Lawrence Berkeley National Laboratory Web Site. http://gundog.lbl.gov/GO/. [8] GAMS World. http://www.gamsworld.org/performance/ princetonlib/raw/cute/hs111lnp.gms. [9] Arnold Neumaier. Fakultät für Mathematik. Universität Wien. http://www.mat.univie.ac.at/~neum/glopt/coconut/Benchmark/Library2/RES/hs111lnp.res.
Compartir