Ejemplo (problemas primal y dual del carpintero). Un carpintero modesto fabrica dos tipos de mesas de madera. Cada mesa del tipo 1 necesita 4 horas de mecanizado primario (preparación de piezas) y 4 horas de mecanizado secundario (ensamblado y barnizado). Análogamente, cada mesa del tipo 2 necesita 3 horas de mecanizado primario y 7 horas de mecanizado secundario. Las disponibilidades diarias de mecanizados primario y secundario son respectivamente de 40 y 56 horas-máquina. La venta de una mesa del tipo 1 reporta un beneficio de 70 dólares, mientras que la venta de una mesa del tipo 2 de 90 dólares. El objeto de este problema es determinar el número de mesas de cada tipo que han de producirse diariamente para maximizar el beneficio obtenido. Solución: Primero ordenamos los datos en una tabla: Horas Mec. Prim. Sec. Variables x1 4 4 (mesas) x2 3 7 Horas (Max.) 40 56 Ahora escribimos el problema lineal: Maximizar z = 70x1 + 90x2 sujeta a 4x1 + 3x2 ≤ 40 4x1 + 7x2 ≤ 56 Escribimos el problema en forma de ecuación agregando variables de holgura: 1 Maximizar z = 70x1 + 90x2 sujeta a 4x1 + 3x2 + x3 = 40 4x1 + 7x2 + x4 = 56 Escribimos la tabla simplex: Básica x1 z -70 x3 4 4 x4 x2 x3 -90 0 3 1 7 0 x4 0 0 1 Solución 0 40 56 La tabla es consistente porque x1 y x2 son no básicas (x1 = 0, x2 = 0) Iteración 0 entra x2 sale x4 1 entra x1 sale x3 2 óptima Básica x1 x2 z -70 -90 x3 4 3 x4 4 7 z -18.57 0 x3 2.29 0 x2 0.57 1 z 0 0 x1 1 0 x2 0 1 x3 x4 Solución 0 0 0 1 0 40 0 1 56 0 12.86 720 1 -0.43 16 0 0.14 8 8.13 9.38 850 0.44 -0.19 7 -0.25 0.25 4 Por lo tanto el carpintero de fabricar 7 mesas del tipo 1, 4 del tipo 2 y su ganancia será de $850. Para escribir el dual, reescribamos el primal como Maximizar z = 70x1 + 90x2 + 0x3 + 0x4 sujeta a 4x1 + 3x2 + x3 + 0x4 = 40 4x1 + 7x2 + 0x3 + x4 = 56 2 Según las reglas que ya se enunciaron resulta: Minimizar w sujeta a 4y1 + 4y2 3y1 + 7y2 y1 + 0y2 0y1 + y2 y1 , y 2 = 40y1 + 56y2 ≥ ≥ ≥ ≥ 70 90 0 0 no restringidas Reordenando resulta Minimizar w sujeta a 4y1 + 4y2 3y1 + 7y2 y1 , y 2 = 40y1 + 56y2 ≥ 70 ≥ 90 ≥ 0 Para resolver el problema, tenemos que escribirlo en forma de ecuación, Minimizar w sujeta a 4y1 + 4y2 − y3 + R1 3y1 + 7y2 − y4 + R2 yk = 40y1 + 56y2 = 70 = 90 ≥ 0 ∀k Resolveremos el problema por el método de dos fases. Primero resolvemos: 3 Minimizar r sujeta a 4y1 + 4y2 − y3 + R1 3y1 + 7y2 − y4 + R2 yk = R1 + R2 = 70 = 90 ≥ 0 ∀k Escribimos la tabla simplex: Básica y1 r 0 R1 4 3 R2 y2 0 4 7 y3 0 -1 0 y4 0 0 -1 R1 -1 1 0 R2 -1 0 1 Solución 0 70 90 que no es consistente, esto se soluciona sumando las filas R1 y R2 a la fila r: Básica y1 r 7 R1 4 3 R2 y2 y3 11 -1 4 -1 7 0 y4 -1 0 -1 R1 0 1 0 R2 0 0 1 Solución 160 70 90 ahora podemos empezar a iterar. Fase 1 Iteración 0 entra y2 sale R2 1 entra y1 sale R1 2 óptima Básica r R1 R2 r R1 y2 r y1 y2 y1 y2 y3 y4 R1 R2 Solución 7 11 -1 -1 0 0 160 4 4 -1 0 1 0 70 3 7 0 -1 0 1 90 2.29 0 -1 0.57 0 -1.57 18.57 2.29 0 -1 0.57 1 -0.57 18.57 0.43 1 0 -0.14 0 0.14 12.86 0 0 0 0 -1 -1 0 1 0 -0.44 0.25 0.44 -0.25 8.13 0 1 0.19 -0.25 -0.19 0.25 9.38 4 Ahora el problema tiene la forma Minimizar w sujeta a y1 − 0.44y3 + 0.25y4 y2 + 0.19y3 − 0.25y4 yk = 40y1 + 56y2 = 8.13 = 9.38 ≥ 0 ∀k Fase 2 Iteración 0 consistente? Iteración 1 óptima Básica y1 z -40 y1 1 y2 0 Básica y1 z 0 y1 1 y2 0 y2 y3 y4 Solución -56 0 0 0 0 -0.44 0.25 8.13 1 0.19 -0.25 9.38 y2 y3 y4 Solución 0 -7 -4 850 0 -0.44 0.25 8.13 1 0.19 -0.25 9.38 Entonces, la solución del problema dual es y1 = 8.13, y2 = 9.38 y w = 850. Como vemos, las funciones objetivo primal y dual tienen el mismo valor en el óptimo zop = wop . ¿Cómo obtenemos los valores del problema dual a partir del primal? Metodo 1 Valores óptimos de las variables duales Vector fila de los coeficientes Inversa primal × objetivos originales de las = óptima variables básicas óptimas primales dual (y1 , y2 ) = 70, 90 × 0.44 −0.19 −0.25 0.25 5 = (8.13, 9.38) primal 40, 56 (x1 , x2 ) = × 0.44 −0.25 −0.19 0.25 = (7, 4) Método 2 Coeficiente z-primal óptimo de cualquier variables xj = Lado izquierdo de la j-ésima restricción dual − Lado derecho de la j-ésima restricción dual 8.13 = y1 − 0 9.38 = y2 − 0 x3 : x4 : Cálculos de columnas de restricción. Columna de restricción en la iteración i = Columna y1 óptima Columna y3 óptima = Inversa en la iteración i Columna original × de restricción 0.44 −0.25 −0.19 0.25 = 0.44 −0.25 −0.19 0.25 6 × × −1 0 4 3 = (1, 0) = (−0.44, 0.19) (Fómula 1)