3.

3 Tipos de Problemas de Programación No Lineal
Los problemas de programación no lineal se presentan de muchas formas distintas. Al contrario del método símplex para programación lineal, no se dispone de un algoritmo que resuelva todos estos tipos especiales de problemas. En su lugar, se han desarrollado algoritmos para algunas clases (tipos especiales) de problemas de programación no lineal. Se introducirán las clases más importantes y después se describirá cómo se pueden resolver algunos de estos problemas.

Si la función objetivo f es lineal y el espacio restringido es un politopo, el problema es de Programación lineal y puede resolverse utilizando alguno de los bien conocidos algoritmos de programación lineal.

Si la función objetivo es cóncava (problema de maximización), o convexa (problema de minimización) y el conjunto de restricciones es convexo, entonces se puede utilizar el método general de Optimización convexa

Existe una variedad de métodos para resolver problemas no convexos. Uno de ellos consiste en utilizar formulaciones especiales de problemas de programación lineal. Otro método implica el uso de técnicas de Ramificación y poda, cuando el problema se divide en subdivisiones a resolver mediante aproximaciones que forman un límite inferior del coste total en cada subdivisión. Mediante subdivisiones sucesivas, se obtendrá una solución cuyo coste es igual o inferior que el mejor límite inferior obtenido por alguna de las soluciones aproximadas. Esta solución es óptima, aunque posiblemente no sea única. El algoritmo puede ser parado antes, con la garantía de que la mejor solución será mejor que la solución encontrada en un porcentaje acotado. Ello se utiliza en concreto en problemas importantes y especialmente difíciles y cuando el problema cuenta con costes inciertos o valores donde la incertidumbre puede ser estimada en un grado de fiabilidad apropiado.

Las condiciones de Karush-Kuhn-Tucker proporcionan las condiciones necesarias para que una solución sea óptima.

