PROBLEMAS DE PROGRAMACIÓN LINEAL PROBLEMA 2 Una empresa que realiza laminados de aceros de aleación especial produce dos tipos de láminas, que le reportan 8000 y 6000 u.m. (unidades monetarias) netas respectivamente por cada metro producido. El proceso consta de una etapa previa de acondicionamiento del acero, otra de laminado propiamente dicho, y una tercera de pulido de la superficie resultante, disponiéndose diariamente para cada actividad de un número de horas limitado. Las horas requeridas por unidad de producto y las horas totales diarias disponibles para cada actividad se muestran en la tabla adjunta: Horas requeridas por unidad de producto Laminado 1 Laminado 2 Acondicionamiento Laminado Pulido 4 2 6 2 4 2 Horas totales disponibles 60 48 76 En principio no existen limitaciones de material, si bien la empresa está obligada a producir al menos un metro de laminado 1, y un metro también de laminado 2 diariamente con objeto de generar una rentabilidad mínima. Por el contrario, debido a acuerdos en el sector siderúrgico de control de la competencia, no puede producir más de 15 metros diarios de laminado 1, ni más de 5 metros diarios de laminado 2. a) Con los datos anteriores calcular la programación de producción que maximiza los beneficios de la empresa. b) Suponiendo que interesara contratar más horas diarias de las actividades del proceso, ¿cuál sería el valor máximo que se pagaría por cada hora adicional? SOLUCIÓN: a) Llamando X1: metros de laminado 1 producidos. X2: metros de laminado 2 producidos. La función de producción a optimizar sería: Max Z = 8.000·X1 + 6.000·X2 S.a. 4 ⋅ X 1 + 2 ⋅ X 2 ≤ 60 ⎫ ⎪ 2 ⋅ X 1 + 4 ⋅ X 2 ≤ 48⎬ 6 ⋅ X 1 + 2 ⋅ X 2 ≤ 76 ⎪⎭ Javier Osorio 1 ≤ X 1 ≤ 15 1≤ X2 ≤ 5 1 PROBLEMAS DE PROGRAMACIÓN LINEAL Transformando el problema: Min Z = -8.000·X1 - 6.000·X2 S.a. = 60 ⎫ ⎪ = 48⎬ + X 5 = 76⎪⎭ 4 ⋅ X1 + 2 ⋅ X 2 + X 3 2 ⋅ X1 + 4 ⋅ X 2 + X4 6 ⋅ X1 + 2 ⋅ X 2 1 ≤ X 1 ≤ 15 1 ≤ X2 ≤ 5 0 ≤ X3 0 ≤ X4 0 ≤ X5 Para resolver el problema utilizamos el algoritmo simplex para variables acotadas. Dado que se trata de maximizar interesaría asignar a las variables su cota superior, pero esto daría lugar a que se perdiera la factibilidad. Por ello se asignará una variable a su cota superior y otra a su cota inferior, y se comprobará si es factible. ⎡ 4 2 1 0 0⎤ ⎢ ⎥ A = ⎢ 2 4 0 1 0⎥ ; B = [ a 3 , a 4 , a 5 ] ⎢⎣ 6 2 0 0 1⎥⎦ X 1 = l1 = 1 X 2 = u2 = 5 ⇒ X B = {X3, X5} X4 , N 1 = {a 1 } N 2 = {a 2 } Aplicando el algoritmo Simplex: ( ) ( ) Z = C B ⋅ B −1 ⋅ b − C B ⋅ B − 1 ⋅ N 1 − C N 1 ⋅ l N 1 − C B ⋅ B − 1 ⋅ N 2 − C N 2 ⋅ u N 2 = = 0 − ( 0 − ( − 8.000)) ⋅ 1 − (0 − ( − 6.000)) ⋅ 5 = −38.000 b = B −1 ⋅ b − B −1 ⋅ N 1 ⋅ l N 1 − B − 1 ⋅ N 2 ⋅ u N 2 ⎛ X 3 ⎞ ⎛ 60 ⎞ ⎛ 46 ⎞ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ t t b = ⎜ X 4 ⎟ = ⎜ 48 ⎟ − (4, 2, 6 ) ⋅ (1) − (2, 4, 2) ⋅ (5) = ⎜ 26 ⎟ ≥ 0 Sol. inicial factible ⎜ X ⎟ ⎜ 76 ⎟ ⎜ 60 ⎟ ⎝ 5⎠ ⎝ ⎠ ⎝ ⎠ A continuación se calculan los valores iniciales de la fila cero en la primera tabla Simplex Z1 − C1 = C B · B −1 · a1 − C1 = 0 + 8. 000 = 8. 000 Z 2 − C2 = 6. 000 2 Javier Osorio PROBLEMAS DE PROGRAMACIÓN LINEAL La 1ª tabla simplex sería: l X1 8.000 4 2 6 Z X3 X4 X5 u X2 6.000 2 4 2 X3 0 1 0 0 X4 0 0 1 0 X5 0 0 0 1 LD -38.000 46 26 60 l: cota inferior. u: cota superior Comprobamos si esta solución es mejorable aplicando el algoritmo: ⎛ ⎞ α k = Max⎜⎜ Max (z j − c j ),Max (c j − z j )⎟⎟ = Max(8.000,− 6.000) = 8.000 > 0 ⎝ j∈ℜ1 ⎠ j∈ℜ 2 Solución mejorable; k = 1 ; X1 es candidato a entrar en la base. k ∈ ℜ1 ⇒ ⎧⎪ b i − l Bi : yi ⎪⎩ y i k γ 1 = Min⎨ 1≤ i ≤ m ⎧ 46 − 0 , ⎩ 4 γ 1 = Min ⎨ k ⎫⎪ ≥0 ⎬ ⎪⎭ 26 − 0 60 − 0 ⎫ b 3 − l B3 , ; γ1 = 10 ⎬= y 31 2 6 ⎭ X5 es candidato a salir de la base. γ 2 = ∞ ; ya que y k = y1 ≥ 0 γ3 = u1- l1 = 15 - 1= 14 ∆1= Min {γ 1 , γ 2 , u1 − l1 } = Min {10, ∞, 14} = 10 ⇒ X5 sale de la base y se pivota sobre y31. los nuevos valores del lado derecho serían: Z = Z$ − ( z k − ck ) ⋅ ∆ k = −38.000 − ( 8.000) ⋅ 10 = −118.000 ⎧ 6⎫ ← X 3 ⎧46⎫ ⎧4 ⎫ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ b = b$ − y k ⋅ ∆ k = ⎨26⎬ − ⎨2 ⎬ ⋅ 10 = ⎨6⎬ ← X 4 ⎪60⎪ ⎪ 6⎪ ⎪ 0⎪ ← X ⎩ ⎭ ⎩ ⎭ ⎩ ⎭ 5 b$k = l k + ∆ k = 1 + 10 = 11 ← X 1 Javier Osorio 3 PROBLEMAS DE PROGRAMACIÓN LINEAL Z X3 X4 X1 La nueva tabla, una vez hecho el pivoteo sería: u l X1 X2 X3 X4 X5 0 0 -4.000 0 10.000 3 3 0 2/3 1 0 -2/3 0 10/3 0 1 -1/3 1 1/3 0 0 1/6 Como Z2-C2 > 0 Como Z5-C5 < 0 LD -118.000 6 6 11 siendo k=2 ∈ℜ2 ⎫ ⎬ ⇒ La solución actual es óptima. siendo k=5 ∈ℜ1 ⎭ X1= 11 metros diarios. X3 = 6 horas sobran de acondicionamiento. X2= 5 metros diarios. X4 = 6 horas sobran de laminado. Z = 118.000 u.m. X5 = 0; el cuello de botella estaría en el pulido. b) Para saber cuánto se podría pagar como máximo una hora adicional planteamos el problema dual. De entrada, ya se observa que no nos interesará contratar horas adicionales de acondicionado y laminado pues nos sobran, pero sí interesa de pulido. Primal: Max Z = 8.000·X1 + 6.000·X2 S.a. 4 ⋅ X1 + 2 ⋅ X 2 2 ⋅ X1 + 4 ⋅ X 2 6 ⋅ X1 + 2 ⋅ X 2 ≤ 60 ⎫ ⎪ ≤ 48 ⎬ ≤ 76⎪⎭ X1, X 2 ≥ 0 Dual: Min Z' = 60· w1+ 48· w2 + 76·w3 S.a. 4·w1+ 2·w2+ 6·w3 ≥ 8.000 w1, w2, w3 ≥ 0 2·w1+ 4·w2+ 2·w3 ≥ 6.000 Por el teorema de holgura complementaria: La 1ª restricción Primal es con holgura. ⇒ w1 = 0 4 Javier Osorio PROBLEMAS DE PROGRAMACIÓN LINEAL La 2ª restricción Primal es con holgura. ⇒ w2 = 0 La 3ª restricción Primal es sin holgura. ⇒ w3 ≠ 0 Resolviendo, utilizando la tabla óptima y aprovechando las características especiales de los valores Zj - Cj para las variables de holgura iniciales: Zj - Cj = C B ⋅ B −1 ⋅ a j − c j ⎛1⎞ ⎜ ⎟ u.m. acondicionado Z 3 − C 3 = 0 = (w1 , w2 , w3 ) ⋅ ⎜ 0 ⎟ − 0;w1 = 0 h ⎜ 0⎟ ⎝ ⎠ ⎛0⎞ ⎜ ⎟ u.m. laminado Z 4 − C 4 = 0 = (w1 , w2 , w3 ) ⋅ ⎜ 1 ⎟ − 0;w2 = 0 h ⎜0⎟ ⎝ ⎠ ⎛ 0⎞ ⎜ ⎟ 4 4 4.000 u.m. = 1.333'33 pulido Z 5 − C 5 = − = (w1 , w2 , w3 ) ⋅ ⎜ 0 ⎟−0 = w3 = − ;w3 = 3 3 3 h ⎜1⎟ ⎝ ⎠ Cada hora de pulido incrementaría los beneficios netos en 1.333’33 u.m. Sobre esta cantidad se habrá de negociar. Es lógico que ω1 = ω2 = 0, debido a que la 1ª y 2ª restricciones tienen holgura, es decir, ha sobrado una serie de horas de acondicionamiento y laminado. Por lo tanto, una hora adicional de ambos tratamientos no nos supondría un mayor beneficio. Javier Osorio 5