Logo Studenta

P473873

¡Este material tiene más páginas!

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.

Continuar navegando