PROGRAMACI´ON NO LINEAL - Universidad Tecnológica de Pereira

Anuncio
PROGRAMACIÓN NO LINEAL
ANTONIO HERNANDO ESCOBAR ZULUAGA
RAMÓN ALFONSO GALLEGO RENDÓN
RUBÉN AUGUSTO ROMERO LÁZARO
Universidad Tecnológica de Pereira
Pereira - Risaralda - Colombia
UNIVERSIDAD TECNOLÓGICA DE PEREIRA - 2014
1
Introducción
En diversos campos del conocimiento, y particularmente en la ingenierı́a, se requiere de la
determinación de las mejores soluciones para ciertos problemas matemáticamente bien definidos.
Cuando un problema de la vida real puede expresarse a través de un modelo matemático
y para este problema existe un gran número de soluciones alternativas de diferente calidad,
pero sólo estamos interesados en sus mejores soluciones, se dice que tenemos un problema de
optimización.
A pesar de la importancia de la optimización en la ingenierı́a, es muy común que no se
aplique y que los diseños y las inversiones sean guiadas por las denominadas prácticas de ingenierı́a. Esto obedece fundamentalmente a dos causas: la ausencia de un modelo matemático que
represente adecuadamente el problema de la vida real o la dificultad para resolver los modelos matemáticos con las técnicas de solución existentes en tiempos de cómputo razonables.
Cuando se recurre a las prácticas de ingenierı́a, se utilizan reglas construidas a partir de conceptos técnicos y de la experiencia obtenida a través del tiempo como resultado de la interacción
con los sistemas que se estudian. Para cubrir aspectos no controlados es común el uso de expresiones o fórmulas que incluyen factores de seguridad. La inclusión de estos factores conduce
a un amplio rango de soluciones donde el elemento común es el sobredimensionamiento de
los equipos y de los sistemas. Este sobredimensionamiento produce costos adicionales que se
traducen en inversiones que en muchas ocasiones no serán aprovechadas durante la vida útil de
los elementos.
En el campo de la ingenierı́a, la optimización matemática se aplica en cualquier área que
procesa información numérica y en la que se deben tomar las mejores decisiones a partir de esta
información. La búsqueda de las mejores soluciones resulta ser una meta fundamental porque
las soluciones seleccionadas afectan a las personas, a la economı́a y a los recursos naturales. Un
vehı́culo que transporta pasajeros por el interior de una ciudad, por ejemplo, puede ir desde un
lugar de origen hasta un lugar de destino utilizando una gran variedad de rutas alternativas, sin
embargo, los pasajeros esperan que la ruta utilizada sea la de menor tiempo de duración y la de
menor costo. Si la ruta seleccionada cumple estas dos condiciones se obtendrán otros beneficios
adicionales al usar menos combustible y producir una menor contaminación ambiental. Al
utilizar las rutas óptimas se benefician las personas, la economı́a y los recursos naturales. Este
ejemplo toma mayor relevancia si se considera que en la actualidad cerca de 7000 millones
de personas se movilizan o transportan sus mercancias o bienes utilizando 2000 millones de
vehı́culos de todo tipo y capacidad, y que la mayor parte de la población vive en las ciudades.
Un aspecto que resulta importante es que las decisiones asociadas a los mayores esfuerzos
se realizan en el denominado planeamiento estratégico. Aquı́ se comprometen grandes recursos
económicos y por lo general involucran procesos o procedimientos de meses o años de duración
e implementación. En el caso de una empresa de transporte de carga que se va a establecer en
una gran ciudad y que debe atender muchos clientes, el planeamiento estratégico decide, entre
otras cosas, el número y la ubicación de las bodegas de mercancias que se deben abrir, la
cantidad y la capacidad de los vehı́culos que se deben adquirir y el número de empleados que
se requieren. El uso de la optimización matemática en esta fase del proceso es de fundamental
importancia porque es aquı́ donde se producen los mayores ahorros en inversión, y en costos
de operación y mantenimiento futuros. Luego de realizadas las inversiones, determinadas en
el planeamiento estratégico, el planeamiento de corto plazo, que es básicamente de operación,
deja muy poco margen de maniobra para aumentar las ganancias o mejorar la eficiencia del
sistema. Entre más dinero se invierte en la etapa de planeamiento estratégico, más dinero se
gana en la etapa del planeamiento de la operación.
Los sistemas actuales deben cumplir con condiciones de competividad, la cual se asocia a
costos de construcción, operación y mantenimiento, a calidad y a efectividad. Un buen diseño,
una buena programación de operación o un buen plan de expansión debe ser económico en
inversión, en costos de operación y en costos de mantenimiento. Al mismo tiempo un sistema
debe ser fácil de operar, de actualizar y debe tener portabilidad.
Algunos sistemas son versiones mejoradas de otros ya existentes y en este caso puede
aprovecharse el conocimiento experto que se tiene. Otros sistemas son desarrollos nuevos y
no tienen un referente contra que compararse. En los dos casos deben responderse cuestionamientos como: Puede obtenerse un diseño más económico? Puede obtenerse una operación más
eficiente? Estamos haciendo el mejor uso de los recursos escasos y costosos?
Para ayudar al diseñador o al analista a dar respuesta a estos interrogantes existe un continuo desarrollo de herramientas que van desde las técnicas de modelamiento matemático de
sistemas y la simulación de la operación de estos sistemas hasta el desarrollo de técnicas de
solución de los problemas de optimización. De estas últimas hacen parte de las denominadas
técnicas heurı́sticas, metaheurı́sticas, hiperheurı́sticas, matheurı́sticas y los métodos de optimización exactos, los cuales han tenido un rápido crecimiento en los últimos años.
En la medida que las técnicas de optimización y los sistemas de cómputo se desarrollan,
se incrementa también el tamaño y la complejidad de los problemas que se pueden resolver.
Los analistas incluyen en sus modelos cada vez más facetas del problema y, en la medida de
lo posible, las interrelaciones con sistemas externos que afectan su comportamiento. Algunas
de estas interrelaciones son difı́ciles de modelar. En la actualidad existen muchos avances en
técnicas asociadas a métodos estadı́sticos de prueba de hipótesis, que han permitido desarrollos
significativos en el proceso de estudio de las interacciones entre los componentes de un sistema
y entre subsistemas.
La inclusión cada vez mayor de la optimización matemática en el estudio de actividades
industriales, militares, de mercados, de negocios y gubernamentales, puede atribuirse al impacto positivo que la investigación de operaciones ha producido en los nuevos desarrollos. Las
personas encargadas de la toma de decisiones han encontrado en ella una valiosa herramienta
de apoyo que guı́a los procesos para hacerlos más económicos y eficientes, al tiempo que satisfacen requerimientos cada vez más exigentes como por ejemplo el del consumo energético y
los impactos ambientales.
En sus inicios la investigación de operaciones se apoyó en la programación lineal y en el
uso de análisis estadı́sticos. La programación lineal es un área de la optimización que define un
conjunto reducido de técnicas con capacidad para resolver de manera eficiente la gran mayorı́a
de problemas que pueden ser expresados matemáticamente a través de relaciones lineales. Existe, sin embargo, una gran variedad de particularidades en los problemas que se resuelven que
limitan el uso de la programación lineal o la convierten en una herramienta ineficiente. Una
de esas particularidades es la existencia de relaciones no lineales en el modelo matemático.
En estos casos resulta conveniente aplicar otra clase de procedimientos especializados que se
adecuen al tipo de no linealidad presente en el problema. A diferencia de la programación lineal,
no existe un método o un conjunto reducido de métodos robustos que resuelvan la gran mayorı́a
de problemas de optimización no lineal. En su lugar existe un amplio espectro de métodos
desarrollados para ser eficientes en casos especı́ficos. Estos métodos se agrupan bajo la denominación: programación no lineal. En consecuencia, es necesario comprender adecuadamente
los conceptos y las estratégias de cada método para determinar cual es más conveniente en
cada problema particular. También, a diferencia de la programación lineal, se requiere un buen
entendimiento de las pruebas necesarias y suficientes de optimalidad que utilizan varios de estos
métodos para definir sus criterios de parada o como parte de la estratégia de búsqueda de las
mejores soluciones del problema.
En los siguientes capı́tulos se presentan algunas formas de caracterización de soluciones
óptimas y se muestra la manera de desarrollar procedimientos algorı́tmicos para la solución de
problemas no lineales.
1.1 Problema de optimización y definiciones
1.1.1 Optimización
Es la rama de la matemática aplicada que se ocupa de la determinación de las mejores soluciones, respecto a un objetivo, para ciertos problemas que pueden ser matemáticamente modelados y para los cuales existen modelos bien definidos. Es una herramienta importante para la
toma de decisiones.
La optimización involucra:
• Desarrollo de modelos matemáticos que representen lo más fielmente el problema de la
vida real. En la práctica esta es una condición crı́tica ya que las técnicas de solución
resuelven el problema matemático y este puede o no representar al problema de la vida
real.
• Medidas cuantitativas de desempeño del sistema bajo estudio.
• Estudio de criterios de optimalidad. La mayorı́a de los problemas de ingenierı́a tienen objetivos comunes como: minimizar el costo de inversión, minimizar el costo de operación,
minimizar el costo de mantenimiento, maximizar el beneficio económico, minimizar riesgos, minimizar impactos ambientales, entre otros. Debe decidirse que objetivos interesan
en un caso en particular y la prioridad que se debe dar a cada uno de ellos, ya que estos
son objetivos en conflicto (la mejora de uno produce el empeoramiento de otro).
• Desarrollo de métodos y algoritmos de solución.
• Análisis y estructura de los métodos.
• Experimentación numérica con la aplicación de los métodos en sistemas de prueba o en
sistemas reales.
• Aplicación de métodos de optimización en áreas donde se procesa información numérica.
La optimización se aplica para hacer uso racional de recursos escasos o costosos y se aplica
en el desarrollo de actividades donde se requiere explotación racional o exploración eficiente de
recursos.
En su aplicación para el uso racional de recursos encontramos problemas de optimización de:
• Espacio
• Tiempo
• Energı́a
• Alimento
• Agua
• Equipos
• Dinero
• Personal capacitado
La minerı́a y la pesca son ejemplos de aplicación donde se requiere explotación racional y
exploración eficiente de recursos.
Los objetivos que se persiguen deben ser maximizados o minimizados. Dentro de los aspectos
que se desean minimizar encontramos:
• Costo de inversión
• Costo de operación
• Costo de mantenimiento
• Pérdidas técnicas (en redes eléctricas, de vapor, de gas, etc)
• Pérdidas financieras
• Tiempo de entrega
• Tiempo de atraso
• Tiempo de espera
• Cantidad de personal
• Materia prima
• Impacto ambiental
• Tamaño
• Peso
• Desperdicio
Dentro de los aspectos que se desean maximizar encontramos:
• Ganancia económica o lucro
• Productividad
• Calidad del servicio
• Calidad del producto
• Número de usuarios atendidos
• Bienestar
Respecto a las áreas de aplicación de la optimización podemos destacar las siguientes:
• Matemática y fı́sica
• Ingenierı́a
• Economı́a y finanzas
• Agricultura
• Minerı́a
• Transporte
• Procesos industriales
• Industria militar
• Energı́a
• Sistemas de comunicaciones
• Medio ambiente
• Servicios
1.1.2 Componentes de un problema de optimización
Se dice que tenemos un problema de optimización siempre que a partir de la descripción del
problema es posible identificar los siguientes componentes básicos:
* Función Objetivo: Aspecto esencial del problema que está sujeto a minimización o
maximización.
* Variables de decisión: variables del problema sobre las cuales se ejerce control para
optimizar un objetivo.
* Restricciones: factores que limitan o restringen los valores que pueden asumir las variables de decisión.
* Parámetros: datos o recursos que hacen parte del problema de optimización.
1.1.3 Problema de programación no lineal
Los modelos de optimización que describen los problemas de la vida real son generalmente no
lineales y pertenecen al área de la optimización no lineal. En la teorı́a de investigación de operaciones se utiliza el término programación no lineal para referirse a esta clase de problemas.
Un problema es de programación no lineal cuando tiene función objetivo no lineal y/o una o
más restricciones expresadas a través de funciones no lineales. Tı́picamente, una función no
lineal es una relación matemática algebraica donde las variables están multiplicándose o están
elevadas a un exponente diferente de la unidad o donde las variables son los argumentos de
funciones trigonométricas, logarı́tmicas o exponenciales.
La programación no lineal se caracteriza porque está asociada a un conjunto de problemas
difı́ciles de resolver. Bajo esta denominación se reunen un conjunto de técnicas de solución las
cuales se aplican a diversas categorı́as de problemas no lineales. Dentro de estas categorı́as las
más importantes son las siguientes:
• Problemas irrestrictos
• Problemas restrictos
• Problemas de programación convexa
• Problemas de programación no convexa
• Problemas de optimización separable
• Problemas de programación geométrica
Un problema de programación lineal (PL) o no lineal (PNL) puede ser representado de la siguiente forma:
(P NL) ⇒


