Análisis de dualidad y sensibilidad La solución óptima de una programación lineal se basa en una toma instantánea de las condiciones que prevalecen en el momento de formular y resolver el modelo. En el mundo real, los ambientes de decisión rara vez permanecen estáticos, y es esencial determinar cómo cambia la solución óptima cuando cambian los parámetros del modelo. Eso es lo que hace el análisis de sensibilidad. Proporciona técnicas de cómputo eficientes para estudiar el comportamiento dinámico de la solución óptima que resulta al hacer cambios en los parámetros del modelo. Ya explicamos el análisis de sensibilidad a un nivel elemental. Ahora, usaremos la teorı́a de la dualidad para presentar un tratamiento algebraico de este importante aspecto práctico. DEFINICIÓN DEL PROBLEMA DUAL El problema dual es una programación lineal definida en forma directa y sistemática a partir del modelo original (o primal) de programación lineal. Los dos problemas están relacionados en forma tan estrecha que la resolución óptima de un problema produce en forma automática la resolución óptima del otro. En la mayor parte de las presentaciones de programación lineal, el dual se define para varias formas del primal, dependiendo del sentido de la optimización (maximización o mini-mización), tipos de restricciones (≤, ≥ o =), y la orientación de las variables (no negativa o no restringida). Este tipo de tratamiento puede confundir Por esta razón presentaremos una sola definición que comprenda en forma automática a todas las formas del primal. Nuestra definición del problema dual requiere expresar el problema primal en forma de ecuaciones, como se presentó anteriormente: todas las restricciones son ecuaciones, con lado derecho no negativo y todas las variables son no negativos. Este requisito es consistente con el formato de la tabla de inicio sı́mplex. En consecuencia, todo resultado obtenido a partir de la solución primal óptima se aplican en forma directa al problema dual asociado. Para mostrar cómo se forma el problema dual, se define el primal en forma de ecuación como sigue: Maximizar o minimizarz = n X j=1 sujeta a 1 cj x j (1) n X aij xj = bi , i = 1, 2, . . . , m (2) ≥ 0, j = 1, 2, . . . , n (3) j=1 xj Las variables xj , j = 1, 2, . . . , n, incluyen las variables excedentes, holguras y artificı́ales, si las hay. La tabla 1 muestra cómo se construye el problema dual a partir del primal. De hecho se tiene que: Cuadro 1: Construcción del dual a partir del primal Variables primales x1 x2 . . . xj . . . xn Variables duales c1 c2 ... cj . . . cn y1 a11 a12 . . . a1j . . . a1n b1 y2 a21 a22 . . . a2j . . . a2n b2 .. .. .. .. .. .. .. .. . . . . . . . . ym am1 am2 . . . amj . . . amn bm ↑ ↑ j-ésima Coeficientes restricción dual objetivo duales 1. Se define una variable dual por cada ecuación primal (restricción). 2. Se define una restricción dual por cada variable primal. 3. Los coeficientes de restricción (columna) de una variable primal definen los coeficientes en el lado izquierdo de la restricción dual, y su coeficiente objetivo define el lado derecho. 4. Los coeficientes objetivo del dual son iguales al lado derecho de las ecuaciones de restricción primal. Las reglas para determinar el sentido de la optimización (maximización o minimización), el tipo de restricción (≤, ≥ o =), y el signo de las variables duales (siempre no restringido) se resumen en la tabla 2. Nótese que el sentido de la optimización en el dual siempre es el opuesto al del primal. Una forma fácil de recordar el tipo de restricción (es decir, ≤ o ≥) en el dual es que si el objetivo del dual es minimización (es decir, “apunta hacia abajo”), las restricciones son todas del tipo ≥ (es decir, “apuntan hacia arriba”). Cuando el objetivo del dual es maximización lo contrario es válido. 2 Cuadro 2: Reglas para construir el problema dual Objetivo del problema Problema dual primal Objetivo Tipo de restricciones Signo de variables Maximización Minimización ≥ No restringido Minimización Maximización ≤ No restringido En los siguientes ejemplos se demuestra el uso de las reglas de la tabla 2, y también se muestra que la definición comprende todas las formas del primal, en forma automática. Ejemplo 1 Primal Maximizar z = 5x1 + 12x2 + 4x3 sujeta a x1 + 2x2 + x3 ≤ 10 2x1 − x2 + 3x3 = 8 x1 , x2 , x3 ≥ 0 Primal en forma de ecuación Maximizar z = 5x1 + 12x2 + 4x3 + 0x4 sujeta a x1 + 2x2 + x3 + x4 = 10 2x1 − x2 + 3x3 + 0x4 = 8 x 1 , x2 , x3 , x4 ≥ 0 Variables duales y1 y2 Problema dual Minimizar w s.a y1 + 2y2 2y1 − y2 y1 + 3y2 y1 + 0y2 y1 , y2 sin restricción = 10y1 + 8y2 ≥ 5 ≥ 12 ≥ 4 ≥ 0 Ejemplo 2 Primal Minimizar z = 15x1 + 12x2 sujeta a x1 + 2x2 ≥ 3 2x1 − 4x2 ≤ 5 x1 , x2 ≥ 0 Primal en forma de ecuación Minimizar z = 5x1 + 12x2 + 0x3 + 0x4 sujeta a x1 + 2x2 − x3 + 0x4 = 3 2x1 − 4x2 + 0x3 + x4 = 5 x 1 , x2 , x3 , x4 ≥ 0 Problema dual 3 Variables duales y1 y2 Maximizar w s.a y1 + 2y2 2y1 − 4y2 −y1 y2 y1 , y2 sin restricción = 3y1 + 5y2 ≤ 15 ≤ 12 ≤ 0 ≤ 0 Ejemplo 3 Primal Maximizar z = 5x1 + 6x2 sujeta a x1 + 2x2 = 5 −x1 + 5x2 ≥ 3 4x1 + 7x2 ≤ 8 x1 no restringida, x2 ≥ 0 Problema dual Primal en forma de ecuación − Sustituir x1 = x+ 1 − x1 + − Maximizar z = 5x1 − 5x1 + 6x2 + 0x3 + 0x4 sujeta a − x+ − x + 2x 2 + 0x3 + 0x4 = 5 1 1 + − −x1 x1 + 5x2 − x3 + 0x4 = 3 − 4x+ 1 − 4x1 + 7x2 + 0x3 + x4 = 8 − x+ 1 , x1 , x2 ≥ 0 Minimizar w s.a y1 − y2 + 4y3 −y1 + y2 − 4y3 2y1 + 5y2 + 7y3 −y2 y3 y1 , y2 , y3 sin restricción Variables duales = 5y1 + 3y2 + 8y3 ≥ 5 ≥ −5 ≥ 6 ≥ 0 ≥ 0 Las restricciones primera y segunda se sustituyen por una ecuación. La regla general en este caso es que una variable primal no restringida corresponde siempre a una restricción dual de igualdad. A la inversa, una ecuación primal produce una variable dual no restringida. 4 y1 y2 y3