Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Departamento de Computación CINVESTAV-IPN Av. IPN No. 2508 Col. San Pedro Zacatenco México, D.F. 07300 email: [email protected] Clase No. 1 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Introducción Llamamos optimización al acto de obtener el mejor resultado posible dadas ciertas circunstancias. No existe ningún método de optimización que pueda resolver eficientemente todo tipo de problemas y de ahı́ que se hayan desarrollado diversos métodos a lo largo de los años. Clase No. 1 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Introducción La optimización tiene enorme aplicabilidad en muchas ramas del conocimiento, aunque el énfasis de este curso serán las aplicaciones en ingenierı́a. Nótese que este curso dará prioridad a los aspectos algorı́tmicos y de implementación sobre los aspectos teóricos. Por lo tanto, se requieren buenos conocimientos de programación, ası́ como conocimientos básicos de cálculo y de trigonometrı́a. Clase No. 1 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Introducción A los métodos de optimización se les conoce también como técnicas de programación matemática y se les suele estudiar en investigación de operaciones. La investigación de operaciones es una rama de las matemáticas que se ocupa de métodos y técnicas aplicables a problemas de toma de decisiones, ası́ como del establecimiento de las mejores soluciones posibles (o sea, las óptimas). Clase No. 1 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Introducción La tabla del acetato siguiente muestra una clasificación de métodos de optimización: Clase No. 1 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Técnicas de Programación Técnicas Métodos Matemática Estocásticas Estadı́sticos Métodos de cálculo Teorı́a de decisión Análisis de regresión Cálculo de variaciones estadı́stica Análisis de clusters, Programación no lineal Procesos de Markov reconocimiento de patrones Programación geométrica Teorı́a de colas Diseño de experimentos Programación cuadrática Teorı́a de renovación Análisis discriminatorio Programación lineal Métodos de simulación (análisis de factores) Programación dinámica Teorı́a de confiabilidad Programación entera Programación estocástica Programación separable Programación multiobjetivo Métodos de redes: CPM y PERT Teorı́a de juegos Recocido simulado Algoritmos genéticos Redes Neuronales Clase No. 1 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Introducción Nótese que en este curso nos concentraremos en las técnicas de programación matemática y no cubriremos ni métodos estocásticos ni métodos estadı́sticos. Dentro de las técnicas de programación matemática, nos concentraremos fundamentalmente en los métodos para optimización no lineal sobre una y varias variables, en la ausencia de restricciones. Veremos también (si el tiempo lo permite) un poco sobre métodos de optimización en espacios restringidos. Clase No. 1 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Introducción Las técnicas de programación matemática son útiles para encontrar el mı́nimo de una función de varias variables sujeta a un conjunto de restricciones. Las técnicas estocásticas pueden usarse para analizar problemas descritos por un conjunto de variables aleatorias con una distribución de probabilidad conocida. Los métodos estadı́sticos nos permiten analizar datos experimentales y construir modelos empı́ricos para obtener la representación más precisa posible del problema real. Clase No. 1 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Antecedentes Históricos Los primeros métodos de optimización se remontan a la época de Isaac Newton (1643-1727), Joseph-Louis Lagrange (1736-1813) y Augustin-Louis Cauchy (1789-1857). Clase No. 1 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Antecedentes Históricos El desarrollo de métodos de cálculo diferencial para optimizar fue posible gracias a las contribuciones de Isaac Newton y Gottfried Wilhelm von Leibniz (1646-1716). Clase No. 1 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Antecedentes Históricos Los fundamentos de cálculo de variaciones, que lidia con la minimización de funciones, fueron sentados por Johann Bernoulli (1667-1748), Leonhard Euler (1707-1783), Joseph-Louis Lagrange y Karl Weierstrass (1815-1897). Clase No. 1 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Antecedentes Históricos El método de optimización para problemas con restricciones, el cual involucra la adición de multiplicadores desconocidos, se conoce como hoy en dı́a con el nombre de su inventor: Lagrange. Clase No. 1 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Antecedentes Históricos Cauchy desarrolló la primera aplicación del método de descenso empinado para resolver problemas de minimización sin restricciones. Clase No. 1 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Antecedentes Históricos A pesar de estas primeras aplicaciones, se logró muy poco progreso hasta mediados del siglo XX, cuando el advenimiento de las computadoras digitales hizo posible la implementación de los algoritmos de optimización existentes y estimuló el desarrollo de nuevos métodos. Esto marcó el inicio de una época increı́blemente productiva en la cual surgió un volumen muy considerable de publicaciones sobre optimización. Esto produjo también el surgimiento de varias áreas bien definidas en teorı́a de la optimización. Clase No. 1 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Antecedentes Históricos Es interesante hacer notar que los principales desarrollos en el área de métodos numéricos para optimización sin restricciones se llevaron a cabo en el Reino Unido en los 1960s. El método simplex fue desarrollado por George Dantzig (1914- ) en 1947 y el principio de optimalidad para problemas de programación dinámica fue anunciado en 1957 por Richard Bellman (1921-1984). Clase No. 1 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Antecedentes Históricos Esto sentó las bases para el desarrollo de métodos de optimización en espacios restringidos. Sin embargo fue el trabajo de Harold W. Kuhn y Albert W. Tucker en 1951 en torno a las condiciones necesarias y suficientes para la solución a un problema de optimización lo que estableció los fundamentos para una enorme cantidad de investigación posterior en optimización no lineal. Clase No. 1 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Antecedentes Históricos Igualmente significativas fueron las contribuciones de G. Zoutendijk y J. Ben Rosen durante principios de los 1960s (ambos contribuyeron a la optimización no lineal). Clase No. 1 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Antecedentes Históricos Aunque no se ha encontrado ninguna técnica de optimización cuya aplicabilidad a programación no lineal sea universal, el trabajo de C.W. Carroll y el de Anthony V. Fiacco & Garth P. McCormick, permitió resolver una amplia gama de problemas con restricciones usando funciones de penalización. Clase No. 1 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Antecedentes Históricos La programación geométrica fue desarrollada en los 1960s por R.J. Duffin, C. Zener y E.L. Peterson. Ralph E. Gomory realizó trabajo pionero en programación entera, que ha sido una de las áreas de mayor crecimiento en optimización (esto se debe a que muchos problemas del mundo real caen dentro de este tipo de clasificación). Clase No. 1 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Antecedentes Históricos George Dantzig y Abraham Charnes & William Wager Cooper desarrollaron técnicas de programación estocástica para resolver problemas en los cuales se presupone que los parámetros de diseño son independientes y siguen una distribución normal. Clase No. 1 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Antecedentes Históricos El deseo de optimizar simultáneamente dos o más funciones objetivo, motivó el desarrollo de la optimización multiobjetivo. Uno de los primeros métodos multiobjetivo que aún sigue en uso fue la programación por metas (goal programming), propuesta por Charnes y Cooper en 1961 para problemas lineales. Clase No. 1 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Antecedentes Históricos Los fundamentos de teorı́a de juegos fueron desarrollados por John von Neumann en 1928, y desde entonces se ha aplicado esta técnica a varios problemas, sobre todo en economı́a. La aplicación de teorı́a de juegos a la solución de problema de ingenierı́a es relativamente reciente. Clase No. 1 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Antecedentes Históricos La segunda mitad del siglo XX se caracterizó por el advenimiento de las heurı́sticas tales como el recocido simulado, los algoritmos genéticos y las redes neuronales. El recocido simulado imita el proceso de enfriamiento de los sólidos. Los algoritmos genéticos son técnicas de búsqueda y optimización basadas en la selección natural y la genética. Clase No. 1 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Antecedentes Históricos Las redes neuronales son técnicas de clasificación basadas en el uso de modelos de celdas simples (llamadas “neuronas”) interconectadas entre sı́. Clase No. 1 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Algunas Aplicaciones de la Optimización en Ingenierı́a En el sentido más amplio del término, la optimización puede aplicarse para resolver cualquier problema de ingenierı́a. Algunos ejemplos de aplicaciones son los siguientes: Diseño de estructuras para aviación y el espacio con un peso mı́nimo. Determinación de trayectorias óptimas de vehı́culos espaciales. Clase No. 1 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Algunas Aplicaciones de la Optimización en Ingenierı́a Diseño de estructuras civiles tales como marcos, cimentaciones, puentes, torres, chimeneas, y presas, con un costo mı́nimo. Diseño sı́smico de estructuras (con cargas aleatorias). Diseño de sistemas de agua potable y alcantarillado. Clase No. 1 2009