La optimización matemática (también llamada optimización ) o programación matemática es la selección del mejor elemento, con respecto a ciertos criterios, de un conjunto de alternativas disponibles. [1] [2] Generalmente se divide en dos subcampos: optimización discreta y optimización continua . Los problemas de optimización surgen en todas las disciplinas cuantitativas, desde la informática y la ingeniería [3] hasta la investigación de operaciones y la economía , y el desarrollo de métodos de solución ha sido de interés en las matemáticas durante siglos. [4] [5]
En un enfoque más general, un problema de optimización consiste en maximizar o minimizar una función real eligiendo sistemáticamente valores de entrada dentro de un conjunto permitido y calculando el valor de la función. La generalización de la teoría y las técnicas de optimización a otras formulaciones constituye un área extensa de las matemáticas aplicadas . [6]
Los problemas de optimización se pueden dividir en dos categorías, dependiendo de si las variables son continuas o discretas :
Un problema de optimización se puede representar de la siguiente manera:
Este tipo de formulación se denomina problema de optimización o problema de programación matemática (término que no está directamente relacionado con la programación informática , pero que todavía se utiliza, por ejemplo, en la programación lineal ; véase la historia a continuación). Muchos problemas reales y teóricos pueden modelarse en este marco general.
Dado que lo siguiente es válido
Basta con resolver únicamente problemas de minimización. Sin embargo, la perspectiva opuesta de considerar únicamente problemas de maximización también sería válida.
Los problemas formulados utilizando esta técnica en los campos de la física pueden referirse a la técnica como minimización de energía , [7] hablando del valor de la función f como representante de la energía del sistema que se está modelando . En el aprendizaje automático , siempre es necesario evaluar continuamente la calidad de un modelo de datos mediante el uso de una función de costo donde un mínimo implica un conjunto de parámetros posiblemente óptimos con un error óptimo (el más bajo).
Normalmente, A es un subconjunto del espacio euclidiano , a menudo especificado por un conjunto de restricciones , igualdades o desigualdades que los miembros de A deben satisfacer. El dominio A de f se denomina espacio de búsqueda o conjunto de elección , mientras que los elementos de A se denominan soluciones candidatas o soluciones factibles .
La función f se denomina de diversas formas: función objetivo , función de criterio , función de pérdida , función de coste (minimización), [8] función de utilidad o función de aptitud (maximización) o, en ciertos campos, función de energía o funcional de energía . Una solución factible que minimiza (o maximiza) la función objetivo se denomina solución óptima .
En matemáticas, los problemas de optimización convencionales suelen formularse en términos de minimización.
Un mínimo local x * se define como un elemento para el cual existe algún δ > 0 tal que
la expresión f ( x *) ≤ f ( x ) se cumple;
es decir, en alguna región alrededor de x * todos los valores de la función son mayores o iguales que el valor en ese elemento. Los máximos locales se definen de manera similar.
Mientras que un mínimo local es al menos tan bueno como cualquier elemento cercano, un mínimo global es al menos tan bueno como cada elemento factible. Generalmente, a menos que la función objetivo sea convexa en un problema de minimización, puede haber varios mínimos locales. En un problema convexo , si hay un mínimo local que es interior (no en el borde del conjunto de elementos factibles), también es el mínimo global, pero un problema no convexo puede tener más de un mínimo local, no todos los cuales necesitan ser mínimos globales.
Un gran número de algoritmos propuestos para resolver problemas no convexos –incluida la mayoría de los solucionadores disponibles comercialmente– no son capaces de hacer una distinción entre soluciones óptimas locales y soluciones óptimas globales, y tratarán las primeras como soluciones reales al problema original. La optimización global es la rama de las matemáticas aplicadas y el análisis numérico que se ocupa del desarrollo de algoritmos deterministas capaces de garantizar la convergencia en tiempo finito a la solución óptima real de un problema no convexo.
Los problemas de optimización suelen expresarse con una notación especial. A continuación se ofrecen algunos ejemplos:
Considere la siguiente notación:
Esto denota el valor mínimo de la función objetivo x 2 + 1 , al elegir x del conjunto de números reales . El valor mínimo en este caso es 1, y ocurre en x = 0 .
De manera similar, la notación
Pregunta por el valor máximo de la función objetivo 2 x , donde x puede ser cualquier número real. En este caso, no existe tal valor máximo ya que la función objetivo no tiene límites, por lo que la respuesta es " infinito " o " indefinido ".
Considere la siguiente notación:
o equivalentemente
Esto representa el valor (o valores) del argumento x en el intervalo (−∞,−1] que minimiza (o minimiza) la función objetivo x 2 + 1 (el valor mínimo real de esa función no es el que pide el problema). En este caso, la respuesta es x = −1 , ya que x = 0 es inviable, es decir, no pertenece al conjunto factible .
Similarmente,
o equivalentemente
representa el par (o pares) { x , y } que maximiza (o maximiza) el valor de la función objetivo x cos y , con la restricción añadida de que x se encuentra en el intervalo [−5,5] (de nuevo, el valor máximo real de la expresión no importa). En este caso, las soluciones son los pares de la forma {5, 2 k π } y {−5, (2 k + 1) π } , donde k abarca todos los números enteros .
Los operadores arg min y arg max a veces también se escriben como argmin y argmax , y representan el argumento del mínimo y el argumento del máximo .
Fermat y Lagrange encontraron fórmulas basadas en el cálculo para identificar óptimos, mientras que Newton y Gauss propusieron métodos iterativos para avanzar hacia un óptimo.
El término " programación lineal " para ciertos casos de optimización se debió a George B. Dantzig , aunque gran parte de la teoría había sido introducida por Leonid Kantorovich en 1939. ( Programación en este contexto no se refiere a la programación informática , sino que proviene del uso de programa por parte del ejército de los Estados Unidos para referirse a los cronogramas de entrenamiento y logística propuestos , que eran los problemas que Dantzig estudiaba en ese momento). Dantzig publicó el algoritmo Simplex en 1947, y también John von Neumann y otros investigadores trabajaron en los aspectos teóricos de la programación lineal (como la teoría de la dualidad ) aproximadamente al mismo tiempo. [9]
Otros investigadores notables en optimización matemática incluyen los siguientes:
En varios subcampos, las técnicas están diseñadas principalmente para la optimización en contextos dinámicos (es decir, toma de decisiones a lo largo del tiempo):
Añadir más de un objetivo a un problema de optimización añade complejidad. Por ejemplo, para optimizar un diseño estructural, se desearía un diseño que fuera ligero y rígido. Cuando dos objetivos entran en conflicto, se debe crear un equilibrio. Puede haber un diseño más ligero, un diseño más rígido y una cantidad infinita de diseños que sean un compromiso entre peso y rigidez. El conjunto de diseños con equilibrio que mejoran un criterio a expensas de otro se conoce como el conjunto de Pareto . La curva creada al representar gráficamente el peso frente a la rigidez de los mejores diseños se conoce como la frontera de Pareto .
Un diseño se considera "óptimo de Pareto" (equivalentemente, "eficiente en términos de Pareto" o perteneciente al conjunto de Pareto) si no está dominado por ningún otro diseño: si es peor que otro diseño en algunos aspectos y no mejor en ningún aspecto, entonces está dominado y no es óptimo de Pareto.
La elección entre soluciones "óptimas de Pareto" para determinar la "solución favorita" se delega en el responsable de la toma de decisiones. En otras palabras, definir el problema como una optimización multiobjetivo indica que falta cierta información: se dan los objetivos deseables, pero no se evalúan las combinaciones de ellos en relación con los demás. En algunos casos, la información faltante se puede obtener mediante sesiones interactivas con el responsable de la toma de decisiones.
Los problemas de optimización multiobjetivo se han generalizado aún más en problemas de optimización vectorial donde el ordenamiento (parcial) ya no viene dado por el ordenamiento de Pareto.
Los problemas de optimización suelen ser multimodales, es decir, poseen múltiples soluciones buenas. Todas ellas pueden ser globalmente buenas (el mismo valor de la función de costos) o puede haber una combinación de soluciones globalmente buenas y localmente buenas. Obtener todas (o al menos algunas) de las múltiples soluciones es el objetivo de un optimizador multimodal.
Las técnicas de optimización clásicas debido a su enfoque iterativo no funcionan satisfactoriamente cuando se utilizan para obtener múltiples soluciones, ya que no se garantiza que se obtengan soluciones diferentes incluso con diferentes puntos de partida en múltiples ejecuciones del algoritmo.
Los enfoques comunes para los problemas de optimización global , donde pueden estar presentes múltiples extremos locales, incluyen algoritmos evolutivos , optimización bayesiana y recocido simulado .
El problema de satisfacibilidad , también llamado problema de factibilidad , es simplemente el problema de encontrar cualquier solución factible sin tener en cuenta el valor objetivo. Esto puede considerarse como el caso especial de optimización matemática donde el valor objetivo es el mismo para cada solución y, por lo tanto, cualquier solución es óptima.
Muchos algoritmos de optimización necesitan comenzar desde un punto factible. Una forma de obtener dicho punto es relajar las condiciones de factibilidad utilizando una variable de holgura ; con suficiente holgura, cualquier punto de partida es factible. Luego, minimice esa variable de holgura hasta que la holgura sea nula o negativa.
El teorema de los valores extremos de Karl Weierstrass establece que una función continua de valor real en un conjunto compacto alcanza su valor máximo y mínimo. En términos más generales, una función semicontinua inferior en un conjunto compacto alcanza su mínimo; una función semicontinua superior en un conjunto compacto alcanza su punto máximo o vista.
Uno de los teoremas de Fermat establece que los óptimos de los problemas sin restricciones se encuentran en puntos estacionarios , donde la primera derivada o el gradiente de la función objetivo es cero (ver prueba de la primera derivada ). De manera más general, se pueden encontrar en puntos críticos , donde la primera derivada o el gradiente de la función objetivo es cero o no está definido, o en el límite del conjunto de elección. Una ecuación (o conjunto de ecuaciones) que establece que la(s) primera(s) derivada(s) es(son) igual(es) a cero en un óptimo interior se denomina "condición de primer orden" o un conjunto de condiciones de primer orden.
Los óptimos de los problemas con restricciones de igualdad se pueden determinar mediante el método del multiplicador de Lagrange . Los óptimos de los problemas con restricciones de igualdad y/o desigualdad se pueden determinar utilizando las " condiciones de Karush-Kuhn-Tucker ".
Aunque la prueba de la primera derivada identifica puntos que podrían ser extremos, esta prueba no distingue un punto que es un mínimo de uno que es un máximo o uno que no es ninguno de los dos. Cuando la función objetivo es dos veces diferenciable, estos casos se pueden distinguir comprobando la segunda derivada o la matriz de segundas derivadas (llamada matriz hessiana ) en problemas sin restricciones, o la matriz de segundas derivadas de la función objetivo y las restricciones llamada matriz hessiana acotada en problemas con restricciones. Las condiciones que distinguen los máximos o mínimos de otros puntos estacionarios se denominan "condiciones de segundo orden" (véase " Prueba de la segunda derivada "). Si una solución candidata satisface las condiciones de primer orden, entonces la satisfacción de las condiciones de segundo orden también es suficiente para establecer al menos la optimalidad local.
El teorema de la envolvente describe cómo cambia el valor de una solución óptima cuando cambia un parámetro subyacente . El proceso de calcular este cambio se denomina estática comparativa .
El teorema del máximo de Claude Berge (1963) describe la continuidad de una solución óptima en función de los parámetros subyacentes.
Para problemas sin restricciones con funciones dos veces diferenciables, se pueden encontrar algunos puntos críticos al encontrar los puntos donde el gradiente de la función objetivo es cero (es decir, los puntos estacionarios). De manera más general, un subgradiente cero certifica que se ha encontrado un mínimo local para problemas de minimización con funciones convexas y otras funciones Lipschitz locales , que se encuentran en la minimización de la función de pérdida de la red neuronal. La estimación del momento positivo-negativo permite evitar el mínimo local y converge en el mínimo global de la función objetivo. [10]
Además, los puntos críticos se pueden clasificar utilizando la definición de la matriz hessiana : si la hessiana es definida positiva en un punto crítico, entonces el punto es un mínimo local; si la matriz hessiana es definida negativa, entonces el punto es un máximo local; finalmente, si es indefinida, entonces el punto es algún tipo de punto de silla .
Los problemas restringidos pueden transformarse a menudo en problemas sin restricciones con la ayuda de los multiplicadores de Lagrange . La relajación lagrangiana también puede proporcionar soluciones aproximadas a problemas restringidos difíciles.
Cuando la función objetivo es una función convexa , entonces cualquier mínimo local también será un mínimo global. Existen técnicas numéricas eficientes para minimizar funciones convexas, como los métodos de puntos interiores .
En términos más generales, si la función objetivo no es una función cuadrática, muchos métodos de optimización utilizan otros métodos para garantizar que alguna subsecuencia de iteraciones converja a una solución óptima. El primer método, que sigue siendo popular, para garantizar la convergencia se basa en búsquedas de línea , que optimizan una función a lo largo de una dimensión. Un segundo método, cada vez más popular, para garantizar la convergencia utiliza regiones de confianza . Tanto las búsquedas de línea como las regiones de confianza se utilizan en métodos modernos de optimización no diferenciable . Por lo general, un optimizador global es mucho más lento que los optimizadores locales avanzados (como BFGS ), por lo que a menudo se puede construir un optimizador global eficiente iniciando el optimizador local desde diferentes puntos de partida.
Para resolver problemas, los investigadores pueden utilizar algoritmos que terminan en un número finito de pasos, o métodos iterativos que convergen a una solución (en alguna clase específica de problemas), o heurísticas que pueden proporcionar soluciones aproximadas a algunos problemas (aunque sus iteraciones no necesitan converger).
Los métodos iterativos utilizados para resolver problemas de programación no lineal difieren según evalúen hessianos , gradientes o solo valores de funciones. Si bien la evaluación de hessianos (H) y gradientes (G) mejora la tasa de convergencia, para funciones para las que estas cantidades existen y varían con suficiente suavidad, dichas evaluaciones aumentan la complejidad computacional (o el costo computacional) de cada iteración. En algunos casos, la complejidad computacional puede ser excesivamente alta.
Un criterio importante para los optimizadores es simplemente el número de evaluaciones de funciones requeridas, ya que esto a menudo ya es un gran esfuerzo computacional, generalmente mucho más esfuerzo que dentro del propio optimizador, que principalmente tiene que operar sobre las N variables. Las derivadas proporcionan información detallada para tales optimizadores, pero son aún más difíciles de calcular, por ejemplo, aproximar el gradiente requiere al menos N + 1 evaluaciones de función. Para las aproximaciones de las derivadas de segundo orden (recopiladas en la matriz de Hesse), el número de evaluaciones de función es del orden de N². El método de Newton requiere las derivadas de segundo orden, por lo que para cada iteración, el número de llamadas de función es del orden de N², pero para un optimizador de gradiente puro más simple es solo N. Sin embargo, los optimizadores de gradiente generalmente necesitan más iteraciones que el algoritmo de Newton. Cuál es mejor con respecto al número de llamadas de función depende del problema en sí.
Además de los algoritmos (de terminación finita) y los métodos iterativos (convergentes) , existen las heurísticas . Una heurística es cualquier algoritmo que no garantiza (matemáticamente) que encuentre la solución, pero que, no obstante, es útil en ciertas situaciones prácticas. Lista de algunas heurísticas conocidas:
Los problemas en dinámica de cuerpos rígidos (en particular, dinámica de cuerpos rígidos articulados) a menudo requieren técnicas de programación matemática, ya que puede ver la dinámica de cuerpos rígidos como un intento de resolver una ecuación diferencial ordinaria en una variedad de restricciones; [11] las restricciones son varias restricciones geométricas no lineales como "estos dos puntos siempre deben coincidir", "esta superficie no debe penetrar ninguna otra" o "este punto siempre debe estar en algún lugar de esta curva". Además, el problema de calcular las fuerzas de contacto se puede resolver resolviendo un problema de complementariedad lineal , que también puede verse como un problema de QP (programación cuadrática).
Muchos problemas de diseño también pueden expresarse como programas de optimización. Esta aplicación se denomina optimización del diseño. Un subconjunto de estos subconjuntos es la optimización de ingeniería , y otro subconjunto reciente y en crecimiento de este campo es la optimización del diseño multidisciplinario , que, si bien es útil en muchos problemas, se ha aplicado en particular a los problemas de ingeniería aeroespacial .
Este enfoque puede aplicarse en cosmología y astrofísica. [12]
La economía está tan estrechamente vinculada a la optimización de agentes que una definición influyente describe a la economía como ciencia como el "estudio del comportamiento humano como una relación entre fines y medios escasos " con usos alternativos. [13] La teoría de optimización moderna incluye la teoría de optimización tradicional, pero también se superpone con la teoría de juegos y el estudio de los equilibrios económicos . Los códigos del Journal of Economic Literature clasifican la programación matemática, las técnicas de optimización y los temas relacionados bajo JEL:C61-C63 .
En microeconomía, el problema de maximización de la utilidad y su problema dual , el problema de minimización del gasto , son problemas de optimización económica. En la medida en que se comporten de manera consistente, se supone que los consumidores maximizan su utilidad , mientras que las empresas suelen asumir que maximizan sus ganancias . Además, los agentes suelen modelarse como reacios al riesgo , por lo que prefieren evitarlo. Los precios de los activos también se modelan utilizando la teoría de la optimización, aunque las matemáticas subyacentes se basan en la optimización de procesos estocásticos en lugar de la optimización estática. La teoría del comercio internacional también utiliza la optimización para explicar los patrones comerciales entre naciones. La optimización de carteras es un ejemplo de optimización multiobjetivo en economía.
Desde la década de 1970, los economistas han modelado decisiones dinámicas a lo largo del tiempo utilizando la teoría del control . [14] Por ejemplo, los modelos de búsqueda dinámica se utilizan para estudiar el comportamiento del mercado laboral . [15] Una distinción crucial es entre modelos deterministas y estocásticos. [16] Los macroeconomistas construyen modelos de equilibrio general estocástico dinámico (DSGE) que describen la dinámica de toda la economía como resultado de las decisiones de optimización interdependientes de trabajadores, consumidores, inversores y gobiernos [17] . [18] [19]
Algunas aplicaciones comunes de las técnicas de optimización en ingeniería eléctrica incluyen el diseño de filtros activos , [20] la reducción de campos dispersos en sistemas superconductores de almacenamiento de energía magnética, el diseño de mapeo espacial de estructuras de microondas , [21] antenas de teléfonos móviles, [22] [23] [24] diseño basado en electromagnetismo. La optimización del diseño validada electromagnéticamente de componentes y antenas de microondas ha hecho un uso extensivo de un modelo sustituto empírico o basado en la física apropiado y metodologías de mapeo espacial desde el descubrimiento del mapeo espacial en 1993. [25] [26] Las técnicas de optimización también se utilizan en el análisis de flujo de potencia . [27]
La optimización se ha utilizado ampliamente en ingeniería civil. La gestión de la construcción y la ingeniería de transporte se encuentran entre las principales ramas de la ingeniería civil que dependen en gran medida de la optimización. Los problemas de ingeniería civil más comunes que se resuelven mediante la optimización son el corte y relleno de carreteras, el análisis del ciclo de vida de estructuras e infraestructuras, [28] la nivelación de recursos , [29] [30] la asignación de recursos hídricos , la gestión del tráfico [31] y la optimización de cronogramas.
Otro campo que utiliza ampliamente las técnicas de optimización es la investigación de operaciones . [32] La investigación de operaciones también utiliza modelos estocásticos y simulación para respaldar una mejor toma de decisiones. Cada vez más, la investigación de operaciones utiliza la programación estocástica para modelar decisiones dinámicas que se adaptan a los eventos; dichos problemas se pueden resolver con optimización a gran escala y métodos de optimización estocástica .
La optimización matemática se utiliza en muchos diseños de controladores modernos. Los controladores de alto nivel, como el control predictivo de modelos (MPC) o la optimización en tiempo real (RTO), emplean la optimización matemática. Estos algoritmos se ejecutan en línea y determinan repetidamente valores para variables de decisión, como las aberturas de estrangulamiento en una planta de proceso, mediante la resolución iterativa de un problema de optimización matemática que incluye restricciones y un modelo del sistema que se va a controlar.
Las técnicas de optimización se utilizan con regularidad en los problemas de estimación de parámetros geofísicos . Dado un conjunto de mediciones geofísicas, por ejemplo, registros sísmicos , es habitual calcular las propiedades físicas y las formas geométricas de las rocas y los fluidos subyacentes. La mayoría de los problemas en geofísica son no lineales y se utilizan ampliamente tanto métodos deterministas como estocásticos.
Los métodos de optimización no lineal se utilizan ampliamente en el análisis conformacional .
Las técnicas de optimización se utilizan en muchas facetas de la biología de sistemas computacionales, como la construcción de modelos, el diseño experimental óptimo, la ingeniería metabólica y la biología sintética. [33] La programación lineal se ha aplicado para calcular los rendimientos máximos posibles de los productos de fermentación, [33] y para inferir redes reguladoras de genes a partir de múltiples conjuntos de datos de microarrays [34], así como redes reguladoras transcripcionales a partir de datos de alto rendimiento. [35] La programación no lineal se ha utilizado para analizar el metabolismo energético [36] y se ha aplicado a la ingeniería metabólica y la estimación de parámetros en vías bioquímicas. [37]