un algoritmo de puntos interiores para programación
Transcripción
un algoritmo de puntos interiores para programación
UNIVERSIDAD SIMÓN BOLÍVAR Decanato de Estudios de Postgrado Maestría en Matemáticas Trabajo de Grado UN ALGORITMO DE PUNTOS INTERIORES PARA PROGRAMACIÓN CUADRÁTICA por Juan Javier Domínguez Moreno Julio, 2004 UNIVERSIDAD SIMÓN BOLÍVAR Decanato de Estudios de Postgrado Maestría en Matemáticas UN ALGORITMO DE PUNTOS INTERIORES PARA PROGRAMACIÓN CUADRÁTICA Trabajo de Grado presentado a la Universidad Simón Bolívar por Juan Javier Domínguez Moreno Como requisito parcial para optar al grado de Magister en Matemáticas Realizado con la tutoría de la Profesora María de los Ángeles González Julio, 2004 UNIVERSIDAD SIMÓN BOLÍVAR Decanato de Estudios de Postgrado Maestría en Matemáticas UN ALGORITMO DE PUNTOS INTERIORES PARA PROGRAMACIÓN CUADRÁTICA Este Trabajo de Grado ha sido aprobado en nombre de la Universidad Simón Bolívar por el siguiente jurado examinador: Presidente Débora Cores Miembro Externo Alejandro Crema Universidad Central de Venezuela Miembro Principal-Tutora María de los Ángeles González Fecha: Resumen El problema a considerar en este trabajo es el de programación cuadrática, y la idea es proponer un método para este problema, basados en el método primal-dual (SIMPLE) para programación lineal propuesto por González-Lima-Wei-Wolkowicz en 2001. Una de las principales dificultades computacionales de los métodos tipo primaldual es la resolución por iteración de un sistema de ecuaciones lineales que surge en sus formulaciones. Para esto se han propuesto diferentes alternativas: las ecuaciones normales, el sistema aumentado, una alternativa simétrica propuesta por Vanderbei (2001) y la reducción SIMPLE, entre otras. Esta última mantiene la ralidad de las matrices de restricciones y hace uso de un sistema lineal que está bien definido en la solución, pues el particular proceso de eliminación deriva en un sistema lineal que no posee inversas de matrices, hecho que hace que este sistema reducido sea mejor condicionado que diversas alternativas encontradas en la literatura. Permitiendo encontrar soluciones muy precisas del problema lineal. El método SIMPLE es extendido al caso de programación cuadrática manteniendo y mejorando sus buenas características. Para lograr esto se incluye información de segundo orden en el algoritmo, se usan estrategias de reordenamiento para reducir el llenado en las factorizaciones de las matrices asociadas a los sistemas lineales, se realiza un estudio sobre las características del método propuesto y de las distintas alternativas derivadas de este, y se estudian sus relaciones prácticas y teóricas con la alternativa propuesta por Vanderbei. De los resultados obtenidos se puede concluir que los algoritmos propuestos son eficaces y poseen características que favorecen la robustez y que permiten alcanzar soluciones muy precisas. Índice general 1. Introducción 1 2. Programación cuadrática 4 2.1. El problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.2. Un algoritmo de orden superior . . . . . . . . . . . . . . . . . . . . . . . . 8 2.3. Convergencia y complejidad . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3. Aspectos numéricos 16 3.1. El punto inicial y los parámetros del algoritmo . . . . . . . . . . . . . . . 16 3.2. Los sistemas lineales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.2.1. Alternativa SIMPLE . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.2.2. Alternativa LOQO . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.2.3. Relación SIMPLE-LOQO . . . . . . . . . . . . . . . . . . . . . . . . 22 3.2.4. Las factorizaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 4. Resultados computacionales 27 4.1. Efecto del reordenamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 4.2. Comparación de las alternativas SJq, SJs, SJd y SVq . . . . . . . . . . . . 30 4.3. Sobre el condicionamiento de las matrices . . . . . . . . . . . . . . . . . . 33 5. Conclusiones 35 V VI Bibliografía 38 A. Tablas de resultados 42 Índice de cuadros 4.1. Problemas de prueba . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 4.2. Número de problemas ganados usando ColAMD y sin usarlo para SJq . . . . . 29 4.3. Estatus de salida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 4.4. Índices para cada método . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 A.1. Resultados de SJq al reordenar con ColAMD . . . . . . . . . . . . . . . . . . . 47 A.2. Resultados de SJq al reordenar con ColAMD cont. . . . . . . . . . . . . . . . . 48 A.3. Resultados de SJq sin reordenar . . . . . . . . . . . . . . . . . . . . . . . . . 49 A.4. Resultados de SJq sin reordenar cont. (* sin memoria) . . . . . . . . . . . . . . 50 A.5. Resultados para los cuatro algoritmos . . . . . . . . . . . . . . . . . . . . . . 51 A.6. Resultados para los cuatro algoritmos cont. . . . . . . . . . . . . . . . . . . . 52 A.7. Resultados para los cuatro algoritmos cont. . . . . . . . . . . . . . . . . . . . 53 A.8. Resultados para los cuatro algoritmos cont. . . . . . . . . . . . . . . . . . . . 54 A.9. Resultados para los cuatro algoritmos cont. . . . . . . . . . . . . . . . . . . . 55 A.10.Resultados para los cuatro algoritmos cont. . . . . . . . . . . . . . . . . . . . 56 A.11.Resultados para los cuatro algoritmos cont. . . . . . . . . . . . . . . . . . . . 57 VII Índice de figuras A.1. Números de condición para el problema DUAL1 . . . . . . . . . . . . . . . . 43 A.2. Números de condición para el problema DUAL2 . . . . . . . . . . . . . . . . 43 A.3. Números de condición para el problema DUALC5 . . . . . . . . . . . . . . . 44 A.4. Números de condición para el problema HS35MOD . . . . . . . . . . . . . . . 44 A.5. Números de condición para el problema LOTSCHD . . . . . . . . . . . . . . . 45 A.6. Números de condición para el problema QISRAEL . . . . . . . . . . . . . . . 45 A.7. Números de condición para el problema QPCBLEND . . . . . . . . . . . . . . 46 A.8. Números de condición para el problema QSHARE2B . . . . . . . . . . . . . . 46 VIII Capítulo 1 Introducción Los algoritmos de puntos interiores surgen, con el trabajo de Karmarkar, como una alternativa de complejidad polinomial al bien establecido método SIMPLEX para el caso de programación lineal. En 1987 Kojima-Misuno-Yoshise presentan un algoritmo de puntos interiores, llamado primal-dual o de seguimiento de camino, que seguido del trabajo de Mehrotra en 1992, fundamentan las bases de algunos de los algoritmos existentes más eficientes para programación lineal. La literatura sobre los algoritmos de puntos interiores tipo primal-dual es extensa y variada, existen diferentes formulaciones, diversos resultados de convergencia y complejidad y varias extensiones a los casos de programación cuadrática, al problema de complementariedad monótono y al caso de programación no lineal general. Para una revisión sobre los trabajos realizados en los últimos años referimos a [3][31]. Además de las buenas propiedades teóricas, los algoritmos primal-dual han demostrado poseer buen comportamiento práctico y se han utilizado en distintas aplicaciones de manera satisfactoria. Destacando, para el caso de programación cuadrática, las aplicaciones a problemas de optimización de portafolios y problemas provenientes de support vector machines, ver [17][18][12][14] [7]. Entre los trabajos más conocidos que usan métodos primal-dual se pueden mencionar el de Wright para el problema lineal y el de complementariedad lineal monótono [40][38] , el de Vanderbei para el caso de programación lineal, cuadrática y no lineal [32][33][36], los trabajos Gould, Nocedal, Byrd y otros sobre algoritmos que usan re1 2 giones de confianza [20][21][10] [4], y el trabajo de Gondzio y otros para el caso que programación lineal [16][3][15], cuadrática [1][6], y sus extensiones al problema de programación no lineal general [12]. La mayor dificultad de estos algoritmos es la resolución por iteración de un sistema lineal para determinar una dirección de Newton. Este es el aspecto de mayor costo computacional y el que determina la estabilidad y robustez de los algoritmos. Entre las alternativas más populares para resolver estos sistemas se encuentran el uso de las llamadas ecuaciones normales, el sistema aumentado y el uso de sistemas simétricos cuasi-definidos. La primera alternativa involucra la resolución de un sistema lineal positivo definido de pequeñas dimensiones pero que puede no ser ralo, aspecto no deseado pues las matrices de las restricciones en los problemas tienden a serlo, esta característica no se presenta en las otras dos alternativas donde los sistemas lineales a resolver mantienen la ralidad de las matrices pero presentan mal condicionamiento cuando los iterados se acercan a la solución. En este trabajo se hará énfasis en la forma en que se resuelve el sistema lineal por iteración. Nos basaremos en el trabajo de González-Lima-Wei-Wolkowicz en 2001 [19] en el que se plantea un método factible (SIMPLE) para problemas de programación lineal que mantiene la ralidad de las matrices y no necesariamente presenta problemas de mal condicionamiento cerca de la solución. El objetivo principal es extender el método SIMPLE al caso de programación cuadrática manteniendo y mejorando las buenas características del mismo. Para ello se estudiarán varias formas de atacar los sistemas lineales que se deben resolver por iteración, y se analizarán técnicas numéricas que intentan aumentar la estabilidad y robustez de los algoritmos como lo son el uso de heurísticas de reordenamiento, la inclusión de información de segundo orden y la escogencia del punto inicial y de los parámetros del algoritmo. Se busca proponer una alternativa algorítmica donde se explote la ralidad de las matrices, sin necesidad de usar sofisticadas técnicas computacionales para resolver los sistemas lineales, y se pueda alcanzar alta precisión en las soluciones de forma eficiente. El trabajo se divide de la siguiente forma. En el capítulo 2 se describe el problema de programación cuadrática, sus condiciones de optimalidad y su relación con el problema de barrera logarítmica, seguido de la descripción de un algoritmo de orden superior en 3 que se enmarcarán los algoritmos a proponer. Para finalizar se mencionarán los requerimientos necesarios sobre los parámetros del algoritmo para poder establecer resultados de convergencia y complejidad. En el capítulo 3, basados en los resultados de convergencia, se especifica la forma en que se escogerán los parámetros del algoritmo que proponemos. La última sección de este capítulo es la parte principal del trabajo, aquí se describen las diferentes transformaciones del sistema lineal involucrado en los métodos, se presentan las relaciones entre ellas y se observa que la denominada reducción SIMPLE está estrechamente relacionada con la presentada en el trabajo de Vanderbei en LOQO [36]. Para finalizar se comenta sobre el uso de estrategias que buscan reducir el llenado en las factorizaciones a realizar y se identifican los posibles problemas que se podrían presentar y las formas de evitarlos. Luego, en el capítulo 4 presentamos resultados numéricos que demuestran el potencial de las propuestas desarrolladas en el trabajo. Capítulo 2 Programación cuadrática En este capítulo de describirá el problema de programación cuadrática, seguido de una discusión sobre sus condiciones de optimalidad y la relación con el problema de barrera logarítmica. Luego se describirá un algoritmo de orden superior y se establecerán las propiedades de convergencia del mismo. 2.1. El problema El problema de programación cuadrática es un problema de optimización con función objetivo cuadrática convexa y restricciones lineales que se formulará usando el siguiente formato: mı́n f (u) := 21 xt Qx + ct x s.a. h(u) := Ax − w − b = 0 (2.1) g(u) := u ≥ 0 con c ∈ <n , b ∈ <m , A ∈ <m×n una matriz rala, de grandes dimensiones y de rango completo, Q ∈ <n×n positivo semidefinida, x ∈ <n es un vector de incógnitas, w ∈ <m variables de holgura y u := (w, x) ∈ <m+n . La función Lagrangiano asociada al problema (2.1) es: 1 L(u, y, z, z1 ) = xt Qx + ct x + y t (b + w − Ax) − (z1 , z)t u 2 4 5 y su gradiente viene dado por: ∇u L(u, y, z, z1 ) = y − z1 ! Qx + c − At y − z por lo que las condiciones Karush-Kuhn-Tucker (KKT) del problema (2.1) son y − z1 = 0 Qx + c − At y − z = 0 Ax − w − b = 0 ZXe = 0 Z1 W e = 0 (u, z, z1 ) ≥ 0 las cuales pueden ser reescritas, usando la primera ecuación y = z1 , como: At y + z − c − Qx G(u, v) Ax − w − b = 0; (u, v) ≥ 0 := F (u, v) := ZXe ZXe Y We Y We (2.2) donde v = (y, z) ∈ <m+n , X := diag(x1 , . . . , xn ), Z, W, Y son definidas de manera análoga y e es el vector de unos de tamaño correspondiente. Ahora, de la teoría de multiplicadores de Lagrange, es sabido que si existe un punto (u∗ , v ∗ ) que satisfaga las ecuaciones (2.2), entonces u∗ es mínimo global del problema (2.1). Este resultado sigue del hecho de que ∇2uu L es una matriz positivo semidefinida, de la linealidad de las restricciones y de la convexidad de f (u). La existencia de v ∗ tal que (u∗ , v ∗ ) satisface (2.2) es consecuencia de la linealidad de g(u) y h(u), y de suponer que el conjunto de puntos factibles es no vacío, es decir, existe al menos un u ≥ 0 tal que Ax − w − b = 0. De esta forma es fácil verificar que en el punto u∗ se satisface la restricción de calificación de primer orden (se hace referencia al clásico trabajo de Fiacco en [13] para una detallada descripción de lo mencionado anteriormente). Definición 1 [13] Sea u0 un punto factible del problema (2.1). Entonces, la restricción de calificación de primer orden se sostiene en u0 si para todo vector no nulo s tal que st ∇gi (u0 ) ≥ 6 0, ∀i ∈ B0 = {i : gi (u0 ) = 0} y st ∇hj (u0 ) = 0, j = 1, . . . , m, s es tangente a un arco diferenciable, el arco emanando de u0 contenido en la región de factibilidad. Los algoritmos de puntos interiores tipo primal-dual intentan determinar un punto que satisfaga las condiciones (2.2) y para motivarlos, siguiendo las ideas en [11], se observará la relación de las condiciones KKT en (2.2) con las condiciones de optimalidad del problema de barrera logarítmica asociado al problema (2.1). El problema de barrera logarítmica asociado al problema (2.1) es mı́n 1 t x Qx 2 + ct x − µ Pn i=1 ln(xi ) − µ Pm j=1 ln(wj ) (2.3) s.a. Ax − w − b = 0 x > 0, w > 0 y sus condiciones KKT son: At y + µX −1 e − c − Qx Fbµ (w, x, y) := Ax − w − b y − µW −1 e = 0; (x, w) > 0 (2.4) donde µ es un parámetro positivo. Luego, si se escribe y − µW −1 e = 0 como Y W e − µe = 0 y se realiza el cambio de variable z = µX −1 e, se obtienen las condiciones KKT perturbadas del problema (2.1): At y + z − c − Qx Ax − w − b = 0; (u, v) > 0 Fµ (u, v) := (2.5) µe − ZXe µe − Y W e Los algoritmos de puntos interiores tipo primal-dual resuelven aproximadamente el sistema no lineal (2.5) reduciendo el valor de µ en cada iteración, es decir, dado un punto (v0 , u0 ) y µ0 > 0, se define el siguiente proceso iterativo: (uk+1 , vk+1 ) = (uk , vk ) + αk (∆uk , ∆vk ) donde αk ∈ (0, 1) es la longitud de paso y (∆uk , ∆vk ) es la solución del sistema lineal: Fµ0 k (uk , vk )(∆uk , ∆vk ) = −Fµk (uk , vk ) (2.6) 7 donde Fµ0 (u, v) = F 0 (u, v) denota el Jacobiano de F (u, v) en (2.2). Es importante resaltar que el punto (wk , xk , yk ) es solución del sistema (2.4) si y solo si (wk , xk , yk , µX −1 e) es solución del sistema perturbado (2.5). Pero las condiciones KKT perturbadas (2.5) del problema (2.1), o cualquier permutación de estas, no son las condiciones KKT del problema de barrera logarítmica (2.3), o de cualquier otro problema de optimización suave con restricciones de igualdad [11]. La siguiente proposición muestra que los sistemas lineales (2.4) y (2.5) no son equivalentes en el sentido algorítmico. Definición 2 Un punto (u, v) ≥ 0 es primal-dual factible para el problema cuadrático (2.1) si G(u, v) = 0 en (2.2). Si además, el punto (u, v) es positivo, se dirá que es estrictamente factible. Proposición 1 [11] Sea (w, x, y, z) > 0 factible del problema (2.1), (∆w, ∆x, ∆y, ∆z) la dirección de Newton obtenida de (2.5) y (∆w0 , ∆x0 , ∆y 0 ) la dirección de Newton obtenida de (2.4). Entonces las siguientes son equivalente: i. (∆x, ∆w, ∆y) = (∆w0 , ∆x0 , ∆y 0 ) ii. (∆w, ∆x) = 0 iii. (∆w0 , ∆x0 ) = 0 iv. (x, w, y, µX −1 e) es factible para el problema (2.1) Es sabido que las transformaciones y = µW −1 e y z = µX −1 e, evitan la presencia del mal condicionamiento en los métodos de barrera logarítmica. Más aun, las condiciones de complementariedad estricta XZe = 0, Y W e = 0 en (2.2), fuerzan a los iterados a acercarse a la frontera del conjunto factible, por lo que si alguna de las componentes de las variables se acerca a cero, esta se mantendrá cercana a cero en sucesivas iteraciones del método de Newton aplicado a F0 (u, v) = 0. Esta característica no deseada es evitada al introducir la perturbación XZe − µe = 0, Y W e − µe = 0 en (2.5). De esta forma, es posible enunciar un algoritmo general que será la base de los algoritmos formulados más adelante. 8 A LGORITMO G ENERAL Sea (w0 , x0 , y0 , z0 ) > 0 un punto inicial y k = 0 2.2. Paso 1. Si se satisface el criterio de parada. Parar Paso 2. Escoger µk > 0 Paso 3. Determinar (∆uk , ∆vk ) como la solución de (2.6) Paso 4. Escoger αp , αd ∈ (0, 1) Paso 5. Hacer (uk+1 , vk+1 ) = (uk , vk ) + (αp ∆uk , αd ∆vk ) Paso 6. Hacer k = k + 1 e ir al paso 1 Un algoritmo de orden superior Los algoritmos de puntos interiores tipo primal-dual de orden superior, cuya base es el conocido trabajo de Mehrotra [28] para programación lineal, usan información de segundo orden para intentar reducir el número de iteraciones de los métodos. Para describirlos es necesario introducir varias definiciones y la noción del camino central. El problema dual del problema (2.1) es máx bt y − 12 xt Qx s.a. At y + z − c − Qx = 0 (y, z) ≥ 0 y es fácil verificar que la brecha de dualidad gap, satisface gap := ct x − bt y + xt Qx = xt z + wt y = ut v Definición 3 El camino central C es un arco de puntos estrictamente factibles parametrizado por un escalar χ > 0 con cada punto (uχ , vχ ) del arco satisfaciendo Fχ (uχ , vχ ) = 0 Obsérvese que si (uχ , vχ ) ∈ C entonces la brecha de dualidad satisface que utχ vχ gap = =χ m+n m+n Esto se usará más adelante en la descripción del algoritmo. 9 En la siguiente sección de observará que para poder establecer resultados de convergencia, es necesario mantener los iterados del algoritmo en un entorno del camino central. Estos resultados se fundamentan en el hecho de que los puntos en el camino central son primal-dual factibles, y que si un algoritmo genera una sucesión de puntos en el camino central con χ → 0, la brecha de dualidad también tiende a cero, y por lo tanto la sucesión converge a un óptimo primal-dual del problema (2.1), [40]. Ahora, si se desea que el punto (u + ∆u, v + ∆v) esté exactamente en el camino central, se debe tener que Fµ (u + ∆u, v + ∆v) = 0, es decir 0 −I 0 −Y At −Q I ∆w At y + z − c − Qx ∆y Ax − w − b = − 0 −Z −X ∆x µe − ZXe − ∆X∆Ze µe − Y W e − ∆Y ∆W e ∆z −W 0 0 0 A 0 , o equivalentemente Fµ0 (u, v) ∆u ! ∆v 0 0 = −Fµ (u, v) − ∆Z∆Xe ∆Y ∆W e (2.7) Es claro que si en el algoritmo general se determina la dirección (∆uk , ∆vk ) como la solución del sistema (2.7) los puntos generados estarán más cerca del camino central que si se generan resolviendo el sistema Fµ0 k (uk , vk )(∆uk , ∆vk ) = −Fµk (uk , vk ). Pero debido a la no linealidad presente en el sistema (2.7), sería muy costoso computacionalmente determinar la dirección (∆uk , ∆vk ). Es por esto que los algoritmos de orden superior intentan aproximar, resolviendo dos sistemas lineales, la solución del sistema no lineal (2.7) de la siguiente forma. Primero se determina la dirección afín (∆ua , ∆v a ) como la solución de F 0 (u, v)(∆ua , ∆v a ) = −F (u, v) (2.8) Luego, con esta dirección, se escoge un parámetro σ ∈ [0, 1) y se determina la 10 dirección correctora resolviendo el sistema 0 Fσµ (u, v)(∆u, ∆v) 0 0 = −Fσµ (u, v) − ∆X a ∆Z a e ∆Y a ∆W a e (2.9) De esta forma, se aproxima la solución del sistema no lineal (2.7) resolviendo dos sistemas lineales. La dirección afín busca disminuir el valor de la brecha de dualidad, mientras que la dirección correctora intenta corregir la desviación del camino central que se provocaría al considerar solamente la dirección afín. La escogencia del parámetro de centrado se realiza basándose en la dirección afín. Si esta produce un buen decrecimiento en la brecha de dualidad, se requiere de menor centrado y se escoge σ cercano a cero. Por el contrario, si no se produce suficiente decrecimiento en la brecha de dualidad, es por que el algoritmo no puede moverse mucho es esa dirección y se escoge el parámetro de centrado cercano a uno. Un aspecto que parece ventajoso de esta técnica es que los dos sistemas lineales a resolver poseen la misma matriz de coeficientes, por lo que se puede reusar la factorización realizada en la determinación de la dirección afín y no aumentar significativamente el tiempo de procesamiento requerido por el algoritmo. Luego, estos algoritmos pueden verse como un método de Newton aplicado al sistema no lineal de las condiciones KKT perturbada, y es lógico pensar que no es necesario perturbar cerca de la solución. En esta observación se basa la siguiente estrategia denominada crossover, presentada por González-Lima et. al.[19]. Bajo la suposición de que F 0 (u, v) es no singular en la solución, y de la teoría estándar de Newton, existe un entorno de convergencia cuadrática donde (u∗ , v ∗ ) es solución única del problema, y una vez que los puntos generados por el algoritmo han alcanzado este entorno, se pueden tomar pasos de Newton sin perturbar, es decir, considerar solamente la dirección afín. El inconveniente radica entonces en determinar la región de convergencia del método de Newton, por lo que se presenta el siguiente resultado debido a Kantorovich y presentado en [24]. Teorema 1 [K ANTOROVICH ] Sea r > 0, s0 ∈ <n , F : <n → <n y suponga que F es continuamente diferenciable en un entorno N (s0 , r). Suponga que para || · ||2 , el Jacobiano de F , 11 J ∈ Lipγ (N (s0 , r)) con J(s0 ) no singular, y que existen constantes β, η ≥ 0 tal que ||J(s0 )−1 ||2 ≤ β, ||J(s0 )−1 F (s0 )||2 ≤ η Defina α = βγη. Si α ≤ 1/2 y r > r0 := (1 − √ 1 − 2α)/(βγ), entonces la sucesión generada por sk+1 = sk − J(sk )F (sk ), k = 0, 1, . . . esta bien definida y converge a s∗ , el único cero de F en la clausura de N (s0 , r0 ). Si α < 1/2, √ entonces s∗ es el único cero de F en N (s0 , r1 ) donde r1 := mı́n r, (1 + 1 − 2α)/(βγ) y k ||sk − s∗ ||2 ≤ (2α)2 η/α, k = 0, 1, . . . Proposición 2 F 0 (u, v) ∈ Lip√2 (<2m+2n ) Dem. 0 0 0 0 0 0 0 0 ||F 0 (u, v) − F 0 (u0 , v 0 )||2 = 0 z 0 − z x0 − x 0 y 0 − y w 0 − w 0 0 2 0 0 0 0 0 w −w 0 0 0 0 0 0 0 0 0 y −y 0 0 = 0 0 x0 − x 0 0 0 I I I I 0 0 0 0 0 z 0 − z !2 √ u − u0 ≤ 2 v − v 0 2 De esta forma se tiene que γ = √ 2. Para calcular β se podría estimar el menor valor singular del Jacobiano en el iterado actual y para η se determina ||F 0 (u, v)−1 F0 (u, v)||, que es la norma de la dirección afín. Dicho esto, se obtiene una forma de estimar la región de convergencia y determinar cuando activar el crossover y dejar de perturbar. 12 A LGORITMO OS Sea (u0 , v0 ) > 0 un punto inicial, σ ∈ (0, 1), µ0 = ut0 v0 /(m + n), k = 0 y cross = f alse Paso 1. Si se satisface el criterio de parada. Parar Paso 2. Determinar (∆ua , ∆v a ) de (2.8) Paso 3. Si cross = f alse Escoger σk ∈ [0, 1) Determinar (∆uc , ∆v c ) de (2.9) Hacer (∆uk , ∆vk ) = (∆uc , ∆v c ) e ir al paso 5 Paso 4. Hacer (∆uk , ∆vk ) = (∆ua , ∆v a ) Paso 5. Escoger αp , αd ∈ [0, 1] Paso 6. Hacer (uk+1 , vk+1 ) = (uk + αp ∆uk , vk + αd ∆vk ) Paso 7. Si cross = f alse Calcular el mínimo valor singular de F 0 (uk , vk ), β √ Si 2||(∆ua , ∆v a )||/β < 1/2, hacer cross = true 2.3. Paso 8. Escoger ζ ∈ (0, 1], calcular µk+1 = ζutk+1 vk+1 /(m + n) Paso 9. Hacer k = k + 1 e ir al paso 1 Convergencia y complejidad La convergencia y la complejidad polinomial del algoritmo OS se pueden probar bajo la adecuada escogencia de los parámetros del algoritmo y del punto inicial. Definición 4 Una solución primal-dual (u, v) del problema (2.1) se dice estrictamente complementaria si F0 (u, v) = 0 y u + v > 0. Se denotarán el conjunto de soluciones y el conjunto de soluciones estrictamente complementarias por S = {(u, v) : F0 (u, v) = 0} ; S c = {(u, v) ∈ S : u + v > 0} En [38] se prueban resultados de convergencia y complejidad para un algoritmo muy similar al algoritmo OS para el problema de complementariedad lineal monótona (LCP). Pero como los problemas cuadráticos pueden ser vistos como un LCP, estos resultados de convergencia y complejidad pueden ser adaptados al algoritmo OS. 13 El problema de complementariedad lineal monótona consiste en encontrar vectores (x, y), (z, w) ∈ <m+n que satisfagan ! ! z x =M + t; (x, w, y, z) ≥ 0; xt z + y t w = 0 w z con M ∈ <(m+n)×(m+n) una matriz positivo semidefinida y t ∈ <m+n . Aunque el LCP no es un problema de optimización, está estrechamente relacionado con el problema (2.1) a través de las condiciones KKT, pues el LCP definido por ! ! Q −At c M= ;t = A 0 −b es el problema de encontrar una solución al sistema de las condiciones KKT para (2.1). ! At yk + zk − c − Qxk , entonces las modificaciones del algoritmo OS Sea qk = Axk − wk − b necesarias para establecer convergencia son las siguientes Escoger σ b ∈ (0, 1/2), 0 < γmin < γmax ≤ 1/2 y ζ = 1. En el paso 3, escoger σk ∈ (0, σ b] En el paso 5, escoger αp = αd = αk como αk = arg mı́n µk (α) := (uk + α∆uk )t (vk + α∆vk )/(m + n) α∈[0,b α] donde α b es el número más grande en [0, 1] tal que se satisfacen las siguientes condiciones para todo α ∈ [0, α b): (uk + α∆uk )t (vk + α∆vk ) ≥ (1 − α)utk vk , si qk 6= 0 γmax ([uk ]i + α[∆uk ]i )([vk ]i + α[∆vk ]i ) ≥ (uk + α∆uk )t (vk + α∆vk ), ∀i n+m (2.10) (2.11) El punto inicial se escoge como u0 = ξu e, v0 = ξv e con ||u∗ ||∞ ≤ ξu , ||v ∗ ||∞ ≤ ξv , ξv ≥ ||t||∞ , ξv ≥ ||M e||∞ ξu = ||M u0 ||∞ donde (u∗ , v ∗ ) es una solución primal-dual del problema (2.1). (2.12) 14 La condición (2.11) evita que los iterados se acerquen a la frontera del conjunto de restricciones de no negatividad pues ui vi ≥ γmin µk , ∀k. La condición (2.10) asegura que la mejora en la brecha de dualidad µk no supere por mucho la mejora en la factibilidad ||qk ||. Con estas escogencias de los parámetros y de suponer que S c 6= ∅, se prueba en [38] lo siguiente: (uk , vk ) > 0 o µk = 0 1 ≥ αk ≥ C σb(1−γωmax ) > 0 con ω = O(n2 ) y C > 0 una constante σ b(1−γmax ) µk+1 ≤ 1 − C1 µk , con C1 > 0 una constante ω Dado > 0, µ0 = ζu ζv ≤ 1/τ para alguna constante τ independiente de n. Existe un entero K con K = O(n2 ln(1/)) tal que µk ≤ para todo k ≥ K . Estos resultados muestran la complejidad polinomial del algoritmo, y la convergencia q-lineal del al sucesión {µk }. La condición (2.11) implica que ||qk || ≤ µk ||q0 ||/µ0 por lo que la factibilidad {||qk ||} converge de forma r-lineal. Cabe destacar que esta condición es equivalente a mantener los iterados en un entorno del camino central. Proposición 3 Sea {uk , vk } la sucesión generada por el algoritmo OS con las modificaciones antes mencionadas. Entonces {||qk ||} converge a cero de forma r-lineal. Dem. Sea {νk } la sucesión monótona decreciente definida por ν0 = 1; νk+1 = (1 − αk )νk Como (∆uk , ∆vk ) resuelve (2.9), se tiene qk+1 = qk + αk At ∆yk + ∆zk − Q∆xk A∆xk + ∆wk ! = (1 − αk )qk = · · · = νk+1 q0 y de (2.11) µk+1 ≥ (1 − αk )µk ≥ · · · ≥ νk+1 µ0 entonces ||q0 ||µk ≥ ||q0 ||νk µ0 = ||qk ||µ0 ⇔ ||qk || ≤ µk ||q0 ||/µ0 15 y como {µk } converge a cero de forma q-lineal, {||qk ||} → 0 r-linealmente. En el mismo trabajo también se prueba que con una modificación del algoritmo, en el que se toman, o el paso afín, o el paso corrector por iteración, la sucesión {µk } converge superlinealmente a cero con q-orden 2 y que los iterados convergen a un punto en S de forma r-subcuadrática. Estos resultados son una extensión de los resultados de convergencia para algoritmos de puntos interiores para problemas lineales que pueden encontrarse en [22][25] y en [40]. Para una descripción de algoritmos de puntos interiores tipo primal-dual con resultados de convergencia para el caso de programación no lineal general pueden verse los trabajos en [11][5] [26] y [21]. Basándose en los resultados numéricos encontrados en la literatura, no se escogerán los parámetros del algoritmo de forma de poder asegurar convergencia. Las implementaciones más populares, y al parecer más robustas y eficientes, escogen los parámetros siguiendo heurísticas bajo las cuales no se pueden demostrar los resultados aquí mencionados. Pese a que no se podrá asegurar convergencia, los resultados mencionados son la base para la escogencia de los parámetros del algoritmos que se presentan en el siguiente capítulo. Capítulo 3 Aspectos numéricos En este capítulo se especificará la forma en que se escogerán los parámetros del algoritmo y se discutirá sobre la resolución de los sistemas lineales, aspecto en el que se enfoca esta trabajo. 3.1. El punto inicial y los parámetros del algoritmo Es sabido que el comportamiento numérico de los algoritmos de puntos interiores, especialmente los no factibles, se ven afectados por la escogencia del punto inicial. Por lo que la escogencia del mismo es un aspecto importante a considerar en cualquier implementación. En general, se desea que el punto inicial éste bien centrado, que no esté muy lejos de ser factible y que satisfaga aproximadamente las condiciones en (2.12). La forma clásica de escoger el punto inicial para el caso lineal es la propuesta por Mehrotra en [28] donde el punto inicial se escoge como los vectores primal-dual factibles de menor 2-norma. Esta heurística es equivalente a una iteración del algoritmo en cuanto a costo computacional de refiere. El punto inicial se calculará siguiendo la idea en [34]. Para ello se determina la cantidad n X |bi | , 100 , ζ := máx máx P (a ij ) − 1 6= 0 n (a ) − 1 j=1 j=1 ij 16 17 y se genera el punto inicial como (u0 , v0 ) := ξe. La motivación de esta escogencia es generar un punto bien centrado, es decir, que los productos xi zi , yi wi , sean similares para todo i, j, e intentar satisfacer al menos una de las restricciones, la razón de la cantidad 100 es evitar obtener puntos iniciales con componentes muy pequeñas pues esto puede ocasionar problemas numéricos. La preferencia de esta escogencia del punto inicial sobre la presentada en [28] sigue de resultados observados en pruebas numéricas preliminares. En estas se observó que con esta escogencia, se obtiene convergencia en un mayor número problemas y se reduce el número de iteraciones. Las longitudes de paso de calcularon de forma de mantener los iterados positivos según lo siguiente −1 −1 n o ; αd = mı́n 1, n o αp = mı́n 1, mı́n ∆zi , ∆yi mı́n ∆xi , ∆wi xi wi zi yi y se recorta por la cantidad τ = mı́n τ2 , 1 − mı́n τ1 , τ1 ut v con τ1 = 0,05, τ2 = 0,999. El algoritmo se detiene cuando las siguientes medidas relativas son menores que cierta tolerancia = 10−13 . relgap = |ct x − bt y + xt Qx| ||Ax − w − b||2 ||At y + z − c − Qx||2 , rel = , rel = , pri dua 1 + |bt y| 1 + ||b||2 1 + ||c||2 o cuando alguna de las longitudes de paso sea cercana a cero, mı́n{αp , αd } < 3 . 2 máx{αp ,αd }−1 El parámetro de centrado σ se escoge siguiendo [36] como σk = máx{αp ,αd }+10 y el valor por el que se disminuye la brecha µk+1 en el algoritmo se escoge como utk+1 vk+1 ζ = mı́n 0,02, . m+n Esta escogencia del parámetro de centrado no es la presentada en [28] en donde se determina el valor de µa = (uk + αa ∆ua )t (vk + αa ∆v a )/(m + n) y se fija σk = (µa /µk )3 con αa ∈ (0, 1) tal que (uk + αa ∆ua , vk + αa ∆v a ) > 0. De esta forma, si la dirección afín 18 produce un buen decrecimiento en la brecha, σ será cercano a cero, y cercano a uno en caso contrario. En este trabajo no se considera esta propuesta, sino la mencionada anteriormente que siempre favorece a la dirección afín y mide cuan cerca están los iterados de la frontera del conjunto de restricciones. En el paso 7 del algoritmo es necesario estimar el menor valor singular de F 0 (uk , vk ) para determinar cuando activar el crossover. Pero es sabido que esta estimación es muy costosa desde el punto de vista computacional. Además, como la mayoría de los problemas considerados en este trabajo provienen de aplicaciones prácticas donde el Jacobiano es, por lo general, singular en la solución, puede suceder que no exista algún k para el cual α < 1/2 en el teorema de Kantorovich. Es por esto, y con miras a implementar un algoritmo eficiente, que el crossover se activó cuando el máximo de las medidas relativas es menor que cierta tolerancia fijada en 10−8 . 3.2. Los sistemas lineales Los sistemas lineales son el aspecto fundamental de los algoritmos de puntos interiores, por lo general son mal condicionados cerca del conjunto de soluciones del problema, de grandes dimensiones e influencian el buen comportamiento numérico de los algoritmos. Las dimensiones del sistema lineal en (2.7) son prohibitivas, 2n + 2m, por lo que se han propuesto diferentes alternativas para resolverlo. En el trabajo de Altman y Gondzio en [1] se plantea el problema cuadrático en un formato distinto al aquí presentado y se resuelve el sistema aumentado ! −Q − X −1 Z At , A 0 se usa una regularización que consiste en sumar una matriz diagonal relacionada con los parámetros del algoritmo y calculada de forma dinámica mientras se determina la factorización de Cholesky de la matriz. Y en [6] se usan, satisfactoriamente, métodos iterativos para resolver este sistema regularizado. 19 En Shanno y Vanderbei [36][35] se resuelve un sistema cuasi-definido usando una factorización estática (sin pivoteo) de la forma LDLt y los problemas numéricos son evitados al aplicar un esquema de reordenamiento particular de las matrices. En [37], Wright estudia la estabilidad de la resolución del sistema aumentado para programación lineal usando descomposición de Gauss y en [39] estudia la estabilidad del algoritmo de Bunch-Parlett [9] y Bunch-Kaufman [8] en la factorización LDLt del sistema aumentado para problemas de complementariedad lineal monótona. En estos trabajos se hace énfasis en que la escogencia de los parámetros del algoritmo son los factores que determinan la estabilidad de los algoritmos que resuelven los sistemas lineales. La principal ambición de este trabajo es estudiar el efecto que puede tener, sobre la estabilidad de los algoritmos que resuelven los sistemas lineales, la estructura de las matrices involucradas en los mismos. De esto dependerá el comportamiento del algoritmo de puntos interiores propuesto. Tal y como se muestra en los trabajos mencionados anteriormente, este es un aspecto primordial en cualquier implementación de un algoritmo de puntos interiores tipo primal-dual. Por ello se extenderá el método SIMPLE al caso cuadrático y se estudiará el efecto de este enfoque sobre los algoritmos. 3.2.1. Alternativa SIMPLE El método SIMPLE es la base del presente trabajo. Es introducido por GonzálezLima-Wei-Wolkowicz en [19] como un método factible de puntos interiores tipo primaldual para programación lineal y en [30] se extiende al caso no factible y se estudia el uso de distintos métodos (directos e iterativos) para la resolución del sistema lineal. Una de las principales características del método SIMPLE es que en problemas no degenerados, el sistema lineal involucrado no necesariamente se hace mal condicionado mientras los iterados se acercan a la solución, esto se logra evitando el uso de las ecuaciones normales donde se resuelve el sistema (Y −1 W + AZXAt )∆y = b − Ax + µY −1 e + AZ −1 X(c − At y − µX −1 e) 20 que por lo general no es ralo y mal condicionado, usando en reemplazo lo que se denomina la reducción SIMPLE. Esta reducción deriva en un sistema que es resuelto haciendo uso de métodos iterativos tipo gradiente conjugado. Es claro que en presencia de columnas densas en la matriz de restricciones, los algoritmos que usan reducciones a matrices positivo definidas haciendo uso de las ecuaciones normales, producirán matrices menos ralas, o llenas, debido a productos de la forma AAt . Esto no ocurre con el enfoque aquí presentado, en donde se sacrifica el resolver un sistema de tamaño n × n por mantener la ralidad en los sistemas lineales. La reducción SIMPLE busca determinar la dirección resolviendo un sistema de tamaño m + n que es ralo y no necesariamente mal condicionado a través de un proceso de eliminación de dos pasos que consiste en premultiplicar el sistema Fµ0 (u, v)(∆u, ∆v) = −Fµ (u, v) (3.1) por unas matrices particulares de forma de poder eliminar ∆w y ∆z de las ecuaciones resultantes. Esta descomposición puede extenderse al caso de programación cuadrática y realizarse de forma más directa. La idea consiste en premultiplicar el sistema (3.1) por la siguiente matriz I 0 0 I Ps = X 0 0 −Y obteniendo el sistema equivalente 0 At −Q −I 0 A 0 XAt −(XQ + Z) 0 −W −Y A I ∆w 0 0 0 0 I 0 0 I Qx + c − z − At y ∆y 0 b − Ax + w = 0 ∆x X(Qx + c − At y) − µe 0 ∆z Y (Ax − b) − µe el cual puede ser reescrito de la siguiente forma ! ! ! −(XQ + Z) XAt ∆x X(Qx + c − At y) − µe = −Y A −W ∆y Y (Ax − b) − µe ∆z = Q(x + ∆x) − At (y + ∆y) − z + c ∆w = A(x + ∆x) − w − b (3.2) 21 Siguiendo la metodología presentada en [30] el sistema en (3.2) puede ser reducido a un sistema simétrico postmultiplicando por una matriz apropiada sin incluir inversas de matrices. Sea I 0 0 0 0 X 0 0 I 0 −Y Pjs = 0 0 0 0 0 entonces, si se escribe Ps Fµ0 (u, v)Pjs (∆u, ∆v) = −Ps Fµ (u, v) se puede obtener el sistema −(XQX + ZX) −XAt Y −Y AX WY ! c ∆x c ∆y ! = X(Qx + c − At y) − µe ! Y (Ax − b) − µe c ∆x = X ∆x c ∆y = −Y ∆y (3.3) ∆z = Q(x + ∆x) − At (y + ∆y) − z + c ∆w = A(x + ∆x) − w − b Los sistemas en (3.2) y (3.3) son de tamaño m + n y conservan la ralidad de las matrices A y Q. A diferencia de otras alternativas de resolución, estos sistemas no poseen inversas de las matrices diagonales X o Y . Esto podría ocasionar problemas numéricos, pues cerca de la solución, algunas componentes de X o Y necesariamente tienen que acercarse a cero. 3.2.2. Alternativa LOQO Entre las alternativas de resolución que poseen inversas de matrices se tiene la presentada en [36] que es usada en el paquete comercial LOQO. Este paquete implementa un algoritmo que no posee resultados de convergencia, pero que ha demostrado se efectivo en la práctica y resuelve la mayoría de los problemas de prueba incluyendo los presentes en NETLIB, CUTEr y en la colección Maros y Mezaros. La característica principal de este algoritmo es la forma en que se resuelve el sistema lineal para determinar la dirección de Newton perturbada. La idea es que si un punto (u+∆u, v+∆v) debe estar exactamente en el camino central, este debe satisfacer el sistema en (2.9), el cual puede reescribirse, luego de linealizar y de algunas manipulaciones, 22 como un sistema simétrico XZ −1 0 I 0 0 0 A −I I At −Q 0 0 −I 0 −Y W −1 ∆z µZ −1 e − x ∆y b + w − Ax ∆x = Qx + c − z − At y −µW −1 e + y ∆w , de la primera y última ecuación de pueden extraer ∆z = X −1 (µe − XZe − Z∆x) (3.4) ∆w = Y −1 (µe − W Y e − W ∆y) y sustituyendo en la segunda y tercera ecuación se obtiene el sistema simétrico ! ! ! −(Q + X −1 Z) At ∆x Qx + c − At y − µX −1 e = A Y −1 W ∆y b − Ax + µY −1 e 3.2.3. (3.5) Relación SIMPLE-LOQO En este trabajo se desea estudiar la relación entre las diferentes formas de resolver los sistemas lineales. Aún cuando es interesante observar que el sistema (3.1) es equivalente a un sistema simétrico que puede reducirse a otro de menor tamaño, también simétrico, es parte de nuestro objetivo mostrar la relación con la reducción SIMPLE. Para obtener el sistema en (3.5), basta con premultiplicar el sistema (3.1) por la siguiente matriz I 0 X −1 0 I Pv = 0 0 0 0 0 I 0 0 −Y −1 , 0 I obteniendo el sistema equivalente 0 0 0 −Y At −(Q + X −1 Y ) Y −1 W A 0 −Z −W 0 0 ∆w ∆y = −X ∆x 0 ∆z 0 Qx + c − At y − µX −1 e b − Ax + µY −1 e ZXe − µe Y W e − µe 23 el cual puede escribirse como en (3.4) y (3.5). Este sistema a pesar de ser simétrico tiene las inversas de las matrices diagonales X, Y , por lo que si alguna de estas variables es cercana a cero, el número de condición de la matriz en (3.5) será grande. Una manera de combinar las reducciones hechas en (3.2) y en (3.5) es premultiplicar por Pv y postmultiplicar por Pjs el sistema (3.1). Al hacer Pv Fµ0 (u, v)Pjs (∆u, ∆v) = −Pv Fµ (u, v) se obtiene ! ! ! c −(QX + Z) −At Y ∆x Qx + c − At y − µX −1 e = c AX −W ∆y b − Ax + µY −1 e c ∆x = X ∆x c ∆y = −Y ∆y (3.6) ∆z = X −1 (µe − XZe − Z∆x) ∆w = Y −1 (µe − W Y e − W ∆y) que involucra la transpuesta de la matriz en (3.2) y el lado derecho en (3.5). Es interesante notar que si 0 0 X −1 0 0 0 0 −Y −1 Psv = −X 0 I 0 0 Y 0 I I 0 −1 0 I ; Psv = X 0 0 −Y −X −1 0 0 0 0 Y −1 0 0 se tiene que Psv Ps = Pv . Si se supone que las componentes de (uk , vk ) están acotadas por una constante Ξ (lo cual puede lograrse manteniendo los iterados en un entorno del camino central [38]), se puede observar que κ2 (Ps F 0 (u, v)) ≤ (n + m)κ∞ (Ps )κ∞ (F 0 (u, v)) ≤ (n + m)(1 + Ξ)κ∞ (F 0 (u, v)) con κp (A) = ||A||p ||A−1 ||p . De forma que el efecto de la reducción SIMPLE no afecta significativamente el sistema lineal en cuanto a condicionamiento se refiere. Por el contrario, en la reducción LOQO puede observarse que si alguna componente de yk o xk tiende a cero cuando k → ∞, la condición de Pv F 0 (uk , vk ) diverge. De esta forma, en un algoritmo que use la reducción SIMPLE, se espera alcanzar soluciones más precisas a los problemas, pues el mal condicionamiento cerca de la solución debería afectar menos que en el caso de la reducción LOQO. 24 3.2.4. Las factorizaciones Un aspecto que parece ventajoso en las reducciones en (3.3) y (3.5) es la presencia de matrices cuasi-definidas. Definición 5 Una matriz K ∈ <(m+n)×(m+n) es simétrica cuasi-definida si existe una matriz de permutación Π tal que ΠKΠt tiene la forma H Tt T −G ! donde H ∈ <n×n y G ∈ <m×m son simétricas positivo definidas. Teorema 2 [35] Una matriz simétrica cuasi-definida K es fuertemente factorizable. Es decir, para toda permutación P existe una matriz diagonal D y una matriz triangular inferior L tal que P KP t = LDLt donde D posee elementos positivos y negativos en general. Por lo tanto, en un algoritmo que use en su formulación matrices cuasi-definidas, se podrá realizar la factorización LDLt y reducir el tiempo necesario para resolver el sistema lineal. Si alguno de los elementos de D en la factorización LDLt sin pivoteo es cero debido a errores numéricos, se podrían sustituir estos valores por la raíz cuadrada de la precisión de la máquina, obteniendo así resultados tan precisos como la raíz cuadrada de la precisión de la máquina. Además, bajo la suposición de la existencia de una solución estrictamente complementaria, los algoritmos intentan seguir el camino central, por lo que los elementos de ZX −1 y de W Y −1 tienden a cero o al infinito a la misma rata, favoreciendo así la estabilidad de los algoritmos para resolver los sistemas lineales. Otra forma de evitar problemas de estabilidad en la factorización es usar las técnicas de pivoteo diagonal parcial presentadas en [23] donde se modifica la estrategia de pivoteo de Bunch-Kaufman para poder demostrar la estabilidad del algoritmo. Un aspecto que influye en el costo computacional en las factorizaciones LDLt o LU , según sea el caso, es el llenado en las factorizaciones, posiblemente ocasionado por la 25 presencia de columnas densas. Es por ello que en este trabajo se hará uso de estrategias de reordenamiento como Approximate minimum degree [2] (AMD) (o Columm approximate minimum degree (ColAMD) en el caso no simétrico) para intentar reducir el llenado en las factorizaciones. Además, se colocarán las columnas densas al final de la matriz, pues se sabe que esto ayuda a la estabilidad de los algoritmos. Hasta ahora no se ha mencionado la opción de usar algoritmos iterativos en la resolución de los sistemas lineales. Como se puede observar en [6], el uso de estos métodos es factible, pero su ambición es disminuir el tiempo de procesamiento. Es sabido que las soluciones obtenidas por estos algoritmos no son muy precisas, y aún cuando esto se puede justificar argumentando que después de todo, los algoritmos de puntos interiores determinan la solución de un sistema perturbado, esta no es la ambición de este trabajo. Basados en los resultados no satisfactorios con el uso de métodos iterativos en el trabajo de [30] y el éxito del paquete LOQO y otros (que no usan métodos iterativos), se decidió usar métodos directos para así explotar las buenas características de las matrices que la reducción SIMPLE produce, y de esta forma lograr que los algoritmos sean lo más robustos posibles y alcanzar soluciones muy precisas. En [37] se prueba que bajo cierta escogencia de los parámetros del algoritmo, las c ∆v) c calculadas usando descomposición de Gauss con pivoteo parcial, direcciones (∆u, c ∆v) c = O(µm ), donde satisfacen que para µ suficientemente pequeño (∆u, ∆v) − (∆u, m es el epsilon de la máquina y (∆u, ∆v) la dirección calculada en aritmética exacta. Basados en este resultado y con miras a realizar comparaciones lo más justas posibles, se decidió usar factorizaciones tipo LU para resolver los sistemas lineales, aun cuando estos posean matrices cuasi-definidas. En caso en que use la reducción SIMPLE en (3.2) se llamará al algoritmo, SJq, si se usa la reducción en (3.3) se llamará SJs, si se usa la reducción en (3.6) se denominará SJd y si se usa la reducción en (3.4) y (3.5) se denominará SVq. De esta forma se tienen las siguientes alternativas: 26 SJq Bien definida, no simétrica −(XQ + Z) XAt −Y A ! −W ∆x ! X(Qx + c − At y) − µe = ∆y ! Y (Ax − b) − µe t ∆z = Q(x + ∆x) − A (y + ∆y) − z + c ∆w = A(x + ∆x) − w − b SJs Bien definida, simétrica cuasi-definida, requiere de costosos productos de la forma XQX, XAt Y, Y AX −(XQX + ZX) −XAt Y −Y AX WY ! c ∆x c ∆y ! = X(Qx + c − At y) − µe ! Y (Ax − b) − µe c ∆x = X ∆x c ∆y = −Y ∆y ∆z = Q(x + ∆x) − At (y + ∆y) − z + c ∆w = A(x + ∆x) − w − b SJd No definida, no simétrica, presencia de inversas en el lado derecho ! ! ! c Qx + c − At y − µX −1 e ∆x −(QX + Z) −At Y = c b − Ax + µY −1 e ∆y AX −W c ∆x = X ∆x c ∆y = −Y ∆y ∆z = X −1 (µe − XZe − Z∆x) ∆w = Y −1 (µe − W Y e − W ∆y) SVq No definida, simétrica cuasi-definida, presencia de inversas, no requiere de productos de la forma AX, At Y −(Q + X −1 Z At A Y −1 W ! ∆x ∆y ! = Qx + c − At y − µX −1 e b − Ax + µY −1 e ∆z = X −1 (µe − XZe − Z∆x) ∆w = Y −1 (µe − W Y e − W ∆y) ! Capítulo 4 Resultados computacionales Los algoritmos presentados usando los sistemas SJq, SJs, SJd y SVq, se implementaron en Matlab 6.5 y se realizaron pruebas computacionales sobre un conjunto de problemas de la colección Maros y Mezaros en una Sun Blade 150 Ultra Sparc de 650 Mhz y 512 Mb de memoria. El algoritmo usado para resolver los sistemas lineales es el implementado en el paquete UMFPACK 4.3. Este paquete determina la factorización LU de una matriz no simétrica usando kernels de matrices densas y el método multifrontal [29]. En el Cuadro 4.1 se presenta el conjunto de 58 problemas de prueba de la colección Maros y Mezaros considerado. Es importante volver a mencionar que los algoritmos fueron implementados en Matlab, esto es un aspecto limitante en cuanto a las dimensiones de los problemas que se pueden resolver. Pese a esto, se lograron resolver algunas de las versiones cuadráticas más grandes de la colección NETLIB, como lo son QSCTAP3 y QSIERRA. Es claro que una implementación en FORTRAN o C permitiría obtener resultados sobre problemas de mayores dimensiones como AUG2D de 20000 variables y 10000 restricciones, además de realizar las pruebas en computadores paralelos y no secuenciales, como es el caso de estos resultados. 27 28 Problema m n nz(A) nz(Q) TAME 2 2 4 4 ZECEVIC2 4 2 6 HS35MOD 2 3 LOTSCHD 14 HS118 m n nz(A) nz(Q) HS21 3 2 4 2 1 HS35 1 3 3 7 4 7 HS76 3 4 10 8 12 108 6 QAFIRO 35 32 117 9 44 15 78 15 QADLITTL 71 97 556 157 QPCBLEND 117 83 789 83 QSCAGR7 213 140 782 42 QSC205 296 203 800 31 QSHARE2B 109 79 778 100 CVXQP2_S 150 100 248 672 CVXQP1_S 200 100 396 672 CVXQP3_S 250 100 544 672 QSHARE1B 206 225 2042 60 DUALC2 237 7 1617 49 QBORE3D 459 315 2811 128 QSCORPIO 668 358 2526 58 DUALC1 225 9 1953 81 QBRANDY 386 249 3932 114 DUALC5 287 8 2240 64 QSCAGR25 771 500 2888 228 QSCTAP1 420 480 2052 270 QBANDM 610 472 4988 57 QISRAEL 174 142 2269 1354 77 75 225 5523 QGROW7 560 301 5504 684 QBEACONF 313 262 6684 36 1397 699 2793 1045 QSCFXM1 517 457 4056 1410 QE226 256 282 3516 1861 QSCSD1 154 760 4776 1436 DUALC8 512 8 4040 64 1422 1092 4817 270 DUAL1 87 85 255 7031 QSCRS8 874 1169 5758 209 VALUES 204 202 606 7442 QPCBOEI1 605 384 4143 384 GOULDQP3 1397 699 2793 2092 98 96 288 8920 MOSARQP2 600 900 2930 990 276 421 8363 1128 QSHIP04S 756 1458 7190 98 1034 914 8122 2188 QSEBA 1536 1028 9204 1196 DUAL3 113 111 333 12105 QSCSD6 294 1350 8632 2712 QETAMACR 889 688 4000 8516 CVXQP2_M 1500 1000 2498 6968 QSHIP04L 756 2118 10490 98 QSCFXM3 1551 1371 12188 2353 MOSARQP1 700 2500 3422 2590 QSCTAP2 1560 1880 8124 1413 3791 2036 13311 244 QSCTAP3 2100 2480 10734 1908 DUAL4 QGFRDXPN DUAL2 QFORPLAN QSCFXM2 QSIERRA Problema GOULDQP2 Cuadro 4.1: Problemas de prueba 29 4.1. Efecto del reordenamiento En los Cuadros A.1 a A.4 en el apéndice se presentan los resultados del algoritmo SJq realizando el reordenamiento proporcionado por ColAMD y sin realizarlo. En el Cuadro 4.2 se reporta el número de problemas ganados en cada caso en cuanto a número de iteraciones, precisión alcanzada maxrel = máx {relgap , relpri , reldua }, tiempo de ejecución y número de elementos distintos de cero en L y U , nz(L), nz(U ) respectivamente. Con AMD Sin AMD Empate Iteraciones 11 6 41 maxrel 37 2 19 Tiempo 51 2 5 nz(L) 55 1 2 nz(U ) 52 4 2 Cuadro 4.2: Número de problemas ganados usando ColAMD y sin usarlo para SJq Tal y como se esperaba, el número de problemas ganados en cuanto a número de elementos distintos de cero por el algoritmo usando ColAMD es considerablemente grande, y también es claro que si el llenado es mayor, más tiempo se necesitará para resolver los sistemas lineales y por esto la significativa diferencia en el número de problemas ganados en cuanto a tiempo se refiere. La diferencia en cuanto a número de iteraciones no es muy grande, existe un empate en 41 problemas, 11 son ganados si se reordena y 6 si no se reordena, lo que indica que la reducción por iteración de las medidas relativas son semejantes. Pero también se puede observar que el número de problemas ganados, con relación a las medidas relativas, al reordenar es 37, con 19 empates que se presentan en los problemas de pequeñas dimensiones. Esta diferencia podría atribuírsele al error acumulado en las operaciones punto flotante realizadas, a mayor llenado más operaciones y mayor error acumulado. En [35] se comenta que el uso de estrategias de reordenamiento favorece la estabilidad. En ese trabajo se colocan las entradas diagonales positivas al principio de la matriz, luego las columnas y filas con diagonal negativa y por último las columnas 30 densas y las columnas asociadas a variables libres, luego se aplica la heurística Multiple minimum degree [27], en los conjuntos formados por separado. En este trabajo solo se separan las columnas, en densas y no densas, y se aplica la heurística de reordenamiento al primer conjunto. Además de lo ya mencionado, se presentan casos donde se observa que el aumento en el número de iteraciones y precisión alcanzada no se debe al error acumulado sino al efecto que ejerce el reordenamiento sobre la estabilidad del algoritmo que resuelve el sistema lineal. Por ejemplo, en el problema QPCBLEND, la norma del error de las direcciones calculadas es de un orden de magnitud mayor al no reordenar que cuando se reordena, efecto que, tomando en cuenta las dimensiones del problema, no debería estar relacionado con el aumento en el número de operaciones punto flotante. 4.2. Comparación de las alternativas SJq, SJs, SJd y SVq En los Cuadros A.5 a A.11 en el apéndice se muestran los resultados obtenidos por los cuatro algoritmos y se reporta el número de iteraciones, las medidas relativas alcanzadas y el tiempo de procesamiento requerido. Un problema se considera resuelto si el máximo de las medidas relativas es menor que 10−8 . En el Cuadro 4.3 se muestra, para cada algoritmo, el número de problemas resueltos (NP res), el número de problemas en los que se alcanzo el óptimo (NP st=1), el número de problemas en los que se obtuvieron valores de NaN (NP st=2), el número de problemas en los que el algoritmo se detuvo por que la longitud de paso se hizo muy pequeña (NP st=3) y el número de problemas en los que se alcanzó el número máximo de iteraciones (NP st=4) que se fijó en 100. Método NP res NP st=1 NP st=2 NP st=3 NP st=4 SJq 54 42 11 5 0 SJs 53 38 15 4 1 SJd 48 34 22 2 0 SVq 47 33 22 3 0 Cuadro 4.3: Estatus de salida 31 De este cuadro se puede observar que el algoritmo SJq resuelve el mayor número de problemas, seguido de SJs, luego SJd y por ultimo SVq. Este orden se mantiene para el número de problemas con estatus de salida igual a uno. Solo se alcanza el máximo numero de iteraciones para el algoritmo SJs en un problema y en una cantidad reducida de problemas, se detuvieron los algoritmos por que la longitud de paso se hizo muy pequeña. Puede observarse también, que SJd y SJs tienen un comportamiento parecido, al igual de SJd y SVq, esto se debe a las semejanzas en los sistemas lineales producidos por las reducciones. Los algoritmos SJq y SJs parecen ser los más robustos, y como se esperaba, el número de problemas en donde se obtuvieron valores de NaN es mayor para SJd y SVq, hecho que se le atribuye a la presencia de las inversas en los sistemas lineales. En solo un problema, los algoritmos SJd y SVq terminan con estatus óptimo y SJq no. Cabe mencionar que la escogencia de los parámetros del algoritmo es muy agresiva, es decir, el valor de µk se reduce por un valor menor que 0,02, el recorte en la longitud de paso es muy pequeño, τ ≈ 0,999, y el parámetro de centrado siempre es pequeño, favoreciendo así la dirección afín. Pese a esto, el número de problemas en los que se detiene el algoritmo, porque la longitud de paso es muy pequeña, es reducida. Para observar con mayor claridad las relaciones entre los algoritmos se definen los siguientes índices Índice de robustez aA r donde aA es el número de problemas resueltos por el algoritmo A y r es el mayor RA = número de problemas resueltos por alguno de los algoritmos probados. RA es el porcentaje de casos en los que el algoritmo encuentra una solución. Índice de eficiencia Pm EA = con ei = 0, 1, t /t , ib iA i=1 ei aA si el algoritmo A falla en el problema i si tib = 0 y tiA = 0 si tiA 6= 0 32 donde tiA es el tiempo de CPU empleado por el algoritmo A en la resolución del problema i, tib = mı́nA {tiA }, es decir, el mejor resultado entre todos los algoritmos para el problema i, y m es el total de problemas a resolver. Combinación de eficiencia y robustez ERA = EA × RA Índice de calidad de solución Pm CA = con ci = 0, i=1 ci aA si e lalgoritmo A falla en el problema i 1, N /N , ib iA si Nib = 0 y NiA = 0 si NiA 6= 0 donde NiA es la suma de las medidas relativas obtenidas por el algoritmo A para el problema i, NiA = relgap + relpri + reldua , y Nib = mı́nA {NiA }. En el Cuadro 4.4 se presentan los índices para los resultados obtenidos. De esta tabla se observa que los algoritmos SJq y SJs son los más robustos respectivamente. Método RA EA ERA CA SJq 1.000000 0.762557 0.762557 0.813160 SJs 0.981481 0.687723 0.674987 0.689048 SJd 0.888889 0.747813 0.664723 0.604021 SVq 0.870370 0.848046 0.738114 0.636405 Cuadro 4.4: Índices para cada método El algoritmo SVq es el más eficiente, luego SJq, seguido de SJd y el menos eficiente es SJs. Cabe mencionar que el algoritmo SJs es el que realiza más operaciones para formar la matriz del sistema reducido, hecho que aumenta el tiempo de procesamiento. En la combinación de eficiencia y robustez, SJq y SVq son los mejores respectivamente, y en cuanto a calidad de solución, SJq es el mejor con índice igual a 0,81 seguido de SJs con índice de 0,68. 33 Los algoritmos SJq y SJd poseen índices de robustez y eficiencia semejantes, pero la calidad de solución es menor para SJd. Esto se le atribuye a la presencia de inversas en el lado derecho de SJd. Los mejores resultados se obtuvieron con el algoritmo SJq, exceptuando la eficiencia, en donde es superado por SVq. El hecho de que SVq sea el más eficiente, era de esperarse pues la matriz asociada al sistema lineal es la mas simple de todas las alternativas, es decir, no requiere realizar productos de la forma XQ o Y A en la formación de esta. Aunque el algoritmo SVq proporciona resultados de forma más eficiente, es el menos robusto y en cuanto a calidad de soluciones, es el penúltimo entre las alternativas, superando solo a SJd. 4.3. Sobre el condicionamiento de las matrices Los números de condición de las matrices asociadas a los sistemas lineales a resolver por iteración, son una medida del posible mal comportamiento de los algoritmos. En las Figuras A.4, A.5 y A.6 se presentan los números de condición para cada una de las alternativas en los problemas HS35MOD, LOTSCHD y QISRAEL, y es interesante notar que aunque el algoritmo SVq es el que posee los números de condición más grandes, la precisión alcanzada es del orden O(10−13 ), no reflejando el efecto del mal condicionamiento sobre la precisión en las soluciones. Con el fin de intentar explicar este comportamiento notamos que en las reducciones que derivan en sistemas con matrices simétricas se puede observar lo siguiente. Sea K una matriz simétrica y P una matriz ortonormal con columnas los autovectores de K, entonces P DP t = K, con D la matriz diagonal de autovalores. Luego, resolver el sistema Kx = b es equivalente a resolver Db x = bb con bb = P t b y x = P x b. Si alguno de los autovalores λi , de K, es cero, con autovector asociado vi se tiene que Kvi = 0 ⇔ vi ∈ N ull(K) ⇔ vi ⊥ Rango(K t ) = Rango(K) y por lo tanto, vit b = 0. De esta forma, resolver el sistema Db x = bb es equivalente a resolver un sistema reducido donde no se consideran las filas y columnas asociadas 34 con autovalores iguales a cero y se obtiene de forma precisa una solución del sistema Kx = b. Ahora, si algún autovalor λj de K es cercano a cero y vj es el autovector asociado, se conjetura en este trabajo que vit b debería ser cercano a cero y la presencia de λj no debería afectar la estabilidad del algoritmo que resuelve Kx = b. Tomando en cuenta esta observación se define lo siguiente Definición 6 Ls -condición de una matriz simétrica K asociada al sistema lineal Kd = rhs se define por κ2 = máx {|λi (K)|, ∀i} mı́n {|λi (K)| : |λi (K)| > , |vit (rhs)| > , ∀i} donde (λi (K), vi ) es un par autovalor-autovector de la matriz K. En las Figuras A.1 a A.8 se presentan los números de condición de las matrices asociadas a cada una de las reducciones y los -números de condición para SJs y SVq con = 10−8 , en varios de los problemas de prueba. En estas figuras se puede observar que los números de condición más grandes son los asociados a SVq, y los menores, los asociados a SJs. Luego, SJq y SJd poseen el mismo número de condición, pero los resultados obtenidos son bastante diferentes, siendo los resultados de SJd más parecidos a los de SVq pareciendo indicar que la presencia de las inversas en el lado derecho contribuye al mal comportamiento del algoritmo. Se esperaría que, dado que los números de condición de SVq son mayores que los del resto de las alternativas, este debería poseer un comportamiento mas deficiente que el observado, pero los -números de condición, a partir de cierta iteración, son del orden de los otros algoritmos, apoyando así la conjetura antes hecha. De esta forma el mal condicionamiento parece influir de manera similar en todos los algoritmos. Capítulo 5 Conclusiones En este trabajo se propuso un método para programación cuadrática basándose en el método SIMPLE, formulado para el caso de programación lineal. Aspectos nuevos aquí considerados son la formulación del método como uno de orden superior y la escogencia del punto inicial entre otros. Se presentaron condiciones bajo las cuales es posible establecer resultados convergencia del algoritmo propuesto. Se propuso la alternativa SJd, se extendió la transformación cuasi-definida en SJs y se estudiaron las relaciones y propiedades de estas alternativa y la presentada por Vanderbei en [36]. El método propuesto en este trabajo es un paso hacia una propuesta algorítmica para el caso de programación no lineal y sería interesante estudiar, en un trabajo futuro, su factibilidad. Se realizó un estudio sobre la resolución por iteración de los sistemas lineales usados para la determinación de la dirección de Newton perturbada. Este aspecto es fundamental en la formulación de un algoritmo eficiente y robusto. Se pudo observar en los resultados computacionales que el uso de la heurística Approximate minimum degree es primordial en el buen comportamiento de los algoritmos. Sin ella, el tiempo requerido por los algoritmos para obtener las soluciones es prohibitivo debido a las dimensiones de las matrices involucradas. Pero mas interesante aun es el efecto que tiene el reordenamiento sobre la estabilidad de los algoritmos. Se observo que el efecto de colocar las columnas densas al final del reordenamiento es beneficioso para el comportamiento de los métodos, pues se obtuvo un incremento en 35 36 la robustez de los mismos. Otro aspecto observado es el efecto del mal condicionamiento cerca de la solución sobre los métodos. La presencia de números condición del orden de O(1040 ) no resultó afectar la estabilidad de los algoritmos. Aún con estos órdenes de magnitud del número de condición de las matrices, se obtuvieron resultados con un orden de precisión de O(10−14 ) para la mayoría de los problemas. Esto parece indicar que las matrices poseen una estructura que favorece la estabilidad de los algoritmos que resuelven los sistemas lineales. Además, se puede concluir que la presencia de las inversas de matrices diagonales afecta significativamente el comportamiento de los algoritmos. A pesar de que el método SJd posee la transpuesta de la matriz en SJq, consideramos que la presencia de las inversas de matrices en el lado derecho se refleja en el pobre comportamiento de la primera alternativa en relación con la segunda. Igualmente, se le atribuye a las inversas de matrices que el método SVq demostrara ser el menos robusto y que junto a SJd, son los que obtienen soluciones de menor calidad. Se observa que las alternativas SJq y SJs poseen una característica ventajosa sobre SVq y SJd, con las dos primeras es posible alcanzar soluciones más precisas y en el caso de SJq, se obtiene mayor robustez. Pese a que el método SVq resultó ser el mejor en cuanto a tiempo de procesamiento se refiere, esta característica se debe principalmente a que la matriz que este involucra es la más simple, es decir, no posee productos de la forma XQX, AX, Y At , por lo que la formación de la matriz reducida se realiza en menos tiempo que en las otras alternativas. Como es sabido, el componente más importante de cualquier implementación de algún algoritmo de puntos interiores que aspire ser competitivo y eficiente, es el paquete de álgebra lineal usado. Una crítica a lo presentado en este trabajo es el uso de factorizaciones LU en vez de LDLt en las reducciones SVq y SJs. Es claro que esto disminuiría el tiempo de procesamiento, pero su efecto sobre la estabilidad del algoritmo es algo que habría que estudiar. Aun cuando la factorización LDLt existe, sería imprudente afirmar que una factorización estática, sin pivoteo, produciría buenos resultados. Ahora, en favor de las otras dos reducciones no simétricas podemos decir que el paquete de álgebra lineal usado debería explotar la estructura de las matrices. En un código que realice la factorización LU o LDLt de las matrices asociadas a los métodos, 37 no sería necesario la formación explicita de las misma, reduciendo así el tiempo de CPU requerido para obtener la factorización. Además, como algunas de las entradas de las matrices poseen un comportamiento predecible, relacionado con los parámetros del algoritmo y la reducción en la brecha de dualidad, se podría hacer una escogencia inteligente de los pivotes durante la factorización. De los resultados obtenidos se puede concluir que los algoritmos propuestos poseen un buen comportamiento numérico. Las alternativas SJq y SJs demostraron ser robustas y permitieron alcanzar soluciones muy precisas. Basados en lo dicho anteriormente, podemos afirmar que una implementación que use la reducción SJs es la que posee mayor potencial en comparación con el resto. Esta alternativa simétrica es robusta, logra soluciones de muy buena calidad, y como se mencionó anteriormente, el tiempo de procesamiento disminuiría si se hiciera uso de una factorización LDLt con pivoteo que no forme explícitamente la matriz asociada y que explote el comportamiento predecible de algunas de las entradas de esta. LOQO es uno de los paquetes más populares. De su relación con las alternativas propuestas y de lo observado en los resultados, donde las reducciones SIMPLE mostraron poseer mejor comportamiento numérico, podemos conluir que estas pueden llegar a ser muy competitivas. Como recomendación final, recalcamos que una implementación eficiente deberá realizarse en un lenguaje como FORTRAN o C y deberá poseer un complejo, estable y eficiente código, adaptado a la estructura de las matrices para resolver los sistemas lineales. Bibliografía [1] A. Altman and J. Gondzio. Regularized symmetric indefinite systems in interior point methods for linear and quadratic optimization. Technical report, System Research Institute, Polish Academy of Science, 1999. [2] P. R. Amestoy, T. A. Davis, and I. S. Duff. Algorithm (xx: AMD, an approximate minimum degree ordering algorithm. Technical report, University of Florida, 2003. [3] E. D. Andersen, J. Gondzio, C. Mészáros, and X. Xu. Implementation of interior point methods for large scale linear programming. Technical report, University pf Geneva, 1996. [4] M. Argáez, L. Veázquez, and C. Villalobos. On the development of a trust region interior-point method for large scale nonlinear programs. ACM transactions, 2003. [5] S. Bakhtiari and A. L. Tits. A simple primal-dual feasible interior-point method ofr nonlinear programming with monotone descent. Technical report, University of Maryland, USA, 2002. [6] L. Bergamaschi, J. Gondzio, and G. Zilli. Preconditioning indefinite systems in interior point methods for optimization. Technical report, Por aparecer en Computational Optimization and Applications, 2003. [7] A. B. Berkelaar, B. Jansen, K. Roos, and T. Terlaky. Sensitivity analysis in (degenerate) quadratic programming. Technical report, Delft University of Techmology, 1996. [8] J. R. Bunch and L. Kaufman. Some stable methods for calculating inertia and solving symmetric linear systems. Math. Comp., 31, 1977. 38 39 [9] J. R. Bunch, L. Kaufman, and B.Ñ. Parlett. Decomposition of a symmetric indefinite linear system of equations. SIAM J. Numer. Anal., 8, 1971. [10] R. H. Byrd, M. E. Hribar, and J.Ñocedal. An interior point algorithm for large scale nonlinear programming. Technical report, University of Colorado, USA, 1997. [11] A. S. EL-Bakry, R. A. Tapia, T. Tsuchiya, and Y. Zhang. On the formulation and thoery of the newton interior point method for nonlinear programming. Journal of Optimization theroy and applications, 89(3), 1996. [12] O. Epelly, J. Gondzio, and J. Vial. An interior point solver for smooth convex optimization with and application to enviromental-energy economic models. Technical report, University of Edinburgh, Scotland, 2000. [13] A. V. Fiacco and G. P. McCormick. Nonlinear programming: sequential unconstrained minimization techniques. John Wiley and Sons, Inc., 1968. [14] E. M. Gertz and S. J. Wright. Object-Oriented siftware for quadratic programming. ACM transactions, 2003. [15] J. Gondzio. HOPDM (version 2.12)-A fast LP solver based on a primal-dual interior point method. System Research Institute, Polish Academy of Sciences, Warsaw, Poland, 1995. [16] J. Gondzio. Multiple centrality corrections in a primal-dual method for linear programming. Technical report, University of Geneva, 1995. [17] J. Gondzio and A. Grothey. Parallel interior point solver for structured quadratic programs: application to financial planing problems. Technical report, University of Edinburgh, 2003. [18] J. Gondzio and A. Grothey. Solving nonlinear portfolio optimization problems with the primal-dual interior point method. Technical report, University of Edinburgh, 2004. [19] M. González-Lima, H. Wei, and H. Wolkowicz. A simple iterative method for linear programming. Technical report, University of Waterloo, Waterloo, Ontario, Canada, 2001. 40 [20] N. I. M. Gould, D. Orban, A. Startenaer, and Ph. L. Toint. On the practical dependency of a trust-region algorithm on its parameters. Technical report, University of Namur, Belgium, 2000. [21] N. I. M. Gould, D. Orban, A. Startenaer, and Ph. L. Toint. Superlinear convergence of primal-dual interior point algorithms for nonlinear programming. Technical report, University of Namur, Belgium, 2000. √ [22] O. Güler, R. A. Tapia, Y. Ye, and Y. Zhang. A cuadratically convergent O( nl)iteration algorithm for linear programming. Mathematical Programming, 59, 1993. [23] N. J. Higham. Stability of the diagonal pivoting method with partial pivoting. Technical report, University of Manchester, England, 1996. [24] J. E. Dennis Jr. and R. B. Scnabel. Numerical methods for unconstrained optimization and nonlinear equations, volume 16 of Classics in applied mathematics. SIAM, 1996. [25] M. Kojima, N. Megiddo, and S. Mizuno. Theoretical convergence of large-step primal-dual interior point algorithms for linear programming. Mathematical Programming, 59, 1993. [26] C. T. Lawrence, A. L. Tits, and T. Urban. A primal-dual interior-point method for nonconvex optimization with multiple logarithmic barrier parameters and with strong convergence properties. Technical report, University of Maryland, USA, 1998. [27] J. W. Liu. Modification of the minimum degree algorithm by multiple elimination. ACM transactions, 1985. [28] S. Mehrotra. On the implementation of a prima-dual interior point method. SIAM J. Optimization, 2(4), 1992. [29] T. A. Davis nad I. S. Duff. An unsymmetric-pattern multifrontal method for sparse LU factorization. SIAM J. Matrix Anal. Appl., 19(1), 1997. [30] S. Pérez. Algoritmos alternativos primal-dual no factibles de puntos interiores para programación lineal. Technical report, Universidad Simón Bolivar, CESMa, Noviembre 2003. 41 [31] F. A. Potra and S. J. Wright. Interior-point methods. Technical report, Argonne National Laboratory, 2000. [32] D. F. Shanno and R. J. Vanderbei. An interior-point algorithm for nonconvex nonlinear programming. Comput. Optim. Appl., 13, 1999. [33] D. F. Shanno and R. J. Vanderbei. Interior point methods for nonconvex nonlinear programming: orderings and higher-order methods. Math. Program. Ser. B, (87), 2000. [34] N. V. Stojković and P. S. Stanimirović. Initial point in primal-dual interior point method. FACTA UNIVERSITATIS, Mechanics, Automatic Control ans Robotics, 3(11), 2001. [35] R. J. Vanderbei. Symmetric quasi-definite matrices. SIAM J. Optim., 5, 1995. [36] R. J. Vanderbei. LOQO an interior point code for quadratic programming. Optimization methods and software, 12(2), 1999. [37] S. J. Wright. Stability of linear equations solvers in interior-point methods. SIAM J. Mat. Anal. Appls., 1994. [38] S. J. Wright. A path-following interior-point algorithm for linear and quadratic problems. Technical report, Argonne National Laboratory, 1995. [39] S. J. Wright. Stability of augmented system factorizations in interior point methods. Technical report, Argonne National Laboratory, 1995. [40] S. J. Wright. Primal-dual interior-point methods. SIAM, 1997. Apéndice A Tablas de resultados 42 43 Figura A.1: Números de condición para el problema DUAL1 Figura A.2: Números de condición para el problema DUAL2 44 Figura A.3: Números de condición para el problema DUALC5 Figura A.4: Números de condición para el problema HS35MOD 45 Figura A.5: Números de condición para el problema LOTSCHD Figura A.6: Números de condición para el problema QISRAEL 46 Figura A.7: Números de condición para el problema QPCBLEND Figura A.8: Números de condición para el problema QSHARE2B 47 Problema iter maxrel time nz(L) nz(U) TAME 8 3.6557e-26 6.0000e-02 9 9 HS21 9 2.4570e-28 7.0000e-02 9 9 ZECEVIC2 9 4.8212e-17 7.0000e-02 13 13 HS35 9 8.4366e-17 6.0000e-02 10 10 HS35MOD 25 6.5289e-15 1.5000e-01 12 13 HS76 10 2.7139e-16 7.0000e-02 21 24 LOTSCHD 11 2.0775e-13 9.0000e-02 209 233 QAFIRO 15 2.9310e-13 1.7000e-01 315 421 HS118 12 1.4039e-16 1.3000e-01 206 278 QADLITTL 17 3.2477e-16 4.4000e-01 1876 2597 QPCBLEND 20 4.6325e-14 7.8000e-01 3098 4368 QSCAGR7 17 1.6947e-14 5.9000e-01 2252 3761 QSC205 24 1.4387e-03 1.0400e+00 3199 4583 QSHARE2B 22 5.3868e-13 6.9000e-01 2365 4049 CVXQP2_S 10 1.2796e-15 3.4000e-01 2334 2786 CVXQP1_S 11 2.5978e-15 6.2000e-01 4837 6496 CVXQP3_S 11 3.9762e-15 1.1900e+00 8802 11894 QSHARE1B 40 1.4469e-09 3.2200e+00 7007 10972 DUALC2 31 5.9374e-13 9.1000e-01 1663 2994 QBORE3D 19 1.7333e-13 2.6100e+00 10951 16051 QSCORPIO 15 7.1589e-16 1.4900e+00 7790 11918 DUALC1 39 6.3251e-13 1.2800e+00 2178 4058 QBRANDY 20 5.7684e-12 7.0800e+00 24957 30999 DUALC5 13 1.4777e-13 5.2000e-01 2047 4000 QSCAGR25 20 1.3313e-14 2.3000e+00 8400 15225 QSCTAP1 18 8.0641e-16 2.8200e+00 12926 19521 QBANDM 29 8.6725e-12 1.2210e+01 28546 41427 QISRAEL 33 1.4738e-15 6.5700e+00 16830 19478 DUAL4 33 1.1688e-05 1.5600e+00 3267 3345 QGROW7 43 3.9467e-03 1.9670e+01 27684 45392 QBEACONF 21 4.4160e-12 6.6600e+00 18733 26946 GOULDQP2 26 4.7554e-13 2.9100e+00 6253 8194 QSCFXM1 30 2.389157e-12 7.8900e+00 21598 34183 Cuadro A.1: Resultados de SJq al reordenar con ColAMD 48 Problema iter maxrel time nz(L) nz(U) QE226 20 2.5204e-10 4.7900e+00 17600 26520 QSCSD1 13 6.9042e-15 2.0550e+01 71205 105617 DUALC8 19 6.0386e-13 1.3500e+00 4594 9287 QGFRDXPN 30 9.3496e-14 5.2200e+00 12768 20079 DUAL1 17 9.2263e-15 1.0300e+00 4126 4269 QSCRS8 67 5.7161e-08 3.1310e+01 40421 65633 VALUES 19 4.4409e-16 3.1900e+00 11617 20487 QPCBOEI1 23 2.9485e-13 1.8210e+01 51793 52000 GOULDQP3 19 5.4932e-13 2.4700e+00 8789 10900 DUAL2 14 4.1950e-15 1.2000e+00 5064 5179 MOSARQP2 27 7.5569e-08 8.9800e+00 35214 40421 QFORPLAN 29 8.5656e-11 3.2470e+01 55192 67130 QSHIP04S 37 1.2640e-15 2.6660e+01 56163 76778 QSCFXM2 34 3.2575e-12 1.8290e+01 43217 69571 QSEBA 34 9.3191e-12 1.1880e+02 76874 130258 DUAL3 66 3.4660e-06 6.6100e+00 7210 7305 QSCSD6 17 6.7681e-15 4.2700e+01 99026 207973 QETAMACR 48 7.6622e-14 1.2921e+02 113224 144619 CVXQP2_M 15 9.8788e-16 7.2840e+01 146408 165192 QSHIP04L 36 1.1858e-15 5.7330e+01 102296 142896 QSCFXM3 36 2.9995e-12 2.8260e+01 62227 102864 MOSARQP1 15 6.8661e-15 6.1600e+00 37809 45176 QSCTAP2 17 3.3651e-14 5.1700e+01 134917 194740 QSIERRA 24 2.8610e-15 1.3488e+02 185483 267981 QSCTAP3 18 1.7762e-14 7.9710e+01 176940 269815 Cuadro A.2: Resultados de SJq al reordenar con ColAMD cont. 49 Problema iter maxrel time nz(L) nz(U) TAME 8 3.6557e-26 6.0000e-02 9 9 HS21 9 2.4570e-28 5.0000e-02 12 12 ZECEVIC2 9 1.5246e-16 7.0000e-02 18 17 HS35 9 8.4366e-17 6.0000e-02 10 10 HS35MOD 23 5.3291e-15 1.5000e-01 14 12 HS76 10 2.7139e-16 7.0000e-02 23 23 LOTSCHD 11 1.9200e-13 1.0000e-01 237 240 QAFIRO 16 4.4027e-11 2.2000e-01 813 857 HS118 12 1.4039e-16 1.4000e-01 778 684 QADLITTL 17 4.1218e-16 8.0000e-01 4648 4371 QPCBLEND 90 5.3337e-14 9.8800e+00 11801 10886 QSCAGR7 17 1.2659e-14 5.9800e+00 29854 24194 QSC205 29 6.2199e-04 1.4240e+01 35604 27066 QSHARE2B 22 8.6953e-13 1.2700e+00 6596 6052 CVXQP2_S 10 1.2190e-15 2.0000e+00 19252 18230 CVXQP1_S 11 3.1777e-15 3.9200e+00 29066 26088 CVXQP3_S 11 4.7978e-15 6.9300e+00 39102 35091 QSHARE1B 40 4.4911e-11 2.2770e+01 44898 37437 DUALC2 31 6.0376e-13 1.3860e+01 29598 29339 QBORE3D 19 1.9759e-13 4.4590e+01 98443 90116 QSCORPIO 15 7.0035e-16 2.5670e+01 99038 84123 DUALC1 39 5.6641e-13 1.5120e+01 27340 26965 QBRANDY 20 5.1384e-12 2.4970e+01 70443 68635 DUALC5 13 2.0161e-13 1.0930e+01 43190 43466 QSCAGR25 20 1.6136e-14 2.6073e+02 360068 283090 QSCTAP1 18 2.9188e-15 3.7700e+01 98292 94435 QBANDM 27 1.0513e-11 1.7499e+02 187896 188903 QISRAEL 33 1.4486e-15 1.3300e+01 31553 28568 DUAL4 28 3.8666e-05 2.5000e+00 8756 8783 100 1.1963e-02 4.9132e+02 217173 160725 QBEACONF 23 3.8418e-12 1.5090e+01 42692 46218 GOULDQP2 27 1.9840e-13 3.1969e+03 1298220 1060281 QSCFXM1 30 2.4187e-12 1.2725e+02 140708 145954 QGROW7 Cuadro A.3: Resultados de SJq sin reordenar 50 Problema iter maxrel time nz(L) nz(U) QE226 20 2.5207e-10 1.1090e+01 47809 36107 QSCSD1 13 6.7603e-15 1.1030e+01 66126 74808 DUALC8 19 5.7667e-13 8.4820e+01 134774 135091 QGFRDXPN 30 8.2277e-14 1.3210e+03 668878 768784 DUAL1 17 9.6144e-15 2.0200e+00 11232 11229 QSCRS8 25 3.2786e-11 4.3712e+02 395368 377636 VALUES 27 4.4409e-16 1.8900e+01 42472 58985 QPCBOEI1 23 2.9502e-13 1.4366e+02 184056 175747 GOULDQP3 19 6.4824e-14 2.5032e+03 1472534 1224583 DUAL2 15 4.5328e-15 2.3000e+00 14252 14269 MOSARQP2 32 2.6437e-08 2.5527e+02 225973 222159 QFORPLAN 29 4.8564e-11 4.5820e+01 94527 78655 QSHIP04S 37 9.7390e-16 2.7454e+02 212281 233453 QSCFXM2 33 4.3890e-10 9.1728e+02 554690 539155 QSEBA 34 4.5572e-12 2.1023e+03 866260 1003714 DUAL3 56 3.9287e-06 1.1580e+01 18941 18986 QSCSD6 17 7.1540e-15 5.4550e+01 206617 155515 QETAMACR 48 7.3792e-14 1.1878e+03 535230 489221 CVXQP2_M 15 1.0323e-15 2.8365e+03 1839308 1763435 QSHIP04L 36 1.9783e-15 3.3143e+02 238132 264714 QSCFXM3 36 8.1204e-10 3.3526e+03 1286005 1185256 MOSARQP1 15 6.8661e-15 5.9056e+02 455643 437378 QSCTAP2 17 2.5039e-14 1.5457e+03 1250335 1217457 QSIERRA * * * 1502934 1518133 QSCTAP3 * * * 2845970 2149420 Cuadro A.4: Resultados de SJq sin reordenar cont. (* sin memoria) 51 Problema TAME HS21 ZECEVIC2 HS35 HS35MOD HS76 LOTSCHD QAFIRO HS118 Método iter Tiempo relgap relpri reldua status Jq 8 1.5000e-01 0.0000e+00 0.0000e+00 3.6557e-26 1 Js 8 4.0000e-02 0.0000e+00 0.0000e+00 0.0000e+00 1 Jd 8 4.0000e-02 0.0000e+00 0.0000e+00 0.0000e+00 1 Vq 8 4.0000e-02 0.0000e+00 0.0000e+00 0.0000e+00 1 Jq 9 4.0000e-02 0.0000e+00 0.0000e+00 2.4570e-28 1 Js 9 5.0000e-02 0.0000e+00 0.0000e+00 2.4570e-28 1 Jd 9 4.0000e-02 0.0000e+00 5.5899e-17 6.8702e-20 1 Vq 9 5.0000e-02 0.0000e+00 1.1180e-16 6.8702e-20 1 Jq 9 4.0000e-02 2.2204e-17 0.0000e+00 4.8212e-17 1 Js 9 4.0000e-02 0.0000e+00 5.6099e-17 0.0000e+00 1 Jd 9 4.0000e-02 0.0000e+00 1.1220e-16 0.0000e+00 1 Vq 9 4.0000e-02 4.4409e-17 0.0000e+00 6.8183e-17 1 Jq 9 4.0000e-02 0.0000e+00 0.0000e+00 8.4366e-17 1 Js 9 4.0000e-02 2.1316e-15 0.0000e+00 8.4366e-17 1 Jd 9 4.0000e-02 2.1316e-15 0.0000e+00 0.0000e+00 1 Vq 9 4.0000e-02 0.0000e+00 0.0000e+00 7.5459e-17 1 Jq 25 1.2000e-01 1.7764e-15 1.2688e-16 6.5289e-15 1 Js 24 1.1000e-01 1.7764e-15 1.2745e-57 5.5076e-15 1 Jd 21 1.0000e-01 3.5527e-15 2.3305e-55 7.5626e-16 1 Vq 18 8.0000e-02 5.2758e-13 1.0434e-23 6.2804e-17 1 Jq 10 5.0000e-02 2.7139e-16 1.6579e-16 1.0254e-16 1 Js 10 5.0000e-02 2.7139e-16 1.6579e-16 2.4870e-17 1 Jd 10 4.0000e-02 2.7139e-16 1.1723e-16 3.7305e-17 1 Vq 10 4.0000e-02 2.7139e-16 0.0000e+00 7.9623e-17 1 Jq 11 7.0000e-02 5.6869e-16 1.8274e-16 2.0775e-13 1 Js 12 8.0000e-02 2.9415e+04 4.0938e-13 9.3937e+02 2 Jd 9 6.0000e-02 7.5825e-16 3.7199e-16 2.4577e-13 1 Vq 11 6.0000e-02 3.8841e-13 2.0850e-16 1.9497e-11 2 Jq 15 1.1000e-01 2.9310e-13 6.8057e-17 3.2577e-14 1 Js 16 1.4000e-01 7.5273e-12 1.4973e-17 3.1768e-14 2 Jd 14 1.1000e-01 4.9605e-13 1.2092e-16 2.8262e-14 1 Vq 14 1.2000e-01 2.6557e-13 7.3438e-17 2.3166e-14 1 Jq 12 8.0000e-02 1.4039e-16 2.4153e-18 6.8804e-17 1 Js 12 8.0000e-02 1.4039e-16 2.4153e-18 9.0900e-17 1 Jd 12 8.0000e-02 3.4004e-16 1.0273e-16 1.1722e-16 1 Vq 12 8.0000e-02 3.4004e-16 8.5258e-17 9.7887e-17 1 Cuadro A.5: Resultados para los cuatro algoritmos 52 Problema QADLITTL QPCBLEND QSCAGR7 QSC205 QSHARE2B CVXQP2_S CVXQP1_S CVXQP3_S QSHARE1B Método iter Tiempo relgap relpri reldua status Jq 17 3.0000e-01 0.0000e+00 2.0977e-17 3.2477e-16 1 Js 17 3.2000e-01 1.0889e-16 1.9411e-16 3.0647e-16 1 Jd 17 2.7000e-01 3.8111e-16 8.9297e-17 3.6466e-16 1 Vq 17 2.6000e-01 2.7222e-16 2.8062e-17 4.5443e-16 1 Jq 20 5.6000e-01 1.8596e-15 3.0194e-19 4.6325e-14 1 Js 30 9.0000e-01 8.1546e-13 8.7084e-17 3.2519e-08 3 Jd 18 5.0000e-01 4.9757e-09 4.5256e-15 3.3866e-06 2 Vq 17 4.3000e-01 2.1786e-08 2.2083e-14 6.3541e-07 2 Jq 17 4.1000e-01 5.3327e-16 1.5341e-16 1.6947e-14 1 Js 17 7.3000e-01 6.6658e-16 1.6676e-16 1.5366e-14 1 Jd 17 4.0000e-01 1.3332e-16 1.7837e-16 1.4095e-14 1 Vq 17 6.1000e-01 5.3327e-16 1.7094e-16 1.1489e-14 1 Jq 24 6.8000e-01 6.7110e-05 5.8947e-16 1.4387e-03 3 Js 56 3.0200e+00 4.1844e-05 9.8901e-16 1.3231e-03 3 Jd 13 4.1000e-01 3.3077e-05 2.8493e-16 3.6930e-04 2 Vq 23 1.1700e+00 7.3584e-05 6.1175e-07 8.5106e-02 3 Jq 22 4.6000e-01 2.1425e-15 1.6504e-14 5.3868e-13 1 Js 31 6.3000e-01 1.5303e-15 1.7170e-14 1.1756e-12 2 Jd 23 5.0000e-01 3.0607e-15 1.6054e-14 1.0441e-12 2 Vq 22 5.0000e-01 2.2956e-15 2.2101e-14 8.7749e-13 1 Jq 10 2.3000e-01 1.2898e-16 4.8352e-17 1.2796e-15 1 Js 10 2.3000e-01 5.1591e-16 4.0624e-17 1.2854e-15 1 Jd 10 2.4000e-01 9.0284e-16 8.7644e-16 1.7190e-15 1 Vq 10 2.4000e-01 5.1591e-16 1.6984e-15 1.2870e-15 1 Jq 11 4.9000e-01 1.7772e-16 3.9807e-17 2.5978e-15 1 Js 11 4.7000e-01 5.3316e-16 6.0471e-17 4.0126e-15 1 Jd 11 5.3000e-01 1.4218e-15 8.2161e-16 1.8003e-15 1 Vq 11 4.2000e-01 5.3316e-16 7.7963e-16 2.1571e-15 1 Jq 11 8.8000e-01 2.0540e-15 4.3137e-17 3.9762e-15 1 Js 11 7.3000e-01 1.5405e-15 5.5361e-17 3.4805e-15 1 Jd 11 1.0500e+00 1.0270e-15 8.8851e-16 4.4754e-15 1 Vq 11 6.6000e-01 1.3693e-15 1.6674e-16 2.8573e-15 1 Jq 40 2.2300e+00 7.8373e-11 7.3923e-14 1.4470e-09 2 Js 40 2.2700e+00 2.1812e-12 3.8630e-14 1.8036e-10 2 Jd 39 2.2000e+00 1.9394e-13 4.0255e-14 1.3484e-11 2 Vq 39 2.7500e+00 7.6649e-10 1.7474e-11 5.7615e-08 2 Cuadro A.6: Resultados para los cuatro algoritmos cont. 53 Problema Método iter Tiempo relgap relpri reldua status DUALC2 Jq 31 6.6000e-01 1.1545e-15 5.9374e-13 1.9939e-16 1 Js 31 7.3000e-01 1.0583e-15 6.4818e-13 9.8392e-17 1 Jd 32 6.7000e-01 2.7332e-13 7.0273e-13 1.4128e-14 1 Vq 31 6.7000e-01 2.0203e-15 8.2803e-13 7.1851e-16 1 Jq 19 1.9300e+00 1.7333e-13 9.0325e-15 1.0512e-13 1 QBORE3D QSCORPIO DUALC1 QBRANDY DUALC5 QSCAGR25 QSCTAP1 QBANDM Js 19 2.3600e+00 1.8619e-13 7.4809e-15 9.9000e-14 1 Jd 19 2.1500e+00 1.3343e-14 7.1709e-15 1.3302e-13 1 Vq 19 2.8900e+00 5.9920e-14 7.2633e-15 9.2687e-14 1 Jq 15 1.0900e+00 1.5794e-16 2.5807e-16 7.1589e-16 1 Js 15 1.2300e+00 1.5794e-16 2.7566e-16 7.2743e-16 1 Jd 15 1.1500e+00 2.7958e-16 2.9178e-16 6.7984e-16 1 Vq 15 1.1900e+00 3.9603e-16 2.6818e-15 6.9187e-16 1 Jq 39 8.9000e-01 7.5712e-15 6.3251e-13 8.0663e-17 1 Js 39 9.1000e-01 6.5148e-15 5.9061e-13 8.1072e-17 1 Jd 39 9.4000e-01 4.4019e-15 6.4717e-13 3.3952e-16 1 Vq 39 9.4000e-01 2.3770e-14 6.6935e-13 4.8577e-16 1 Jq 20 4.9200e+00 1.7793e-15 4.8656e-15 5.7684e-12 2 Js 20 4.1200e+00 9.5811e-16 6.1782e-15 6.9368e-12 2 Jd 20 4.6700e+00 4.1062e-16 5.1331e-15 6.8897e-12 2 Vq 20 3.6700e+00 1.3687e-16 5.8714e-15 6.8122e-12 2 Jq 13 3.6000e-01 1.5534e-14 1.4777e-13 1.2057e-14 1 Js 13 3.8000e-01 1.0788e-15 2.0562e-13 5.5560e-15 1 Jd 13 3.9000e-01 1.9233e-14 2.4907e-13 1.3696e-14 1 Vq 13 4.0000e-01 1.8493e-14 2.5531e-13 1.2699e-14 1 Jq 20 1.4300e+00 2.1415e-15 2.7277e-16 1.3313e-14 1 Js 20 9.3900e+00 1.4276e-16 3.2368e-16 1.3443e-14 1 Jd 20 1.4800e+00 1.5704e-15 2.5798e-16 1.5915e-14 1 Vq 20 4.5100e+00 7.1382e-16 2.0171e-16 1.4811e-14 1 Jq 18 1.9500e+00 4.4394e-16 3.9879e-16 8.0641e-16 1 Js 18 3.0600e+00 5.0859e-15 5.4378e-16 8.0502e-16 1 Jd 18 2.1900e+00 6.2777e-15 3.8314e-16 8.7163e-16 1 Vq 18 2.7500e+00 5.2441e-15 4.6302e-16 8.7599e-16 1 Jq 29 8.3200e+00 8.4209e-15 2.6763e-15 8.6726e-12 2 Js 30 1.0420e+01 1.1745e-14 2.2170e-15 9.7295e-12 2 Jd 25 7.0400e+00 8.4863e-11 3.3415e-12 2.7067e-07 2 Vq 26 9.4900e+00 8.0701e-12 1.9802e-12 1.4995e-08 2 Cuadro A.7: Resultados para los cuatro algoritmos cont. 54 Problema Método iter Tiempo relgap relpri reldua status QISRAEL Jq 33 4.7100e+00 4.3959e-16 6.2143e-17 1.4738e-15 1 Js 33 2.5000e+00 1.4653e-16 9.0433e-17 1.4398e-15 1 Jd 33 4.5400e+00 0.0000e+00 3.6824e-16 2.4128e-15 1 Vq 33 2.6400e+00 0.0000e+00 1.5109e-16 3.0657e-15 1 Jq 33 1.0000e+00 1.5128e-07 3.2125e-17 1.1688e-05 3 DUAL4 QGROW7 QBEACONF GOULDQP2 QSCFXM1 QE226 QSCSD1 DUALC8 Js 34 1.1200e+00 1.0884e-07 7.9505e-17 8.4087e-06 3 Jd 12 4.7000e-01 1.2162e-07 1.1471e-16 2.1755e-06 2 Vq 11 4.2000e-01 1.0163e-06 5.7823e-15 9.0107e-06 2 Jq 43 1.4330e+01 2.1574e-09 2.6611e-16 3.9468e-03 2 Js 52 1.9250e+01 3.6931e-09 3.1543e-16 3.6261e-03 2 Jd 23 6.2600e+00 6.1903e-09 2.1799e-16 7.6496e-03 2 Vq 33 8.9400e+00 5.4397e-09 2.3145e-16 4.0477e+31 3 Jq 23 4.7000e+00 5.2027e-13 1.1726e-14 4.4161e-12 2 Js 25 3.5900e+00 1.6029e-13 1.5878e-14 3.8368e-12 2 Jd 16 3.3200e+00 1.3290e-13 6.3354e-14 5.3883e-12 2 Vq 16 1.9200e+00 5.8618e-14 1.6659e-14 3.2701e-12 2 Jq 26 2.0200e+00 4.7554e-13 5.1513e-17 3.2908e-13 1 Js 35 2.8200e+00 9.8985e-13 6.4138e-17 1.9793e-13 1 Jd 11 9.9000e-01 6.8374e-06 7.5722e-14 1.3011e-05 2 Vq 15 1.2500e+00 5.7340e-07 6.5098e-13 7.1796e-06 2 Jq 30 5.7500e+00 1.3249e-15 3.9171e-15 2.3892e-12 2 Js 30 8.2000e+00 2.4953e-14 3.8231e-15 4.7269e-09 2 Jd 30 5.3300e+00 1.5458e-15 4.5094e-15 2.4186e-12 2 Vq 30 7.7300e+00 8.8330e-16 4.1262e-15 3.1522e-12 2 Jq 20 3.4000e+00 2.5204e-10 1.9577e-15 5.2937e-13 2 Js 20 4.6900e+00 2.5207e-10 3.6114e-15 6.0445e-13 2 Jd 20 2.8000e+00 2.5205e-10 2.0811e-15 4.1809e-13 2 Vq 20 4.1800e+00 2.5206e-10 1.7237e-15 4.4754e-13 2 Jq 13 1.3080e+01 5.5128e-16 1.8184e-16 6.9042e-15 1 Js 13 4.2300e+00 1.8376e-16 2.6956e-16 6.4491e-15 1 Jd 13 9.3800e+00 1.7274e-14 1.0290e-13 9.9124e-13 1 Vq 13 2.2600e+00 1.6538e-15 1.8527e-16 7.0728e-15 1 Jq 19 9.4000e-01 9.3106e-15 6.0386e-13 3.2979e-14 1 Js 19 1.1000e+00 4.0529e-15 5.8141e-13 1.0619e-14 1 Jd 20 1.0300e+00 9.3106e-15 1.1145e-12 2.7629e-14 2 Vq 20 9.9000e-01 9.5297e-15 1.1585e-12 3.1290e-14 2 Cuadro A.8: Resultados para los cuatro algoritmos cont. 55 Problema QGFRDXPN DUAL1 QSCRS8 VALUES QPCBOEI1 GOULDQP3 DUAL2 MOSARQP2 QFORPLAN Método iter Tiempo relgap relpri reldua status Jq 30 3.9300e+00 1.7899e-15 1.2984e-16 9.3496e-14 1 Js 31 7.9800e+00 1.6272e-15 1.8420e-16 9.0399e-14 1 Jd 29 3.7200e+00 1.6272e-15 3.7412e-16 9.7518e-14 1 Vq 29 6.6800e+00 2.2781e-15 4.9207e-16 9.7591e-14 1 Jq 17 7.4000e-01 1.2245e-15 3.7240e-17 9.2263e-15 1 Js 19 7.7000e-01 1.0647e-15 6.7136e-17 9.2245e-15 1 Jd 11 5.6000e-01 6.5777e-04 1.4284e-13 7.5787e-03 2 Vq 11 5.2000e-01 6.5777e-04 1.4281e-13 7.5787e-03 2 Jq 67 2.2450e+01 7.2947e-11 5.8432e-12 5.7161e-08 3 Js 26 1.0050e+01 2.7934e-11 1.6504e-15 5.5030e-15 2 Jd 33 9.1200e+00 2.8601e-11 1.2673e-08 7.9581e-08 3 Vq 27 8.2700e+00 1.1178e-11 4.8980e-13 4.5511e-15 2 Jq 19 2.3100e+00 4.4409e-16 6.8052e-18 1.2660e-16 1 Js 19 1.5600e+00 4.4409e-16 5.5192e-18 5.1863e-16 1 Jd 17 1.3800e+00 4.4409e-16 9.8576e-17 3.5084e-16 1 Vq 11 5.1000e-01 8.9235e-04 7.1482e-15 7.7549e-04 2 Jq 23 1.1960e+01 2.9485e-13 2.7028e-15 3.3128e-14 1 Js 23 6.6700e+00 2.9469e-13 1.6605e-15 4.4819e-14 1 Jd 23 1.1500e+01 2.9469e-13 3.8418e-15 6.6125e-14 1 Vq 23 6.9800e+00 2.9502e-13 3.4217e-15 4.3065e-14 1 Jq 19 1.6600e+00 5.4932e-13 6.3035e-17 3.8414e-14 1 Js 19 5.2180e+01 1.3685e-13 6.4476e-17 3.7718e-14 1 Jd 11 1.1400e+00 1.5647e-05 2.5081e-13 1.2376e-05 2 Vq 77 9.6450e+01 1.0000e+00 5.6451e-02 1.0370e+10 3 Jq 14 8.0000e-01 2.4698e-16 3.8113e-17 4.1950e-15 1 Js 14 8.5000e-01 2.7461e-16 4.3216e-17 4.2527e-15 1 Jd 11 7.2000e-01 4.2975e-05 1.2647e-15 7.1997e-04 2 Vq 10 6.1000e-01 1.0603e-03 1.2714e-12 1.4219e-02 2 Jq 27 6.6900e+00 5.0976e-08 2.1023e-16 7.5569e-08 3 Js 30 2.4420e+01 1.4821e-08 1.9794e-16 2.1779e-08 3 Jd 15 3.4500e+00 0.0000e+00 3.7441e-16 6.8239e-17 1 Vq 15 7.9600e+00 2.5615e-15 6.0154e-16 7.1460e-17 1 Jq 29 2.0840e+01 1.4812e-13 6.4999e-17 8.5656e-11 2 Js 29 9.8900e+00 1.8686e-12 6.4999e-17 5.4090e-11 2 Jd 29 1.5190e+01 1.2778e-13 3.4319e-16 7.6445e-11 2 Vq 29 6.9100e+00 4.9813e-13 1.1317e-16 6.6114e-11 2 Cuadro A.9: Resultados para los cuatro algoritmos cont. 56 Problema QSHIP04S QSCFXM2 QSEBA DUAL3 QSCSD6 QETAMACR CVXQP2_M QSHIP04L QSCFXM3 Método iter Tiempo relgap relpri reldua status Jq 37 1.9800e+01 1.2640e-15 6.5062e-16 1.0280e-15 1 Js 37 1.5650e+01 2.3700e-16 2.4262e-16 9.2383e-16 1 Jd 37 1.2670e+01 7.9001e-17 7.3792e-16 8.8650e-16 1 Vq 37 6.2900e+00 7.9001e-16 3.1096e-16 9.8485e-16 1 Jq 34 1.3500e+01 1.3422e-16 9.5139e-15 3.2575e-12 2 Js 34 3.5060e+01 2.1852e-13 4.1279e-12 4.2996e-10 2 Jd 34 1.2740e+01 1.7449e-15 6.4645e-15 3.3804e-12 2 Vq 34 3.2800e+01 1.4765e-15 8.2513e-15 3.1470e-12 2 Jq 34 8.7660e+01 1.0974e-15 5.8042e-16 9.3191e-12 2 Js 34 7.1000e+00 3.1093e-15 3.5349e-16 8.8283e-12 2 Jd 38 1.0719e+02 3.1843e-13 4.0630e-12 3.6786e-08 3 Vq 34 8.1500e+00 5.4871e-16 6.9884e-15 6.3263e-12 2 Jq 66 4.6300e+00 5.1649e-09 4.9603e-17 3.4660e-06 3 Js 100 7.1200e+00 1.9902e-09 9.3044e-17 1.3396e-06 4 Jd 12 1.0500e+00 9.6042e-07 1.2514e-15 1.9187e-04 2 Vq 11 8.7000e-01 2.5666e-05 5.0776e-14 1.6330e-03 2 Jq 17 2.8150e+01 6.6685e-16 3.6742e-16 6.7681e-15 1 Js 17 3.2090e+01 1.9430e-15 3.8056e-16 7.4528e-15 1 Jd 17 2.2710e+01 4.5660e-11 1.7592e-14 8.4277e-10 2 Vq 17 1.5930e+01 1.9451e-10 3.7596e-15 1.5892e-09 2 Jq 48 9.1330e+01 1.6924e-16 3.9407e-17 7.6622e-14 1 Js 48 9.7950e+01 1.6924e-16 2.6036e-17 8.1549e-14 1 Jd 58 1.0616e+02 3.0361e-10 4.3211e-14 8.4292e-08 2 Vq 72 1.6339e+02 2.2223e-10 1.3686e-14 5.2507e-03 2 Jq 15 5.4630e+01 1.6252e-16 4.6616e-17 9.8788e-16 1 Js 15 5.1660e+01 3.2505e-16 4.1224e-17 9.8262e-16 1 Jd 15 6.0160e+01 6.9886e-15 4.0181e-14 1.7609e-15 1 Vq 15 6.1380e+01 1.3977e-14 4.1246e-14 1.3913e-15 1 Jq 36 3.9700e+01 1.9783e-16 3.9730e-16 1.1858e-15 1 Js 36 3.1570e+01 4.7480e-16 3.6670e-16 1.3117e-15 1 Jd 36 2.6240e+01 0.0000e+00 7.2371e-16 1.0241e-15 1 Vq 36 9.6100e+00 1.2266e-15 4.6819e-16 1.1493e-15 1 Jq 36 2.0880e+01 1.5731e-15 1.2192e-14 2.9996e-12 2 Js 36 7.3310e+01 5.6959e-13 9.6327e-12 7.3528e-10 2 Jd 36 1.9190e+01 5.2034e-15 7.9717e-15 3.2803e-12 2 Vq 36 6.5550e+01 2.7832e-15 9.0355e-15 3.3667e-12 2 Cuadro A.10: Resultados para los cuatro algoritmos cont. 57 Problema MOSARQP1 QSCTAP2 QSIERRA QSCTAP3 Método iter Tiempo relgap relpri reldua status Jq 15 4.4900e+00 6.8661e-15 1.7035e-16 6.8129e-17 1 Js 15 2.6870e+01 6.8661e-15 1.7503e-16 6.8107e-17 1 Jd 15 4.2600e+00 6.8661e-15 4.4873e-16 7.9377e-17 1 Vq 15 2.5490e+01 6.8661e-15 6.8791e-16 1.1157e-16 1 Jq 17 3.5900e+01 3.3651e-14 3.3513e-16 6.0253e-16 1 Js 17 5.3460e+01 3.5224e-15 3.9550e-16 6.0095e-16 1 Jd 17 4.0150e+01 3.0018e-14 4.6752e-16 6.1071e-16 1 Vq 17 3.8280e+01 2.6201e-16 4.4980e-16 6.0860e-16 1 Jq 24 9.9820e+01 2.8610e-15 1.0430e-16 9.5263e-16 1 Js 24 7.3860e+01 1.8534e-14 6.8278e-17 9.8064e-16 1 Jd 24 9.3420e+01 1.6357e-14 1.5512e-16 1.0099e-15 1 Vq 24 3.8190e+01 7.5878e-15 1.4642e-16 9.3395e-16 1 Jq 18 5.7380e+01 1.7762e-14 4.2780e-16 6.9176e-16 1 Js 18 9.3800e+01 2.5608e-14 3.6449e-16 6.8882e-16 1 Jd 18 5.8390e+01 3.3478e-14 4.0207e-16 7.1576e-16 1 Vq 18 6.2160e+01 7.1711e-14 4.9089e-16 6.9673e-16 1 Cuadro A.11: Resultados para los cuatro algoritmos cont.