El método sı́mplex El método gráfico del capı́tulo 2 indica que la solución óptima de un programa lineal siempre está asociada con un punto esquina del espacio de soluciones. Este resultado es la clave del método sı́mplex algebraico y general para resolver cualquier modelo de programación lineal. La transición de la solución del punto esquina geométrico hasta el método sı́mplex implica un procedimiento de cómputo que determina en forma algebraica los puntos esquina. Esto se logra convirtiendo primero a todas las restricciones de desigualdad en ecuaciones, para después manipular esas ecuaciones en una forma sistemática. Una propiedad general del método sı́mplex es que resuelve la programación lineal en iteraciones. Cada iteración desplaza la solución a un nuevo punto esquina que tiene potencial de mejorar el valor de la función objetivo. El proceso termina cuando ya no se pueden obtener mejoras. El método sı́mplex implica cálculos tediosos y voluminosos, lo que hace que la computadora sea una herramienta esencial para resolver los problemas de programación lineal. Por consiguiente, las reglas computacionales del método sı́mplex se adaptan para facilitar el cálculo automático. 3.1 ESPACIO DE SOLUCIONES EN FORMA DE ECUACIÓN Para estandarizar, la representación algebraica del espacio de soluciones de programación lineal se forma bajo dos condiciones: 1. Todas las restricciones (excepto las de no negatividad) son ecuaciones con lado derecho no negativo. 2. Todas las variables son no negativas. 3.1.1 Conversión de desigualdades a ecuaciones En las restricciones (≤), el lado derecho se puede imaginar como representando el lı́mite de disponibilidad de un recurso, y en ese caso el lado izquierdo representarı́a el uso de ese recurso limitado por parte de las actividades (variables) del modelo. La diferencia entre el lado derecho y el lado izquierdo de la restricción (≤) representa, por consiguiente, la cantidad no usada u holgura del recurso. Para convertir una desigualdad (≤) en ecuación, se agrega una variable de holgura al lado izquierdo de la restricción. Por ejemplo, en el modelo de Reddy Mikks (Ejemplo 2.1-1), la restricción asociada con el uso de la materia prima M1 está dada como 6x1 + 4x2 ≤ 24 Si se define s1 como la holgura, o cantidad no usada, de M1, la restricción se puede convertir en la siguiente ecuación: 6x1 + 4x2 + s1 = 24, 1 s1 ≥ 0 Prosigamos. Una restricción (≥) establece, normalmente, un lı́mite inferior para las actividades del modelo de programación lineal. Como tal, la cantidad por la que el lado izquierdo es mayor que el lı́mite mı́nimo (lado derecho) representa un excedente. La conversión de (≥) a (=) se logra restando una variable de excedencia, del lado izquierdo de la desigualdad. Por ejemplo, en el modelo de la dieta (Ejemplo 2.2-2), la restricción que representa los requisitos mı́nimos de alimento está dada como x1 + x2 ≥ 800 Si se define a s1 , como una variable de excedencia se puede convertir la restricción en la ecuación siguiente: x1 + x2 − S1 = 800, S1 ≥ 0 Es importante observar que las variables de holgura y de excedencia, s1 y S1 siempre son no negativas. El único requisito que queda es que el lado derecho de la ecuación que resulte sea no negativo. Esta condición se puede satisfacer siempre, si es necesario multiplicando ambos lados de la ecuación resultante por -1. Por ejemplo, la restricción −x 1 +x2 ≤ −3 equivale directamente a la ecuación x1 + x2 + s1 = −3, s1 ≥ 0 Ahora se multiplican ambos lados por -1, y se obtiene un lado derecho no negativo, que es lo que se busca; esto es, x1 − x 2 − s 1 = 3 3.1.2 Manejo de variables no restringidas En todos los modelos de programación lineal que se presentaron en él capı́tulo 2 sólo manejamos variables no negativas. Sin embargo, hay casos en los que una variable puede asumir cualquier valor real (positivo, cero o negativo). En el siguiente ejemplo se presenta una aplicación de esa ı́ndole. Ejemplo 3.1-1 McBurger es un restaurante de comida rápida que vende hamburguesas extra y de queso. En una extra se usa un cuarto de libra de carne, y en una de queso sólo se usa 0.2 lb. El restaurante comienza el dı́a con 200 lb de carne, pero puede pedir más, con un costo adicional de 25 centavos por libra para cubrir el costo de la entrega. Toda carne que sobre al final del dı́a se dona a instituciones caritativas. Las utilidades de McBurger son 20 centavos por una extra y 15 centavos por una de queso. En total, McBurger no espera vender más de 900 hamburguesas en cualquier dı́a. ¿Cuántas hamburguesas de cada tipo debe planear McBurger para el dı́a? Primero examinemos las restricciones. Si x1 y x2 representan la cantidad diaria de extra y de queso hechas, la cantidad diaria de carne dependerá de si McBurger se queda con el lı́mite inicial de 200 lb, o si pide carne adicional. En el primer caso, la restricción 2 es 0.25x1 +0.2x2 ≤ 200, y en el segundo es 0.25x1 +0.2x2 ≥ 200. La selección especı́fica de cualquiera de las constantes depende de cuál produce una solución mejor. En otras palabras, no se conoce con anticipación si la restricción trabajará con una holgura (primer caso) o con un excedente (segundo caso). Una forma lógica para tener en cuenta la situación es reemplazar las dos restricciones con 0.25x1 + 0.2x2 + x3 = 200, x3 sin restricciones Ahora la variable x3 juega los papeles de holgura o de excedencia, según se desee. A continuación veamos la función objetivo. McBurger trata de maximizar las utilidades totales, descontando cualquier costo adicional por pedir más libras de carne. En el costo adicional sólo se incurre si x3 juega el papel de un excedente, esto es, si x3 < 0. Más que manejar la variable x3 no restringida en forma directa, usaremos una sustitución normal que exprese la variable no restringida como una función de dos variables no negativas; es decir, − x3 = x + 3 − x3 , donde − x+ 3 , x3 ≥ 0 − + − Si x+ 3 > 0 y x3 = 0, x3 representa una holgura. En caso contrario, si x3 > 0 y x3 = 0, entonces x3 representa un excedente. La teorı́a de la programación lineal indica que la solu ción de un programa lineal nunca puede producir valores positivos − para x+ 3 y para x3 al mismo tiempo. Eso quiere decir que la restricción se puede escribir como sigue: 0.25x1 + 0.2x2 + x+ 3 − x3 = 200 En este caso, la función objetivo se expresa ası́: maximizar z = 0.20x1 + 0.15x2 − 0.25x3 3.2 TRANSICIÓN DE SOLUCIÓN GRÁFICA A SOLUCIÓN ALGEBRAICA Las ideas contenidas en la solución gráfica de un modelo de programación lineal son la base para desarrollar el método algebraico sı́mplex. La figura 3.1 marca el paralelismo entre los dos métodos. En el método gráfico, el espacio de soluciones se delimita con los semiespacios que representan las restricciones, y en el método sı́mplex, el espacio de soluciones se representa con m ecuaciones lineales simultáneas y n variables no negativas. Se puede apreciar en forma visual por qué el espacio gráfico de soluciones tiene una can tidad infinita de puntos de solución; pero, ¿cómo se puede deducir algo parecido a partir de la representación algebraica del espacio de soluciones? La respuesta es que en la representación algebraica, la cantidad m de ecuaciones siempre es menor o igual 3 Figure 1: a la cantidad de variables n.1 Si m = n, y si las ecuaciones son consistentes, el sistema sólo tiene una solución; pero si m < n (esto representa la mayor parte de los programas lineales), entonces el sistema de ecuaciones producirá una infinidad de soluciones, de nuevo si es consistente. Como ejemplo sencillo, la ecuación x = 2 tiene m = n = 1, y es obvio que la solución es única. Pero la ecuación x + y = 1 tiene m = 1 y n = 2, y tiene una cantidad infinita de soluciones. Cualquier punto de la recta x + y = 1 es una solución. Ya demostramos cómo se representa el espacio de soluciones de un programa lineal en forma algebraica. Entonces los candidatos para la solución óptima, que son los puntos esquina (vértice), se determinan con las ecuaciones lineales simultáneas como sigue: En un conjunto de m × n ecuaciones m < n, si se igualan a cero n − m variables, y a continuación se despejan las m variables restantes de las m ecuaciones, la solución resultante, si es única, debe corresponder a un punto esquina del espacio de soluciones. En el siguiente ejemplo demostraremos el procedimiento. 1 Si la cantidad de ecuaciones m es mayor que la cantidad de variables n, entonces al menos m-n ecuaciones deben ser redundantes. 4 Ejemplo 3.2-1 Se tiene el siguiente programa lineal con dos variables: Maximizar z = 2x1 + 3x2 s.a. 2x1 + x2 x1 + 2x2 ≤ ≤ 4 5 x1 , x 2 ≥ 0 En la figura 3.2 se ve el gráfico del espacio de soluciones del problema. Algebraicamente, el espacio de soluciones de la programación lineal se representa como: Maximizar z s.a. 2x1 + x2 + s1 x1 + 2x2 + s2 x1 , x 2 , s 1 , s 2 = 2x1 + 3x2 = 4 = 5 ≥ 0 El sistema tiene m = 2 ecuaciones y n = 4 variables. Ası́, según la regla que acabamos de presentar, se pueden determinar algebraicamente los puntos esquina igualando a cero n − m = 4 − 2 = 2 variables y resolviendo las ecuaciones para determinar las m − 2 variables restantes. Por ejemplo, si x1 = 0 y x2 = 0, las ecuaciones producen la solución s1 = 4, s2 = 5 Esta solución corresponde al punto A de la figura 3.2 (convénzase el lector de que en realidad s1 = 4 y s2 = 5 en el punto A). Se puede determinar otro punto si se hacen s1 = 0 y s2 = 0 y a continuación se resuelven las dos ecuaciones 2x1 + x2 = 4, x1 + 2x2 = 5 En esta forma se obtienen x1 = 1 y x2 = 2, que definen al punto C de la figura 3.2. Es probable que se pregunte cómo se puede saber cuáles de las n − m variables se deben igualar a cero, para obtener determinado punto esquina. Sin las ventajas de la solución gráfica (de la cual sólo se dispone para dos o tres variables) no se puede decir cuáles de las (n − m) variables igual a cero están asociadas con cuál punto esquina. Pero eso no impide enumerar todos los puntos esquina del espacio de soluciones. Sólo tenga en cuenta todas las combinaciones en las que n-m variables se igualan a cero, y resuelva las ecuaciones que resulten. Una vez resueltas, la solución óptima es el punto esquina factible que produce el mejor valor objetivo. 4! En este ejemplo, se tiene que C24 = 2!2! = 6 puntos esquina. Al examinar la figura 3.2, se puede localizar lo que se pudiera llamar puntos esquina “auténticos”, que son 5 los puntos A, B, C y D. ¿Dónde quedan los otros dos? De hecho, los puntos E y F también son puntos esquina Figure 2: clase3bFig1.eps about here. en este problema, pero son no factibles, esto es, no satisfacen todas las restricciones del problema. Esos puntos esquina no factibles no son candidatos para el valor óptimo. Para hacer una transición completa hacia la solución algebraica necesitamos indicar los puntos esquina por sus nombres algebraicos. En forma especı́fica, las n − m variables que se igualan a cero se llaman variables no básicas. Si las m variables restantes tienen una solución única, se llaman variables básicas y su solución (al resolver las m ecuaciones) se llama solución básica. (En este momento, debe consultar la figura 3.1.) La siguiente tabla muestra todas las soluciones básicas y no básicas para este ejemplo. Variables no básicas (cero) (x1 , x2 ) (x1 , s1 ) (x1 , s2 ) (x2 , s1 ) (x2 , s2 ) (s1 , s2 ) Variables básicas (s1 , s2 ) (x2 , s2 ) (x2 , s1 ) (x1 , s2 ) (x1 , s1 ) (x1 , x2 ) Solución básica (5,4) (4,-3) (2.5,1.5) (2,3) (5,-6) (1,2) Punto esquina asociado A F D B E C ¿Factible? Sı́ No Sı́ Sı́ No Sı́ Valor objetivo, z 0 7.5 4 8 (óptimo) Notará en el ejemplo 3.2-1 que a medida que aumenta el tamaño del problema (esto es, a medida que m y n se hacen grandes), el problema de enumerar todos los puntos 6 esquina es demasiado complicado, computacionalmente. Por ejemplo, para m = 10 y n = 20 serı́a necesario resolver C1 02 0 = 184.756 conjuntos de 10 × 10 ecuaciones; es una tarea abrumadora en realidad, en especial cuando se sabe que un programa lineal de 10 × 20 es pequeño en una situación de la vida real en que no son raras cientos o hasta miles de variables y restricciones. Sin embargo, puede tener la seguridad de que, al final, sólo se investiga una fracción de todas las posibles soluciones básicas factibles (puntos esquina) del espacio de soluciones. En esencia, en el método sı́mplex se usa un procedimiento inteligente de búsqueda, diseñado para llegar al punto esquina óptimo en una forma eficiente. 3.3 EL MÉTODO SÍMPLEX Más que enumerar todas las soluciones básicas (puntos esquina) del problema de programación lineal (como hicimos en la sección 3.2), el método sı́mplex sólo investiga “unas pocas selectas” entre ellas. 3.3.1 Naturaleza iterativa del método sı́mplex La figura 3.3 muestra el espacio de soluciones de la programación lineal del ejemplo 3.2-1. Normalmente, el método sı́mplex comienza en el origen (punto A), donde x 1 = x2 = 0. En este punto de inicio, el valor de la función objetivo z es cero, y la pregunta lógica es si ese valor Figure 3: clase3bFig2.eps about here. 7 mejora con un aumento en x1 y/o x2 no básicas respecto a sus valores actuales de cero. Contestaremos esta pregunta investigando la función objetivo: Maximizar z = 2x1 + 3x2 La función indica que un aumento en x1 o x2 (o en ambas) respecto a sus valores actuales de cero aumentará el valor de z (recuerde que estamos maximizando a z). Sin embargo, en el diseño del método sı́mplex se estipula aumentar las variables una por una. 1. Si aumenta x1 , entonces, como se ve en la figura 3.3, su valor debe aumentar para llegar al punto esquina B (recuerde que no se acepta detenerse antes de llegar a B, porque un candidato para el óptimo debe ser un punto esquina). Una vez en B, el método sı́mplex aumentará el valor de x2 para llegar al punto esquina mejorado C. El punto C es óptimo y se termina el proceso. La trayectoria asociada al algoritmo sı́mplex es A→B→C. 2. Si aumenta x2 , el siguiente punto esquina será D, y a partir de D la solución se mueve hacia el punto óptimo C. El trayecto asociado con el algoritmo sı́mplex es A→D→C. Nótese que en ambas rutas, A→B→C y A→D→C, las iteraciones sı́mplex se mueven por los bordes del espacio de soluciones, y eso quiere decir que el método no puede atravesar ese espacio para ir en forma directa de A a C. Es probable que se pregunte si hay una ruta especı́fica para decidir cuál variable no básica (cero) debe aumentarse en determinado punto esquina. Por ejemplo, en el punto A se podrı́a aumentar x1 o x2 , y cualquier selección darı́a como resultado un valor objetivo mejor. Sin embargo, el método sı́mplex proporciona una regla definida, principalmente para facilitar el desarrollo de un programa de cómputo. En forma especı́fica, como se está maximizando, la variable que tenga el coeficiente positivo en la función objetivo más grande es la que se selecciona para aumentar. Si hay un empate, la selección se hace en forma arbitraria. Téngase en cuenta que sólo se trata de una regla fácil que, de acuerdo con la experiencia en cómputo, generalmente (pero no siempre) conduce a la menor cantidad de iteraciones. Esta sección termina con una descripción de los cambios en las variables básicas y no básicas, a medida que el método sı́mplex se mueve de un punto esquina al siguiente. La figura 3.4 muestra que s1 y s2 son básicas en el punto A, y x1 y x2 son no básicas. Cuando se aumenta x1 respecto a cero (porque mejora el valor de z) se debe llegar al punto esquina B, con lo que cambia el estado de x1 de no básica a básica. En forma simultánea, la variable s1 que era básica en el punto A, se transforma en no básica y asume un valor cero en el punto B. En esencia, el cambio conduce al “intercambio” de la x1 no básica y la s1 básica en A para producir las nuevas variables básicas (x1 , s2 ) y las variables no básicas (s1 , x2 ) en B. Se dice entonces que en A, x1 entra a la solución básica y s1 sale de ella, o la deja. En la terminologı́a del método sı́mplex, x1 y S1 en el punto A se llaman las variables de entrada y de salida, respectivamente. Al 8 Figure 4: clase3bFig2.eps about here. continuar con el mismo razonamiento en B, x2 y s2 son, respectivamente, las variables de entrada y de salida. El proceso termina en el punto C, porque es óptimo. 9