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 no son igualdades lineales o la función objetivo no es una función lineal . Un problema de optimización es un problema 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 condicional a la satisfacción de un sistema de igualdades y desigualdades , colectivamente denominadas 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 (normalmente uno con restricciones de 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 }, con al menos una 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:

La mayoría de las aplicaciones realistas presentan problemas factibles, mientras que los problemas inviables o ilimitados se consideran un fallo 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 derivados del petróleo dada una selección o combinación de oleoducto, vagón cisterna, camión cisterna, barcaza fluvial o buque cisterna costero. Debido al tamaño económico del lote, las funciones de costo pueden tener discontinuidades además de cambios suaves.

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 magnitud desconocida) se pueden realizar con métodos lineales, pero en general estos problemas también son no lineales. Por lo general, se 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 el mejor ajuste numéricamente. En este caso, a menudo se desea una medida de 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

En condiciones de diferenciabilidad y de restricción , 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, existen versiones subdiferenciales de las condiciones de Karush–Kuhn–Tucker (KKT) . [1]

En condiciones de convexidad, las condiciones KKT son suficientes para un óptimo global . Sin convexidad, estas condiciones son suficientes solo 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 menor. [2]

Métodos numéricos

En la mayoría de los casos realistas, es muy difícil resolver las condiciones KKT analíticamente, por lo que los problemas se resuelven utilizando métodos numéricos . Estos métodos son iterativos: comienzan con un punto inicial y luego avanzan hacia 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 límite

Otro método implica el uso de técnicas de ramificación y acotación , donde el programa se divide en subclases para ser resueltas 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 subsiguientes, en algún punto se obtendrá una solución real cuyo costo es igual al mejor límite inferior obtenido para cualquiera de las soluciones aproximadas. Esta solución es óptima, aunque posiblemente no única. El algoritmo también puede detenerse antes, con la seguridad de que la mejor solución posible está dentro de una tolerancia desde el mejor punto encontrado; tales puntos se denominan ε-óptimos. La terminación en puntos ε-óptimos suele ser necesaria para asegurar 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, incluidos los de código abierto:

Ejemplos numéricos

Ejemplo bidimensional

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

Un problema simple (mostrado en el diagrama) se puede definir mediante las restricciones con una función objetivo a maximizar donde 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 con una función objetivo a maximizar donde x = ( x 1 , x 2 , x 3 ) .

Véase también

Referencias

  1. ^ Ruszczyński, Andrzej (2006). Optimización no lineal . Princeton, NJ: Princeton University Press . pp. xii+454. ISBN 978-0691119151.Sr. 2199043  .
  2. ^ ab Nemirovsky y Ben-Tal (2023). "Optimización III: Optimización convexa" (PDF) .

Lectura adicional

Enlaces externos