stringtranslate.com

Programación no lineal

En matemáticas , la programación no lineal ( PNL ) es el proceso de resolver un problema de optimización donde algunas de las restricciones o la función objetivo no son lineales . Un problema de optimización es aquel de cálculo de los extremos (máximos, mínimos o puntos estacionarios) de una función objetivo sobre un conjunto de variables reales desconocidas y condicionales a la satisfacción de un sistema de igualdades y desigualdades , denominados colectivamente restricciones . Es el subcampo de la optimización matemática que se ocupa de problemas que no son lineales.

Definición y discusión

Sean n , m y p números enteros positivos. Sea X un subconjunto de R n (generalmente uno restringido por caja), sean f , g i y h j funciones de valor real en X para cada i en { 1 , ..., m } y cada j en { 1 , ..., p }, siendo al menos uno de f , g i y h j no lineal.

Un problema de programación no lineal es un problema de optimización de la forma

Dependiendo del conjunto de restricciones, existen varias posibilidades:

Las aplicaciones más realistas presentan problemas factibles, y los problemas no factibles o ilimitados se consideran una falla de un modelo subyacente. En algunos casos, los problemas inviables se manejan minimizando una suma de violaciones de viabilidad.

Algunos casos especiales de programación no lineal tienen métodos de solución especializados:

Aplicabilidad

Un problema típico no convexo es el de optimizar los costos de transporte mediante la selección de un conjunto de métodos de transporte, uno o más de los cuales exhiben economías de escala , con diversas conectividades y restricciones de capacidad. Un ejemplo sería el transporte de productos petrolíferos, dada una selección o combinación de oleoducto, camión cisterna, camión cisterna, barcaza fluvial o buque tanque costero. Debido al tamaño económico del lote, las funciones de costos pueden tener discontinuidades además de cambios fluidos.

En la ciencia experimental, algunos análisis de datos simples (como ajustar un espectro con una suma de picos de ubicación y forma conocidas pero de magnitud desconocida) se pueden realizar con métodos lineales, pero en general estos problemas también son no lineales. Por lo general, uno tiene un modelo teórico del sistema en estudio con parámetros variables y un modelo del experimento o experimentos, que también pueden tener parámetros desconocidos. Se intenta encontrar numéricamente el mejor ajuste. En este caso, a menudo se desea medir la precisión del resultado, así como el mejor ajuste en sí.

Métodos para resolver un programa no lineal general.

Métodos analíticos

Bajo calificaciones de diferenciabilidad y restricciones , las condiciones de Karush-Kuhn-Tucker (KKT) proporcionan las condiciones necesarias para que una solución sea óptima. Si algunas de las funciones no son diferenciables, se encuentran disponibles versiones subdiferenciales de las condiciones de Karush-Kuhn-Tucker (KKT) . [1]

Bajo convexidad, las condiciones KKT son suficientes para un óptimo global . Sin convexidad, estas condiciones son suficientes sólo para un óptimo local . En algunos casos, el número de óptimos locales es pequeño y se pueden encontrar todos analíticamente y encontrar aquel para el cual el valor objetivo es más pequeño. [2] : Sección 5 

Métodos numéricos

En la mayoría de los casos realistas, es muy difícil resolver analíticamente las condiciones KKT, por lo que los problemas se resuelven utilizando métodos numéricos . Estos métodos son iterativos: comienzan con un punto inicial y luego proceden a puntos que se supone que están más cerca del punto óptimo, utilizando alguna regla de actualización. Hay tres tipos de reglas de actualización: [2] : 5.1.2 

Las rutinas de tercer orden (y superiores) son teóricamente posibles, pero no se utilizan en la práctica debido a la mayor carga computacional y al escaso beneficio teórico.

Rama y atado

Otro método implica el uso de técnicas de rama y límite , donde el programa se divide en subclases que se resolverán con aproximaciones convexas (problema de minimización) o lineales que forman un límite inferior en el costo total dentro de la subdivisión. Con divisiones posteriores, en algún momento se obtendrá una solución real cuyo coste es igual al mejor cota inferior obtenida para cualquiera de las soluciones aproximadas. Esta solución es óptima, aunque posiblemente no sea única. El algoritmo también puede detenerse tempranamente, con la seguridad de que la mejor solución posible está dentro de una tolerancia desde el mejor punto encontrado; tales puntos se denominan ε-óptimo. Por lo general, es necesario terminar en puntos ε-óptimos para garantizar una terminación finita. Esto es especialmente útil para problemas grandes y difíciles y problemas con costos o valores inciertos donde la incertidumbre se puede estimar con una estimación de confiabilidad adecuada.

Implementaciones

Existen numerosos solucionadores de programación no lineal, incluido el código abierto:

Ejemplos numéricos

ejemplo bidimensional

La región azul es la región factible . La tangencia de la recta con la región factible representa la solución. La línea es la mejor curva de nivel alcanzable (lugar con un valor dado de la función objetivo).

Un problema simple (que se muestra en el diagrama) puede definirse mediante las restricciones

x = ( x 1 , x 2 )

ejemplo tridimensional

La tangencia de la superficie superior con el espacio restringido en el centro representa la solución.

Otro problema simple (ver diagrama) puede definirse mediante las restricciones

x = ( x 1 , x 2 , x 3 )

Ver también

Referencias

  1. ^ Ruszczyński, Andrzej (2006). Optimización no lineal . Princeton, Nueva Jersey: Princeton University Press . págs. xii+454. ISBN 978-0691119151. SEÑOR  2199043.
  2. ^ ab Nemirovsky y Ben-Tal (2023). "Optimización III: Optimización convexa" (PDF) .

Otras lecturas

enlaces externos