Investigación Operativa 2008/09 Tema 3: Método del Simplex Revisado. El método revisado o método del simples con multiplicadores: Conceptos básicos. Vector de Multiplicadores. Se basa en los mismos principios que el simplex, pero en cada iteración no se calcula toda la tabla, y la información que se necesita para pasar de una solución factible básica a otra se obtiene directamente de las ecuaciones originales. Información de interés: * Cj * columna de la v. que entra *b Ejemplo: Max Z = 3x1 + 2x2 - x1 + 2x2 + x3 = 4 3x1 + 2x2 + x4 = 14 x1 - x2 + x5 = 3 xi ≥ 0 Tabla 2 1 0 1 π = CB B-1 = (0,0,3) 0 1 -3 0 0 1 = (0,0,3) Tabla 3 1 -1/5 3/5 π = CB B-1 = (0,2,3) 0 1/5 -3 0 1/5 2/5 = (0,1,0) 15 Investigación Operativa 2008/09 CB 0 0 0 CB 0 0 3 CB 0 2 3 CB 0 2 3 Cj Base x3 x4 x5 _ Cj 3 x1 -1 3 1 2 x2 2 2 -1 0 x3 1 0 0 0 x4 0 1 0 0 x5 0 0 1 b 4 14 3 3 2 0 0 0 Z=0 Base x3 x4 x1 _ Cj x1 0 0 1 x2 1 5 -1 x3 1 0 0 x4 0 1 0 x5 1 -3 1 b 7 5 3 0 5 0 0 -3 Z=9 Base x3 x2 x1 _ Cj x1 0 0 1 x2 0 1 0 x3 1 0 0 x4 -1/5 1/5 1/5 x5 8/5 -3/5 2/5 b 6 1 4 0 0 0 -1 0 Z = 14 Base x5 x2 x1 _ Cj x1 0 0 1 x2 0 1 0 x3 5/8 3/8 -1/4 x4 -1/8 1/8 1/4 x5 1 0 0 b 15/4 13/4 5/2 0 0 0 -1 0 Z = 14 16 Investigación Operativa 2008/09 Desarrollo del método. El método del simplex revisado trabaja con la idea fundamental de que cualquier tabla del simplex correspondiente a una solución factible básica puede generarse directamente de las ecuaciones originales por medio de operaciones matriciales. Max (o Min) Z = Cx Ax = b x≥0 C = (C1, C2, ..., Cn) 1xn x= x1 ... xm nx1 xn A= A= a11 a21 ... a12 a22 ... ... ... ... a1n a2n ... mxn b= b1 b2 ... am1 am2 ... amn m<n bm [ P1 P2 … Pn ] Pi = mx1 a1i a2i … ami mx1 ∀i = 1, ..., n Supongamos que tenemos una solución factible con variables básicas x1 ... xm La matriz básica B será: B = (P1 ... matrix m x m xB x= xN a11 a21 Pm) = ... am1 ≡ x1 x2 … xm xm+1 … xn a12 a22 ... am2 ... ... ... ... a1m a2m ... amm xB ≡ variables básicas xN ≡ variables no básicas = 0 17 Investigación Operativa 2008/09 _ b1 __ _ b2 -1 La solución básica actual es xB = b =B b = __ bm y xN = ... ( 0 ). _ b xB Z = C•x = (CB CN) = (CB, CN) xN _ = CB xB + CN xN = CB b 0 y cualquier columna: _ _ Pj = B-1 Pj ∀j de las variables no básicas Se llama vector de multiplicadores al vector π = (π1, π2, ..., πm) π = CB B-1 (mxm) (1xm) A partir de este vector, se pueden calcular los beneficios relativos: Cj = Cj - CBPj = Cj - CBB-1Pj = Cj - πPj ∀j de variables no básicas 18 Investigación Operativa 2008/09 Ejemplo: Min Z = -3x1 + x2 + x3 sujeto a x1 – 2x2 + x3 ≤ 11 -4x1 + x2 + 2x3 ≥ 3 2x1 - x3 = -1 xi ≥ 0 Min Z = -3x1 + x2 + x3 + Mx6 + Mx7 x1 - 2x2 + x3 + x4 = 11 -4x1 + x2 + 2x3 – x5 + x6 =3 -2x1 + x3 + x7 = 1 xi ≥ 0 A= [ P1 P1 = 1 -4 -2 P7 = 0 0 1 P2 … P2 = -2 1 0 b= 11 3 1 P6 ] P3 = 1 2 1 P4 = 1 0 0 Base inicial { x4, x6, x7} ⇒ B = (P4 P6 P7) = P5 = 0 -1 0 P6 = 1 0 0 0 1 0 0 0 1 _ b = B-1b = b -1 B =I La tabla 1 del método del simplex revisado será: Base x4 x6 x7 1 0 0 B-1 0 1 0 0 0 1 _ b 11 3 1 A completar más adelante π = (π1, π2, π3) = CBB-1= (C4, C6, C7) B-1 = (0, M, M)•I = (0, M, M) Los beneficios relativos de las variables no básicas: _ Cj = Cj - πPj j = 1, 2, 3, 5 19 0 1 0 Investigación Operativa 2008/09 _ C1 = -3 – (0, M, M) 1 -4 -2 = -3 + 6M _ C2 = 1 – (0, M, M) -2 1 0 =1–M _ C3 = 1 – (0, M, M) 1 2 1 = 1 – 3M _ C5 = 0 – (0, M, M) 0 -1 0 =M Entra x3 en la base. La columna pivote es: 1 P3 = B P3 = 0 0 0 1 0 −1 0 0 1 1 2 1 1 2 1 = Tabla 1. x4 x6 x7 _ b 11 3 1 B-1 Base 1 0 0 0 1 0 0 0 1 _ Columna pivote P3 1 2 1 Var. que entra x3 Regla mínima proporción min{11/1, 3/2, 1/1} ⇒ sale x7 Nueva base {x4, x6, x3} ⇒ B = [P4 P6 P3] = -1 ⇒B = _ 11 -1 -1 b=B b=B 3 1 1 0 0 0 1 0 = 10 1 1 -1 -2 1 20 1 0 0 0 1 0 1 2 1 ⇒ Investigación Operativa 2008/09 _ b 10 1 1 B-1 Base x4 x6 x3 1 0 0 0 1 0 -1 -2 1 π = CBB-1 = (C4, C6, C3)•B-1 = (0, M, 1)•B-1 = (0, M, -2M+1) _ 1 C1 = -3 - (0, M, -2M+1) -4 -2 _ C2 = 1 – M = -1 _ C5 = M _ entra x2 en la base P2 = B-1 P2 = B-1 -2 1 0 = -2 1 0 Tabla 2. B-1 Base x4 x6 x3 1 0 0 0 1 0 0 0 1 _ b 10 1 1 _ P2 -2 1 0 var que entra x2 Regla mínima proporción min{10/-2, 1/1, 1/0} ⇒ sale x6 -1 Nueva base {x4, x2, x3} ⇒ B = [P4 P2 P3] ⇒ B = _ b = B-1b = 12 1 1 B-1 Base x4 x2 x3 π = (0, 0, 1) 1 0 0 1 0 0 2 1 0 2 1 0 -5 -2 1 -5 -2 1 _ b 12 1 1 = (0, 1, -1) 21 1 0 0 2 1 0 -5 -2 1 Investigación Operativa 2008/09 _ C1 = -1 ⇒ entra x1 _ P1 = 1 0 0 2 1 0 -5 -2 1 1 -4 -2 3 0 -2 = _ C5 = 1 Tabla 3. B-1 Base x4 x2 x3 1 0 0 2 1 0 -5 -2 1 _ b 12 1 1 Var que entra x1 _ P1 3 0 -2 Nueva base {x1, x2, x3} Tabla 4. B-1 Base 1 x1 x2 x3 2 -5/3 -2 -7/3 /3 1 4 /3 -5/3 -2 -7/3 /3 0 2 /3 1 /3 π = (-3, 1, 1) 0 2 /3 _ C4 = 1/3 _ C5 = 1/3 /3 1 4 /3 2 _ b 4 1 9 = [-1/3, 1/3, 2/3] Por lo tanto, la tabla 4 es óptima y la solución óptima es: x1 = 4 x2 = 1 x3 = 9 x4 = x5 = 0 _ 4 Z = CB•b = (-3, 1, 1) 1 9 = -2 22 Investigación Operativa 2008/09 Ventajas del método revisado del Simplex doble el método del Simplex regular. 1. El simplex revisado trabaja sobre una tabla cuyo tamaño lo determina el número de restricciones. 2. Si se calcula B-1 en cada iteración directamente de los datos del principio, no se acumulan errores de redondeo. 3. Los conceptos teóricos del método ayudan a entender conceptos de teoría de la dualidad y análisis de sensibilidad. 23 Investigación Operativa 2008/09 Tema 4: Teoría de la Dualidad. 2x1 La teoría de la dualidad se centra en el hecho de que, asociado a cualquier problema de programación lineal, existe otro problema de programación lineal que se llama su dual, de manera que al resolver el primero se resuelve también el segundo sin coste computacional adicional. Problemas primal-dual simétrico. Propiedades y relaciones de los problemas primal y dual. Un problema de programación lineal está escrito en forma simétrica si todas las variables son no negativas, y todas las restricciones son desigualdades (si el problema es de maximizar, con ≤, y si es de minimizar, con ≥). PRIMAL Max Z = Cx Ax ≤ b x≥0 Min Z = Cx Ax ≥ b x≥0 Max Z = (C1, C2, …, Cn) x1 … xn a11 a21 ... am1 x1 x2 … xn x1 x2 … xn a12 a22 ... am2 ... ... ... ... a1n a2n ... amn ≤ b1 b2 ... bm ≥0 24 Investigación Operativa 2008/09 DUAL Min W = by yA ≥ C y = (y1, y2, …, ym) y≥0 ↓ Min W = b1y1 + b2y2 + … + bmym a11y1 + a21y2 + ... + am1ym ≥ C1 a12y1 + a22y2 + ... + am2ym ≥ C2 ... ... ... ... … a1ny1 + a2ny2 + ... + amnym ≥ Cn y1, y2, …, ym ≥ 0 1. 2. 3. 4. 5. 6. Reglas generales de construcción del problema dual. Definir una variable dual no negativa por cada restricción del problema primal. Hacer que el vector de costes del problema primal pase a ser el vector de las constantes de la derecha del problema dual. Hacer que el vector de constantes de la derecha del primal sea el vector de costes del dual. La traspuesta de la matriz de coeficientes del primal es la matriz de coeficientes del dual. Invertir la dirección de las desigualdades de las restricciones. Invertir Maximizar por Minimizar (y viceversa). Problema Primal Max Z = Cx Ax ≤ b x≥0 Problema Dual Min W = by yA ≥ C siendo A la matriz y ≥ 0 traspuesta de la matriz A del problema primal (y٠A ⇔ At٠yt) Amxn x n variables b m restricciones y m variables C n restricciones Teoremas de la dualidad. Teorema 1 (Teorema débil de la dualidad). Consideremos los problemas de programación lineal primal-dual simétricos: Max Z = Cx Ax ≤ b x≥0 ↔ Min W = yb yA ≥ C y≥0 25 Investigación Operativa 2008/09 Se tiene que el valor de la función del objetivo del problema dual (para toda solución factible del dual) es siempre mayor o igual que el valor de la función del objetivo primal (en cualquier solución factible del problema primal). Demostración. Sean x0 e y0 solución factible del primal y dual, respectivamente x0 solución factible del problema primal ⇒ Ax0 ≤ b (1) x0 ≥ 0 y0 solución factible del problema dual ⇒ y0A ≥ C (2) y0 ≥ 0 (la solución factible cumple las restricciones) (1) ⇒ y0Ax0 ≤ y0b (2) ⇒ y0Ax0 ≥ Cx0 Entonces (pues y0 ≥ 0) (pues x0 ≥ 0) Cx0 ≤ y0Ax0 ≤ y0b Z0 (primal) W0 (dual) (Z y W funciones objetivo) Corolarios. 1) El valor de la función del objetivo Z del problema primal para cualquier solución factible del primal es una cota inferior para el valor mínimo de la función del objetivo dual. 2) Análogamente, el valor de la función del objetivo del problema dual para cualquier solución factible es una cota superior para el valor máximo de la función del objetivo primal. 3) Si el problema primal tiene solución no acotada entonces el problema dual no tiene ninguna solución factible. 4) Análogamente, si el problema dual tiene solución no acotada entonces el primal no tiene ninguna solución factible. 5) Si el problema primal tiene solución, y el dual no, entonces el primal es no acotado. 6) Si el problema dual tiene solución, y el primal no, entonces el dual es no acotado. 7) Si el primal no tiene solución ⇒ el problema dual no tiene solución o es no acotado. 8) Si el problema dual no tiene solución ⇒ el problema primal no tiene solución o es no acotado. 26 Investigación Operativa 2008/09 Ejemplo 1. Primal Dual Max Z = x1 + 2x2 + 3x3 + 4 x4 Sujeto a x1 + 2x2 + 2x3 + 3x4 ≤ 20 2x1 + x2 + 3x3 + 2x4 ≤ 20 xi ≥ 0 Min W = 20y1 + 20y2 Sujeto a y1 + 2y2 ≥ 1 2y1 + y2 ≥ 2 2y1 + 3y2 ≥ 3 3y1 + 2y2 ≥ 3 yi ≥ 0 ej. x0 = (x10, x20, x30, x40) (1, 1, 1, 1) Æ Z (x0) = 10 cualquier solución factible del problema dual verifica W ≥ 10 ⇒ Wopt ≥ 10 Ejemplo 2. Primal Dual Max Z = x1 + x2 - x1 + x2 + x3 ≤ 2 -2x1 + x2 - x3 ≤ 1 xi ≥ 0 Min W = 2y1 + y2 - y1 + 2y2 ≥ 1 y1 + y2 ≥ 1 y 1 - y2 ≥ 0 yi ≥ 0 El primal tiene solución (por ejemplo x0 = (0, 0, 0) es una solución factible del primal). Pero el dual no tiene ninguna solución factible (si yi ≥ 0, - y1 - 2y2 siempre ≤ 0). Por el corolario 5, el primal tiene solución no acotada. Ejemplo 3. Primal Dual Min Z = -2x1 – 3x2 x1 - x2 ≥ 2 - x1 + x 2 ≥ 1 x1, x2 ≥ 0 Max W = 2y1 + y2 y1 - y2 ≤ -2 - y1 + y2 ≤ -3 yi≥ 0 27 Investigación Operativa 2008/09 Ambos, primal y dual, no tienen soluciones factibles (corolarios 7 y 8). Teorema 2 (Criterio de optimalidad). Si existen soluciones factibles x0 e y0 para el problema primal y dual, respectivamente, tales que Cx0 = y0b ⇒ x0 e y0 son soluciones óptimas del problema primal y dual, respectivamente. Demostración (ejercicio) Primal En el Ejemplo 1 Max Z = x1 + 2x2 + 3x3 + 4 x4 Sujeto a x1 + 2x2 + 2x3 + 3x4 ≤ 20 2x1 + x2 + 3x3 + 2x4 ≤ 20 xi ≥ 0 Dual Min W = 20y1 + 20y2 Sujeto a y1 + 2y2 ≥ 1 2y1 + y2 ≥ 2 2y1 + 3y2 ≥ 3 3y1 + 2y2 ≥ 3 yi ≥ 0 si tomamos: x0 = (0, 0, 4, 4) Z0 = 28 y0 = (1’2, 0’2) W0 = 28 x0 e y0 óptimas del primal y dual respectivamente Teorema 3 (Teorema fundamental de la dualidad). Si el problema primal y el dual tienen soluciones factibles, entonces los dos tienen soluciones óptimas cuyos valores de la función objetivo coinciden. Teorema 4 (Teorema de las holguras complementarias). Sean x0 e y0 soluciones factibles del problema primal y dual: Max Z = Cx Min W = yb Ax ≤ b yA ≥ C x≥0 y≥0 x0 e y0 son soluciones óptimas ⇔ (y0A – C)x0 + y0(b – Ax0) = 0 Demostración. (y0A - C)x0 + y0(b - Ax0) = 0 ⇔ y0Ax0 – Cx0 + y0b – y0Ax0 = 0 ⇔ - Cx0 + y0b = 0 ⇔ Cx0 = y0 b 28 Investigación Operativa 2008/09 Entonces x0 e y0 óptimas ⇔ Cx0 = y0b “⇒” por el teorema 3 de la dualidad “⇐” por el teorema 2 Condiciones de holguras complementarias. Supongamos x0 solución factible del problema primal e y0 solución factible del problema dual: Ax0 ≤ b n variables y0A ≥ C m variables x0 ≥ 0 m ecuaciones y0 ≥ 0 n ecuaciones ⇕ 0 x1 x20 A٠ … xn0 ≤ ⇕ b1 b2 … bm (y10, y20 , …, ym0)A ≥ (C1, C2, …, Cn) Si lo escribimos con holguras: x10 x20 A٠ … xn0 + U1 0 U2 0 … Um 0 b1 b2 … bm = (*) siendo Ui0 ≥ 0 ∀i = 1, 2, …, m el vector de holguras (y10, y20 , …, ym0)A – (V10, V20, …, Vn0) = (C1, C2, …, Cn) siendo Vi0 ≥ 0 ∀i = 1, 2, …, n el vector de holguras (*) (**) (**) Ax0 + U0 = b ⇒ U0 = b - Ax0 y0A – V0 = C ⇒ V0 = y0A - C El teorema 4 dice: x0 e y0 son soluciones óptimas óptimas ⇔ (y0A - C)x0 + y0(b - Ax0) = 0 ⇔ V0x0 + y0U0 = 0 ⇔ ⇔ (V10, V20, …, Vn0) x1 0 x2 0 … xn 0 + (y10, y20 , …, ym0) U1 0 U2 0 … Um 0 n m Vj 0xj 0 = 0 j=1…n j=1 j=1 yj 0Uj 0 = 0 j=1…m ⇔ ∑ Vj 0xj 0 + ∑ yj 0Uj 0 = 0 ⇔ Vj 0 ٠ xj 0 = 0 v. primal j-ésima holgura dual j-ésima yj 0Uj 0 = 0 v. dual j-ésima 29 =0⇔ sistema o condiciones de holguras complementarias holgura primal Investigación Operativa 2008/09 1) 2) 3) 4) Se obtiene: Si xj 0 > 0 ⇒ Vj 0 = 0 Si Vj 0 > 0 ⇒ xj 0 = 0 Si yj 0 > 0 ⇒ Uj 0 = 0 Si Uj 0 > 0 ⇒ yj 0 = 0 Ejemplo 1: Max Z = x1 + 2x2 + 3x3 + 4 x4 Sujeto a → x1 + 2x2 + 2x3 + 3x4 + U1 = 20 → 2x1 + x2 + 3x3 + 2x4 + U2 = 20 x1 + 2x2 + 2x3 + 3x4 ≤ 20 2x1 + x2 + 3x3 + 2x4 ≤ 20 xi ≥ 0 xi, Ui ≥ 0 Min W = 20y1 + 20y2 Sujeto a y1 + 2y2 ≥ 1 2y1 + y2 ≥ 2 2y1 + 3y2 ≥ 3 3y1 + 2y2 ≥ 3 yi ≥ 0 → y1 + 2y2 - V1 = 1 → 2y1 + y2 - V2 = 2 →2y1 + 3y2 - V3 = 3 →3y1 + 2y2 - V4 = 4 La solución óptima del dual es: yi, Vi ≥ 0 y10 = 1’2 y20 = 0’2 W0 = 28 Condiciones de holgura complementarias: U1 0 y10 = 0 U2 0 y20 = 0 x1 0 V10 = 0 x2 0 V20 = 0 x3 0 V30 = 0 x4 0 V40 = 0 y10 = 1’2 > 0 ⇒ U1 0 = 0 y20 = 0’2 > 0 ⇒ U2 0 = 0 y10 + y20 = 1’6 > 1 ⇒ V10 > 0 ⇒ x1 0 = 0 2y10 + y20 = 2’6 > 2 ⇒ V20 > 0 ⇒ x2 0 = 0 2y10 + 3y20 = 3 ⇒ V30 = 0 ⇒ x3 0 ≥ 0 3y10 + 2y20 = 4 ⇒ V40 = 0 ⇒ x4 0 ≥ 0 Y nos queda del sistema de ecuaciones del problema primal: 2x3 0 + 3x4 0 = 20 x3 0 = 4 3x3 0 + 2x4 0 = 20 x4 0 = 4 30 Investigación Operativa 2008/09 x0 = (0, 0, 4, 4) Zopt = 28 (que tiene que coincidir con el valor óptimo de la función objetivo dual) Problemas asimétricos primal-dual. Consideremos un problema de programación lineal no simétrico, por ejemplo: Primal Max Z = 2x1 – 3x2 Sujeto a 6x1 – 3x2 ≤ 15 2x1 + 3x2 ≥ 5 - x1 + 4x2 = -1 x1 cq signo, x2 ≤ 0 Cualquier problema no simétrico puede convertirse en uno equivalente que sí lo sea Max Z = Cx Ax ≤ b x≥0 x1 = x1' – x2' x2 = - x3' - x1 + 4x2 = -1 ⇒ x1', x2' ≥ 0 x3 ' ≥ 0 - x1 + 4x2 ≥ -1 Æ x1 - 4x2 ≤ 1 - x1 + 4x2 ≤ -1 2x1 + 3x2 ≥ 5 Æ - 2x1 – 3x2 ≤ -5 Max Z = 2x1' – 2x2' – 3x3' Sujeto a 6x1' – 6x2' + 3x3' ≤ 15 -2x1' + 2x2' + 3x3' ≤ -5 x1' - x2' + 4x3' ≤ 1 - x1' + x2' - 4 x3' ≤ -1 xi'≥ 0 Dual Min W = 15w1 - 5w2 – w3 + w4 Sujeto a 6w1 – 2w2 + w3 - w4 ≥ 2 -6w1 + 2w2 - w3 + w4 ≥ -2 3w1 + 3w2 + 4w3 – 4w4 ≥ 3 wi ≥ 0 Min W = wb wA ≥ C w≥0 Llamamos y1 = w1 ≥ 0 y2 = - w2 ≤ 0 y3 = w3 - w4 ≥ 0 31 Investigación Operativa 2008/09 Min W = 15y1 + 5y2 – y3 Sujeto a 6y1 + 2y2 + y3 ≥ 2 -6y1 – 2y2 - y3 ≥ -2 3y1 – 3y2 + 4y3 ≥ 3 Min W = 15y1 + 5y2 – y3 6y1 + 2y2 + y3 = 2 3y1 – 3y2 + 4y3 ≥ 3 y1 ≥ 0, y2 ≤ 0, y3 cq signo 6y1 + 2y2 + y3 = 2 3y1 – 3y2 + 4y3 ≥ 3 Max Z = 2x1 – 3x2 6x1 – 3x2 ≤ 15 2x1 + 3x2 ≥ 5 - x1 + 4x2 = -1 x1 cq signo, x2 ≤ 0 PRIMAL (Maximizar) DUAL (Minimizar) ٠ A matriz de coeficientes ٠ Traspuesta ٠ Vector de constantes de la ٠ Vector de coeficientes de la f. derecha objetivo ٠ Vector de coeficientes de la f. ٠ Vector de constantes de la objetivo derecha ٠ i-ésima restricción con = ٠ Variable i-ésima de cualquier signo ٠ i-ésima restricción con ≤ ٠ Variable i-ésima ≥ 0 ٠ i-ésima restricción con ≥ ٠ Variable i-ésima ≤ 0 ٠ Variable j de cualquier signo ٠ Restricción j con = ٠ Variable j ≥ 0 ٠ Restricción j con ≥ ٠ Variable j ≤ 0 ٠ Restricción j con ≤ 32 Investigación Operativa 2008/09 Ejercicio 1. Primal Max Z = x1 + 4x2 + 3x3 2x1 + 3x2 – 5x3 ≤ 2 3x1 - x2 + 6x3 ≥ 1 x1 + x2 + x3 = 4 x1 ≥ 0, x2 ≤ 0, x3 cq signo Dual Min W = 2y1 + y2 + 4y3 2y1 + 3y2 + y3 ≥ 1 3y1 - y2 + y3 ≤ 4 -5y1 + 6y2 + y3 = 3 y1 ≥ 0, y2 ≤ 0, y3 cq signo Ejercicio 2. Primal Min Z = 2x1 + x2 - x3 x1 + x2 - x3 = 1 x1 - x2 + x3 ≥ 2 x2 + x3 ≤ 3 x1 ≥ 0, x2 ≤ 0, x3 cq signo Dual Max W = y1 + 2y2 + 3 y3 y1 + y2 ≤ 2 y1 - y2 + y3 ≥ 1 -y1 + y2 + y3 = -1 y1 cq signo, y2 ≥ 0, y3≤ 0 Los teorema del 1 al 4 de la teoría de la dualidad también se aplican a los problemas asimétricos, con las modificaciones correspondientes. En el Ejercicio 2: x1 0 = 2 x2 0 = 0 solución factible primal 0 x3 = 1 y10 = 1 y20 = 0 y30 = 0 solución factible dual Por el teorema 1 de la dualidad Z0 ≥ W0 ⇒ Cx0 = 3 > y0b = 1 En el Ejercicio 1: x1 0 = 0 33 Investigación Operativa 2008/09 x2 0 = 0 x3 0 = 4 Z0 = 12 solución factible primal y1 0 = 0 y20 = 0 y30 = 3 W0 = 12 Por el teorema 2 ambas son soluciones óptimas. Si el problema viene en forma estándar: Max Z = Cx (Min) su dual es Ax = b x≥0 Min W = yb yA ≥ C y cq signo Max W = yb yA ≤ C y cq signo 34 Investigación Operativa 2008/09 Cálculo de la solución óptima del problema dual a partir de la tabla óptima del problema primal. Consideremos el problema de programación lineal en forma estándar: Min Z = Cx (dual) Max W = yb Ax = b yA ≤ C x≥0 y cq signo xB Sea x0 = la solución óptima del primal. xN xB = B-1b, siendo B la base óptima _ Cj = Cj – πPj ≥ 0 ∀j por ser solución óptima donde π = CBB-1 En notación matricial C – πA ≥ 0 ⇔ πA ≤ C ⇒ el vector π es una solución factible del problema dual. Además W(π) = πb = CBB-1b = CBxB = Zóptimo ⇒ π es óptima del problema dual. 35 Investigación Operativa 2008/09 Ejemplo: Primal Min Z = -3x1 + x2 + x3 x1 - 2x2 + x3 ≤ 11 -4x1 + x2 + 2x3 ≥ 3 -2x1 + x3 = 1 xi ≥ 0 Dual Max W = 11y1 + 3y2 + y3 y1 - 4y2 – 2 y3 ≤ - 3 -2y1 + y2 ≤1 y1 + 2y2 + y3 ≤ 1 y1 ≤ 0, y2 ≥ 0, y3 cq signo Resolvemos el problema primal: la solución óptima es B = [P1 P2 P3] x1 = 4 x2 = 1 x3 = 9 Z0 = -2 -1 1 1 -2 1 /3 2/3 -5/3 π = CBB-1 = (-3, 1, 1) -4 1 2 = (-3, 1, 1) 0 1 -2 = [-1/3, 1/3, 2/3] 2 4 -2 0 1 /3 /3 -7/3 Se comprueba que π es solución factible del problema dual y que W(π) = 11(-1/3) + 3(1/3) + 1(2/3) = -2 36 Investigación Operativa 2008/09 Cómo ver la solución dual óptima en la tabla óptima del simplex del problema primal. _ Base Solución (b) • • • _ Cj Sean {i1, i2, …, im} los índices de las variables básicas de la primera tabla del Simplex: 1ª tabla … Base xi1 xi2 … xim x1 ٠ ٠ … ٠ x2 ٠ ٠ … ٠ xi1 1 0 … 0 xi2 0 1 … 0 … xim 0 0 … 1 _ xn ٠ ٠ … ٠ En cualquier tabla, B-1 aparece en las columnas de las variables básicas iniciales. En particular, en la última tabla: Base xi1 xi2 _ _ … xim _ … Ci1 _ _ Ci2 _ 37 b Cim Investigación Operativa 2008/09 (Ci1, Ci2, …, Cim) = (Ci1, Ci2, …, Cim) – π[Pi1 … Pim] ⇒ 1 0 ⇒ (Ci1, Ci2, …, Cim) – π … 0 0 1 … 0 … … … … 0 0 _ _ _ … ⇒ π = (Ci1, Ci2, …, Cim) – (Ci1, Ci2, …, Cim) 1 Tema 5: Método del Simplex Dual. Conceptos fundamentales. Bases factibles dual y primal. Consideremos un problema de programación lineal estándar: Min Z = Cx Ax = b x≥0 Amxn x= b= b1 … bm A = (P1 … Pn) C = (C1, …, Cn) x1 … xn m<n Sea B ⊂ A una submatriz de A formada por m columnas de A linealmente independientes. Se dice que B es una base factible primal (o base factible del problema primal) si B-1b ≥ 0. Sea B ⊂ A una submatriz de A formada por m columnas de A linealmente independientes. Se dice que B es una base factible dual (o base factible del problema dual) si: C – CBB-1A ≥ 0 (C – CBB-1A ≤ 0 si el p. primal fuese de maximizar) Consecuencias de las definiciones. • Que B sea factible primal significa que se le puede asociar una solución: x= xB xN con xB = B-1b ≥ 0 • Que B sea factible dual significa que C – CBB-1A ≥ 0 ⇒ C ≥ CBB-1A. 38 Investigación Operativa 2008/09 Llamando yB = CBB-1 → C ≥ yBA ⇔ yBA ≤ C ⇒ yB así definida es una solución factible del problema dual. Además C – yBA ≥ 0 como los beneficios relativos del problema primal se calculan como _ C = C – πA, = C – CBB-1A = C – yBA ≥ 0 ⇒ xB = B-1b es una solución factible y óptima del problema primal. Luego como Wo = yBb = CBB-1 = CBxB = Zopt yB y xB son soluciones óptimas del primal y dual. Resumiendo, si una matriz B es a la vez una base factible primal y dual, sus soluciones asociadas xB = B-1b e yB = CBB-1 son óptimas del primal y dual, respectivamente. Desarrollo del método dual del Simplex. Consideremos el ejemplo Min Z = x1 + 4x2 + 3x4 Sujeto a: x1 + 2x2 – x3 + x4 ≥ 3 -2x1 - x2 + 4 x3 + x4 ≥ 2 xi ≥ 0 Introducimos variables de holgura x5 y x6: x1 + 2x2 – x3 + x4 - x5 = 3 -2x1 - x2 + 4 x3 + x4 - x6 = 2 xi ≥ 0 Multiplicamos por -1: -x1 - 2x2 + x3 - x4 + x5 = -3 2x1 + x2 - 4 x3 - x4 + x6 = -2 xi ≥ 0 CB 0 0 Cj base x5 x6 _ 1 x1 -1 2 4 x2 -2 1 0 x3 1 -4 3 x4 -1 -1 0 x5 1 0 0 x6 0 1 Cj 1 4 0 3 0 0 b -3 -2 _ B = [P5 P6] = I ⇒ B = I ⇒ b = B b ≱ 0 pero C - CBB ª = C = (1,4,0,3,0,0) ≥ 0 -1 -1 -1 Luego B no es factible primal (porque ≱ 0), pero sí factible dual. _ _ Si tenemos, por tanto, una tabla del Simplex Dual donde Cj ≥ 0 y b ≥ 0 ⇒ estaríamos ante la solución óptima. 39 Investigación Operativa 2008/09 Situación general. _ Base x1 … xr … xm xm+1 … xs … xn b _ x1 1 y1,m+1 … y1s … y1n 0 … b1 … _ xr 1 yr,m+1 … yrs … yr n br Alguno menor que cero 0 … _ xm 1 yn,m+1 … yns … ymn bm _ _ _ _ ≥0 Cj 0 0 0 Cm+1 … Cs … Cn (min) El método del simplex dual va a calcular una solución factible básica dual adyacente, reemplazando una variable básica por una variable no básica. 1. Selección de la variable básica que deja la base. _ Se elige la variable básica con el mayor valor negativo bi. Sea br = min {bi} ⇒ xr deja la base, y la fila r es la fila pivote. bi < 0 2. Selección de la variable no básica que entra en la base (Regla de la máxima proporción). 40 Investigación Operativa 2008/09 Entra en la base xs tal que c cs = max j yrs y rj < 0 yrj y el valor yrs es el pivote para construir la nueva tabla. En nuestro ejemplo: _ 1) El mayor valor negativo de los bi es -3 ⇒ x5 deja la base _ _ 2) Variable no básica yij Cj Cj/yij x1 -1 1 -1 x2 -2 4 -2 x4 -1 3 -3 max {-1, -2, -3} = -1 ⇒ x1 entra en la base y el pivote es -1. Aquí el pivote es negativo. 41 Investigación Operativa 2008/09 Tabla 2 del m.s.d. Cj 1 4 0 3 0 0 _ CB base x1 x2 x3 x4 x5 x6 1 0 x1 x6 _ 1 0 2 -3 -1 -2 1 -3 -1 2 0 1 Cj 0 2 1 2 1 0 sale x6 proporciones: x2 x3 x4 _ Cj 2 1 2 yij -3 -2 -3 b 3 -8 -2/3 = -0’66 -1/2 = -0’5 -2/3 = -0’66 max {-0’66, -0’5} = -0’5 ⇒ entra x3 y el pivote es -2. Tabla 3 del m.s.d. _ CB base x1 x2 x3 x4 x5 x6 1 0 x1 x3 _ 1 0 7 0 1 5 -2 -1 -1/2 -1/2 2 1 /2 3 /2 /2 3 /2 1 1 0 0 /2 /2 _ _ Tabla óptima ⇔ Cj y b ≥ 0 Solución óptima del problema de programación lineal. Cj /2 b 7 4 ≥0 ≥0 Z=7 OBSERVACIONES. 1.-) Resolución de problemas de maximización por el método del simplex dual. *La regla de salida es igual * Cambia la regla de entrada, que ahora va a ser de la mínima proporción Entra en la base xs tal que cj cs = min yrs yrj <0 yrj 2.-) ¿Qué sucede si falla el criterio de entrada? Es decir, todos los yij de la fila de la variable que sale son ≥ 0. Entonces el problema no tiene solución. ¿Por qué: ejercicio? 42 Investigación Operativa 2008/09 3.-) ¿Cómo se puede saber, utilizando el método del simplex dual, que el problema original tiene solución no acotada? Ejercicio: pensarlo usando los corolarios 1-8 del teorema 1 de la dualidad 43 Investigación Operativa 2008/09 Tema 6: Análisis de Sensibilidad y Programación Paramétrica 1. Análisis de sensibilidad. Se refiere al estudio de los cambios en la solución óptima y en el valor óptimo de Z debido a cambios en los datos del problema inicial, pero sin resolver el problema de nuevo desde el principio. Ejemplo. Una compañía fabrica 3 productos A, B y C. Los beneficios por unidad de estos productos son 2, 3 y 1 respectivamente, y para su fabricación son necesarios 2 recursos: trabajo y material. Supongamos que los valores óptimos a fabricar de los productos A, B y C se obtienen resolviendo el problema: Max Z = 2x1 + 3x2 + x3 1 Sujeto a: /3x1 + 1/3x2 + 1/3x3 ≤ 1 1 /3x1 + 4/3x2 + 7/3x3 ≤ 3 xi ≥ 0 (trabajo) (material) xi ≡ “unidades a fabricar del producto i” Cj 2 3 1 0 0 CB base x1 x2 x3 x4 x5 0 0 x4 x5 _ 1 1 1 /3 7 /3 1 0 0 1 b 1 3 3 1 0 0 Z=0 /4 /4 0 1 -1/4 7 /4 1 0 -1/4 3 /4 /4 0 -17/4 0 -9/4 Z = 27/4 x1 x2 _ 1 0 0 1 -1 2 4 -1 -1 1 1 2 Cj 0 0 -3 -5 -1 Z=8 Tabla1 _ Cj /3 1 /3 2 /3 4 /3 Tabla2 0 3 x4 x2 _ 1 Cj 5 1 1 9 /4 /4 Tabla3 2 3 x1 = 1 x2 = 2 Zopt = 8 Solución óptima 44 Investigación Operativa 2008/09 1 P1 = 1 /3 /3 1 P2 = 4 /3 /3 1 P3 = 7 /3 /3 1 P4 = 0 0 P5 = 1 C = (2,3,1,0,0) 1 b= 3 Max Z = Cx Ax = b x≥0 C = (C1, C2, ..., Cn) 1xn x= x1 ... xm nx1 xn A= A= a11 a21 ... a12 a22 ... ... ... ... a1n a2n ... mxn b= b1 b2 ... am1 am2 ... amn m<n bm [ P1 P2 … Pn ] Pi = a1i a2i … ami mx1 mx1 ∀i = 1, ..., n Supongamos que tenemos una solución factible obtenida a partir de una base B La solución básica xB = b = B −1b Z = CBb cualquier columna: 45 Investigación Operativa 2008/09 Pj = B −1Pj ∀j de las variables no básicas π = CB B-1 Los beneficios relativos: c j = c j − πPj = c j − cB B −1Pj = c j − cB Pj 46 ∀j de variables no básicas Investigación Operativa 2008/09 1. Modificaciones en los coeficientes de la función del objetivo. 1.1 Cambio en el Cj de una variable no básica. Variable no básica de interés → x3 (forma parte del problema pero no está en la base) _ _ C3 = -3 Mientras C3<0 la solución actual (x1 y x2 en la base) sigue siendo óptima _ _ -1 C3 = C3 – CBP3 = C3 - (2,3) = C3 - 4 2 columna de x3 en la tabla óptima _ C3 = C3 - 4 ≤ 0 ⇔ C3 ≤ 4 ⇒ si C3 > 4 entra x3 en la base _ Si, por ejemplo C3 = 6 ⇒ C3 = 2 y haríamos una tabla más: _ base CB 2 6 x1 x2 x3 x4 x5 x1 x3 _ 1 0 1 /2 /2 0 1 7 /2 -1/2 1 - /2 1 /2 b 2 1 Cj 0 -1 0 -4 -2 Z = 10 1 óptima 1.2 Cambio en el Cj de una variable básica. Analicemos, por ejemplo, como se altera la tabla óptima modificando C1: _ _ x1 y x2 están en la base ⇒ C1 = C2 = 0 _ _ C3 = C3 - CBP3 = 1 – (C1,3) -1 2 _ 4 C4 = 0 – (C1,3) -1 = -4C1 + 3 _ -1 C5 = 0 – (C1,3) 1 = C1 - 3 = C1 - 5 47 Investigación Operativa 2008/09 _ _ _ La tabla 3 seguirá siendo óptima mientras C3, C4 y C5 ≤ 0 (estamos maximizando). _ C3 ≤ 0 ⇔ C1 - 5 ≤ 0 ⇔ C1 ≤ 5 _ C1 ≤ 0 ⇔ -4C1 + 3 ≤ 0 ⇔ C1 ≥ 3/4 _ C5 ≤ 0 ⇔ C1 - 3 ≤ 0 ⇔ C1 ≤ 3 ⇒ si C1 ∈ [3/4,3] la tabla 3 sigue siendo óptima, si nos salimos del intervalo [3/4,3] la tabla ya no es óptima ≤5 ≥ 3/4 0 ≤3 3 /4 3 5 Si, por ejemplo C1 = 1 la solución de la tabla 3 (x1 = 1, x2 = 2) sigue valiendo, _ 1 pero cambia Zopt = CBb = (1,3) =7 2 1.3 Cambio en Cj tanto de variables básicas como no básicas. Hagamos, por ejemplo, C1=1, C2=4, C3=2 En la tabla 3 hay que cambiar _ _ _ C1 = C2 = 0 (el Ci de las variables básicas siempre es 0) _ -1 C3 = 2 – (1,4) = -5 < 0 2 _ 4 C4 = 0 – (1,4) =0 -1 _ -1 C5 = 0 – (1,4) = -3 < 0 1 La solución de la tabla 3 sigue siendo óptima. Ahora Zopt = 9 y tendríamos una solución óptima alternativa haciendo entrar a x4. Si alguno de los Ci fuese > 0 la tabla no sería óptima y habría que seguir calculando tablas. _ En general, hay que recalcular la fila de los Cj. Si la tabla deja de ser óptima, habría que continuar con el simplex. 2. Modificaciones en las constantes de la derecha de las restricciones. Como, en cada tabla del simplex: 48 Investigación Operativa 2008/09 Base = { xi1, xi2, …, xim } ⇒ B = [Pi1, Pi2, …, Pim] _ xB = b = B −1b es el vector solución Supongamos que en el problema del ejemplo se puede realizar 1 hora más de trabajo (b1 crece una unidad). b1 2 b1 = 1 → b1 = 2 b= = 3 b2 En la tabla óptima, B = (P1 P2) y _ Luego b = B-1b = 4 -1 -1 4 -1 -1 1 B = 2 5 = -1 1 3 1 Así, la nueva solución óptima es: x1 = 5 x2 = 1 x3 = 0 Zopt = 13 Entonces, por unidad aumentada en la disponibilidad del recurso 1, el beneficio que se obtiene es: 13-8 = 5 unidades. Definición- Se llama precio sombra, marginal o de equilibrio de la restricción (recurso) i al cambio que se produce en el valor de la función del objetivo por unidad aumentada en la disponibilidad del recurso i. Se prueba que los precios sombra de los recursos i = 1, …, m son la solución óptima opt yi del dual i = 1, …, m En nuestro caso: (y1opt,y2opt) =π =CBB -1 4 -1 -1 1 = (2,3) = (5,1) Ahora bien, para que los precios sombra no den información errónea, debemos calcular cuál es el campo de variación de los bi en el que la solución sigue siendo óptima. Lo calculamos, por ejemplo, para b1: b1 b* = 3 Para que la tabla 3 siga siendo óptima, es preciso que B-1b* ≥ 0 4 -1 b1 4b1 – 3 4b1 – 3 ≥ 0 ⇔ b1 ≥ 3/4 -1 B b* = = ≥0 ⇔ -b1 + 3 ≥ 0 ⇔ b1 ≤ 3 -1 1 3 -b1 + 3 49 ⇒ Investigación Operativa 2008/09 ⇒ Si b1 ∈ [3/4,3] la solución seguirá siendo óptima x2 = -b1 + 3 x3 = 0 x1 = 4b1 – 3 Zopt = 2(4b1 – 3) + 3(-b1 + 3) = 5b1 + 3 Sea, por ejemplo b1 = 4, ahora B-1b = 13 -1 ≱0 La tabla 3 queda: _ base x1 x2 x3 x4 x5 x1 x2 _ 1 0 0 1 -1 2 4 -1 -1 1 Cj 0 0 -3 -5 -1 b 13 -1 Esta tabla no es factible primal, pero sí factible dual ⇒ aplicamos el Método del Simplex Dual: x2 deja la base y entra x4 _ base x1 x2 x3 x4 x5 b 9 ≥0 1 ≥0 Zopt = 18 x1 x4 3. Modificaciones en la matriz de coeficientes de las restricciones. 3.1Adición de una nueva actividad (variable). Supongamos que la compañía puede sacar a la venta un nuevo producto D, que requiere 1 unidad de trabajo y 1 unidad de material, con beneficio/unidad = 3. 1 Esto equivale a añadir una variable x6 y una columna en la tabla 1. _ 1 La tabla 3 seguirá siendo óptima si es C6 ≤ 0: _ 1 C6 = C6 – πP6 = 3 – (5,1) = -3 1 _ Luego la solución de la tabla 3 sigue siendo óptima. Si C6 > 0 se aplicaría el simples. 3.2 Variaciones en las condiciones de las variables existentes. 3.2.1 Cambios correspondientes a una variable no básica. 50 Investigación Operativa 2008/09 Se hace como en 3.1 3.2.2 Cambios correspondientes a variables básicas. Mejor resolver el problema de nuevo, porque al cambiar la matriz básica B se cambian todas las columnas de la tabla. 3.3 Adición de nuevas restricciones. Supongamos que se añade una restricción referente a los servicios administrativos, de tal modo que los productos A, B y C requieren 1, 2 y 1 hora de servicios respectivamente, mientras las horas totales disponibles son 10. x1 + 2x2 + x3 ≤ 10 Si la solución óptima de la tabla 3 satisface la restricción, sigue siendo óptima: 1•1 + 2•2 + 1•0 ≤ 10, cumple la restricción Si la restricción fuese x1 + 2x2 + x3 ≤ 4: 1•1 + 2•2 + 1•0 ≰ 4 Añadimos la nueva restricción a la tabla 3: _ CB base 2 3 0 x1 x2 x3 x4 x5 x6 x1 x2 x6 _ 1 0 1 0 1 2 -1 2 1 4 -1 0 -1 1 0 0 0 1 Cj 0 0 -3 -5 -1 0 b 1 2 4 (3ªF – 1ªF - 2•(2ªF)) _ CB base x1 x2 x3 x4 x5 x6 x1 x2 x6 1 0 0 0 1 0 -1 2 -2 4 -1 -2 -1 1 -1 0 0 1 0 0 -3 -5 -1 0 b 1 2 -1 _ Cj x1 x2 x5 2 1 1 51 Investigación Operativa 2008/09 Zopt = 7 En la tabla 3, Zopt = 8 → ∆Zopt = -1 Esto siempre es cierto: al añadir una restricción a un problema de programación lineal el nuevo valor de la función del objetivo es igual o peor que el anterior. Observaciones. Tiempo de resolución de un p.p.l ≡ f(m3), siendo m el número de restricciones A) Quitar restricciones inactivas o secundarias. B) Resolver C) Añadir y comprobar si las restricciones de A) son verificadas por la solución óptima. Programación paramétrica. 1. Costes (Beneficios) paramétricos Z = [C + λC*] x Ax = b x≥0 C = (C1, C2, …, Cn) λ ∈ℝ C = (C1*, C2*, …, Cn*) Primero se resuelve el problema para λ = 0. Sea B la base óptima: _ _ _ Cj ≤ 0 (Maximizando) Cj = Cj - CBPj _ _ _ _ _ _ Cj(λ) = (Cj + λCj*) – (CB + λCB*)Pj = (Cj - CBPj) + λ (Cj* - CB* Pj) = Cj + λCj* Ejemplo: Max Z = (2 + λ)x1 + (3 - λ)x2 + (1 + λ)x3 1 /3x1 + 1/3x2 + 1/3x3 ≤ 1 1 /3x1 + 4/3x2 + 7/3x3 ≤ 3 xi ≥ 0 Cj* Cj 1 2 -1 3 1 1 52 0 0 0 0 Investigación Operativa 2008/09 _ CB* CB base 1 -1 2 3 x1 x2 x1 x2 x3 x4 x5 1 0 0 1 -1 2 4 -1 -1 1 B 1 2 0 0 -3 -5 -1 Z = 8 = CBb 0 0 4 -5 -2 Z * = −1 = C B* b _ Cj _ Cj* _ _ Por ejemplo, C3* = C3* - CB*P3 = 1 – (1,-1) -1 =4 2 Z(λ) = Z + λZ* = 8 - λ _ C3(λ) = -3 + 4λ ≤ 0 ⇔ λ ≤ 3/4 _ C4(λ) = -5 -5λ ≤ 0 ⇔ λ ≥ -1 _ C5(λ) = -1 + 2λ ≤ 0 ⇔ λ ≤ 1/2 La solución sigue siendo óptima si λ ∈ [-1, 1/2]. Si λ > /2 ⇒ C5(λ) > 0 (⇒ entra x5 y sale x2) 1 _ base x1 x2 x3 x4 x5 x1 x5 _ 1 0 1 1 1 2 3 -1 0 1 b 3 2 Cj _ 0 1 -1 -6 0 Z=6 Cj* 0 base x1 x2 x3 x4 x5 1 0 -1/4 1 -1/4 -2 0 -3 0 Z* = 3 _ _ _ La solución es óptima si C2(λ), C3(λ), C4(λ) ≤ 0 → ocurre si λ ≥ 1/2 y Z = 6 + 3λ _ Para λ < -1 C4(λ)>0 (⇒ sale x1 y entra x4) _ x4 /4 53 b /4 1 Investigación Operativa 2008/09 x2 _ 1 /4 1 Cj _ 5 /4 Cj* 5 /4 Z(λ) = 27/4 - 9/4λ _ _ 7 /4 0 3 0 -17/4 0 -9/4 0 11 0 3 /4 _ Solución óptima si C1(λ), C3(λ), C5(λ) ≤ 0 ⇔ λ ≤ -1 54 /4 /4 9 /4 Z = 27/4 Z* = -9/4 Investigación Operativa 2008/09 2. Variación paramétrica del vector de recursos. Z = Cx Ax = b + αb* x≥0 b= b1 … bm b* = α∈ℝ Primero resolvemos para α = 0. Sea B la base óptima: _ xB = b = B-1b _ _ _ -1 -1 -1 Para b + αb*, xB = b = B (b + αb*) = B b + αB b* = b + αb* _ _ Si b + αb* ≥ 0 la base B seguirá siendo óptima. Ejemplo: 1 Hagamos b* = -1 b + αb* = Resolver para α = 0: 55 1+α 3-α b1 * … bm* Investigación Operativa 2008/09 base x1 x2 x3 x4 _ _ b* 5 -2 Z * = 4 = CBb * x5 x1 x2 _ 1 0 0 1 -1 2 4 -1 -1 1 b 1 2 Cj 0 0 -3 -5 -1 Z = 8 = CBb _ b = B-1b = _ b* = B-1b = 4 -1 1 1 -1 1 3 2 4 -1 1 5 -1 1 -1 = = -2 x1 = 1 + 5α ≥ 0 ⇔ α ≥ - 1/5 x2 = 2 - 2α ≥0⇔α≤1 Zopt = 8 + 4α α ∈ [- 1/5,1] Si α > 1 ⇒ x2 < 0 y la solución actual no es factible, pero sí factible dual. Usando el Método del Simplex Dual obtenemos: _ _ 3 -1 b 9 -2 b* -3 2 -6 Z = 18 Z* = -6 CB base x1 x2 x3 x4 x5 2 0 x1 x4 _ 1 0 4 -1 7 -2 0 1 Cj 0 -5 -13 0 x1 = 9 - 3α ≥ 0 si α ≤ 3 x2 = -2 + 2α ≥ 0 si α ≥ 1 α ∈ [1,3] Z = 18 -6α Si α > 3 ⇒ x1 < 0 y la solución actual no factible. Como en la fila de x1 no hay coeficientes negativos, el problema es NO FACTIBLE. Si α < - 1/5 ⇒ x1 < 0 (⇒ por el Método del Simplex Dual sale x1 y entra x5) base x5 x1 -1 x2 0 x3 x4 1 -4 56 _ _ b -1 b* -5 x5 1 Investigación Operativa 2008/09 x2 _ 1 1 1 3 0 3 3 Cj x2 = 3 + 3α -1 ≥0 0 -2 -9 0 Z=9 Z* = 9 x5 = -1 - 5α ≥0 si -1 ≤ α < - 1/5 Z = 9 + 9α Si α < -1 ⇒ x2 < 0 → problema NO FACTIBLE 57 Investigación Operativa 2008/09 Tema 7. Programación lineal entera. Un p.p.l. entera es aquel en el que todas las variables de decisión (programación entera pura) o algunas de ellas (programación entera mixta) toman exclusivamente valores enteros. Una forma de tratar este problema es el redondeo (quedarse con la parte entera por arriba ó abajo teniendo cuidado de que la solución que así se obtenga sea factible) Algoritmo de ramificación y acotación (Branco and Bound Algorithm). Maximizar Z = 3x1+2x2 Sujeto a x1 ≤ 2 x2 ≤ 2 x1+ x2 ≤ 3.5 x1,x2 ≥ 0 y enteros. Soluciones enteras 58 Investigación Operativa 2008/09 Z=3x1+2x2 Z(0,0)=0 Z(0,1)=2 Z(0,2)=4 Z(1,0)=3 Z(1,1)=5 Z(1,2)=7 Z(2,0)=6 Z(2,1)=8 óptimo Algoritmo. Primero resolvemos el problema olvidándonos de la restricción de variables enteras (PL-1) 59 Investigación Operativa 2008/09 Región factible ABCDE óptimo x1 =2, x2=1.5 ZOptimo=9 Sabemos que añadir las restricciones de que las variables sean enteras no puede mejorar la función del objetivo. Tenemos así que Z0=9 es una cota superior para el valor óptimo del problema inicial. Creamos ahora 2 nuevos problemas x2=1.5 x2≤1 x2≥2 60 Investigación Operativa 2008/09 PL-2 Maximizar Z = 3x1+2x2 PL-3 Maximizar Z = 3x1+2x2 x1≤ 2 x2≤ 2 x1+ x2 ≤ 3.5 x2≤ 1 x1,x2 ≥ 0 x1≤ 2 x2≤ 2 x1+ x2 ≤ 3.5 x2≥ 2 x1,x2 ≥ 0 PL-2 61 Investigación Operativa 2008/09 PL-3 Región factible = segmento AB La solución óptima de PL-2 es x1 =2, x2=1 ZOptimo=8 Así tenemos una s.f. entera de PL-1 (Fijarse que cada solución entera factible de PL-1 está contenida en PL-2 ó en PL-3). Aunque PL-2 pueda contener otras soluciones enteras, sus valores de la función objetivo no pueden ser más grandes que 8, ⇒ Z=8 es una cota inferior del valor máximo de Z en el PL-1. Luego 8≤ Zoptimo≤9 En PL-3 la solución óptima es x1 =1.5, x2=2 ZOptimo=8.5 x1 no es factible (no es entero) para PL-1 pero Z=8.5>8, ⇒ hay que construir 2 nuevos problemas PL-4 PL-3 + restricción x1≤ 1 PL-5 PL-3 + restricción x1≥ 2 62 Investigación Operativa 2008/09 PL-5 No tiene región factible. PL-4 Solución óptima entera: x1 =1, x2=2 ZOptimo=7 pero es peor que 8. Por tanto la solución óptima es la de PL-2 x1 =2, x2=1 ZOptimo=8 El árbol obtenido es el siguiente: 63 Investigación Operativa 2008/09 DETALLES GENERALES · MIP (Mixed Integer Program) Maximizar Z = CX Sujeto a AX = b X≥ 0 Xj entera para j perteneciente a I = {índices de las variables enteras} · Se resuelve el MIP sin condiciones enteras. A este problema le llamamos PL-1 con solución óptima Z1. Supongamos que la solución óptima toma valores no enteros en alguna variable entera, y por lo tanto no es solución del MIP. Sí es, en cambio, una cota superior del valor óptimo de Z en el MIP. Se elige una variable entera Xj que dio no entera. Si Xj = βj, se construyen 2 nuevos problemas: 64 Investigación Operativa 2008/09 PL-2: Maximizar Z = CX AX = b Xj ≤ βjX≥0 PL3: Maximizar Z = CX AX = b Xj≥ βj+ X≥0 · Para elegir la variable Xj en la que hacer la bifurcación hay las siguientes reglas: 1). A ojo o al azar. 2). Por prioridades, según... · La variable representa una decisión importante en el problema. · Su coste (o beneficio) es más grande que en las demás variables. · Decisión según resolución anterior del problema. · Como PL-2 y PL-3 son PL-1 con una nueva restricción añadida, podemos usar el MSD (Método del Simplex Dual) para encontrar sus soluciones óptimas. · Supongamos que las soluciones óptimas de PL-2 y de PL-3 siguen siendo fraccionarias. El siguiente paso consiste en seleccionar PL-2 o PL-3 para hacer una nueva ramificación. Para ello: a). Se elige aquel problema cuyo valor óptimo sea el mejor. b). Se selecciona el problema resuelto más recientemente (Last-in-First-out rule, LIFO) · Continuamos así la sucesión de ramificaciones y resolución de p.p.l hasta resolver uno que tenga solución entera. El valor de la función objetivo en este caso será una cota inferior del valor óptimo del MIP original. En este momento podemos dejar de considerar todos aquellos nodos cuyos valores de Z no sean mejores que la cota inferior. Se dice que esos nodos han sido saturados. · DEFINICIÓN: un nodo intermedio está explícita o implícitamente saturado siempre que se satisfaga una de las siguientes condiciones: 1). La solución óptima del p.p.l correspondiente es entera. 2). El p.p.l correspondiente es no factible. 3). El valor óptimo de Z para el p.p.l correspondiente no es mejor que la cota inferior actual. 65 Investigación Operativa 2008/09 · Del árbol mostrado en la figura superior: · El Nodo 4 está saturado. Cualquier solución del problema MIP no puede ser mejor que esta. · El Nodo 5 está saturado por ser no factible. · Supongamos que Z6 < Z4, el Nodo 6 está saturado implícitamente. · En el caso de que Z7 > Z4, habría que ramificar a partir del Nodo7. · Notas - La eficacia del método radica en la rapidez con que se saturen los nodos. - Es importante mantener el número de variables enteras lo menor posible. - Proporcionar cotas ajustadas superiores e inferiores de Zoptimo. - Al contrario que un p.p.l general, la adición de nuevas restricciones a un MIP generalmente reducirá el tiempo de computación, especialmente cuando las nuevas restricciones contengan variables enteras. - A veces llega con que: [(CotaSuperior Z - CotaInferior Z) / CotaSuperior Z] < [% pequeño del óptimo continuo] 66 Investigación Operativa 2008/09 Tema 8: Problemas Especiales de Programación Lineal. Problemas de Transporte. Consideremos: M almacenes con existencias a1, a2, …, aM N mercados con demandas b1, b2, …, bN Sea Cij ≡ coste por unidad enviada del almacén i al mercado j i = 1…M j = 1…N Se trata de calcular la cantidad a enviar desde cada almacén hasta cada mercado minimizando el coste total del transporte. ALMACÉN MERCADO 1 • 2 • • 1 • 2 i • … … M • … • j … • N Sea xij = “nº de unidades o cantidad enviada desde el almacén i al mercado j” M N Función objetivo: Min Z = ∑ ∑ Cij xij i=1 j=1 Sujeto a: Las restricciones vienen dadas por las capacidades de los almacenes y las exigencias de los mercados. 1 • i • … xi1 • 1 … xij … • j xi1 + xi2 + … + xij + … + xiN ≤ ai cantidad total enviada desde el almacén i-ésimo ∀i=1,2,…,M existencia en el almacén i-ésimo 67 M • xiN … • N Investigación Operativa 2008/09 1 • i • … x1j … xij • 1 … • j xMj … ∀j=1,2,…,N x1j + x2j + … + xij + … + xMj ≥bj cantidad total que recibe el mercado j cantidad demandada por el mercado j M N Queda Min Z = ∑ ∑ Cij xij i=1 j=1 N sujeto a: ∑ xij ≤ ai j=1 M ∑ xij ≥ bj i=1 i=1…M j=1…N xij ≥ 0 ∀i,j M+N restricciones MxN variables Es evidente que el problema es factible (tiene solución) si: M N i=1 j=1 ∑ ai ≥ ∑ bj almacenado demandado M N i=1 j=1 Si ∑ ai = ∑ bj se tiene un problema de transporte estándar: M N Min Z = ∑ ∑ Cij xij i=1 j=1 sujeto a: N ∑ xij = ai j=1 M ∑ xij = bj i=1 M • i=1…M j=1…N xij ≥ 0 ∀i,j 68 • N Investigación Operativa 2008/09 Desarrollaremos técnicas de resolución para problemas de este tipo, por ello, si no se cumple que: ∑ ai = ∑ bj por ejemplo si: M N i=1 j=1 ∑ ai > ∑ bj (I) (La cantidad enviada es mayor que la cantidad demandada. Habrá una cierta cantidad que no se enviará. Se crea entonces un mercado ficticio, llamado N+1, con demanda precisamente igual a esa cantidad). a1 • a2 • … aM • • • … • • M b1 b2 bN bN+1 N = ∑ ai - ∑ bj con Ci,N+1 = 0 ∀i=1…N i=1 j=1 mercado ficticio El problema se reescribe: exceso de mercancía xi,N+1 i=1,…,M lo que sobra en el almacén i M N+1 Min Z = ∑ ∑ Cij xij i=1 j=1 sujeto a: N+1 ∑ xij = ai j=1 M ∑ xij = bj i=1 i=1…M j=1…N+1 xij ≥ 0 ∀i,j Si: M N i=1 j=1 ∑ ai < ∑ bj ( II ) 69 Investigación Operativa 2008/09 (La cantidad enviada es menor que la demandada. No se cumplirán todas las demandas y habrá una cierta pérdida en algún mercado. Se crea entonces un almacén ficticio, llamado M+1, con la cantidad que falta). 70 Investigación Operativa 2008/09 almacén ficticio N a1 a2 aM aM+1 = ∑ bj - ∑ ai con CM+1,j = 0 y xM+1,j es la j=1 • • … • • b1 • b2 … • bN M i=1 la pérdida en el mercado j • El problema se reescribe: M+1 N Min Z = ∑ ∑ Cij xij i=1 j=1 sujeto a: N ∑ xij = ai i=1…M+1 j=1 M+1 ∑ xij = bj j=1…N i=1 xij ≥ 0 ∀i,j El problema de Transporte estándar puede expresarse en forma de tabla con los datos (ai, bj, Cij). Mercados Almacene s 1 1 2 x12 x11 C11 2 3 x13 C21 N Existencias x1N C12 x22 x21 … C13 x23 a1 C1N x12N C22 C23 a2 C2N … i … xi1 xi2 Ci1 xiN xi1 Ci2 Ci3 ai CiN … M … xM1 xM2 CM1 xM3 CM2 xMN CM3 71 aM CMN Investigación Operativa 2008/09 Demandas b1 b2 b3 … bN Sumas xij por filas = existencias ⇒ RESTRICCIONES DE ALMACENAJE Sumas xij por columnas = demandas ⇒ RESTRICCIONES DE DEMANDAS 72 Investigación Operativa 2008/09 Obtención de una solución factible básica inicial: El problema de transporte tiene M+N restricciones ⇒ una solución factible básica necesita, en principio, M+N variables básicas. M N M i=1 j=1 i=1 Ahora bien, dado que ∑ ∑ xij = ∑ ai M (sumamos todas las ecuaciones ∑ xij = ai) j=1 M ∀j=1…N ∑ xij = bj i=1 N M N M j=1 i=1 j=1 i=1 ∑ ∑ xij = ∑ bj = ∑ ai Sistema de ecuaciones / suma de las M primeras filas = suma de las N restantes ⇒ 1 ecuación es linealmente dependiente de las demás ⇒ El problema de transporte estándar tiene M+N-1 restricciones linealmente independientes ⇒ Una solución factible básica necesita M+N-1 variables básicas. Hay diferentes métodos para resolver la solución factible básica inicial, nosotros sólo vemos 2. (1) Obtención de una solución factible básica inicial (2) Comprobar si es óptima NO (3) SI Se mejora obteniendo otra solución factible 73 FIN Investigación Operativa 2008/09 básica (1) Hay varios métodos: esquina noroeste, coste mínimo, de Vogel, de aproximación de Russell… (2) Método U-V (3) Algoritmo de Steeping-Stone Método de la esquina noroeste. Consiste en elegir como variables básicas (>0) aquellas que ocupen la esquina noroeste en la tabla de transporte estándar. M1 A1 2 A2 10 M2 M3 2 M4 2 8 capacidades 1 5 3 4 7 = a1 + = a2 + A3 7 6 6 8 5 demandas 4 3 4 4 15 ‖ ‖ ‖ ‖ b1 + b2 + b3 + = a3 b4 Elegimos x11 = min{3,4} = 3 A1 A2 A3 M1 3 M2 0 M3 0 M4 0 4-3=1 3 4 4 M2 0 M3 0 M4 0 3 4 4 3-3=0 7 5 Elegimos x21 = min{a2, b1’} = min{7,1} = 1 b1’ es el b1 después de restarle lo que enviamos A1 A2 A3 M1 3 1 0 1-1=0 Elegimos x22 = min{a2’, b2} = min{6,3} = 3 74 0 7-1=6 5 Investigación Operativa 2008/09 A1 A2 A3 M1 3 1 0 0 M2 0 3 0 0 M3 0 M4 0 4 4 M3 0 3 M4 0 0 4-3=1 4 M3 0 3 1 0 M4 0 0 4 4 0 6-3=3 5 Elegimos x23 = min{b2’, a3} = min{3,4} = 3 A1 A2 A3 M1 3 1 0 0 M2 0 3 0 0 0 0 5 Elegimos x33 = min{a3’, b3} = min{1,5} = 1 A1 A2 A3 M1 3 1 0 0 M2 0 3 0 0 0 0 5-1=4 M+N-1 = 4+3-1 = 6 variables básicas > 0. Z = 3•2 + 1•10 + 3•8 + 3•5 + 1•6 + 4•8 = 93 Método del coste mínimo. Consiste en ir eligiendo como variables básicas (>0) aquellas que tengan menor coste. A1 A2 A3 M1 2 10 7 4 Menor coste C14 = 1 M2 2 8 6 3 M3 2 5 6 4 M4 1 4 8 4 M3 M4 x14 = min{3,4} = 3 M1 M2 75 3 7 5 Investigación Operativa 2008/09 A1 A2 A3 0 0 0 4 3 4 Menor coste de celdas sin ocupar C24 = 4 M1 0 A1 A2 A3 A1 A2 A3 A1 A2 A3 3 4 M1 0 M2 0 M3 0 4 0 M1 0 M2 0 0 3 4 3 M1 0 2 2 4 A1 A2 A3 1 M3 0 4 3 0 7 5 x24 = min{7,1} = 1 M2 0 4 3 4 0 M2 0 0 3 0 M4 3 1 0 1 0 7 5 0 M4 3 1 0 0 0 6 M3 0 4 0 0 M4 3 1 0 0 M3 0 4 0 0 M4 3 1 0 0 0 6 2 5 0 2 5 2 0 2 2 Z = 79 Método de Steeping-Stone (Mejora de la solución factible básica inicial). Primero es preciso saber si la solución factible básica inicial es óptima o no. En el ejemplo anterior: M1 0 A1 M2 0 M3 0 M4 3 3 2 2 2 76 1 Investigación Operativa 2008/09 2 0 4 1 7 A2 10 8 2 5 3 4 0 0 5 A3 7 4 6 3 6 4 8 4 Actualmente x11 = 0, si hacemos x11 = 1 M1 +1 -1 A1 A2 M4 -1 +1 _ C11 = C11•(cambio en x11) + C14•(cambio en x14) + C21•(cambio en x21) + C24•(cambio en x24) = 2•(1) + 1•(-1) + 10•(-1) + 4•(+1) = -5 beneficio relativo de C1 Se pueden calcular todos los beneficios relativos de las variables no básicas simultáneamente, mediante el método U-V o MODI (Modified Distribution Method). Método U-V. Se calculan números: Ui ∀i=1…M ∀j=1…N tales que: Cij = Ui + Vj para cada variable básica Vj _ Se tendrá que Cij = Cij - (Ui + Vj) para cada variable no básica. M2 M1 M3 M4 A1 A1 2 2 • 2 • 1 • A2 10 • 8 5 4 6 6 8 M4 U1 + V4 = 1 U2 + V1 = 10 U2 + V3 = 5 U2 + V4 = 4 U3 + V1 = 7 U3 + V2 = 6 • • A3 7 _ C11 - (U1 + V1) = 2 – (0+7) = -5 _ C12 = 2 - (0 + 6) = -4 Hacemos U1 = 0 → V4 = 1→ U2 = 3 → V1 =7 y V3 = 2 U3 = 0 → V2 = 6 77 Investigación Operativa 2008/09 _ C13 = 2 – (0 + 2) = 0 _ C22 = 8 – (3 + 6) = -1 _ C33 = 6 – (0 + 2) = 4 _ C34 = 8 – (0 + 1) = 7 V1 = 7 V2 = 6 V3 = 2 V4 = 1 • U1 = 0 2 2 • 2 • 1 • U2 = 3 10 • 8 5 4 6 6 8 • U3 = 0 7 Las casillas sin marca • serán las variables no básicas. 2-7-0 = -5 2-6-0 = -4 V1 = 7 V2 = 6 -5 V3 = 2 -4 U1 = 0 0 2 0 2 -1 U2 = 3 0 2 0 10 0 V4 = 1 8 0 1 0 5 4 4 7 U3 = 0 7 6 Menor beneficio relativo negativo -5 ⇒ x11 entra en la base: +θ 3-θ 3 78 6 8 Investigación Operativa 2008/09 2-θ 2 4 3 3 4 1+θ 4 4 Máximo valor para θ = 2, porque sino en x21 pasaría a ser negativo y no puede ser. 7 5 (Steeping-Stone) Nueva solución factible básica: 2 0 2 4 1 3 Z = 69 3 Miramos si es óptima (método U-V) V1 = 2 U1 = 0 V2 = 1 V3 = 2 1 × 0 2 2 5 4 10 × × 2 × U2 = 3 U3 = 5 V4 = 1 8 × 5 -1 × 7 6 1 4 2 6 Solución no óptima; entra x33 en la base: 2+θ 2-θ 3 4-θ +θ 3 3 1 1-θ 3+θ Máximo valor posible para θ = 1 3 1 4 Z = 68 y se comprueba que es la óptima. 79 8 Investigación Operativa 2008/09 Problemas de Asignación. Formulación general de un problema de asignación estándar: Se tienen N máquinas y N trabajos diferentes. Cada máquina puede realizar un único trabajo y cada trabajo sólo puede efectuarlo una máquina. Se supone que el coste de realización de cada trabajo por cada máquina varía. El problema consiste en resolver qué trabajo realiza cada máquina de manera que el coste total de realización de los N trabajos sea mínimo. M1 M2 … MN N máquinas T1 T2 … TN N trabajos Mij ≡ la máquina i realiza el trabajo j con coste Cij, i = 1…N, j=1,…N Si la máquina i no puede realizar el trabajo j se escribirá Cij = M con M → ∞ Una manera intuitiva de resolver este problema es enumerar todas las posibilidades y calcular Z en ellas. ¿Cuántas asignaciones posibles hay? Ej// Para 2 máquinas y 2 trabajos: M1 M2 1ª asignación: M1 → T1 M2 → T1 Coste = C11 + C22 T2 C12 C22 T1 C11 C21 2ª asignación: M1 → T2 M2 → T1 Coste = C21 + C12 Formulamos el problema de asignación como un problema de programación lineal. Sea xij = 1 si la máquina i realiza el trabajo j 0 no Dado que cada máquina realiza un único trabajo: N ∑ xij = 1 j=1 i = 1…N suma de trabajos que realiza la máquina i Dado que cada trabajo se le asigna a una única máquina: N ∑ xij = 1 j = 1…N 80 Investigación Operativa 2008/09 i=1 P cantidad de máquinas que realizan el trabajo j Función objetivo: N N B Min ∑ ∑ Cij xij B B B B i=1 j=1 P T1 C11 C21 B M1 M2 … MN B B B B B B B B B B CN1 1 B B T2 C12 C22 B … B B B B B CN2 1 B B TN C1N C2N B B B B B B CNN 1 B B 1 1 Tabla de costes de asignación estándar 1 B En general en un problema de transporte necesitaríamos 2N-1 variables básicas > 0, cuando en los problemas de asignación sólo habrá N variables > 0. No usaremos ni transporte ni simplex porque trabajaríamos con soluciones degeneradas. Formulación general de un problema de asignación no estándar: U a) Hay más máquinas que trabajos → creamos “trabajos” ficticios con coste de realización cero. b) Hay más trabajos que máquinas → creamos “máquinas” ficticias con coste de realización trabajo/máquina ficticia = 0. Método o Algoritmo Húngaro (König). El principio básico radica en que la asignación óptima no cambia si se suma o se resta una constante a una fila o columna de la tabla de costes de asignación estándar. El método consiste en restar una cantidad a las filas y/o columnas de manera que se encuentre una asignación óptima a simple vista. Iniciamos el algoritmo examinando cada fila (columna) de la matriz de costes para identificar el elemento más pequeño. Esa cantidad se le resta a todos los elementos de dicha fila (columna). Esto origina una tabla que contiene al menos un cero en cada fila (columna). Ahora se intenta realizar una asignación factible usando las celdas con coste cero. Si es posible, se tendrá una asignación óptima. Ejemplo: U T1 10 B M1 B B B T2 9 B B T3 8 B B 81 T4 7 B B → mínimo = 7 Investigación Operativa 2008/09 M2 M3 M4 B B B B B B 3 2 4 4 1 3 5 1 5 → → → 6 2 6 mínimo = 3 mínimo = 1 mínimo = 3 A cada xij le restamos el mínimo de su fila: B B T2 2 1 0 0 T1 3 0 1 1 B M1 M2 M3 M4 B B B B B B B B B T3 1 2 0 2 B B T4 0 3 1 3 B B B B Utilizando los ceros intentamos realizar una asignación factible: M1 → M2 → M3 → → M4 → B B B B B B B B T4 T1 T2 T3 T2 B B B B B B M3 → T3 M4 → T2 B B B B B B B B B B B B y ésta es la asignación óptima. Ejemplo: 4 máquinas, 4 trabajos U B M1 M2 M3 M4 B B B B B B B B T2 9 8 4 3 T1 10 5 5 2 B B T3 7 7 6 4 B B T4 8 7 5 5 B B B → → → → mínimo = 7 mínimo = 5 mínimo = 4 mínimo = 2 Cogemos el mínimo por filas y se lo restamos: T1 3 0 1 0 B B B B B B B B B T2 2 3 0 1 B M1 M2 M3 M4 B T3 0 2 2 2 B T4 1 2 1 3 B B B B M2 → T1 M4 → T1 B B B B B B B B Como dos máquinas estarían realizando el mismo trabajo no sería una asignación óptima. Cogemos el mínimo por columnas: M1 → T3 T1 T2 T3 T4 → T4 M1 3 2 0 0 M2 → T1 M2 0 3 2 1 M3 → T2 M3 1 0 2 0 → T4 M4 0 1 2 2 M4 → T1 B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B 82 B B B Investigación Operativa 2008/09 Lo que se hace ahora es trazar líneas de modo que se cubran todas las celdas con ceros. El teorema de König establece que el número mínimo de líneas necesario es igual al número máximo de trabajos que pueden asignarse usando dichas celdas. T1 3 0 1 0 T2 2 3 0 1 B M1 M2 M3 M4 B B B B B B B B B T3 0 2 2 2 B B T4 0 1 0 2 B B B B Ahora se selecciona el elemento más pequeño no cubierto por las líneas, que en este ejemplo es el 1. Se resta este número de todos los elementos no cubiertos, y se le suma a los cubiertos que sean intersección de dos líneas. Es equivalente a restar 1 de la 2ª y 4ª fila y T1 T2 T3 T4 sumar 1 a la 1ª columna, M1 4 2 0 0 por lo que la asignación M2 0 2 1 0 óptima no varía. M3 2 0 2 0 M4 0 0 1 1 B M1 → T3 → T4 B B B B B B B B B B B B B B B B B M3 → T2 → T4 B B B B B M4 → T1 → T2 B B B B B B M2 → T1 → T4 B B B B B B B B B B B B B B Las asignaciones serían: B M1 → M2 → M3 → M4 → B B B B B B B B T3 T1 T4 T2 M1 → M2 → M3 → M4 → B B B B B B B B B B B B B B ó B B B B T3 T4 T2 T1 B B B B Zopt = 20 B B B 83 B Investigación Operativa 2008/09 84