min






 s.a.









Donde:



x=


x1
x2
..
.
xn
f (x)
gi (x) ≤ 0
i = 1, 2, ..., m
hi (x) = 0
i = 1, 2, ..., l
(1.1)
x∈X







y
X → valores factibles de las variables
En el problema anterior, f (x), g1(x), g2 (x), ..., gm (x), h1 (x), ..., hl (x) son funciones definidas
de ℜn → ℜ. El problema es de programación lineal si todas las funciones anteriores son
lineales. Es un problema de programación no lineal si f (x) o alguna de las restricciones
gi (x), hi (x) es no lineal.
Observación importante
No existe un algoritmo o técnica de solución eficiente que resuelva la mayorı́a de los problemas de programación no lineal como si sucede en programación lineal donde el método simplex
(con sus variantes) permite resolver cualquier problema. En consecuencia, en programación no
lineal existe un conjunto de técnicas, con sus caracterı́sticas, que los hacen eficientes sólo para
problemas con una cierta estructura matemática e ineficientes en problemas con otra clase de
estructuras. Es común descubrir que una técnica que es muy eficiente en la búsqueda de la
solución de un problema particular de la vida real pierde completamente su eficacia cuando se
aplica en otro problema estructuralmente diferente.
En el campo de la programación no lineal existen algoritmos especı́ficos para tipos particulares
de problemas.
1.1.4 Clasificación de los problemas de optimización
A continuación se presentan distintas formas de clasificar los problemas de optimización.
a. Según la forma de la función objetivo f (x) y las restricciones gi (x), hi (x):
– Programación Lineal (PL): Problemas cuya función objetivo f (x) y restricciones
gi (x), hi (x) son todas expresadas a través de funciones algebraicas lineales.
– Programación No Lineal (PNL): Problemas donde la función objetivo f (x) o alguna de las restricciones gi (x), hi (x) son expresadas a través de funciones algebraicas no lineales.
b. Según las variables involucradas (x):
– Programación Entera (PE): Problemas donde las variables asumen valores enteros.
– Programación Mixta (PEM): Problemas donde las variables asumen valores continuos y enteros.
– Programación Binaria (0-1): Problemas donde las variables sólo pueden asumir
dos valores: cero ó uno.
c. Según la existencia o no de restricciones gi (x), hi (x):
– Programación Irrestricta: Problemas donde no existen restricciones de igualdad
hi (x) ni de desigualdad gi (x).
– Programación Restricta: Problemas donde existen restricciones de igualdad hi (x)
o de desigualdad gi (x). Este tiene a su vez tres categorı́as, los problemas que sólo
tienen restricciones de igualdad, los que sólo tienen restricciones de desigualdad y
los que tienen restricciones de ambos tipos.
d. Según la dimensión de las variables:
– Programación en una variable: Problemas donde existe una sóla variables (variables escalares): x ∈ ℜ.
– Programación multivariable: Problemas donde existen varias variables: x ∈ ℜn .
e. Según la dimensión de la función objetivo:
– Programación mono-objetivo: Problemas donde existe una sóla función objetivo
f (x) ∈ ℜ.
– Programación multiobjetivo: Problemas donde existen varias funciones objetivo:
f (x) ∈ ℜm .
f. Según la complejidad del problema:
– Problemas tipo P: Problemas polinomiales.
– Problemas tipo NP: Problemas no polinomiales.
– Problemas tipo NP-completos: Problemas no polinomiales para los cuales no existe un algoritmo que encuentre la solución óptima.
Observación importante
Los problemas de programación no lineal entero-mixtos con múltiples objetivos y NP-completos
se encuentran en la categorı́a de problemas más difı́ciles de resolver.
1.2 Dificultades en Programación No Lineal
Para resolver un problema de optimización bien definido (representa adecuadamente el problema de la vida real), se pueden usar distintos métodos de solución los cuales se clasifican en:
1) métodos analı́ticos, los cuales usan procedimientos del cálculo diferencial, insuficientes para
la mayorı́a de los problemas no lineales; 2) métodos gráficos, que se apoyan en curvas o representaciones geométricas de la función objetivo y las restricciones, inadecuados para problemas
de muchas variables; 3) métodos experimentales, basados en la experiencia y en procedimientos
de prueba y error; 4) métodos numéricos, basados en algoritmos o procedimientos iterativos y
adecuados para la gran mayorı́a de los problemas de ingenierı́a. En todos los casos el investigador encuentra las siguientes dificultades:
• No existe un método o algoritmo de optimización universal que resuelva todos o la gran
mayorı́a de problemas existentes, en su lugar existe una amplia y variada colección de
algoritmos. El investigador debe dominar un amplio espectro de algoritmos.
• Los métodos y algoritmos de optimización para PNL presentan comportamientos diferentes para cada tipo de problema. Su eficiencia cambia cuando cambia el problema.
• La responsabilidad de seleccionar el mejor método o algoritmo es del usuario.
• Una vez aplicado un algoritmo de optimización al modelo matemático del problema debe
existir una forma de determinar que se ha enconrado una solución. Algunos problemas
admiten la aplicación de condiciones de optimalidad, otros no.
• Debe definirse una estrategia eficiente para pasar de un punto del espacio solución a otro
cuando se considera que no se ha encontrado aún una solución al problema.
• Los problemas presentan múltiples objetivos, generalmente en conflicto.
• Los problemas son multimodales.
• Existe ambiguedad entre parámetros y variables de decisión.
• Existen incertidumbres respecto a los lı́mites de las variables y las restricciones.
• Existen elementos probabilı́sticos y variables con el tiempo.
• Se tiene un conocimiento apenas cualitativo de ciertos aspectos del problema.
• Los problemas de la vida real son generalmente no convexos en el espacio de soluciones.
• La función objetivo o algunas restricciones no son diferenciables.
Para aplicaciones de ingenierı́a se prefieren los métodos numéricos cuando se intenta resolver un problema de programación no lineal. Dentro de los métodos numéricos más utilizados
se encuentran:
a. Métodos que no usan derivadas en problemas unidimensionales:
– Búsqueda uniforme
– Sección aurea (dorada)
– Método de Fibonacci
b. Métodos que usan derivadas en problemas unidimensionales:
– Bisección
– Newton
c. Métodos que usan interpolación polinómica:
– Cuadrática
– Cúbica
– DSC (Davies-Swann-Campey)
d. Métodos directos multivariables:
– Gradiente óptimo
– Newton
– Gradiente conjugado
– Cuasi-newton (LM, DFP, BFGS, etc)
– Secante
– Hooke and Jeeves
– Rosenbrok
– Subgradiente
e. Métodos inexactos:
– Regla de Armijo
– Golstein
f. Métodos basados en barreras:
– Punto interior no lineal
– Polinomial-time
g. Métodos basados en penalidades:
– SUMT
– Lagrangiano aumentado
– Método de multiplicadores
h. Métodos de direcciones factibles:
– Zoutendijk
– Programación lineal sucesiva
– Programación lineal sucesiva con penalidad
– Lagrangiano proyectado
– Gradiente proyectado de Rosen
– Gradiente reducido de Wolfe
– Zangwill
i. Otros:
– Programación fraccional
– Programación geométrica
– Programación separable
– Heurı́sticas y metaheurı́sticas
– Hı́bridos
1.3 Caracterı́sticas de los algoritmos de optimización
A pesar de la diversidad de algoritmos aplicables a los problemas de programación no lineal,
todos ellos tienen en común las siguientes caracterı́sticas:
• Son iterativos, es decir, se realizan paso a paso.
• Requieren de una estimación inicial del vector solución x la cual se denomina condición
inicial o punto de inicio: xo .
• Tienen una estrategia para generar una secuencia de valores de x que les permite avanzar
hacia la solución:
xo → x1 → x2 → ... → x∗
La estrategia usada es lo que diferencia un algoritmo de otro.
• El paso de un valor xi a un valor xi+1 , usando alguna estrategia, se denomina iteración.
• Poseen una forma de determinar cuando finalizar el proceso de búsqueda de la solución
(criterio de parada).
La estrategia usada para pasar de un punto xi a un nuevo punto xi+1 puede usar infromación de:
• El valor de la función objetivo.
• Valores asociados a las restricciones.
• Información de la primera y/o segunda derivada de la función objetivo.
• Información de la primera y/o segunda derivada de las restricciones.
• Información del subgradiente de la función objetivo y/o de las restricciones.
• Información asociada al punto actual xi .
• Información acumulada obtenida en las últimas iteraciones.
• Información no relacionada con la función objetivo ni con las restricciones.
Independientemente de la estrategia utilizada por el algoritmo, es deseable que posea las
siguientes tres cualidades: robustez, eficiencia y exactitud. La robustez es una caracterı́stica
que le garantiza un buen desempeño para una gran variedad de problemas y puntos de inicio.
La eficiencia está asociada a tiempo de cálculo y requerimientos de memoria bajos. La exactitud
se relaciona con la baja sensibilidad del algoritmo a los errores de redondeo y a la propagación
de errores. Estas tres cualidades se encuentran generalmente en conflicto.
1.4 Caracterı́sticas de los problemas que se analizan
Los algoritmos que serán estudiados son aplicables a un subconjunto de problemas de optimización que deben satisfacer los siguientes requerimientos:
• Función objetivo y restricciones derivables.
• Problemas determinı́sticos.
• Variables continuas.
• Espacio de soluciones conectado.
• Función objetivo convexa para el problema de minimización y concava para el problema
de maximización (deseable).
• Espacio de soluciones convexo (deseable).
A continuación se presentan ejemplos de los diferentes tipos de problemas que pueden aparecer
cuando se aplica programación no lineal.
1.5 problemas de Programación No Lineal
Ejemplo 1: Problema con espacio de soluciones no lineal y solución en la frontera.
max f (x) = 3x1 + 5x2
s.a.
x1 ≤ 4
9x21 + 5x22 ≤ 216
x1 ≥ 0
x2 ≥ 0
Solución óptima: x1 = 2, x2 = 6, f (x) = 36
Figura 1: Problema con espacio de soluciones no lineal y con solución en la frontera.
Observaciones:
1. La solución óptima es un punto de la frontera de la región factible.
2. La región factible es un conjunto convexo.
3. La solución óptima no es un punto extremo como sucede en PL.
4. La función objetivo es lineal y concava.
5. La no linealidad de una de las restricciones convierte el problema en un PNL.
Ejemplo 2: Problema con función objetivo no lineal y solución en la frontera.
max z(x) = −9(x1 − 7)2 − 13(x2 − 7)2 + 1078
s.a.
x1 ≤ 4
x2 ≤ 6
3x1 + 2x2 ≤ 18
x1 ≥ 0
x2 ≥ 0
Solución óptima: x1 =
8
,
3
x2 = 5, f (x) = 857
Figura 2: Problema con función objetivo no lineal y con solución en la frontera.
Observaciones:
1. La solución óptima es un punto de la frontera de la región factible.
2. La solución óptima es global.
3. La solución óptima no es un punto extremo como sucede en PL.
4. La función objetivo es no lineal y concava.
5. La región factible es convexa: todas las restricciones son lineales como en PL.
Ejemplo 3: Problema con función objetivo no lineal y solución en el interior de la región
factible.
max z(x) = −9(x1 − 3)2 − 13(x2 − 3)2 + 172
s.a.
x1 ≤ 4
x2 ≤ 6
3x1 + 2x2 ≤ 18
x1 ≥ 0
x2 ≥ 0
Solución óptima: x1 = 3, x2 = 3, f (x) = 172
Figura 3: Problema con función objetivo no lineal y con solución en el interior de la región
factible.
Observaciones:
1. La solución óptima es un punto interior de la región factible. Todas las restricciones están
inactivas en la solución óptima. En este caso se pueden eliminar todas las restricciones
del problema y la solución óptima no cambia.
2. La solución óptima de un PNL puede estar en la frontera de la región factible o dentro de
ella. En consecuencia, cualquier punto factible puede ser la solución óptima.
3. La función objetivo es no lineal y cóncava.
• La región factible es lineal y convexa.
1.6 Multimodalidad
Un problema de programación no lineal puede tener soluciones óptimas locales además de la
solución óptima global. La figura 4 muestra un problema de PNL definido a través de la función
objetivo y una única variable. La variable x esta restringida al intervalo S mostrado.
Figura 4: Problema de programación no lineal multimodal.
En este caso la función objetivo f (x) no es concava ni convexa y presenta tres puntos
mı́nimos locales y un punto mı́nimo global. En general, una función objetivo no concava
presenta óptimos locales en el problema de maximización y una función objetivo no convexa
presenta óptimos locales en el problema de minimización. Se dice que un problema de optimización es multimodal cuando presenta múltiples soluciones óptimas locales.
Observaciones importantes:
• En la figura 4 los puntos candidatos a solución óptima son aquellos puntos donde la
primera derivada de la función es igual a cero o los puntos donde la función es continua
pero no diferenciable o los puntos de frontera de la región factible.
• La mayorı́a de los algoritmos de PNL convergen a un óptimo pero son incapaces de
identificar si ese óptimo es local o global. Unicamente se tiene certeza que la solución
óptima es global si la región factible es un conjunto convexo y la función objetivo es una
función cóncava en el caso de maximización o convexa en el caso de minimización.
A diferencia de los problemas de programación lineal que siempre convergen a la solución
óptima global, en programación no lineal es neceasario desarrollar procedimientos algorı́micos
para encontrar soluciones óptimas y, adicionalmente, debe contarse con pruebas de optimalidad
que permitan determinar si la solución encontrada es óptima local u óptima global. Estas condiciones intentan responder los siguientes interrogantes: la función f (x) es cóncava?, la función
f (x) es convexa? la función f (x) no es concava ni convexa? la región factible es un conjunto
convexo?
Por ejemplo, para funciones f(x) de una variable decimos que la función es cóncava y tiene
un único máximo cuando:
∂ 2 f (x)
≤ 0
∂x2
∀x del dominio de f (x)
En este caso el problema de programación no lineal se define a través de una función objetivo cóncava, expresada a través de una única variable. En este caso se dice que en el problema
existe un único máximo si el problema es irrestricto o si es restricto pero la región factible contiene al punto candidato a óptimo.
Ejemplo 4: Verificar que f(x) es cóncava y encontrar el óptimo del PNL:
max f (x) = −x2 + 4x
Figura 5: Problema de programación no lineal con función f (x) concava.
Para determinar la concavidad de f (x) debemos hallar la expresión de la segunda derivada de
la función:
∂ f (x)
∂x
= −2x + 4
∂ 2 f (x)
∂x2
= −2 < 0 ∀x
Se demuestra que la segunda derivada es negativa para cualquier valor de x por lo tanto f(x) es
cóncava. A continuación encontramos el valor máximo global de la función, para esto usamos
el criterio de la primera derivada:
d f (x)
dx
= 0 ⇒ −2x + 4 = 0 ⇒ x∗ = 2
Ejemplo 5: Problema no convexo.
En este caso el problema tiene una región factible no convexa. Este tipo de problemas son
los más dificiles de resolver, o sea, encontrar el óptimo global del problema.
max z(x) = x1 + x2
s.a.
x1 x2 ≤ 4
0 ≤ x1 ≤ 6
0 ≤ x2 ≤ 4
Solución óptima: x1 = 6, x2 =
2
,
3
f (x) =
20
3
Figura 6: Problema de programación no lineal con región factible no convexa.
Observaciones:
1. La solución óptima global es un punto extremo de la región factible.
2. La función objetivo es concava (también es convexa).
3. La región factible no es convexa ya que presenta restricciones no lineales. Esta condición
ubica este problema entre los problemas más dificiles de resolver.
4. El problema tiene una solución óptima global y una solución óptima local.
En la figura 7 se muestran varias formas tı́picas de funciones f (x).
Figura 7: Forma gráfica tı́pica de funciones f (x).
Observaciones:
1. Si un PNL no tiene restricciones y f (x) es cóncava entonces el problema tiene un único
punto máximo que es máximo global.
2. Si un PNL no tiene restricciones y f (x) es convexa entonces el problema tiene un único
punto mı́nimo que es mı́nimo global.
3. En los casos anteriores con restricciones entonces el problema tiene un único óptimo
global si la región factible es un conjunto convexo. En consecuencia, el óptimo global
solamente puede encontrarse si la región factible es convexa y si f (x) es cóncava (para el
problema de maximización) o convexa (para el problema de minimización).
1.7 Tipos de Problemas de PNL
Los problemas de programación no lineal son clasificados usando sus caracterı́sticas especı́ficas.
Para cada tipo de problema deben desarrollarse algoritmos también especı́ficos. A continuación
se presenta un resumen de esta clasificación.
a) Problemas de Optimización Irrestrictos (sin restricciones):
En este caso el problema queda expresado unicamente por una función objetivo no lineal
y no tiene restricciones:
maximizar f (x)
o
minimizar f (x)
(1.2)
x ∈ ℜn
Si f (x) es diferenciable entonces una condición necesaria para que un punto x∗ sea
solución óptima de f (x) es la siguiente:
∂f (x)
=0
∂xj
en x = x∗
∀ j = 1, 2, 3, ..., n
(1.3)
Para el problema de maximización esta condición es suficiente si f (x) es cóncava. Para
el problema de minimización esta condición es suficiente si f (x) es convexa.
La expresión (1.3) representa un sistema de n ecuaciones que puede resolverse fácilmente
si representa conjunto de ecuaciones algebráicas lineales. En general, (1.3) puede resolverse usando una técnica de solución analı́tica, usando el método de Newton, usando
algoritmos de búsqueda iterativa, entre otros.
b) Problemas de Optimización Irrestrictos con condición de no negatividad en las variables:
max f (x)
(o min f (x))
(1.4)
s.a
xj ≥ 0 j = 1, 2, 3, ..., n
A la expresión (1.2) se le han agregado restricciones de no negatividad para las variables.
En este caso, si f (x) es diferenciable entonces una condición necesaria para que un punto
x∗ sea solución óptima de f (x) es:
∂f (x)
≤0
∂xj
en x = x∗
si
x∗j = 0
∂f (x)
=0
∂xj
en x = x∗
si
x∗j > 0
(1.5)
Como encontrar x∗ , a partir de (1.5) deben plantearse n relaciones algebráicas (ecuaciones
e inecuaciones).
c) Problemas de Optimización con Restricciones Lineales
Sea el problema:
max f (x)
s.a. gi (x) ≤ bi
i = 1, 2, 3, ..., m
(1.6)
Con todos los gi (x) ≤ bi lineales y con función objetivo no lineal, f (x). En este caso se
debe aprovechar el hecho de que existe solamente una función no lineal (la función objetivo f (x) y la región factible es un conjunto convexo (como en PL). Puede usarse técnicas
de optimización que están inspiradas en el método simplex de PL. Un caso especial es el
problema de programación cuadrática.
d) Optimización de Problemas de Programación Cuadrática
Es un caso especial de (1.6) donde las restricciones son lineales y la función objetivo
es cuadrática. Función objetivo cuadrática significa que algunos de los términos de la
función objetivo pueden tener variables elevadas al cuadrado o aparecen productos de
dos variables (x21 , x1 x2 , etc).
Existen algoritmos eficientes para resolver problemas de Programación Cuadrática en los
casos donde f (x) es cóncava (problema de maximización). Este tipo de problema es
importante porque otros problemas del tipo (1.6) con funciones objetivo no lineales y no
cuadráticas pueden resolverse a través de una secuencia de problemas cuadráticos donde,
en cada paso, la función objetivo compleja es representada por una expansión en serie de
Taylor de segundo orden de la función.
e) Programación convexa
Son todos los problemas mencionados anteriormente con los siguientes requisitos:
(1) f (x) debe ser cóncava para el problema de maximización. f (x) debe ser convexa
para el problema de minimización.
(2) Cada gi (x) debe ser convexa o, en otras palabras, la región factible debe ser convexa.
f) Optimización de problemas de optimización separable
Son problemas de tipo (e) con los siguientes requisitos adicionales:
* f (x) y todas las gi (x) son separables.
Una función es separable cuando las variables aparecen en forma separada de las otras,
es decir, no existe multiplicación ni división entre variables diferentes. Esta caracterı́stica
se puede observar en los siguientes ejemplos:
f (x) = 3x21 + 6x1 + x22 + 20
←
Separable
f (x) = x21 x2 + 3x1 x2 + x21 − 4x2 ← No separable
Las funciones separables cumplen con la propiedad de aditividad pero no cumplen con
la propiedad de proporcionalidad. Los problemas con funciones separables pueden ser
linealizados más fácilmente y es posible desarrollar algoritmos eficientes que aprovechen
esta caracterı́stica.
g) Problemas de Programación no convexa
Son todos los problemas que no cumplen con las condiciones existentes en un problema
de programación convexa.
Para este tipo de problemas existen solamente algoritmos que encuentran una solución
óptima local y, generalmente, no existe forma de demostrar que esa solución local encontrada es la solución óptima global. Dos problemas de ese tipo son los siguientes:
g1 ) Problema de Programación Geométrica
Asume la siguiente forma (en la función objetivo y las restricciones):
g(x) =
n
X
Ci Pi (x)
i=1
con Pi (x) = x1ai1 x2ai2 ...xanin
i = 1, 2, 3, ..., n
Ci ≥ 0
aij ≥ 0
objetivo
restricciones
Ejemplo:
max f (x) = 5x21 x72 + 3x41 x2 + x91 − 4x32 ← función geométrica
g2 ) Problema de Programación Fraccional
En este caso la función objetivo asume la siguiente forma:
max f (x) =
f1 (x)
f2 (x)
Ejemplo:
max f (x) =
8x1 + 3x2
← función fraccionaria
3x1 + x1
Descargar