En optimización matemática , el método del plano de corte es cualquiera de una variedad de métodos de optimización que refinan iterativamente un conjunto factible o una función objetivo por medio de desigualdades lineales, denominadas cortes . Dichos procedimientos se utilizan comúnmente para encontrar soluciones enteras a problemas de programación lineal entera mixta (MILP), así como para resolver problemas de optimización convexa generales, no necesariamente diferenciables . El uso de planos de corte para resolver MILP fue introducido por Ralph E. Gomory .
Los métodos de plano de corte para MILP funcionan resolviendo un programa lineal no entero, la relajación lineal del programa entero dado. La teoría de la programación lineal dicta que bajo supuestos suaves (si el programa lineal tiene una solución óptima y si la región factible no contiene una línea), siempre se puede encontrar un punto extremo o un punto de esquina que sea óptimo. El óptimo obtenido se prueba para ser una solución entera. Si no lo es, se garantiza que existe una desigualdad lineal que separa el óptimo de la envoltura convexa del verdadero conjunto factible. Encontrar tal desigualdad es el problema de separación , y tal desigualdad es un corte . Se puede agregar un corte al programa lineal relajado. Luego, la solución no entera actual ya no es factible para la relajación. Este proceso se repite hasta que se encuentra una solución entera óptima.
Los métodos de plano de corte para la optimización continua convexa general y variantes se conocen con varios nombres: método de Kelley, método de Kelley-Cheney-Goldstein y métodos de paquete . Se utilizan popularmente para la minimización convexa no diferenciable, donde una función objetivo convexa y su subgradiente se pueden evaluar de manera eficiente, pero los métodos de gradiente habituales para la optimización diferenciable no se pueden utilizar. Esta situación es más típica para la maximización cóncava de funciones duales lagrangianas . Otra situación común es la aplicación de la descomposición de Dantzig-Wolfe a un problema de optimización estructurada en el que se obtienen formulaciones con un número exponencial de variables. Generar estas variables a demanda por medio de la generación de columnas retrasadas es idéntico a realizar un plano de corte en el respectivo problema dual.
Los planos de corte fueron propuestos por Ralph Gomory en la década de 1950 como un método para resolver problemas de programación entera y programación entera mixta. Sin embargo, la mayoría de los expertos, incluido el propio Gomory, los consideraban poco prácticos debido a la inestabilidad numérica, así como ineficaces porque se necesitaban muchas rondas de cortes para avanzar hacia la solución. Las cosas cambiaron cuando a mediados de la década de 1990 Gérard Cornuéjols y sus colaboradores demostraron que eran muy eficaces en combinación con la ramificación y acotación (llamada ramificación y corte ) y las formas de superar las inestabilidades numéricas. Hoy en día, todos los solucionadores MILP comerciales utilizan cortes de Gomory de una forma u otra. Los cortes de Gomory se generan de manera muy eficiente a partir de una tabla simplex, mientras que muchos otros tipos de cortes son costosos o incluso NP-difíciles de separar. Entre otros cortes generales para MILP, el más notable es el de elevación y proyección, que domina los cortes de Gomory. [1] [2]
Sea un problema de programación entera formulado (en forma canónica ) como:
donde A es una matriz y b, c es un vector. El vector x es desconocido y se debe encontrar para maximizar el objetivo respetando las restricciones lineales.
El método procede eliminando primero el requisito de que las x i sean números enteros y resolviendo el problema de programación lineal relajada asociado para obtener una solución factible básica. Geométricamente, esta solución será un vértice del politopo convexo que consta de todos los puntos factibles. Si este vértice no es un punto entero, entonces el método encuentra un hiperplano con el vértice en un lado y todos los puntos enteros factibles en el otro. Esto se agrega luego como una restricción lineal adicional para excluir el vértice encontrado, creando un programa lineal modificado. Luego se resuelve el nuevo programa y el proceso se repite hasta que se encuentra una solución entera.
El uso del método simplex para resolver un programa lineal produce un conjunto de ecuaciones de la forma
donde x i es una variable básica y las x j son las variables no básicas (es decir, la solución básica que es una solución óptima para el programa lineal relajado es y ). Escribimos los coeficientes y con una barra para indicar la última tabla producida por el método simplex. Estos coeficientes son diferentes de los coeficientes en la matriz A y el vector b.
Consideremos ahora una variable básica que no sea un número entero. Reescriba la ecuación anterior de modo que las partes enteras se sumen en el lado izquierdo y las partes fraccionarias en el lado derecho:
Para cualquier punto entero en la región factible, el lado izquierdo es un entero ya que todos los términos , , , son enteros. El lado derecho de esta ecuación es estrictamente menor que 1: de hecho, es estrictamente menor que 1 mientras que es negativo. Por lo tanto, el valor común debe ser menor o igual a 0. Por lo tanto, la desigualdad
debe cumplirse para cualquier punto entero en la región factible. Además, las variables no básicas son iguales a cero en cualquier solución básica y si x i no es un entero para la solución básica x ,
Por lo tanto, la desigualdad anterior excluye la solución factible básica y, por lo tanto, es un corte con las propiedades deseadas. Más precisamente, es negativa para cualquier punto entero en la región factible y estrictamente positiva para la solución factible básica (no entera) del programa lineal relajado. Al introducir una nueva variable de holgura x k para esta desigualdad, se agrega una nueva restricción al programa lineal, a saber:
Los métodos de plano de corte también son aplicables en la programación no lineal . El principio subyacente es aproximar la región factible de un programa no lineal (convexo) mediante un conjunto finito de semiespacios cerrados y resolver una secuencia de programas lineales aproximados . [3]