Formulación y Ejemplos Resolución gráfica Resolución del problema: algoritmo del Simplex Sistema explı́cito: Matemáticas del Simplex En clase Investigación Operativa Programación Lineal Continua Formulación y Ejemplos Resolución gráfica Resolución del problema: algoritmo del Simplex Algoritmo del Simplex: minimización Paso 0. Dada una SBF: xB = B−1 b ≥ 0, xN = 0, z0 = ctB B−1 b I = {ı́ndices variables básicas} y J = {ı́ndices variables NO básicas} Paso 1. Contraste de Optimalidad: cálculo de los costes reducidos de las variables NO básicas crj = zj − cj = ctB B−1 aj − cj , j ∈ J Si crj = zj − cj ≤ 0 para todo j ∈ J ⇒ FIN. Solución actual óptima con valor óptimo z0 . Si crj = zj − cj > 0 para algún j ∈ J ⇒ xk variable candidata a entrar en la base t.q. crk = máx{crj / crj > 0} Investigación Operativa Programación Lineal Continua Formulación y Ejemplos Resolución gráfica Resolución del problema: algoritmo del Simplex Algoritmo del Simplex: minimización (cont.) Paso 2. Cambio de vértice (x + αd): cálculo de la dirección de movimiento dB = −yk = −B−1 ak dN = e k Contraste de No Acotación: Si yk ≤ 0 ⇒ d ≥ 0 es una dirección de ilimitación, FIN. Problema No Acotado En otro caso, determinar la máxima longitud de paso: α = mı́n{ (xB )i (xB )r / i ∈ I, yik > 0} = yik yir Variable que sale la base: xr , donde se alcanza el mı́nimo. Investigación Operativa Programación Lineal Continua Formulación y Ejemplos Resolución gráfica Resolución del problema: algoritmo del Simplex Algoritmo del Simplex: minimización (cont.) Paso 3. Actualización del nuevo punto extremo xB −yk x ← x + αd = +α ek xN z0 ← z0 − αcrk = z0 − α(zk − ck ) I ← I \ {r } ∪ {k} J ← J \ {k} ∪ {r } B ← B \ {ar } ∪ {ak } Ir al Paso 1. Investigación Operativa Programación Lineal Continua Formulación y Ejemplos Resolución gráfica Resolución del problema: algoritmo del Simplex Algoritmo del Simplex: maximización Sólo cambia el criterio de optimalidad: Paso 1. Contraste de Optimalidad: cálculo de los costes reducidos de las variables NO básicas crj = zj − cj = ctB B−1 aj − cj , j ∈ J Si crj = zj − cj ≥ 0 para todo j ∈ J ⇒ FIN. Solución actual óptima con valor óptimo z0 . Si crj = zj − cj < 0 para algún j ∈ J ⇒ xk variable candidata a entrar en la base t.q. crk = mı́n{crj / crj < 0} Investigación Operativa Programación Lineal Continua Formulación y Ejemplos Resolución gráfica Resolución del problema: algoritmo del Simplex La Tabla del Simplex B cB {xi }i∈I {ci }i∈I zj − cj mı́n s.a. x1 + x2 − 4x3 x1 + x2 + 2x3 ≤ 9 x 1 + x2 − x 3 ≤ 2 −x1 + x2 + x3 ≤ 4 x1 , x2 , x3 ≥ 0. B cB s1 0 s2 0 s3 0 zj − cj Y = B−1 N, B−1 {yj }j∈J , Im {zj − cj } mı́n s.a. x1 + x2 − 4x3 +0s1 +0s2 +0s3 x1 + x2 + 2x3 +s1 =9 x1 + x2 − x3 +s2 =2 −x1 + x2 + x3 +s3 = 4 x1 , x2 , x3 , s1 , s2 , s3 ≥ 0. Y = B−1 N 1 1 2 1 1 -1 -1 1 1 -1 -1 4 Investigación Operativa xB {(xB )i }i∈I z0 1 0 0 0 B−1 0 1 0 0 0 0 1 0 xB 9 2 4 0 Programación Lineal Continua Formulación y Ejemplos Resolución gráfica Resolución del problema: algoritmo del Simplex Ejemplo 1: solución óptima única Iteración 1. s1 0 s2 0 s3 0 zj − cj x1 1 1 -1 -1 x2 1 1 1 -1 x3 2 -1 1 4 s1 1 0 0 0 s2 0 1 0 0 s3 0 0 1 0 9 2 4 0 entra en la base α = min { }= Investigación Operativa ⇒ sale de la base Programación Lineal Continua Formulación y Ejemplos Resolución gráfica Resolución del problema: algoritmo del Simplex Ejemplo 1: solución óptima única Iteración 2. Tenemos que pivotar sobre el elemento 1 s1 0 s2 0 s3 0 zj − cj x1 1 1 -1 -1 x2 1 1 1 -1 Investigación Operativa x3 2 -1 1 4 s1 1 0 0 0 s2 0 1 0 0 s3 0 0 1 0 9 2 4 0 Programación Lineal Continua Formulación y Ejemplos Resolución gráfica Resolución del problema: algoritmo del Simplex Ejemplo 1: solución óptima única Iteración 2. s1 0 s2 0 x3 -4 zj − cj x1 3 0 -1 3 x2 -1 2 1 -5 x3 0 0 1 0 s1 1 0 0 0 s2 0 1 0 0 s3 -2 1 1 -4 1 6 4 -16 entra en la base α = min { }= Investigación Operativa ⇒ sale de la base Programación Lineal Continua Formulación y Ejemplos Resolución gráfica Resolución del problema: algoritmo del Simplex Ejemplo 1: solución óptima única Iteración 3. Tenemos que pivotar sobre el elemento 3 s1 0 s2 0 x3 -4 zj − cj x1 3 0 -1 3 x2 -1 2 1 -5 Investigación Operativa x3 0 0 1 0 s1 1 0 0 0 s2 0 1 0 0 s3 -2 1 1 -4 1 6 4 -16 Programación Lineal Continua Formulación y Ejemplos Resolución gráfica Resolución del problema: algoritmo del Simplex Ejemplo 2: óptimos alternativos Min −2x1 − 4x2 s.a. x1 + 2x2 ≤ 4 −x1 + x2 ≤ 1 x1 , x2 ≥ 0 Investigación Operativa Programación Lineal Continua Formulación y Ejemplos Resolución gráfica Resolución del problema: algoritmo del Simplex Ejemplo 3: problema no acotado Max s.a. x1 + 3x2 x1 − 2x2 ≤ 4 −x1 + x2 ≤ 3 x1 , x2 ≥ 0 Investigación Operativa Programación Lineal Continua Formulación y Ejemplos Resolución gráfica Resolución del problema: algoritmo del Simplex SBF degenerada, problema del ciclado y Regla de Bland Degeneración: si alguna de las componentes de xB es 0 ⇒ puede que α = 0 (si (xB )i = 0 y yik > 0), ¿qué ocurre entonces? El simplex no avanza: mismo punto extremo, diferente base (la iteración degenerada puede lograr algún progreso) Problema: cuando hay un número consecutivo de iteraciones degeneradas B1 → B2 → B3 → B1 CICLADO ⇒ Reglas de prevención del ciclado Métodos de perturbación, técnicas lexicográficas, etc. Inconvenientes: costosas computacionalmente Ventajas: en los problemas altamente degenerados (relajaciones de problemas binarios de gran tamaño) son más sencillas. En el resto, ya “perturbados”. Investigación Operativa Programación Lineal Continua Formulación y Ejemplos Resolución gráfica Resolución del problema: algoritmo del Simplex SBF degenerada, problema del ciclado y Regla de Bland Criterio de salida de la base: elegir xr de manera que (xB )s r = mı́n s / α = ysk Investigación Operativa Programación Lineal Continua Formulación y Ejemplos Resolución gráfica Resolución del problema: algoritmo del Simplex Inicialización del algoritmo del simplex Si A tiene m = 100 filas (ecs) y n = 150 columnas (var) ¿cómo encontramos una SBF inicial? ¿a partir de una base de la matriz de restricciones? Si las restricciones son del tipo menor o igual y el vector b es no negativo ⇒ En otro caso ⇒ X Inversión de matrices con 100 filas X ¿Y si el problema es NO factible? ¿Tenemos que realizar mn inversiones para darnos cuenta? X ¿Y si rg (A) < m? ¿Tenemos que calcular mn determinantes para darnos cuenta? Es necesario desarrollar métodos eficientes para la obtención de una solución básica factible inicial. Investigación Operativa Programación Lineal Continua Formulación y Ejemplos Resolución gráfica Resolución del problema: algoritmo del Simplex Inicialización: Método de las dos fases Fase I Construir un problema auxiliar relacionado con el problema original que cumpla: X Es trivial encontrar una SBF inicial (B = Im Base Factible) X Su solución nos permite contestar a las preguntas anteriores: Problema original factible ⇒ proporciona un vértice del problema original Problema original no factible ⇒ nos avisa rg (A) < m en el problema original ⇒ proporciona un vértice del problema original y nos avisa Fase II Resolver el problema original empezando por la SBF encontrada al final de la Fase I. Tomar la última tabla de la fase I eliminando las columnas correspondientes a variables artificiales. Investigación Operativa Programación Lineal Continua Formulación y Ejemplos Resolución gráfica Resolución del problema: algoritmo del Simplex Inicialización: Variables artificiales y Fase I mı́n 3x1 s.a. 2x1 x1 x1 x1 , En forma estándar: mı́n 3x1 − 5x2 s.a. 2x1 − 3x2 x 1 + x2 x1 x1 , x2 , 7 b = 5 8 − 5x2 + x3 − 3x2 + x3 + x2 + 3x3 + x3 x2 , x3 ≤7 ≥5 =8 ≥ 0. + x3 + x3 + s 1 + 3x3 + x3 x3 , s1 , 2 −3 1 A = 1 1 3 1 0 1 =7 − s2 = 5 =8 s2 ≥ 0. 1 0 0 −1 0 0 Investigación Operativa Programación Lineal Continua Formulación y Ejemplos Resolución gráfica Resolución del problema: algoritmo del Simplex Inicialización: Variables artificiales y Fase I (cont.) Faltan dos vectores para tener I3 : Variables Artificiales (G. Dantzig, 1951) 2 −3 1 1 0 0 0 A = 1 1 3 0 −1 1 0 1 0 1 0 0 0 1 t t x = x1 x2 x3 s1 s2 z1 z2 La región factible del problema original se amplı́a: 2x1 − 3x2 + x3 + s1 x1 + x2 + 3x3 − s2 + z1 x1 + x3 + z2 x1 , x2 , x3 , s1 , s2 , z1 , z2 , =1 =5 =8 ≥ 0. ¿Qué tiene que ocurrir para que una solución del sistema ampliado sea una solución factible del problema original? Investigación Operativa Programación Lineal Continua Formulación y Ejemplos Resolución gráfica Resolución del problema: algoritmo del Simplex Inicialización: Variables artificiales y Fase I (cont.) Problema Auxiliar de la Fase I mı́n z1 + z2 s.a. 2x1 − 3x2 + x3 + s1 x1 + x2 + 3x3 − s2 + z1 x1 + x3 + z2 x1 , x2 , x3 , s1 s2 , z1 z2 Su solución nos permite contestar a las preguntas anteriores: X El Simplex termina con una solución óptima (x1∗ , x2∗ , x3∗ , s1∗ , s2∗ , 0, 0)t ⇒ X El Simplex termina con una solución óptima (x1∗ , x2∗ , x3∗ , s1∗ , s2∗ , z1∗ , z2∗ )t con z1∗ + z2∗ > 0 ⇒ Investigación Operativa Programación Lineal Continua =1 =5 =8 ≥ 0.