¿Qué es la programación cuadrática?

La programación cuadrática es un método utilizado para optimizar una función cuadrática multivariable que puede estar o no restringida linealmente. Muchos problemas del mundo real, como optimizar la cartera de una empresa o reducir los costos de un fabricante, se pueden describir mediante un programa cuadrático. Si la función objetivo es convexa, entonces puede existir una solución factible y puede resolverse mediante algoritmos conocidos como el algoritmo simplex expandido. Existen métodos para resolver algunas funciones cuadráticas no convexas, pero son complicados y no están fácilmente disponibles.

Las técnicas de optimización matemática se utilizan en la programación cuadrática para minimizar una función objetivo. La función objetivo se compone de una serie de variables de decisión que pueden o no estar limitadas. Las variables de decisión tienen potencias 0, 1 o 2. La función objetivo puede estar sujeta a una serie de restricciones lineales de igualdad y desigualdad con respecto a las variables de decisión. Un ejemplo de programación cuadrática es: minimizar f (x, y) = x2 + 3y2 – 12y + 12 donde x + y = 6 y x> 0 e y ≥ 0.

A menudo es interesante utilizar funciones cuadráticas multivariadas para describir problemas del mundo real. Por ejemplo, utilizando la teoría de la cartera moderna, un analista financiero intentará optimizar la cartera de una empresa eligiendo la proporción de activos que minimiza el riesgo asociado con un rendimiento esperado determinado. Una ecuación cuadrática compuesta por ponderaciones de activos y la correlación entre activos describe la varianza de la cartera que se puede minimizar mediante la programación cuadrática. Otro ejemplo podría ser un fabricante que usa una ecuación cuadrática para describir la relación entre diferentes componentes de calidad y el costo de un producto. El fabricante puede minimizar los costos mientras mantiene ciertos estándares agregando restricciones lineales al programa cuadrático.

Una de las condiciones más importantes para resolver un programa cuadrático es la convexidad de la ecuación objetivo. La convexidad de una función cuadrática está determinada por el hessiano o la matriz de sus segundas derivadas. La función se llama convexa si la matriz de Hesse es positiva definida o positiva semidefinida, es decir, si todos los valores propios son positivos o no negativos respectivamente. Si el hessiano es positivo y existe una solución factible, entonces ese mínimo local es único y es un mínimo global. Si el hessiano es semi-positivo, una solución factible puede no ser única. Las funciones cuadráticas no convexas pueden tener mínimos locales o globales, pero son más difíciles de determinar.

Hay muchos enfoques para resolver una función cuadrática convexa usando programación cuadrática. El enfoque más común es una expansión del algoritmo simplex. Algunos otros métodos incluyen el método de punto interior o barrera, el método de conjunto activo y el método de gradiente conjugado. Estos métodos están integrados en ciertos programas como Mathematica® y Matlab® y están disponibles en bibliotecas para muchos lenguajes de programación.