Programación separable. En esta sección se presentan dos algoritmos estrechamente relacionados: los métodos de búsqueda dicótomo y de sección dorada (o áurea). b) que representa el intervalo inicial de incertidumbre. que se sabe que incluye el punto óptimo x*. /z.dales de una variable. ALGORITMOS SIN RESTRICCIÓN En esta sección se presentarán dos algoritmos para el problema no restringido: el algoritmo de búsqueda directa y el algoritmo de gradiente. Programación no convexa. Aunque puede parecer trivial el caso. Problema de complementariedad. Optimización no restringida. 8. Sea /. más generales. 3.bre que comprenda al punto de solución óptima.2 muestra que la optimización de funciones de una variable juega un papel clave en el desarrollo de los algoritmos de varias variables. 6. 4. 2. Programación cuadrática Programación convexa. El procedimiento localiza el óptimo estrechando en forma progresiva el intervalo de incertidumbre hasta cualquier grado de exactitud que se desee. _ .Los tipos de problemas de programación no lineal son: 1. Programación geométrica. Ambos buscan la maximización de una función unimodal/(x) en el intervalo a ^ x < b. 5. se define como sigue: . Método de búsqueda directa Los métodos de búsqueda directa se aplican principalmente a funciones estrictamente unimo. A continuación se definen xx y x2 tales que xj^ ^ ^ x2 ^ xr El siguiente intervalo de incertidumbre. Optimización linealmente restringida. 7. = (xD xR) el intervalo actual de incertidumbre (en la iteración 0.1. Paso general i. la sección 21. 9. Programación fraccional. xL = a y xR = b). Los dos métodos comienzan con /0 = (a. La idea de los métodos de búsqueda directa es identificar el intervalo de incertidum.

La manera en que se determinan xx y x2 garantiza que /. Se puede apreciar que cada iteración del método dicótomo requiere calcular los dos valores/(jc. Si f(xx) < f(x2\ entonces xx < x* < xR. donde A es un grado de exactitud definido por el La diferencia entre los métodos dicótomo y de sección dorada estriba en la forma en que se calculan xx y x2. y x2 se encuentran simétricos respecto del punto medio del actual intervalo de incertidumbre. entonces xL < x* < x2. Si f{x\) = /(jc2). entonces xx < x* < x2. = (xb x2).2[a]). 2. = (xL. Esto significa que La aplicación repetida del algoritmo garantiza que la longitud del intervalo de incertidumbre se acercará al nivel de exactitud deseado. Se definen xL = xx e I¡ = (xh xR) (véase la figura 21. La tabla siguiente presenta las fórmulas. Se definen xR = x2 e /. El algoritmo termina en la iteración ksilk< A. . Se definen xL = x2 e /.1. Si f(xx) > /(x2). En el método de la sección dorada la idea es de mayor involucramiento. x2) (véase la figura 21. Pe” ro termina por . En el método dicótomo los valores jc. * p como se demostrará en breve._ usuario.1 [b]). 3. A.) y f(x2). < /.

Lo que propone el método de la sección dorada es ahorrar cálculos mediante el reuso del valor descartado en la iteración inmediata siguiente. . En la iteración /+1. seleccione x2 igual a jc. = (jcl. Considere el caso en que /. Adicionalmente. el método de la sección dorada converge más rápidamente hacia el nivel deseado de exactitud.descartar alguno de ellos. lo cual lleva a la siguiente ecuación: x2(iteración i+l) = x{(iteración i) Comparado con el método dicótomo. en la iteración i es igual a (jc¿. Para definir 0 < a < 1 Cuando el intervalo de incertidumbre /. en virtud de que recicla siempre un conjunto de los cálculos correspondientes a la iteración inmediata anterior. de la iteración /. cada iteración en el método de la sección dorada requiere la mitad de los cálculos.. lo cual significa que xx está incluido en /. x2) o a (xu xR). x2).

xls de Excel está diseñada para manejar cualquiera de estos dos métodos en forma automática. a. el intervalo de incertidumbre terminará por estrecharse hasta la tolerancia A deseada. Al continuar de la misma forma.1. La siguiente tabla muestra los cálculos para las iteraciones 1 y 2. La función f{x) se captura en la celda E3 como sigue: = IF(C3< = 2. La plantilla ch21DichotomousGoldenSection.3*C3. Los datos son/(*). Supondremos que A = 0.b y A. usando el método dicotomo y el de la sección dorada. (-C3+20)/3) .EJEMPLO El máximo valor de f(x) ocurre en x = 2.

Según el repaso del apéndice 3.> 0.OPTIMIZACIÓN NO RESTRINGIDA Los problemas de optimización no restringida no tienen restricciones. en cuyo caso es poco probable que se pueda obtener una solución analítica simultánea. Estos procedimientos también tienen un papel importante en la solución de varios tipos de problemas con restricciones. x. que se describirán en seguida. estas ecuaciones suelen ser no lineales también.4 y 13. esta condición también es suficiente.5 describen procedimientos algorítmicos de búsqueda para encontrar x* primero para n = 1 y luego para n > 1. cuando se trata de funciones no lineales f (x). con lo que la obtención de x* se reduce a resolver el sistema de las n ecuaciones obtenidas al establecer las n derivadas parciales iguales a cero. La razón es que muchos algoritmos para problemas restringidos están construidos de forma que se adaptan a versiones no restringidas del problema en una parte de cada iteración. Por desgracia. ¿Qué se puede hacer en ese caso? Las secciones 13.xn). x2. la condición necesaria (y tal vez) suficiente anterior cambia ligeramente a . Cuando una variable Xj tiene una restricción de no negatividad. la condición necesaria para que una solución específica x = x* sea óptima cuando f(x) es una función diferenciable es Cuando f (x) es cóncava. por lo que la función objetivo es sencillamente Maximizar f(x) sobre todos los valores x= (x1.….

la única diferencia entre éstos y un . Un caso especial importante descrito a continuación es la programación cuadrática. OPTIMIZACIÓN LINEALMENTE RESTRINGIDA Los problemas de optimización linealmente restringida se caracterizan por restricciones que se ajustan por completo a la programación lineal. Esta condición se ilustra en la figura 13. de manera que todas las funciones de restricción g¡ (x) son lineales. Un problema que tiene algunas restricciones de no negatividad y que no tiene restricciones funcionales es un caso especial (m = 0) de la siguiente clase de problemas. donde la solución óptima de un problema con una sola variable es x = 0 aun cuando la derivada ahí es negativa y no cero. es una condición necesaria y suficiente para que x= 0 sea óptima. pero la función objetivo es no lineal. pero ahora la función objetivo /(x) debe ser cuadrática. Entonces. Como este ejemplo tiene una función cóncava para maximizar sujeta a una restricción de no negatividad.11. PROGRAMACIÓN CUADRÁTICA De nuevo los problemas de programación cuadrática tienen restricciones lineales. El problema se simplifica mucho si sólo se tiene que tomar en cuenta una función no lineal junto con una región factible de programación lineal. Se han desarrollado varios algoritmos especiales basados en una extensión del método símplex para analizar la función objetivo no lineal.para cada j de este tipo. el que su derivada sea menor o igual a 0 en # = 0.

PROGRAMACIÓN CONVEXA La programación convexa abarca una amplia clase de problemas. Las suposiciones son . entre ellos como casos especiales. están todos los tipos anteriores cuando /(x) es cóncava.problema de programación lineal es que algunos términos de la función objetivo incluyen el cuadrado de una variable o el producto de dos variables.

se puede expresar como son cada tina funciones de una sola variable x1 y x2. se puede verificar que la función considerada en la figura 13. PROGRAMACIÓN SEPARABLE La programación separable es un caso especial de programación convexa.7 también es una función separable. Usando el mismo razonamiento. en donde la suposición adicional es Todas las funciones f(x) y g(x) son funciones separables. pues cualquier problema de programación separable se puede aproximar muy de cerca mediante uno de programación lineal y. entonces.1. f(x) es cóncava. Es importante distinguir estos problemas de otros de programación convexa. Cada una de las g(x) es convexa. respectivamente. 2. se puede aplicar el eficiente método símplex. Por ejemplo. si f(x) es una función separable. Una función separable es una función en la que cada término incluye una sola variable. . por lo que la función se puede separar en una suma de funciones de variables individuales.

En este caso. pues cualquier problema de programación separable se puede aproximar muy de cerca mediante uno de programación lineal y. Ciertos tipos específicos de problemas de programación no convexa se pueden resolver sin mucha dificultad mediante métodos especiales. respectivamente.10 se presenta uno de estos algoritmos. no se tiene un algoritmo que garantice encontrar una solución óptima para todos estos problemas. Usando el mismo razonamiento. en especial cuando las formas de las funciones no lineales no se desvían demasiado de aquellas que se supusieron para programación convexa. entonces. pero sí existen algunos algoritmos bastante adecuados para encontrar máximos locales. Es importante distinguir estos problemas de otros de programación convexa. aun cuando se tenga éxito en encontrar un máximo local.son cada tina funciones de una sola variable x1 y x2. de gran importancia. no hay garantía de que sea también un máximo global. se presentarán más adelante. Por lo tanto. PROGRAMACIÓN NO CONVEXA La programación no convexa incluye todos los problemas de programación no lineal que no satisfacen las suposiciones de programación convexa. En la sección 13. se puede verificar que la función considerada en la figura 13. se puede aplicar el eficiente método símplex. . Dos de ellos.7 también es una función separable.

muchas veces la función objetivo y las funciones de restricción toman la forma En tales casos.…. es decir. por lo que las técnicas de programación convexa no se pueden aplicar directamente a estos problemas de programacióngeo- métrica. Este caso es aquel en el que todos los coeficientes c¿ en cada función son estrictamente positivos. existe un caso importante en el que el problema se puede transformar en un problema de programación convexa equivalente. El problema equivalente de programación convexa con variables de decisión y x. . Ahora se puede aplicar un algoritmo de programación convexa.PROGRAMACIÓN GEOMÉTRICA Cuando se aplica programación no lineal a problemas de diseño de ingeniería. yn se obtiene entonces al establecer en todo el modelo original. Sin embargo. al igual que para problemas de programación geométrica de otros tipos. las funciones son polinomios positivos generalizados (ahora llamados posinomiales). y2.1 PROGRAMACIÓN FRACCIONAL Suponga que la función objetivo se encuentra en la forma de una fracción. y la función objetivo se tiene que minimizar. Se ha desarrollado otro procedimiento de solución para resolver estos problemas de programación posinomial. las ci y a ty representan las constantes físicas y las x} son las variables de diseño. Estas funciones por lo general no son ni cóncavas ni convexas. esto es. la razón o cociente de dos funciones.

suponga que f(x) es de la forma de programación fraccional lineal donde c y d son vectores renglón. o la ganancia entre el capital invertido (tasa de rendimiento). o el valor esperado dividido entre la desviación estándar de alguna medida de desempeño para una cartera de inversiones (rendimiento/riesgo).Estos problemas de programación fraccional surgen. el enfoque más directo para resolver un problema de programación fraccional es transformarlo en un problema equivalente de algún tipo estándar que disponga de un procedimiento eficiente. es decir. cuando se maximiza la razón de la producción entre las horas-hombre empleadas (productividad). También suponga que las funciones de restricción g¡ (x) son lineales. las restricciones en forma matricial son Ax < b y x > 0. el problema se puede transformar en un problema equivalente de programación lineal si se establece . x es un vector columna y c0 y dQ son escalares. por ejemplo. Para ilustrar esto. Con algunas suposiciones débiles adicionales. Se han formulado algunos procedimientos de solución especiales1 para ciertas formas de f1(x) y f2 (x) Cuando se puede hacer.

que se puede resolver con el método símplex. se puede usar el mismo tipo de transformación para convertir un problema de programación fraccional con /¡(x) cóncava. en un problema equivalente de programación convexa. f2 (x) convexa y g¡ (x) convexas. En términos generales. .