Si el problema de optimización involucra una función objetivo dependiente de ciertas restricciones que no se expresen en forma explícita como funciones de las variables de diseño (dependientes) o resulten ser complejas en su manejo, las técnicas analíticas de programación lineal no brindan un resultado confiable y eficiente. Como una alternativa para la optimización de esta clase de problemas se encuentran los métodos no lineales cuyos resultados son más eficientes y satisfactorios. El problema de programación no lineal consiste en seleccionar los valores de algunas variables de manera que se maximice o minimice una función dada, que puede estar o no sujeta a un conjunto de restricciones de igualdad y/o desigualdad. En general la función por optimizar puede representar un beneficio o un costo debido al desarrollo de alguna actividad con la cual se busca satisfacer algunas necesidades específicas o definir el proceso de operación de algún sistema, etc. Los métodos de programación no lineal se dividen en: técnicas de optimización sin
restricciones y técnicas de optimización con restricciones. Estos métodos se subdividen en
métodos directos y métodos indirectos respectivamente.
2.5.1 Técnicas de optimización sin restricciones [1, 4].
En esta sección se resumen los métodos de solución de problemas de optimización sin restricciones de la forma:
min f (z)
Cuando se analizan y se tratan de resolver problemas de tipo práctico, es evidente que raramente éstos se presentan sin limitaciones, sin embargo, es importante el análisis de esta clase de problemas por las siguientes razones:
1) El análisis de técnicas de minimización sin restricciones es básico para tener un conocimiento necesario para el estudio y aplicación de métodos de minimización con restricciones.
2) El método sin restricciones puede ayudar en gran manera a la solución de ciertas clases de problemas complejos en el área de ingeniería. Por ejemplo, la respuesta (lineal o no lineal) de cualquier estructura sometida a cualquier
condición de carga puede encontrarse mediante la minimización de la energía potencial.
3) Las restricciones no causan un impacto significativo en la solución de ciertos problemas.
4) Algunos métodos robustos para la solución de problemas de optimización con restricciones requieren del uso de técnicas de minimización sin restricciones. Los métodos para la solución de problemas de optimización sin restricciones se pueden clasificar como métodos de búsqueda dir ecta y métodos de búsqueda indirecta. Algunos de estos métodos se clasifican en la Tabla 2.1.
Tabla 2.1. Métodos de optimización sin restricciones
Métodos de búsqueda directos Métodos de búsqueda indirectos Métodos de búsqueda aleatoria
Métodos de búsqueda por celdas Métodos de búsqueda de trayectoria Métodos de Powell
Método de Hooke-Jeeves etc.
Gradiente de una función Método del descenso escarpado Método de Fletcher-Reeves Método de Newton
Método de Davidon-Fletcher-Powell etc.
2.5.2 Métodos de búsqueda directa
Los métodos de búsqueda directa requieren conocer los valores de la función objetivo pero no de las derivadas de la función para poder encontrar el punto óptimo, los métodos de búsqueda directa también son conocidos como métodos de orden cero. Estos métodos son muy convenientes para problemas simples que involucran un número pequeño de variables, pero en general son menos eficientes que los métodos de búsqueda indirecta. Uno de los métodos más usuales es el método de Hooke-Jeeves y consiste de dos tipos de movimientos, el movimiento exploratorio y el movimiento ejecutorio. El primer tipo de movimiento es incluido para explorar el comportamiento local de la función objetivo, y el segundo es incluido para tomar ventaja de la dirección de búsqueda.
2.5.3 Métodos de búsqueda indirecta
Los métodos de búsqueda indirecta requieren, además del conocimiento de valores de la función objetivo, el cálculo de la primera derivada, y otros de la segunda derivada de la función objetivo. En comparación con los métodos clásicos de búsqueda directa, las técnicas de búsqueda indirecta son generalmente más eficientes debido al uso de las derivadas de la función a optimizar. Los métodos de búsqueda indirecta son también conocidos como métodos del gradiente. Los métodos que requieren del uso de la primera derivada son conocidos como métodos de primer orden; a los que requieren además la segunda derivada de la función se les conoce como métodos de segundo orden. Los
métodos que utilizan el gradiente de la función se basan en el concepto de la dirección para encontrar su solución. El método de dirección se define como:
Cualquier vector n-dimensional puede servir como una dirección. Dado un punto x, se puede generar una línea recta que pasa por x si se aplica una dirección d (vector con n componentes d1, d2, . . ., dn) y un escalar τ, tal que - ∞ < τ < ∞. Es decir, si
y = x + τ d (2.8) y recorre la línea recta en dirección ± d, que pasa por x cuando τ = 0.
Puede demostrarse que si no es nulo, el gradiente mismo apunta en una dirección tal, que un pequeño movimiento en esa dirección aumenta a la función.
Sea,
f (x + τd) = f(x) + ∇f T (x) τd + O (t2) (2.9) si la dirección d se selecciona igual al gradiente:
f (x + τ∇f (x)) = f(x) + τ∇f (x) 2+ O (t2) (2.10) entonces, en la vecindad de x para τ > 0:
f (x + τ∇f (x)) > f(x) (2.11)
Este último resultado sugiere un procedimiento para la búsqueda de la solución óptima al problema de programación no lineal sin restricciones. Si se trata de un problema en el que se requiere encontrar un máximo, dado un punto en la vecindad del óptimo se efectúa una corrección ∆z tal que:
z + ∆z = z + τ∇ f (z) (2.12) se aproxime al punto óptimo z* mediante la selección de un valor adecuado de τ, que se obtiene de resolver:
maxτ f (z + τ∇ f (z)) (2.13) En cambio, como -∇ f (z) apunta en la dirección en que la función f (z) disminuye, si se trata de encontrar un mínimo, se efectúa una corrección ∆z en la dirección -∇ f (z) seleccionando el valor adecuado de τ a partir de:
minτ f (z - τ∇ f (z)) (2.14) Como esta corrección se hace a lo largo de una línea recta y la función f (z) que es de interés es no lineal, se genera un proceso iterativo para la búsqueda de la solución óptima
z*. Este procedimiento se conoce como el método del gradiente, y se puede resumir como sigue:
Paso 0 : Se asignan valores de arranque z = z0
Paso 1 : Se calcula el gradiente ∇ f (z). Si la magnitud del gradiente tiende a cero, el proceso termina y la solución es z* = z.
Paso 2 : Se obtie ne τ* tal que τ* = arg {minτ f (z - τ∇ f (z))}
Paso 3 : Se calcula un nuevo valor de z con la expresión
znueva = z + ∆z = z - τ*∇ f (z)
El proceso se repite aplicando de nuevo los pasos 1, 2 y 3 hasta obtener la convergencia.