Complejidad del método simplex y métodos de puntos interiores
Short Description
Descripción: Breve resumen de la complejidad del método simplex y repaso de algunos métodos de puntos interiores para la...
Description
Complejidad Computacional del M´etodo Simplex y M´etodos de Puntos Interiores* Omar Trejo - 119711 Octubre, 2013
1.
Tiempo Exponencial
La idea general del m´etodo Simplex para resolver problemas de programaci´ on lineal es recorrer las aristas, v´ertice por v´ertice, de un pol´ıtopo (regi´on factible) revisando su optimalidad en cada paso. La cantidad m´axima de v´ertices dados por el sistema Ax ≤ b (que define el pol´ıtopo del problema), donde n A ∈ Rmxn , es m , aunque cotidianamente se prueba un n´ umero menor que ´este. Sin embargo, el hecho de que la cantidad de pruebas necesarias est´e relacionada a una expresi´ on combinatoria indica un posible problema con la complejidad computacional del algoritmo.
1.1.
Problema Klee-Minty
El ejemplo utilizado cotidianamente para demostrar la complejidad exponencial del m´etodo Simplex es el problema Klee-Minty. La idea b´asica es deformar un hipercubo de tal manera que el m´etodo deba recorrer todas las aristas antes de llegar al punto ´ optimo. Inicialmente fue propuesto en 1972 por Klee y Minty con la forma maximizar
yn
s.a.
yj−1 ≤ yj ≤ 1 − yj−1 ,
j = 2, . . . , n,
yj ≥ 0,
j = 1, . . . , n.
x
Poco despu´es Chv´ atal propuso[3] el cambio de variable x1 = y1 , xj = (−1/)yj−1 + yj , lo que permite formular el problema como es m´as popular* Este documento no contiene un tratado riguroso de los m´ etodos. Se crea a manera de resumen y se omiten muchos detalles t´ ecnicos.
1
Figura 1: Politopos de Klee-Minty de dos y tres dimensiones[4]. mente conocido, maximizar x
s.a.
n X
10n−k xk
k=1
2
j−1 X
10j−k xk + xj ≤ 100j−1 ,
j = 1, . . . , n,
k=1
xj ≥ 0,
j = 1, . . . , n.
Los resultados del problema Klee-Minty, utilizando el algoritmo programado y mostrado en la secci´ on C´ odigo, son Dimensiones 3 5 6 8 10
Iteraciones 50 47 31 35 45
Esto claramente muestra la complejidad exponencial del m´etodo. Por lo mismo, muchos de los esfuerzos comenzaron a enfocarse en m´etodos de puntos interiores, los cuales exhib´ıan caracter´ısticas deseables como complejidad polinomial.
2.
M´ etodos de Puntos Interiores
Los m´etodos de puntos interiores han sido foco de atenci´on desde que se mostr´ o que existen problemas de complejidad exponencial para el m´etodo Simplex, y existe una variedad ´estos.1 En esta secci´on explicaremos brevemente el 1 Un contraste interesante es que el m´ etodo Simplex genera su complejidad del n´ umero de restricciones que presenta el problema, mientras que los m´ etodos de puntos interiores generan
2
m´etodo elipsoidal y el m´etodo primal-dual infalible, y dejaremos de lado los dem´ as por cuestiones de espacio. La tabla[4] presentada continuaci´on resume la informaci´ on. A˜ no 1947 1979 1990
2.1. 2.1.1.
M´etodo Simplex Elipsoidal Primal-Dual Infactible
Autor Dantzig Khachiyan Kojima, Mizuno, Yoshise
Caracter´ıstica Eficiente en la pr´actica Ineficiente en la pr´actica M´etodo Dominante
M´ etodo Elipsoidal de Khachiyan ¿En qu´ e consiste?
La idea b´ asica del m´etodo elipsoidal se deriva de investigaciones previas, durante los a˜ nos sesenta y setenta, dentro de lo que era la Uni´on Sovi´etica. De manera burda, la idea es encerrar la regi´on de inter´es en una sucesi´on de elipsoides que decrecen de tama˜ no cada vez m´as. La contribuci´on de Khachiyan fue demostrar en sus dos publicaciones -publicadas en 1979 y 1980- que bajo ciertas condiciones el m´etodo tiene complejidad polinomial para problemas de programaci´ on lineal. 2.1.2.
¿C´ omo se construye el punto inicial y la sucesi´ on de elipsoides?
El m´etodo construye una elipsoide inicial que cubre P , el conjunto de factibilidad, completamente. Se toma el centro de ese elipsoide y se identifica si se encuentra dentro de la regi´on factible P . Si se encuentra dentro, el problema es factible, si no se encuentra dentro se puede construir un elipsoide nuevo (en tiempo polinomial), tomando en cuenta la variable que corresponde a la restricci´ on de AT x ≤ b que es violada, que cubra completamente la mitad del elipsoide anterior del lado donde se encuentra P . Procedemos de esta manera hasta que se encuentra un centro dentro de la regi´on factible, o se alcanza el n´ umero m´ aximo de iteraciones disponibles (el resultado en este caso ser´ıa que el problema es no factible). 2.1.3.
¿Por qu´ e es un m´ etodo polinomial?
Bajo dos condiciones, que explicaremos a continuaci´on, Bertismas y Tsitsiklis mostraron[5] que el m´etodo elipsoidal resuelve problemas de programaci´on lineal en tiempo O(m4 log(R/r)). Antes de definir las condiciones debemos definir el conjunto poli´edrico del problema (representaci´on del problema de programaci´on lineal de manera vectorial): P = {x ∈ Rm : aTj x ≤ cj , j = 1, . . . , n} su complejidad debido al n´ umero de variables en el problema.
3
Figura 2: Elipsoides con y sin regi´on factible[8]. Si P 6= ∅ el problema tiene soluci´on. Las dos condiciones para que el algoritmo converja en tiempo polinomial son: 1. ∃ x0 ∈ Rm , ∃ r ∈ R, r > 0, t.q. P ⊂ S(x0 , R) = {x ∈ Rm : kx − x0 k ≤ R}, 2. ∃ r ∈ R, r > 0 conocido t.q. si Y 6= ∅ =⇒ S(x∗ , r) ⊂ Y, donde S(y, r) es una bola con centro en y y radio r. La primer condici´on implica que P est´ a acotado. La segunda condici´on implica que si P es no vac´ıo, entonces su interior tampoco es vac´ıo; i.e. existe un sentido de densidad. Dado que tenemos un sentido de densidad, podemos construir cualquier elipsoide necesaria. La parte computacionalmente m´as compleja del m´etodo es precisamente la construcci´ on del elipsoide de volumen m´ınimo. Sin embargo, sabemos que este proceso es de complejidad polinomial, por lo que, de manera burda, podemos extender esto al hecho de que el m´etodo es de complejidad polinomial. En la teor´ıa se pueden construir (con aritm´etica exacta) sucesiones infinitas de elipsoides, pero en la pr´ actica (aritm´etica de precisi´on finita) se establece una cota al n´ umero de iteraciones que si es superada el problema se considera que ´este es infactible. 2.1.4.
¿Cu´ al es la relevancia te´ orica del m´ etodo y por qu´ e no es pr´ actica su implementaci´ on para programaci´ on lineal?
La relevancia te´ orica del m´etodo reside en el hecho de que antes de la publicaci´ on del mismo no se hab´ıan logrado clasificar los problemas de programaci´on lineal en alguno de los conjuntos de problemas P o N P, i.e. los que se pueden resolver en tiempo polinomial y los que no, respectivamente. Se cre´ıa que estos problemas no tienen una complejidad tal que deben ser clasificados en N P, pero nadie hab´ıa conseguido demostrar su pertenencia a P hasta que Kachiyan public´ o su m´etodo elipsoidal. Adem´as el m´etodo sirve para construir algoritmos para problemas de optimizaci´on convexa, que son m´as generales que los de programaci´ on lineal. 4
La experiencia computacional muestra que las iteraciones necesarias para resolver problemas de programaci´on lineal usando este m´etodo se encuentran muy cercanas al l´ımite te´ orico superior. Esto significa que pr´acticamente el algoritmo no es muy bueno. El m´etodo Simplex, aunque tiene una complejidad exponencial, en la pr´ actica la experiencia muestra que son necesarias muchas menos iteraciones que el l´ımite te´orico m´aximo, haci´endolo un candidato para aplicaciones pr´ acticas.
2.2. 2.2.1.
M´ etodo Primal-Dual Infactible de Kojima, Mizuno & Yoshie ¿En qu´ e consiste?
El m´etodo consiste en tomar un punto nuevo en cada iteraci´on a lo largo de la direcci´ on de Newton, en la direcci´on de la trayectoria central, como lo hacen otros m´etodos de puntos interiores. La diferencia es que ´este m´etodo no ´ requiere que los puntos est´en dentro de la regi´on factible. Este m´etodo aplica pasos largos y distintos entre el los problemas primal y dual, y se caracteriza por convergencia global en tiempo polinomial2 2.2.2.
¿C´ omo se construye el punto inicial y la sucesi´ on de puntos?
Dado que es un m´etodo infactible, tenemos que no es necesario construir un punto inicial, i.e. cualquier punto (xi , yi , zi ) en el espacio, con xi ≥ 0, zi ≥ 0, converger´ a eventualmente a una soluci´on. Es necesario notar que hay casos en programaci´ on no-lineal donde ´esta soluci´on puede ser no-´optima, pero en el caso de programaci´ on lineal, siempre converger´a a una soluci´on ´optima. La sucesi´ on de puntos se construye utilizando los problemas primal y dual P :
D:
En cada iteraci´ on A 0 Zk
minimizar
cT x
s.a.
Ax = b,
x
x≥0
T
maximizar
b y
s.a.
AT y + z = c,
y,z
z≥0
se resuelve el sistema 0 0 Axk − b ∆x AT I ∆y = − AT y k + z k − c ∆z 0 Xk X k Z k − µe
donde Z k y X k son las matrices con la diagonal igual a z k y xk , respectivamente. Cada una de las restricciones (ecuaciones del sistema lineal) vienen 2 Para ser rigurosos deber´ ıamos definir los conceptos direcci´ on de Newton, trayectoria central, pasos largos, problema primal y problema dual. Sin embargo, por cuestiones de espacio no profundizaremos en ellos.
5
de la b´ usqueda de cerar la brecha en la restricci´on de factibilidad de P , la restricci´ on de factibilidad de D y la restricci´on de la brecha entre los problemas, X k Z k = µe, respectivamente. Posteriormente se actualizan las variables (xk+1 , yk+1 , zk+1 ) = (xk , yk , zk ) + α(∆x, ∆y, ∆z) Los detalles t´ecnicos, por ejemplo como escoger α en cada iteraci´on, la obtenci´ on de la factibilidad, la convergencia global o la identificaci´on de la nofactibilidad, no ser´ an explicados en este documento. Sin embargo, esto no significa que carezcan de gran importancia. 2.2.3.
¿Por qu´ e es un m´ etodo polinomial?
Aunque el c´ alculo de cada iteraci´on es significativamente m´as alto que el m´etodo Simplex, cada iteraci´on conlleva progreso mucho m´as significativo hacia el ´ optimo, suponiendo que existe. Adem´as es un camino mucho m´as directo (sigue el llamado central path). La complejidad del algoritmo radica en la soluci´on de un sistema de ecuaciones lineales que, aunque puede ser complicado, sabemos que podemos hacer en tiempo polinomial, por lo que el algoritmo tambi´en muestra tiempo polinomial3 . 2.2.4.
¿Cu´ al es la relevancia del m´ etodo y por qu´ e es pr´ actica su implementaci´ on para programaci´ on lineal?
El m´etodo se encuentra dentro de los m´as populares hoy en d´ıa y exhibe los mejores resultados pr´ acticos. En promedio le toma entre 23 y 25 iteraciones resolver los problemas m´ as complejos (con soluci´on) que existen hoy en d´ıa en programaci´ on lineal. Adem´ as, te´oricamente es importante el m´etodo porque no se restringe a comenzar con puntos dentro de la regi´on factible, lo que puede presentar un problema en s´ı mismo.
3.
C´ odigo - M´ etodo Simplex Revisado
El c´ odigo aqu´ı presentado es una peque˜ na variaci´on del m´etodo Simplex que utiliza un tableu m´ as peque˜ no porque no guarda espacio para las columnas B de A = [N |B] que contienen la identidad en cada iteraci´on. En realidad no es necesario almacenar ´esta identidad. La utilizaci´on de este m´etodo es para mejorar el desempe˜ no en el RAM de la computadora4 . /* * Programacion Lineal - Metodo Simplex Revisado * Omar Trejo Navarro * 119711 * 3 Claramente esta es una implicaci´ on burda y es necesario sustentarla de manera rigurosa, pero dicha prueba no ser´ a presentada en este texto. 4 Para los problemas pedag´ ogicos que resolveremos en clase este detalle es intrascendente.
6
* r * nv * nr * t * tipo * ai * optimo * xmax * bamin * aux * rp * cp * error * CMAX * VMAX * */
:= := := := := := := := := := := := := := :=
y = maximizar, n = minimizar numero de variables de funcion objetivo numero de restricciones tableu 1 = maximizar, -1 = minimizar auxiliar para inputs true = alcanzado, false = no alcanzado maximo de coeficientes de funcion objetivo mininmo de b_i/a_ij variable auxiliar indice del renglon pivote indice de la columna pivote true = no acotado, false = acotado maxima cantidad de restricciones maxima cantidad de variables
#include #include #define CMAX #define VMAX
10 10
int nr, nv, rp, cp; bool optimo, error; double t[CMAX][VMAX]; void datos() { /* * Obtener los datos del problema */ char r; int i, j; double tipo, ai; printf("\n Programacion Lineal - Metodo Simplex Revisado\n"); do { printf("\n Maximizar [s/n] ? "); scanf(" %c", &r); if (r == 'S' || r == 's') tipo = 1; else if (r == 'N' || r == 'n') tipo = -1; else printf("\n [!] Error. Debe indicar si (s) o no (n).\n\n")←; } while (r != 'S' && r != 's' && r != 'N' && r != 'n'); printf(" Cantidad de variables ? "); scanf(" %d", &nv); printf(" Cantidad de restricciones ? "); scanf(" %d", &nr); // Funcion objetivo printf("\n Funcion objetivo:\n"); for (j = 1; j
View more...
Comments