El método Simplex. Algoritmo de las dos fases 3.1. 1 Motivación gráfica del método Simplex El método gráfico de resolución nos garantiza que si la región de soluciones posibles es acotada, como ocurre en los ejemplos 2.4.1 y 2.4.2 existe al menos un vértice del conjunto de soluciones posibles que es solución óptima. Cuando la región de soluciones posibles es no acotada pueden ocurrir dos cosas, que el problema sea no acotado, como en el ejemplo 2.4.3, o que sea acotado. Si el problema es acotado significa, como ya dijimos en el primer tema, que existe al menos una solución óptima en el que la función objetivo alcanza el mejor valor posible, siendo este valor finito. En este caso nos podemos encontrar ante una cualquiera de las tres situaciones siguientes: que exista una única solución óptima, que será necesariamente un vértice del poliedro de soluciones (2.4.1) que existan infinitas soluciones óptimas, debido a que la función objetivo es paralela a una de las restricciones, que puede ser, • un segmento, en cuyo caso existirán al menos dos vértices adyacentes que son soluciones óptimas. • o una semirrecta, en cuyo caso existirá al menos un vértice que es solución óptima. Lo que acabamos de decir no es únicamente válido para el problema de programación lineal con dos variables sino que es generalizable a cualquier problema de Programación Lineal. En resumen, podemos decir que las propiedades claves que dan fundamento al método Simplex son: 1. Si el problema de programación lineal tiene una única solución óptima, será necesariamente un vértice del conjunto de soluciones posibles. 2. Si el problema tiene más de una solución óptima y el conjunto de soluciones posibles es acotado, al menos dos de ellas son vértices adyacentes El método Simplex. Algoritmo de las dos fases del conjunto de soluciones posibles. Si la región es no acotada, solo podemos garantizar que al menos una de las soluciones óptimas es un vértice. 3. Existe un número finito de vértices en el conjunto de soluciones posibles del problema. 4. Si un vértice proporciona un valor objetivo mejor o igual que el resto de vértices adyacentes entonces proporciona un valor objetivo mejor o igual que cualquier otra solución posible del problema, luego es una solución óptima para el problema. Las dos primeras propiedades garantizan que a la hora de resolver un PL no necesitamos evaluar la función objetivo en todas y cada una de las soluciones posibles del problema, sino que basta con limitarnos a los vértices. La tercera propiedad garantiza que tenemos un número finito de vértices, y por último, la cuarta propiedad nos proporciona el criterio de optimalidad que nos permitirá detectar si un vértice es o no solución óptima. El algoritmo Simplex es un proceso iterativo en el que en cada iteración se evalúa la función objetivo en un vértice del conjunto de soluciones posibles y se comprueba utilizando un criterio de optimalidad si ese vértice es o no solución óptima. Si lo es, el método se detiene y en otro caso se itera para alcanzar otro vértice adyacente. Para garantizar una exploración eficiente del conjunto de soluciones posibles el algoritmo se mueve de un vértice a otro que proporciona un valor de la función objetivo al menos tan bueno como el que ya tenı́a. Lo que acabamos de decir nos permite aplicar gráficamente el método Simplex, bastará con elegir un vértice arbitrario del conjunto de soluciones posibles e ir desplazándonos a un vértice adyacente que mejore el valor de la función objetivo hasta que encontremos el valor óptimo o detectemos que no hay ningún vértice adyacente pero sı́ una dirección en la que desplazarnos tanto como queramos mejorando la función objetivo (2.4.3). En esta última situación concluirı́amos que el problema es no acotado. Veremos que el método simplex también proporciona un test para detectar la no acotación. El método Simplex. Algoritmo de las dos fases 3 Ejemplo Considérese el conjunto de soluciones posibles del ejemplo que hemos venido siguiendo en el tema anterior: Recordemos que el PPL asociado era: Max s.a.: E + 2D E + D ≤ 10 −E + D ≤ 1 D ≤ 4 E, D ≥ 0 à ! 0 , cuyo valor 0 objetivo es z = 0. Nos podemos desplazar a uno cualquiera de los vértices adyacentes: Supongamos que iniciamos el algoritmo en el vértice à à 0 1 ! 10 0 −→ z = 2, ! −→ z = 10, à ! 10 Evidentemente nos interesa desplazarnos al ya que, de los dos posi0 bles, es el que proporciona à ! el mejor valor de la función objetivo. 10 A partir del podrı́amos desplazarnos al: 0 El método Simplex. Algoritmo de las dos fases à ! 0 −→ z = 0, que evidentemente no nos interesa ya que empeo0 rarı́amos la situación actual, o al à ! 6 −→ z = 14. 4 Dado que 14 es mejor que 2, el algoritmo se desplazarı́a hasta este vértice en la siguiente iteración. à ! 6 De nuevo, desde el , podemos ir al: 4 à ! 3 −→ z = 11, o al 4 à ! 10 −→ z = 10. 0 Como cualquiera de las dos alternativas proporciona un valor de la función objetivo peor que el actual el algoritmo se detendrı́a. STOP, concluyendo que tenemos una única solución óptima à 6 4 ! cuyo valor óptimo es z ∗ = 14 En el ejemplo se observa que los vértices del conjunto de soluciones posibles son precisamente los puntos que se obtienen como intersección de dos de las rectas asociadas a las restricciones del problema. Sin embargo, no son intersección de dos rectas cualesquiera ya que el punto (E, D) = ( 92 , 11 ), no es una solución posible del problema ya que 2 incumple la restricción D ≤ 4. Formalmente se dice que el punto viola una restricción. Tampoco son soluciones los puntos à 0 4 ! à , ni 0 10 ! Necesitamos un procedimiento que nos permita obtener algebraicamente los vértices del conjunto de soluciones posibles del problema. Además, El método Simplex. Algoritmo de las dos fases 5 nos interesa que sea un proceso generalizable a problemas con más de dos variables. Si recuperamos la forma estándar del problema de Carlos, tenemos un sistema con 3 ecuaciones y 5 incógnitas. E + D + H1 = 10 −E + D + H2 = 1 D + H3 = 4 Observar que cada vez que igualamos a cero dos cualesquiera de las variables nos quedamos con un sistema de tres ecuaciones con tres incógnitas que sı́ sabemos resolver. Por ejemplo, si hacemos H1 = H2 = 0, nos queda: E + D = 10 −E + D = 1 D + H3 = 4 cuya solución es: E = 9/2, D = 11/2, H3 = −3/2 que no puede ser solución del problema de programación lineal porque incumple una restricción de no negatividad. Observar que el punto asociado queda fuera del conjunto de soluciones posibles. Análogamente y considerando todas las combinaciones posibles se obtienen todos los puntos de intersección de todas las parejas de restricciones. Estos puntos incluyen tanto las soluciones posibles del problema como las que no lo son (variables con valor negativo). El método Simplex. Algoritmo de las dos fases ( E, 0 D, 0 H1 , 10 H2 , 1 H3 ) 4 0 10 0 -9 -6 (0,10) no es solución posible 0 1 9 0 3 (0,1) Solución posible 0 4 6 -3 0 (0,4) no es solución posible 10 0 0 11 4 (10,0) Solución posible ? 0 ? ? 0 Sistema Incompatible -1 0 11 0 4 (-1,0) no es solución posible 9/2 11/2 0 0 -3/2 6 4 0 3 0 (6,4) Solución posible 3 4 3 0 0 (3,4) Solución posible (0,0) Solución posible (9/2,11/2) no es solución posible La infactibilidad de estos puntos se refleja en que están asociados a soluciones del sistema de ecuaciones en forma estándar en las que alguna variable es negativa. Obsérvese además que las variables de holgura miden la distancia de un punto a la restricción asociada a dicha variable de holgura. Si la restricción es de ≤ una variable de holgura negativa significa que el punto en cuestión viola la restricción. En el ejemplo hemos visto cómo podemos obtener los vértices del conjunto de soluciones de un PPL. Para un problema cuya forma estándar incluya un sistema de m ecuaciones linealmente independientes y n incógnitas, los vértices del poliedro se obtienen resolviendo los sistemas de m ecuaciones con m incógnitas que resultan al igualar a cero subconjuntos de n − m variables, solo serán soluciones posibles (vértices) aquéllos puntos cuyas variables, El método Simplex. Algoritmo de las dos fases 7 tanto de holgura como originales sean no negativas. 3.2. El método Simplex El método simplex fue desarrollado en 1947 por George Dantzig para resolver problemas de Programación Lineal. La primera aplicación importante se llevó a cabo poco después de su aparición cuando J. Laderman resolvió un problema de elaboración de una dieta en la que habı́a 9 restricciones de igualdad y 27 variables no negativas. Resolver el problema requirió el trabajo equivalente a 120 dı́as-hombre. En la actualidad, gracias al impresionante desarrollo de la informática, resulta fácil resolver problemas que llegan a involucrar miles de variables y/o restricciones. La potencia y calidad del algoritmo es tal que pese a que se han realizado verdaderos esfuerzos a nivel de investigación para intentar encontrar algoritmos alternativos mejores, no se ha encontrado hoy por hoy ninguno que supere el algoritmo Simplex. En el apartado anterior hemos visto cómo se pueden obtener los vértices del poliedro de soluciones de un PPL a partir del sistema de ecuaciones del PL expresado en forma estándar. Las soluciones de este sistema después de fijar a cero ciertas variables pueden ser soluciones posibles o no. Esto da pie a introducir las siguientes definiciones: Dado un PPL expresado en forma estándar con m ecuaciones y n incógnitas, m ≤ n, podemos dividir las variables en dos grupos: 1. n − m variables a las cuáles les damos el valor 0, y que denominaremos variables no básicas. 2. m variables cuyo valor se determinará resolviendo el sistema de m ecuaciones y m incógnitas resultante de igualar a cero el resto de variables. Si dicho sistema es compatible determinado, es decir, si tiene una única solución, diremos que las m variables son variables básicas. La solución del sistema se dice que es una solución básica y si además cumple que todas las variables toman valores mayores o El método Simplex. Algoritmo de las dos fases iguales que cero diremos que se trata de una solución posible básica, en adelante SPB. Las soluciones posibles básicas cumplen todas las restricciones del problema y proporcionan, después de eliminar las variables de holgura, los vértices del poliedro de soluciones del problema. En principio, diferentes soluciones posibles básicas podrı́an conducirnos al mismo vértice. Una vez sabemos calcular los vértices del poliedro necesitamos caracterizar cuáles son adyacentes y cómo podemos desplazarnos entre ellos. Dos soluciones posibles básicas son adyacentes si todas menos una de sus variables básicas coinciden. Este resultado nos permite trasladarnos de una SPB a otra SPB adyacente cambiando simplemente el estado de una variable de no básica a básica y viceversa. Lo que necesitamos es saber identificar de una manera sencilla si estamos o no en una solución óptima del problema, y si no lo estamos, determinar qué variable no básica interesa hacer básica para alcanzar una nueva SPB mejor que la actual. Veremos cómo hacerlo siguiendo con el ejemplo de Carlos. Ejemplo, continuación . . . Max s.a.: E + 2D E + D ≤ 10 −E + D ≤ 1 D ≤ 4 E, D ≥ 0 Consideremos el PPL expresado en forma estándar en el que, para mantener actualizado el valor de la función objetivo, ésta ha sido incorporada como una restricción más del problema. El método Simplex. Algoritmo de las dos fases 9 - Min z s.a.: z + E + 2D E + D + H1 − E + D + D + E, D, H1 , H2 H2 , H3 H3 = 0 = 10 = 1 = 4 ≥ 0 Identificación de una Solución Posible Básica Inicial En este problema tenemos la suerte de que los términos de la derecha son todos no negativos, 10 RHS = 1 ≥ 0 4 y además hemos añadido una variable de holgura en cada una de las restricciones originales. Esta situación nos permite identificar rápidamente una solución posible básica inicial (un vértice), basta con igualar a cero las variables originales, E y D, que se convertirán en variables no básicas. De este modo el valor de las variables básicas se obtiene directamente del sistema: z + E + 2D E + D + H1 − E + D + D + H2 H3 La SPB inicial es: E D H1 H2 H3 = 0 0 10 1 4 con z = 0 = 0 = 10 = 1 = 4 El método Simplex. Algoritmo de las dos fases Iteración 1: ¿Es óptima la Solución Posible Básica Actual? Como dijimos en el apartado anterior, lo será si ninguno de los vértices adyacentes proporciona un valor mejor de la función objetivo. Para determinar los vértices adyacentes necesitamos cambiar de estado, y por separado, cada una de las variables no básicas, y tratar de hacerlas básicas, siempre que sea posible. Notar que: z = 0 − E − 2D, luego si conseguimos una SPB en la que E o D sean positivas conseguiremos mejorar el valor de la función objetivo. Notar que estamos minimizando, por lo que mejorar significa disminuir el valor de z. ¿Qué variable de las actualmente no básicas interesa que se haga básica? En principio D, ya que por cada unidad que consigamos incrementarla, el valor de la función objetivo disminuirá en 2. Mientras que por cada unidad en que aumentemos E solamente conseguiremos una disminución de una unidad en el valor actual de z. Naturalmente, si conseguimos incrementar el valor de D, ésta se convertirá en una variable básica. Como E seguirá siendo no básica ( = 0) el resto de variables deberán cambiar su valor y al menos una de ellas deberá hacerse cero, es decir pasará a ser no básica. ¿Qué variable de las actualmente básicas debe hacerse no básica? Para averiguarlo necesitamos resolver el sistema resultante de igualar a cero la variable E, con la condición adicional de que las variables deben ser no negativas, es decir: z + 0 + 2D 0 + 1D + H1 − 0 + 1D + 1D + H2 H3 = 0 → z = 0 − 2D = 10 → H1 = 10 − D ≥ 0 = 1 → H2 = 1 − D ≥ 0 = 4 → H3 = 4 − D ≥ 0 Evidentemente lo máximo que puede valer D es el mı́n{10, 1, 4} = 1. El método Simplex. Algoritmo de las dos fases 11 En general, para determinar el valor que debe tomar la nueva variable básica bastará con identificar en el sistema actual los coeficientes de dicha variable y el vector de términos independientes del mismo, a los que llamaremos y y b̄, respectivamente: 1 10 y = 1 y b̄ = 1 1 4 y calcular: b̄i 10 1 4 : yi > 0} = mı́n{ , , } = 1 yi 1 1 1 Esta forma de determinar el valor de la nueva variable básica se denomina Criterio de la Razón Mı́nima. Si aumentamos el valor de D hasta 1, necesariamente, H1 = 9, H2 = 0 y H3 = 3, por lo tanto la nueva variable no básica es H2 . La SPB a la que llegamos es: E 0 D 1 H1 = 9 con z = −2 H2 0 H3 3 mı́n{ que como podemos comprobar ya no se puede identificar directamente sobre el sistema inicial, para hacerlo necesitamos transformarlo en un sistema equivalente en el que los coeficientes de las variables no básicas proporcionen las columnas de la matriz identidad 3 × 3. Para conseguir dicha transformación aplicaremos el método de eliminación de Gauss que como sabemos consiste en transformar un sistema en otro equivalente realizando únicamente operaciones básicas por filas, es decir: Multiplicando o dividiendo una ecuación por un escalar no nulo. Sumando o restando a un ecuación un múltiplo de otra. En nuestro caso debemos conseguir que el vector de coeficientes de la 0 nueva variable básica D sea el 1 ya que debemos reemplazar la variable 0 básica H1 que estaba en la segunda restricción por D. El método Simplex. Algoritmo de las dos fases Si llamamos columna pivote a la asociada a la nueva variable básica y fila pivote a la asociada a la variable no básica, las operaciones elementales que nos permitirán transformar adecuadamente el sistema debemos realizarlas sobre el elemento en el que se cruzan la fila y la columna pivote, al que llamaremos elemento pivote Fila Fila Fila Fila 0 → z + E + 2D 1→ E + D + H1 2→ − E + D + 3→ D + H2 H3 = 0 = 10 = 1 = 4 Si realizamos las siguientes operaciones: Nueva Nueva Nueva Nueva Fila Fila Fila Fila 0 = Fila 1 = Fila 2 = Fila 3 = Fila 0 − 2Fila 2 1 − Fila 2 2 3 − Fila 2 El sistema resultante es: z + 3E 2E + H1 − E + D E − 2H2 − H2 + H2 − H2 + H3 = −2 = 9 = 1 = 3 En el que teniendo en cuenta que las variables no básicas son ahora E y H2 y que por tanto valen cero, resulta sencillo identificar la nueva solución posible básica: E 0 1 D H1 = 9 con z = −2 0 H2 H3 3 Iteración 2: ¿Es óptima la Solución Posible Básica Actual? No, ya que como z = −2−3E + 2H2 si conseguimos una nueva SPB en la que E > 0 podremos mejorar el valor actual de la función objetivo que es -2. El método Simplex. Algoritmo de las dos fases 13 ¿Qué variable de las actualmente no básicas interesa que se haga básica? Por lo que acabamos de decir, la nueva variable básica será E. ¿Qué variable de las actualmente básicas debe hacerse no básica? Identificando el vector de coeficientes de la variable E y el vector de términos independientes, z + 3E 2E + H1 − E + D E − 2H2 − H2 + H2 − H2 + H3 = −2 = 9 = 1 = 3 podemos aplicar el Criterio de la Razón Mı́nima para calcular el valor que tomará E y también la variable que dejará de ser básica. 2 9 y = −1 y b̄ = 1 1 3 b̄i 9 3 : yi > 0} = mı́n{ , } = 3 yi 2 1 Como el mı́nimo se alcanza en el cociente asociado a la última restricción, la única variable que se hará cero al aumentar el valor de E desde 0 hasta 3 es la variable H3 , ésta será por tanto la nueva variable no básica. Pivotando sobre el cruce entre la fila pivote (Fila 3) y la columna pivote (columna de coeficientes de la variable E), E = mı́n{ Fila Fila Fila Fila 0 → z + 3E 1→ 2E + H1 2→ − E + D 3→ E Nueva Nueva Nueva Nueva Fila Fila Fila Fila 0 = Fila 1 = Fila 2 = Fila 3 = Fila − 2H2 − H2 + H2 − H2 + H3 0 − 3Fila 3 1 − 2Fila 3 2 + Fila 3 3 = −2 = 9 = 1 = 3 El método Simplex. Algoritmo de las dos fases obtenemos el siguiente sistema equivalente al inicial: z H1 D E + H2 − 3H3 + H2 − 2H3 + H3 − H2 + H3 = −11 = 3 = 4 = 3 el cuál nos proporciona directamente la nueva SPB: E 3 D 4 H1 = 3 con z = −11 H 2 0 H3 0 Iteración 3: ¿ Es óptima la Solución Posible Básica Actual? No, ya que como z = −11−H2 + 3H3 si conseguimos una nueva SPB en la que H2 > 0 podremos mejorar el valor actual de la función objetivo que es -11. ¿Qué variable de las actualmente no básicas interesa que se haga básica? Por lo que acabamos de decir, la nueva variable básica será H2 . ¿Qué variable de las actualmente básicas debe hacerse no básica? Identificando el vector de coeficientes de la variable H2 y el vector de términos independientes, z H1 D E 1 y= 0 −1 + H2 + H2 + H3 + H3 − H2 + H3 3 y b̄ = 4 3 = −11 = 3 = 4 = 3 El método Simplex. Algoritmo de las dos fases 15 podemos aplicar el Criterio de la Razón Mı́nima para calcular el valor que tomará H2 y cuál será la variable que dejará de ser básica. 3 H2 = mı́n{ } = 3 1 Por lo que la variable H1 debe hacerse cero y convertirse en no básica. Pivotando de nuevo sobre el cruce de la columna pivote H2 y la fila pivote (la asociada a H1 ): Fila Fila Fila Fila 0→ z 1→ 2→ 3→ H1 D E Nueva Nueva Nueva Nueva Fila Fila Fila Fila + H2 − 3H3 + H2 − 2H3 + H3 − H2 + H3 0 = Fila 1 = Fila 2 = Fila 3 = Fila = −11 = 3 = 4 = 3 0 − Fila 1 1 2 3 + Fila 1 obtenemos el sistema equivalente: z E − H1 − H3 H1 + H2 − 2H3 D + H3 + H1 − H3 = −14 = 3 = 4 = 6 que nos proporciona directamente la nueva SPB: E 6 4 D H1 = 0 con z = −14 H 3 2 H3 0 Iteración 4: ¿ Es óptima la Solución Posible Básica Actual? En efecto, ya que z = −14+H1 + H3 , por lo que incrementar el valor de cualquiera de las dos variables no básicas solo nos puede conducir a una solución peor que la que tenemos. El método Simplex. Algoritmo de las dos fases Por lo tanto el vértice que proporciona la solución óptima del problema es: à E D ! à = 6 4 ! y el valor óptimo z ∗ = −14 Resumiendo, la trayectoria seguida ha sido: 0 0 E 0 1 D H1 = 10 → 9 → H2 1 0 H3 4 3 3 4 3 0 0 → 6 4 0 3 0 Notar que los coeficientes en el sistema de las variables que se van haciendo básicas en cada iteración proporcionan las direcciones en las que hay que moverse para ir de una solución posible básica a otra (de un vértice a otro): E D H1 H2 H3 = 0 1 9 0 3 3 4 3 0 0 0 0 10 1 4 + (1) + (3) + (3) 1 1 −2 0 −1 1 0 −1 1 0 0 1 −1 1 −1 = = = 3 4 3 0 0 6 4 0 3 0 0 1 9 0 3 ; (D = 1) ; (E = 3) ; (H2 = 3) Además recordemos que el problema original era de maximizar, por lo tanto el valor óptimo será en realidad de 14 unidades. El método Simplex. Algoritmo de las dos fases 3.3. 17 EL Método Simplex en Formato Tabla Ejemplo, continuación . . . Consideremos el problema en forma estándar: - Min z = − E s.a.: E − E − 2D + D + H1 + D + D + E, D, H1 , Si comenzamos con la SPB inicial: E D H1 = H 2 H3 tendremos: 0 0 10 1 4 H2 H2 , H3 H3 = 10 = 1 = 4 ≥ 0 H1 0 1 0 xB = H 2 → c B = 0 → B = 0 1 H3 0 0 0 à ! à ! 1 E −1 xN = → cN = → N = −1 D −2 0 0 0 1 1 1 1 De donde deducimos el resto de información necesaria para completar la tabla: Coste reducido de E: 1 0 0 1 zE − cE = ctB B −1 aE − cE = (0, 0, 0) 0 1 0 −1 − (−1) = 1 0 0 1 0 Coste reducido de D: 1 1 0 0 t −1 zD − cD = cB B aD − cD = (0, 0, 0) 0 1 0 1 − (−2) = 2 1 0 0 1 El método Simplex. Algoritmo de las dos fases Valor del RHS: 1 0 0 10 10 b̄ = B −1 b = 0 1 0 1 = 1 0 0 1 4 4 Valor de la función objetivo en la SPB actual: 10 cB B −1 b = (0, 0, 0) 1 = 0 4 Luego la tabla inicial del Simplex es: z H1 H2 H3 E 1 1 -1 0 D 2 1 1 1 H1 0 1 0 0 H2 0 0 1 0 H3 0 0 0 1 rhs 0 10 1 4 Observar que está asociada a una SPB que no es óptima ya que hay costes reducidos de variables no básicas estrictamente positivos. Primera Iteración ¿Qué variable no básica se hace básica? D, ya que su coste reducido es el máximo de los costes reducidos. ¿Qué variable deja de ser básica?, H2 , pues aplicando el criterio de la razón mı́nima tenemos: 10 1 4 mı́n{ , , } = 1 1 1 1 Pivotamos sobre el elemento intersección de la fila y la columna pivote y llegamos a: z H1 D H3 E 3 2 -1 1 D 0 0 1 0 H1 0 1 0 0 H2 -2 -1 1 -1 H3 0 0 0 1 rhs -2 9 1 3 El método Simplex. Algoritmo de las dos fases 19 0 1 que como vemos está asociada a la SPB, 9 , que tampoco es óptima ya 0 3 que la variable no básica E tiene un coste reducido positivo. Segunda Iteración ¿Qué variable no básica se hace básica? E, ya que es la única con un coste reducido estrictamente positivo. ¿Qué variable deja de ser básica?, aplicando de nuevo el criterio de la razón mı́nima, será H3 . Pivotando, z H1 D H3 E D 3 0 2 0 -1 1 1 0 H1 0 1 0 0 H2 -2 -1 1 -1 H3 0 0 0 1 rhs -2 9 1 3 z H1 D E E 0 0 0 1 H1 0 1 0 0 H2 1 1 0 -1 H3 -3 -2 1 1 rhs -11 3 4 3 D 0 0 1 0 Seguimos sin alcanzar la solución óptima. Tercera Iteración En este caso es H2 la variable no básica que interesa hacer básica, pues su coste reducido es igual a 1 > 0. Además la variable que deja de ser básica también está unı́vocamente determinada, H1 . Finalmente, después de pivotar, alcanzamos la tabla óptima: z H2 D E E 0 0 0 1 D 0 0 1 0 H1 -1 1 0 1 H2 0 1 0 0 H3 -1 -2 1 -1 rhs -14 3 4 6 El método Simplex. Algoritmo de las dos fases ya que cumple el criterio de optimalidad pues los costes reducidos de todas las variables no básicas son menores o iguales que cero. La SPB óptima es: E 6 4 D H1 = 0 H 3 2 H3 0 y el valor óptimo z ∗ = −14, que como partı́amos de un problema de maximización, equivale a un valor óptimo de 14 unidades.