UNIVERSIDAD DE SANTIAGO DE CHILE DEPARTAMENTO DE INGENIERÍA EN MINAS AYUDANTÍA DE OPTIMIZACIÓN APUNTES DE OPTIMIZACIÓN Teoría y Ejercicios – Parte 1 Autor: Felipe Quezada Castañeda Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización Programación Lineal PROBLEMAS DE OPTIMIZACIÓN. Un Problema de Optimización es uno tal que, bajo ciertas condiciones en particular, se desea maximizar o minimizar una función dada. Si dicha función a optimizar es lineal, el problema anterior será llamado Problema de Programación Lineal (PPL), siempre y cuando el espacio de soluciones factible que define a dicho problema pueda ser construido mediante un sistema lineal de ecuaciones de dimensión rectangular, digamos de , siendo . El Modelo de Programación Lineal se define en base a tres elementos constitutivos: las variables del problema, tales que ; las restricciones a las que está sujeto el problema, que pueden ser de tres tipos: - Tipo 1: ∑ - Tipo 2: ∑ - Tipo 3: ∑ En las expresiones anteriores: : Valor conocido, que tiene que ser respetado estrictamente : Valor conocido, que puede ser respetado o superado : Valor conocido, que no debe ser superado En las restricciones anteriores, es el número de la ecuación. Si en total hay restricciones asociadas al problema, puede variar de a . Además , y son constantes conocidas, y las son las variables del problema, digamos de ellas. Así, el espacio de soluciones factible (ESF) del problema es un sistema lineal de ecuaciones, de dimensión . El último elemento constitutivo del Modelo de Programación Lineal es la llamada función objetivo, la cual puede ser del tipo: ∑ Donde son constantes conocidas. Esta función debe optimizarse, cumpliendo las restricciones anteriores, para así poder darle una solución al problema. MODELO DE PROGRAMACIÓN LINEAL. Las definiciones anteriores suelen ser confusas, por lo que es mejor ejemplificarlas de forma más concreta. Vamos a suponer entonces que la Compañía Metalúrgica “DIMIN” 1 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización (Chile) dispone de dos procesos de reacción mediante los cuales debe producir dos tipos de surfactantes, que serán utilizados en procesos de flotación. Con el primer proceso se producen 2 [kg/hr] del surfactante 1 y 1 [kg/hr] del surfactante 2. Mientras que el segundo proceso produce 3 [kg/hr] del surfactante 1 y 1 [kg/hr] del surfactante 2. La gerencia ha determinado las siguientes condiciones: - - La cantidad de surfactante 1 no puede sobrepasar los 30 [kg/día] La cantidad de surfactante 2 debe ser mayor a los 7 [kg/día] Las horas en que se ejecuta el primer proceso no deben ser mayor que 5 horas en el día en que se ejecuta el proceso 2. El máximo tiempo en que se corre cada proceso es de 9 horas. El surfactante 1 se vende a 20 USD/kg, mientras que el surfactante 2 se vende a 60 USD/kg Para el problema anterior, se requiere determinar la mejor forma de correr ambos procesos, de tal forma que se maximicen las utilidades de la compañía. Así, las variables del modelo se expresan de la siguiente manera: : Cantidad de horas diarias en que se corre el proceso 1 : Cantidad de horas diarias en que se corre el proceso 2 Ahora debemos construir la función objetivo para este modelo. La compañía desea aumentar sus utilidades todo lo posible. Si representa la utilidad diaria total, el objetivo de la empresa se puede representar de la siguiente forma: ( ) ( ) ( ) A continuación definiremos las restricciones que limitan las horas en que se ejecuta cada proceso y la demanda. Para la demanda de ambos surfactantes, las restricciones respectivas se pueden expresar verbalmente como sigue: ( ) ( ) ( ) ( ) Se tiene entonces: - Cantidad de surfactante 1 obtenido en ambos procesos: - Cantidad de surfactante 2 obtenido en ambos procesos: Por lo tanto, las restricciones pueden expresarse matemáticamente como sigue: - Demanda de Gerencia para el surfactante 1: 2 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización - Demanda de Gerencia para el surfactante 2: Además, como la diferencia entre las horas en que se corre el proceso 1 y el proceso 2 no debe ser superior a 5 horas diarias, se tiene que Finalmente, como la cantidad máxima de horas en que se corre cada proceso es de 9 horas para cada uno, ambas variables estarán acotadas superiormente por 9. Vale decir: y . Una restricción implícita (o que “se sobreentiende”), es que las variables pueden asumir valores negativos. Las restricciones de no negatividad, expresan este requisito. y y no , Por lo que el modelo de programación lineal representativo del problema planteado con anterioridad es el siguiente: ( ) ( ) ( ) Sujeta a las restricciones: Cualquier valor de y que satisfaga todas las restricciones del modelo es una solución factible del problema. Sin embargo, a nosotros nos interesa determinar la solución óptima factible, que maximice , y que, al mismo tiempo, satisfaga todas las restricciones del problema. No se acepta enumerar las soluciones factibles, porque el modelo tiene una cantidad infinita de ellas, por lo que se hace patente desarrollar un método que, de forma sencilla, sea capaz de determinar tal solución óptima a partir de los datos del problema. El modelo de programación lineal debe cumplir con dos condiciones fundamentales: 1. La proporcionalidad, requiere que la contribución de cada variable de decisión en la función objetivo, y sus requerimientos en las restricciones, sea directamente proporcional al valor de la variable 2. La aditividad estipula que la contribución total de todas las variables en la función objetivo y sus requerimientos en las restricciones sean la suma directa de las contribuciones o requerimientos individuales de cada variable 3 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización SOLUCIÓN GRÁFICA DE LA PROGRAMACIÓN LINEAL. El procedimiento de la solución gráfica comprende dos pasos: - Determinación del espacio de soluciones factibles (ESF) del modelo Determinación de la solución óptima factible (SOF) del modelo Dividiremos el estudio en dos partes: a) Solución de un problema de maximización: Resolveremos el modelo de la Compañía “DIMIN”, por lo que el primer paso es determinar el ESF. Primero consideraremos las restricciones de no negatividad del modelo, lo que permite delimitar este espacio mediante dos ejes perpendiculares entre sí, y . A continuación, debemos determinar las demás restricciones. Para ello, primero se sustituye cada desigualdad con una ecuación, y posteriormente se grafica la recta resultante. Luego consideramos el efecto de la desigualdad, que es básicamente dividir el plano ( ) en dos semiplanos, uno a cada lado de la recta graficada. Sólo una de estas mitades satisface la desigualdad. Para determinar cuál es el lado correcto, se elige un punto de referencia en el primer cuadrante. Si satisface la desigualdad, el lado en que se encuentra el punto es el semiplano factible. En caso contrario, quiere decir que es el otro lado. Desde el punto de vista de los cálculos, es cómodo seleccionar a ( ) como el punto de referencia, a menos que la recta pase por el origen; si así fuera, se deberá elegir otro punto. Con la aplicación de este método, se obtiene el ESF graficado en la Figura 1. Para determinar la solución óptima factible, primero observamos que el ESF está delimitado por los segmentos de recta que unen a los vértices C, D, E y G. Todo punto dentro o en la frontera del polígono CDEG es factible, porque satisface todas las restricciones del problema. Ya que el polígono CDEG está formado por una cantidad infinita de puntos, es obvio que se necesita un procedimiento sistemático para identificar la solución óptima. Para ello, se requiere identificar la dirección en la que aumenta la función utilidad ( ) ( ). Como se trata de una recta con coeficientes positivos, es natural pensar que su sentido de crecimiento corresponde a la dirección positiva de ambos ejes. Por lo tanto, la solución óptima se encuentra en el vértice C del polígono CDEG, que es el punto en el ESF, más allá del cual cualquier aumento de nos deja fuera de la frontera de CDEG. Los valores de y que corresponden al punto óptimo C se calculan resolviendo el sistema de ecuaciones asociado a las rectas que se intersectan en dicho punto: { 4 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización Figura 1: ESF del problema de la Compañía “DIMIN” El valor óptimo de es de 1380 USD. Por lo tanto, el proceso 1 debe correrse durante 9 horas y el proceso 2 debe correrse 4 horas, para así maximizar las utilidades de la compañía. No es casualidad que la solución óptima se encuentre en un punto esquina del ESF. En realidad, si se cambia la pendiente de la función objetivo (cambiando sus coeficientes), se verá que la solución óptima factible siempre se encuentra en esos puntos esquina. Esta observación es la clave en el desarrollo de un método algebraico general para resolver este tipo de problemas, llamado Algoritmo Símplex, y que veremos más adelante. b) Solución de un problema de maximización: Vamos a ejemplificar este caso con otro problema, llamado comunmente el “problema de la dieta”. Supongamos que en la Granja Educativa se usa diariamente un mínimo de 800 libras de un alimento especial, que es una mezcla de maíz y soya, con las composiciones indicadas en la siguiente tabla: Componentes del alimento Maíz Soya Libra x libra de alimento Costo (USD/lb) Proteínas Fibra 0,09 0,02 0,30 0,60 0,06 0,90 Las necesidades dietéticas del alimento especial son un mínimo de 30% de proteínas y un máximo de un 5% de fibras. La Granja Educativa desea determinar las proporciones de alimento que produzcan un costo diario mínimo. Sean entonces: : libras de maíz en la mezcla diaria : libras de soya en la mezcla diaria 5 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización La función objetivo trata de minimizar el costo (en dólares) diario total de la mezcla de alimentos, por lo cual se expresa como sigue: Las restricciones del modelo representan la cantidad diaria necesaria y los requerimientos dietéticos. Como la Granja Educativa necesita un mínimo de 800 libras diarias de alimento, la restricción correspondiente puede expresarse de la siguiente manera: En cuanto a la restricción dietética de necesidades de proteína que contienen libras de maíz y libras de soya, es igual a ( ) libras. Esta cantidad debe ser cuando menos igual al 30% de la mezcla total de alimentos, ( ) libras. Luego: ( ) De manera similar para la fibra, tenemos: ( ) El modelo completo es entonces: ( ) El ESF se muestra, marcado en verde, en Figura 2. Figura 2: ESF del problema de la dieta 6 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización Se debe notar que, a diferencia del ejemplo de maximización, la segunda y tercera restricciones pasan por el origen. Ya que en el modelo se busca minimizar la función objetivo, necesitamos reducir todo lo posible el valor de en la dirección que se muestra en la gráfica; la solución óptima factible es la intersección de las dos rectas, y . Así, se obtienen libras y libras. Esto nos da un costo mínimo de USD diarios. ALGORITMO SÍMPLEX La solución gráfica del modelo de programación lineal indica que la solución óptima factible del modelo siempre está asociada a un punto esquina del ESF. Este resultado es la clave del método símplex, el cual es un procedimiento algebraico e iterativo para resolver cualquier modelo de programación lineal. La idea del método símplex es sencilla: se busca un punto esquina del ESF, y se verifica si éste cumple con ser la solución óptima del problema. Si no es así, saltamos a un nuevo punto esquina. El método termina cuando ya no es posible optimizar la función objetivo en otro punto, lo que indica que hemos llegado al óptimo. VARIABLES DE HOLGURA Y EXCEDENCIA: para estandarizar, la representación gráfica del ESF de un modelo de programación lineal se forma bajo dos condiciones: 1. Todas las restricciones (excepto las de no negatividad) son ecuaciones cuyo lado derecho es no negativo 2. Todas las variables son no negativas En las restricciones del tipo ≤, el lado derecho se puede imaginar como la representación del límite de disponibilidad de un recurso, y en ese caso, el lado izquierdo representaría el uso de este 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 del tipo ≤ en ecuación, se agrega una variable de holgura al lado izquierdo de la ecuación. Por ejemplo, en el modelo de la compañía DIMIN (ejemplo de maximización), la restricción asociada a la demanda de Gerencia para el surfactante 1, con respecto a la máxima cantidad diaria a fabricar, está dada por la desigualdad: Si definimos a como la holgura o cantidad no usada de este recurso (que se traduce como la cantidad no fabricada de surfactante 1, en este caso), la restricción anterior puede convertirse en la siguiente ecuación: 7 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización Prosigamos. Una restricción del tipo ≥ establece, normalmente, un límite inferior para las actividades (variables) del modelo de programación lineal. Como tal, la cantidad por la cual el lado izquierdo es mayor que el límite mínimo (lado derecho) representa un excedente. La conversión de una desigualdad del tipo ≥ a una ecuación se logra restando una variable de excedencia, del lado izquierdo de la desigualdad. Por ejemplo, en el problema de la dieta (ejemplo de minimización), la restricción que representa los requisitos mínimos de alimento está dada por: Si definimos a como una variable de excedencia, es posible convertir la restricción en la siguiente ecuación: Es importante señalar que el lado derecho de las ecuaciones convertidas debe ser siempre no negativo. Esta condición se puede satisfacer siempre, si es necesario, multiplicando ambos miembros de la ecuación por -1. VARIABLES NO RESTRINGIDAS: en los modelos que hemos visto (compañía DIMIN y el problema de la dieta) sólo manejamos variables no negativas. Sin embargo, hay casos en los que una variable puede asumir cualquier valor real. Como el modelo de programación lineal está definido sólo para variables no negativas, la aparición de variables no restringidas sugiere un cambio de variable en el problema. Si es una variable no restringida ( ), debe hacerse la siguiente sustitución: Donde y son ambas no negativas. Notemos que, a partir de la misma definición del PPL, una de estas variables necesariamente debe ser cero. La condición variable condición. puede cumplirse siempre. Si , basta con hacer el cambio de , con lo cual obtenemos una nueva variable, , que cumple con esta DESARROLLO DEL ALGORITMO SÍMPLEX: Haciendo una analogía con la solución gráfica de la programación lineal, es posible establecer un punto de partida para el algoritmo símplex. Como bien sabemos, la solución óptima de un modelo de programación lineal se encuentra siempre en un punto esquina del ESF. De forma algebraica, el ESF puede representarse siempre mediante un sistema lineal m-ecuaciones con n-variables, restringiendo los valores de dichas variables a valores no negativos, con . De esta forma, el sistema lineal de ecuaciones (ESF) tiene infinitas soluciones factibles. 8 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización Las variables necesarias para poder determinar la cantidad de puntos esquina en el ESF son llamadas variables no básicas (VNB). Las variables restantes, en caso de tener una solución única, son llamadas variables básicas (VB), y su solución (al resolver las ecuaciones), se llama solución básica. Por ejemplo, consideremos el siguiente PPL: ( ) Si queremos construir el ESF de forma algebraica, debemos reescribir el problema utilizando las variables de holgura respectivas: ( ) En el ejemplo anterior, y son las variables de holgura. El sistema tiene ecuaciones y variables. Así, según lo anterior, se pueden determinar algebraicamente los puntos esquina igualando a cero las variables no básicas respectivas (que, en este caso en particular, pueden ser cualquiera de las variables del modelo), y resolviendo las ecuaciones para encontrar los 2 restantes. Por ejemplo, si y se igualan a cero, las ecuaciones generan la solución: Esta solución corresponde al punto O en Figura 3. Se puede determinar otro punto esquina si se hacen y , obteniéndose y , que definen al punto C en Figura 3, y que corresponde a la solución óptima. En resumen, tenemos lo siguiente: Variables no básicas (cero) ( ( ( ( ( ( ) ) ) ) ) ) Variables básicas ( ( ( ( ( ( ) ) ) ) ) ) Solución básica (5 , 4) (4 , -3) (2.5 , 1.5) (2 , 3) (5 , -6) (1 , 2) Punto esquina asociado O A D B E C ¿Factible? Sí No Sí Sí No Sí Valor objetivo de z 0 7.5 4 8 Tabla 1: Variables no básicas y variables básicas del ejemplo anterior. Notemos que el óptimo se encuentra en C, ya que es en este punto donde el valor objetivo de Z es máximo 9 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización Figura 3: Solución gráfica del ejemplo anterior El algoritmo símplex es un método iterativo, que selecciona un punto esquina del ESF, verificando los valores de las variables no básicas y de la función objetivo. Si éstos no son óptimos, el proceso de resolución salta al punto esquina siguiente, generando un intercambio de variables dependiendo de las condiciones del problema. Por lo tanto, el algoritmo símplex se rige por el siguiente esquema: Paso inicial Paso iterativo No óptima Prueba de optimalidad Óptima Fin Figura 4: Diagrama de flujo que explica el funcionamiento del algoritmo símplex 10 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización Para entender mejor la aplicación del algoritmo símplex, vamos a utilizarlo para resolver el siguiente PPL: ( ) PASO 1: OBTENCIÓN DEL MODELO LINEAL ESTÁNDAR (MLE) DEL PROBLEMA: Lo primero es añadir las correspondientes variables de holgura. El problema entonces se reescribe de la siguiente forma: ( ) El primer paso del algoritmo símplex es la generación del llamado modelo lineal estándar (MLE) del problema. En dicho modelo, la función a optimizar siempre debe minimizarse, y las restricciones deben ser todas del tipo ≤. Esto último es lo mismo que decir que todas las restricciones deben presentar holguras, o bien, variables que cumplan el papel de holguras. Esta condición puede cumplirse siempre, incluso cuando se presentan variables de excedencia en las restricciones. Como éste no es el caso, dejaremos ese tipo de problemas para después. La condición de minimización se logra con el siguiente cambio de signos: ( ) ( ) Por tanto, el MLE de este problema es el siguiente: ( ) PASO 2: CONSTRUCCIÓN DEL TABLEAU SÍMPLEX: El tableau símplex no es más que una tabla en la cual se agrupan, de forma ordenada, las variables básicas, los coeficientes de todas las variables para cada una de las restricciones y la función objetivo, y los 11 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización limitantes de cada restricción junto a la solución básica del problema. Para nuestro caso, el tableau símplex de inicio es el siguiente: V.B. x1 x2 s1 s2 s3 s4 b s1 6 4 1 0 0 0 24 s2 1 2 0 1 0 0 6 s3 -1 1 0 0 1 0 1 s4 0 1 0 0 0 1 2 -z* -5 -4 0 0 0 0 0 En el diseño del tableau se especifican el conjunto de variables básicas (las que aparecen en la columna V.B.) y las variables no básicas (las que no aparecen en la columna V.B.), y también se muestra la solución básica asociada con la iteración de inicio (la cual es z = 0, y corresponde al elemento inferior de la columna b, que es la columna de las limitantes de las restricciones; la fila –z es llamada comunmente la fila objetivo), la cual es llamada solución básica inicial. Por comodidad, siempre que sea posible, las iteraciones símplex ) ( ). Así, el conjunto asociado de variables básicas y comienzan en el origen, ( variables no básicas puede definirse como sigue: V.B: ( V.N.B: ( ) ) → las variables no básicas son siempre nulas Al respecto, debe observarse lo siguiente: Los coeficientes de las variables de holgura en la tabla de inicio siempre deben conformar una matriz canónica (matriz tal que sus elementos diagonales son siempre unitarios, siendo para todo ), tal y como puede observarse en nuestro tableau. PASO 3: CONDICIONES DE FACTIBILIDAD Y OPTIMALIDAD: ¿Es óptima la solución de inicio? La respuesta se obtiene verificando la llamada condición de optimalidad del problema de programación lineal. Dicha condición establece que el óptimo se logra cuando, en la fila z, los coeficientes de todas las variables son no negativos. Como y tienen valores negativos en sus coeficientes en la fila z (-5 y -4, respectivamente), la solución básica inicial (z = 0) no es óptima, y por tanto, debe generarse un intercambio de variables en la columna V.B. (variables básicas) con el fin de encontrar la solución óptima del problema. En este intercambio, agregaremos una variable no básica al conjunto de variables básicas, por lo que, a su vez, sacaremos una variable básica de ese conjunto, la cual pasará a ser una variable no básica (igual a cero) en la siguiente iteración. Este juego de variables introduce las llamadas variables de entrada y de salida a partir de la condición de optimalidad, y se pueden determinar mediante el siguiente método. Por un asunto de lógica, la VNB con el coeficiente más negativo en la función objetivo a minimizar se selecciona para entrar a la solución básica; como en el tableau se tiene que , la variable de entrada es , porque tiene el coeficiente más negativo en la fila objetivo (la fila z). Si hubiera empate, éste se rompe en forma arbitraria. Para determinar la variable de salida, en forma directa con la tabla, se deben calcular los elementos definidos por la razón entre los elementos de la columna b y los respectivos elementos que corresponden a la columna de la variable de entrada. En (*) El uso de –z en la tabla símplex responde a que la función objetivo ingresa al tableau escribiéndose de la forma 𝑥 𝑥 𝑧 12 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización este caso, la columna correspondiente a . La variable de salida queda definida por el valor mínimo de los calculados, tales que . Para nuestro ejemplo, el cálculo de los se muestra a continuación: V.B. x1 b s1 6 24 24/6 = 4 → Mínimo s2 1 6 6/1 = 6 s3 -1 1 1/-1 -1 → Ignorar s4 0 2 2/0 = ∞ → Ignorar Tabla 2: Cálculo de los elementos para la iteración de inicio de nuestro ejemplo De los resultados obtenidos en Tabla 2, se tiene que la variable de salida es , porque el mínimo valor de se obtiene para dicha fila. Si hubiera empate entre dos variables de salida, se debe romper en forma arbitraria. La condición que define la obtención de la variable de salida del PPL es llamada condición de factibilidad del problema de programación lineal. Y puede resumirse de la siguiente forma: ( ) { } La condición nos asegura que los obtenidos sean siempre no negativos, porque, como ya definimos con anterioridad, los deben ser siempre no negativos. ( ) corresponde a En resumen, el básica, y quiere decir que es la variable de salida (su valor es nulo en la siguiente iteración, porque pasa a ser no básica). El valor de la variable de entrada en la nueva solución es igual al obtenido para dicha variable ( ). La disminución correspondiente del valor de la función objetivo z, que llamamos , es igual al producto entre el coeficiente de la variable que entra en la fila z (que es -5, en esta caso) y el valor del obtenido (que es 4). Luego, . PASO 4: OBTENCIÓN DE LOS NUEVOS COEFICIENTES EN LA SIGUIENTE ITERACIÓN: El resultado final de “intercambiar” las variables de entrada y de salida es que las variables básicas y las variables no básicas en la siguiente iteración son: V.B: ( V.N.B: ( ) ) → las variables no básicas son siempre nulas Ahora se deben manipular los coeficientes de nuestro tableau de inicio, de modo que las columnas ahora identifiquen la nueva solución básica en esta nueva iteración (que corresponde a otro punto esquina). Para ello, lo más común es tratar al tableau como una matriz, y aplicar el método de eliminación gaussiana, construyendo así el nuevo tableau para esta iteración. El pívot para comenzar a trabajar con la eliminación gaussiana es aquel que es producto de la intersección entre la fila que se corresponde con la variable de salida y la columna que se corresponde con la variable de entrada. En el siguiente tableau se detalla la ubicación de dicho pívot. 13 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización V.B. x1 x2 s1 s2 s3 s4 b s1 6 4 1 0 0 0 24 s2 1 2 0 1 0 0 6 s3 -1 1 0 0 1 0 1 s4 0 1 0 0 0 1 2 -z -5 -4 0 0 0 0 0 Por tanto, el pívot es el elemento A modo de recordatorio, se adjuntan los pasos de la eliminación gaussiana; nótese que esta es una forma de generar la eliminación. Existen otras, igualmente válidas: 1. Primero se genera un pívot unitario. Esto se logra dividiendo la fila correspondiente al pívot por elemento pívot 2. Luego procedemos a generar los ceros en las siguientes filas, justo debajo del pívot. Si la matriz tiene un pívot distinto de cero, y queremos eliminar los elementos ( ) o ( ), debemos restarle a las filas respectivas el producto entra la fila del pívot por los elementos y/o , definidos para cada fila como ,o . Los elementos y son llamados multiplicadores de la matriz. Utilizando el método anterior, se tiene, para nuestro tableau: Pívot Por lo tanto, el tableau correspondiente a esta nueva iteración es el siguiente: V.B. x1 x2 s1 s2 s3 s4 b x1 1 2/3 1/6 0 0 0 4 s2 0 4/3 -1/6 1 0 0 2 s3 0 5/3 1/6 0 1 0 5 s4 0 1 0 0 0 1 2 -z 0 -2/3 5/6 0 0 0 -20 La solución básica para esta iteración es , con . Notemos que, en este tableau, la solución tampoco es óptima, ya que el coeficiente de la variable en la fila objetivo es negativo. Por tanto, aplicando el criterio de optimalidad, se 14 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización tiene que es la variable de entrada. Asimismo, aplicando el criterio de factibilidad, se obtiene que es la variable de salida, ya que el valor del elemento para la fila es mínimo, tal y como se puede ver en Tabla 3: V.B. x1 b x1 2/3 4 s2 4/3 2 s3 5/3 5 s4 1 2 Tabla 3: Cálculo de los elementos 4:(2/3) = 6 2:(4/3) = 1.5 → Mínimo 5:(5/3) = 3 2:1 = 2 para la segunda iteración de nuestro ejemplo Notemos que, a partir de lo anterior, en la siguiente iteración, con , lo que nos da . Con el nuevo pívot definido, volvemos a aplicar la eliminación gaussiana para obtener el siguiente tableau; V.B. x1 x2 s1 s2 s3 s4 b x1 1 0 1/4 -1/2 0 0 3 x2 0 1 -1/8 3/4 0 0 3/2 s3 0 0 3/8 -5/4 1 0 5/2 s4 0 0 1/8 -3/4 0 1 1/2 -z 0 0 3/4 1/2 0 0 21 Como ninguno de los coeficientes de la fila –z es negativo, podemos concluir, a partir del criterio de optimalidad, que hemos llegado al óptimo. La tabla símplex nos muestra una gran cantidad de información adicional, la cual comprende lo siguiente: 1. El estado de los recursos (ya que si una holgura es nula, hablamos de un recurso que es escaso, porque no nos sobran unidades adicionales; por otro lado, holguras positivas implican recursos abundantes) 2. El precio o valor por unidad adicional de cada recurso (también llamados valores duales, o precios sombra, y que corresponden a los coeficientes que tienen las holguras, o las variables que cumplen el papel de holguras, en la tabla óptima) 3. Datos necesarios para efectuar un análisis de sensibilidad Al respecto, se debe considerar lo siguiente: el modelo lineal estándar es un método de estandarización de problemas de programación lineal, de tal forma que las reglas que gobiernan el desarrollo del algoritmo símplex sean siempre las mismas. Asimismo, el criterio de optimalidad no es completamente rígido, ya que es posible optar por cualquier variable para que entre a la solución básica. El hecho de optar siempre por la de coeficiente más negativo en la fila –z nos asegura que lleguemos más rápido al óptimo. SOLUCIÓN ARTIFICIAL DE INICIO: Como vimos en nuestro ejemplo anterior, los problemas de programación lineal en los que todas las restricciones son del tipo ≤, con lados derechos no negativos, ofrecen una cómoda solución básica de inicio con todas las 15 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización holguras (la que se obtiene haciendo que las variables del problema tomen valores nulos en la tabla de inicio). Los modelos donde intervienen restricciones del tipo = o ≥ no poseen esta propiedad, porque sus ESF no contienen al origen del sistema de coordenadas donde está definido. El problema de la dieta, explicado al principio, es un PPL de este tipo. El procedimiento para iniciar programas lineales de “mal comportamiento” con tales restricciones es permitir que variables artificiales desempeñen el papel de holguras, para después, en alguna iteración posterior, desecharlas de forma legítima. a) El método de la gran M: Este método comienza con la programación lineal en forma de ecuación. Una ecuación “i” que no tenga asociada una holgura se aumenta con una variable artificial, digamos , para formar una solución de inicio parecida a la solución básica con todas las holguras. Sin embargo, como las variables artificiales son ajenas al modelo de programación lineal original, se usa un mecanismo de retroalimentación en el que el proceso de optimización trata automáticamente de hacer que estas variables sean nulas. En otras palabras, la solución final será tal y como si nunca hubieran existido las variables artificiales en primer lugar. El resultado se obtiene “penalizando” las variables artificiales en la función objetivo. Dado , tal que (llamada “la gran M”), el coeficiente objetivo de una variable artificial representa una penalización adecuada sí: { Al usar esta penalización, el proceso de optimización forzará en forma automática a las variables artificiales para que se anulen. Ejemplo: Resolver el siguiente problema de programación lineal ( ) Solución: Si usamos las variables como excedente en la segunda restricción, y como holgura en la tercera restricción, el problema puede escribirse en forma de ecuación de la siguiente forma: ( ) La primera y segunda ecuaciones no tienen variables que puedan desempeñar el papel de holguras, pero la tercera sí, porque tiene la holgura . Así, se agregan las 16 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización variables artificiales función objetivo con y en las dos primeras ecuaciones, y se penalizan en la . Resulta entonces lo siguiente: ( ) En el nuevo modelo (que es modelo lineal estándar de este problema) se pueden usar ahora , y como solución básica inicial. La tabla de inicio para este problema es entonces la siguiente: V.B. x1 x2 a1 a2 s2 s1 a1 3 1 1 0 0 0 a2 4 3 0 1 0 -1 s2 1 2 0 0 1 0 -z 4 1 M M 0 0 b 3 6 4 0 Antes de proseguir con los cálculos del método símplex, se necesita hacer que la fila objetivo (la fila –z) sea consistente con el resto de la tabla. En forma específica, en la tabla, , lo cual produce la solución básica inicial (que se ve en la columna b de la tabla) . Esta solución indica que el valor de –z debe ser , en lugar de 0, como se ve en la fila –z. Esta inconsistencia se debe a que y tienen coeficientes distintos de cero ( ) en la fila –z. Esta inconsistencia se puede eliminar sustituyendo a y en la fila –z usando las ecuaciones adecuadas de restricción para eliminarlas. En particular, observamos los elementos marcados “ ” en la fila y . Si se multiplica cada fila, y , por , y se restan estos resultados a la fila –z, y saldrán de la fila objetivo, esto es: ( ) La tabla modificada se muestra a continuación. Observe que es la misma que antes, sólo que dicha fila modificada ha sido agregada al final de esta tabla. Se tiene entonces: V.B. x1 x2 a1 a2 s2 s1 b a1 3 1 1 0 0 0 3 a2 4 3 0 1 0 -1 6 s2 1 2 0 0 1 0 4 -z 4 1 M M 0 0 0 -z 4 – 7M 1 – 4M 0 0 0 M -9M Esta última tabla queda lista para aplicarse el método símplex; notemos que, como ya habíamos comentado, se han dispuesto las holguras de tal forma que éstas formen una matriz canónica, marcada con celeste en la tabla. Aplicando el criterio de optimalidad, debemos seleccionar la variable cuyo coeficiente sea el más negativo en 17 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización la fila –z. Sin embargo, es posible establecer la siguiente conjetura: existe empate entre y , porque si , ambos coeficientes son infinitamente grandes y por ende son equivalentes. Sin embargo, debe destacarse que este método se ideó pensando en que ordenadores con capacidades de procesamiento significativas computaran los resultados de problemas de optimización de mal comportamiento. Nosotros somos seres humanos, pero bajo este marco, debe señalarse que, para estos efectos, no es posible programar una cantidad infinitamente grande para generar una solución, puesto que los software que resuelven este tipo de problemas suelen tener complicaciones cuando trabajan con números muy pequeños y muy grandes a la vez, por lo cual, asumiremos que es un número muy grande, y no infinitamente grande. Así, la variable de entrada es , porque la sustitución de en la expresión produce un número menor que si lo sustituimos en la expresión . La condición de factibilidad indica que la variable de salida es (¡compruébelo!). Por lo tanto, la tabla símplex correspondiente a la segunda iteración, una vez se han efectuado las operaciones de eliminación respectiva (¡compruébelo también!), es la siguiente: V.B. x1 x2 a1 a2 s2 s1 b x1 1 1/3 1/3 0 0 0 1 a2 0 5/3 -4/3 1 0 -1 2 s2 0 5/3 -1/3 0 1 0 3 -z 0 (-1 - 5M)/3 (-4 + 7M)/3 0 0 M -4 - 2M Se le deja al lector comprobar que, a partir de esta última tabla, las variables de entrada y de salida son y , respectivamente. Así, si continuamos con los cálculos símplex, podremos hallar la solución óptima de este problema, la cual está dada por ⁄ ⁄ , lo que da un valor objetivo óptimo de b) Método de las dos fases: Es otro método, más práctico que el anterior. Tal y como su nombre lo indica, el método resuelve la programación lineal en dos fases: la fase 1 trata de determinar una solución básica factible de inicio y, si se encuentra, se invoca la fase 2 para resolver el problema original. FASE 1: El problema se reescribe en forma estándar (en forma de ecuación), agregándose a las restricciones las variables artificiales necesarias (exactamente como en el método de la gran M) para asegurar una solución básica inicial. A continuación se determina una solución básica de las ecuaciones resultantes, que minimice la suma de las variables artificiales. Si el valor mínimo de la suma es positivo, el PPL no tiene solución factible y termina el proceso. En caso contrario, se pone fin a la fase 1, y se prosigue a la fase 2. FASE 2: Se usa la solución factible de la fase 1 como solución básica de inicio para el problema original: Ejemplo: Consideremos el problema de programación lineal: 18 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización ( ) Reescribiendo este problema en forma estándar, con todas las holguras y variables artificiales (sin penalizarlas en la función objetivo), y haciendo el cambio de variable para asegurarnos que todas las variables del PPL sean no negativas. obtenemos: ( ) Notemos que hemos multiplicado la tercera restricción por -1, ya que como dijimos con anterioridad, el lado derecho de las restricciones debe ser siempre no negativo. Procedemos primero con la fase 1. Como bien dijimos, la fase 1 minimiza la suma de las variables artificiales, estando esta nueva “función objetivo” sujeta a las mismas restricciones que el problema de programación lineal original. De lo anterior, se tendrá entonces lo siguiente: ( ) La tabla símplex de inicio es la siguiente: V.B. x1 x2 x3’ s1 a1 a2 s2 s3 b s1 1 1 1 1 0 0 0 0 4 a1 -1 -1 1 0 1 0 -1 0 3 a2 2 1 2 0 0 1 0 -1 1 -z -1 -2 -1 0 0 0 0 0 0 -w 0 0 0 0 -1 -1 0 0 0 -w -1 0 -3 0 0 0 1 1 -4 Al respecto, aclaremos algunas cosas antes de empezar. Lo primero es que, al igual que en el método M, la nueva función objetivo se debe ajustar para que sea consistente con la tabla, ya que la solución básica de inicio indica que y , lo que implica que . Esto se ha llevado acabo automáticamente en la tabla anterior. La primera fila – ( ) w nos muestra los coeficientes originales de la función objetivo en fase 1, 19 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización . La segunda fila –w nos muestra los coeficientes ajustados para así darle consistencia la tabla símplex, lo que se logra restándole a la primera fila –w las filas y . Además, notemos que la fila –z se ha incluido de todas formas en la tabla. La razón de esto es la siguiente: una vez que se ha determinado una solución básica inicial en la fase 1 (si es que ésta existe), la fase 2 llevará a cabo el proceso de optimización para la función objetivo original, que es , sujeta a las restricciones resultantes que se correspondan con las filas de las variables básicas al finalizar la fase 1. Claramente, la función objetivo no puede ser la misma, ya que el problema de programación lineal está sujeto a restricciones distintas una vez que se termina la fase 1, por lo cual la función objetivo debe modificarse a fin de tener un problema equivalente al original, y así encontrar su solución. La tabla óptima que corresponde al fin de la fase 1, o dicho de otra forma, a la solución ( ) óptima para la función objetivo es la siguiente (¡compruébelo!): V.B. s1 a1 a2 -z -w x1 2 -4 -1 -2 0 x2 x3’ s1 a1 a2 s2 s3 2 0 1 -1 0 1 0 -3 0 0 2 -1 -2 1 -1 1 0 1 0 -1 0 -3 0 0 1 0 -1 0 0 0 0 1 1 0 0 b 1 5 3 3 0 Esta tabla es óptima, porque todos los coeficientes de la fila –w (la fila objetivo para la ( ) fase 1) son no negativos. La solución óptima es entonces , con . Concluimos, a partir de esto, que existe una solución básica factible de inicio para el PPL ( ) no es positivo. Se procede entonces a la fase 2, a original en la fase 2, porque partir de esta misma tabla. La única diferencia es que desecharemos la fila –w, porque ésta ya no nos es útil en la fase 2, y la fila –z pasará a ser la fila objetivo, resolviéndose el problema de forma idéntica a como ya sabemos hacerlo, mediante el algoritmo símplex. V.B. s1 a1 a2 -z x1 2 -4 -1 -2 x2 x3’ s1 a1 a2 s2 s3 2 0 1 -1 0 1 0 -3 0 0 2 -1 -2 1 -1 1 0 1 0 -1 0 -3 0 0 1 0 -1 0 b 1 5 3 3 A partir de la tabla anterior, se le deja como ejercicio al lector el comprobar que la solución ( ) ⁄ óptima del PPL al fin de la fase 2 es , con . ( ) ( ) obtenemos ( ) Recordando que , y que y . CASOS ESPECIALES DEL ALGORITMO SÍMPLEX Cuando se resuelve un PPL mediante el algoritmo símplex, pueden presentarse ciertos problemas o situaciones particulares que requieren de una atención especial. Estos casos se tratan detalladamente en el siguiente apartado. 20 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización SOLUCIÓN DEGENERADA: Al aplicar la condición de factibilidad del método símplex, se puede romper un empate en los ( ) en forma arbitraria. Cuando se presenta un empate, al menos una variable básica será nula en la siguiente iteración, y se dice que la nueva solución es degenerada. Desde el punto de vista práctico, la condición de degeneración indica que el modelo tiene al menos una restricción redundante, lo que quiere decir que no influye en la solución óptima del problema. Ejemplo: Resolver el siguiente PPL ( ) Solución: Sean y las correspondientes variables de holgura. El problema se establece en forma estándar como sigue: ( ) La tabla siguiente muestra las iteraciones realizadas mediante el algoritmo símplex: Iteración V.B. 0 1 1 Entra -3 Sale 1 1/4 1/2 Entra -3/4 Sale 2 0 Óptimo 1 0 4 2 -9 1 0 0 1 0 0 1 0 8 0 1 4 0 0 0 1/4 0 2 -1/2 1 0 9/4 0 18 1/2 -1/2 2 -1 2 0 3/2 3/2 18 En la iteración de inicio empatan y como variable de salida. Es la razón por la que la variable básica es nula en la primera iteración, y se obtiene así una solución básica degenerada. Se alcanza el óptimo después de una iteración. En la práctica, la degeneración implica que al menos una restricción es redundante. En otras palabras, pasan dos o más restricciones por un mismo punto esquina que puede o no ser el óptimo, o bien, una de las restricciones puede ser combinación lineal de la otra. Esto se puede ver en el gráfico del ESF del problema, que se puede ver en Figura 5. 21 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización Figura 5: ESF del ejemplo de solución degenerada. El óptimo se encuentra en el punto esquina A. La existencia de una solución básica degenerada puede ser un punto interesante de discutir. El sólo conocer que algunos recursos son superfluos puede ser valioso durante la implementación de la solución. Esta información también puede conducir a descubrir irregularidades en la construcción del modelo, lo que es muy importante. ÓPTIMOS ALTERNATIVOS: Cuando la función objetivo es paralela a una restricción obligatoria (es decir, una restricción que se satisface como ecuación en la solución óptima), la función objetivo asumirá el mismo valor óptimo, los cuales son llamados valores óptimos alternativos. Ejemplo: Resolver el siguiente PPL: ( ) Solución: La solución gráfica de este PPL se puede ver en Figura 6; además, la tabla siguiente muestra las iteraciones símplex que resuelven la programación lineal: Iteración 0 Entra Sale 1 (óptimo) Entra Sale V.B. 1 1 -2 1/2 1/2 0 2 1 -4 1 0 0 1 0 0 1/2 -1/2 2 0 1 0 0 1 0 5 4 0 5/2 3/2 10 22 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización 2 (óptimo alternativo) 0 1 0 1 0 0 1 -1 2 -1 2 0 1 3 10 Figura 6: ESF del ejemplo anterior. La función objetivo es paralela a la restricción dada por la semirrecta AC. Esta recta define infinitos óptimos alternativos ⁄ , con La iteración 1 llega al óptimo, , que coincide con el punto A de Figura 6 ¿Cómo saber en esta iteración que existen óptimos alternativos? Examinemos los coeficientes de las variables no básicas en la fila –z, en la primera iteración. El coeficiente de no básica es cero, lo que indica que puede entrar a la solución básica sin cambiar el valor de , pero causando un cambio en la solución básica, con lo que obliga a que salga . Esto da como resultado un nuevo punto de solución en C( con ). El método símplex sólo determina los dos puntos esquina, A y C. Se pueden determinar matemáticamente todos los puntos ( ) en el segmento de recta AC como promedio ponderado no negativo de los puntos A y C. Así, dado , tal que , y además: A: C: Todos los puntos de la semirrecta AC se expresan como: ̂ ( ) ( ) ( ) ( ) ̂ ( ) ( ) ( ) ( ) SOLUCIÓN NO ACOTADA: En algunos modelos de programación lineal, los valores de las variables pueden aumentar en forma indefinida sin violar alguna de las restricciones del problema, y eso significa que el ESF es no acotado en al menos una dirección. El 23 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización resultado es que el valor objetivo puede aumentar (en caso de una maximización) o disminuir (si se trata de una minimización) en forma indefinida. En ese caso, tanto el ESF como el valor óptimo objetivo no están acotados. La no acotación apunta hacia la posibilidad de que el modelo esté mal construido. Las irregularidades más probables en estos modelos son que no se hayan tomado en cuenta una o más restricciones no redundantes, y que los parámetros (constantes) de algunas restricciones puedan no haberse estimado en forma correcta. Ejemplo: Resolver el siguiente PPL: ( ) Solución: la iteración símplex de inicio para este PPL se muestra en la tabla siguiente: V.B. x1 x2 s1 s2 b s1 1 -1 1 0 10 s2 2 0 0 1 40 -z -2 -1 0 0 0 En la tabla de inicio, tanto como son candidatos para entrar a la solución. Como tiene el coeficiente más negativo, se selecciona, normalmente, como la variable de entrada. Sin embargo, todos los coeficientes de restricción bajo son negativos o cero, y eso indica que puede aumentar en forma indefinida sin violar cualquiera de las restricciones (compárese con la interpretación gráfica de la condición de factibilidad en Figura 7). Como cada aumento de una unidad de aumentará 1 a , un aumento infinito de también dará como resultado un aumento infinito de . Así, el problema no tiene solución acotada. El ESF no está acotado en la dirección de , por lo que cuando . Figura 7: ESF del ejemplo anterior. Nótese que no se encuentra acotado superiormente 24 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización La regla para reconocer la no acotación es que si, en cualquier iteración, todos los coeficientes de restricción de toda variable no básica son negativos o cero, entonces el ESF no está acotado en esa dirección. Si, además, el coeficiente objetivo de esa variable es negativo en caso de maximización, o positivo en caso de minimización, entonces también el valor objetivo es no acotado. SOLUCIÓN NO FACTIBLE: Los modelos de programación lineal con restricciones inconsistentes no tienen solución factible. Estos casos nunca suceden si todas las restricciones son del tipo ≤ (suponiendo lados derechos no negativos), porque las holguras permiten tener una solución factible. Para otros tipos de restricciones se usan variables artificiales. Aunque esas variables artificiales se penalizan en la función objetivo, para obligarlas a ser cero en el óptimo, eso sólo puede suceder si el modelo, en efecto, tiene un ESF. En caso contrario, al menos una variable artificial será positiva en la iteración óptima. Desde el punto de vista práctico, un ESF no factible indica la posibilidad de que el modelo esté mal construido. Ejemplo: Resolver el siguiente PPL: ( ) Solución: El ESF de este modelo se observa en Figura 8. Figura 8: ESF del ejemplo anterior. No hay solución factible, porque las restricciones apuntan hacia semiplanos que no tienen puntos en común La regla para determinar la no factibilidad es obvia. Si la condición de factibilidad no se cumple, o dicho de otra forma, no es capaz de determinar una variable de salida (porque todos los elementos son negativos o cero), entonces el problema no tiene 25 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización solución factible. Lo anterior también se da cuando, al asignar variables artificiales al modelo, éstas tienen un valor positivo en el óptimo. MÉTODO SÍMPLEX REVISADO. Lo estudiado con anterioridad nos permite, con mayores o menores dificultades, resolver cualquier problema de programación lineal. Sin embargo, la utilización del algoritmo símplex es computacionalmente costosa, porque se calculan valores que, o bien son inútiles desde el punto de vista práctico, o bien, no necesitan conocerse para llegar a la solución. Tal es el caso de los coeficientes de las restricciones para cada iteración, que no se encuentren en la fila (columna) que se corresponda con la variable de entrada (variable de salida). Por lo tanto, es posible establecer otro método, que sólo trabaje con los elementos necesarios de la tabla símplex, desechando los demás, o calculándolos sólo cuando se necesiten. Esta es la idea del método símplex revisado, el cual establece elementos matriciales para resolver un modelo. De lo anterior, se hace patente reconocer ciertos elementos matriciales de la tabla símplex, los cuales son siempre imprescindibles para resolver un PPL. El modelo lineal estándar más común de una tabla símplex, para un problema de programación lineal de variables con restricciones (y por ende holguras), es el siguiente: Modelo lineal estándar: ( Siendo las ) holguras asociadas a las restricciones del problema. Tabla símplex de este problema: V.B. ( ) Tabla 4: Tabla símplex generalizada Los componentes de la tabla se han rellenado con colores distintos para explicar los elementos matriciales que conforman esta tabla y que son imprescindibles en la implementación del método símplex revisado. Estas definiciones son algo complicadas, 26 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización pero el ejemplo de más abajo es bastante claro al respecto, ilustrando la aplicación de este método. Matriz inversa: Definimos la matriz inversa como la matriz conformada por los coeficientes de las holguras en cada una de las restricciones para la correspondiente iteración. Para una tabla de inicio, esta matriz siempre es canónica, y su notación es . La matriz inversa para la ( la siguiente expresión: ) iteración en el método símplex revisado está definida por Donde es una matriz identidad, de orden equivalente a la matriz inversa del problema, y con una única columna definida de la siguiente manera: ( ) Esta columna se corresponde con la variable de salida del problema en la respectiva iteración. Vale decir, se ubica bajo la variable de salida, y sus elementos están definidos por , siendo los elementos de la columna que se corresponde con la variable de entrada en la iteración respectiva, y elemento, el elemento pívot de dicha iteración. Hay un único , el cual se ubica en la misma fila donde se encuentre el elemento pívot. Matriz de columnas de restricción: Definimos la matriz de coeficientes de restricción como aquella conformada por los coeficientes de las variables del PPL en cada una de las restricciones del problema. Su notación, para la -ésima iteración, es . Definimos esta matriz mediante la siguiente expresión: Siendo la matriz de coeficientes de restricción para la tabla de inicio del problema. Matriz de valores duales: Definimos la matriz de valores duales (también llamada matriz de precios sombra) como el vector fila cuyos elementos están conformados por los coeficientes de las holguras en la fila correspondiente a la función objetivo para la iteración respectiva. Su notación es . 27 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización La matriz , para la -ésima iteración, está definida por la siguiente expresión: ( ) Donde ( ) corresponde a la matriz cuyos elementos son los coeficientes originales de las variables básicas en la función objetivo, en el orden en que éstas se encuentran en la tabla símplex. Matriz de coeficientes reducidos: Definimos la matriz de coeficientes reducidos como el vector fila cuyos elementos son los coeficientes de las variables del PPL en la función objetivo para la iteración respectiva. Su notación es ̅ . También suele hacerse referencia a esta matriz como la matriz de costos reducidos. La matriz de coeficientes de reducidos para la siguiente expresión: -ésima iteración está definida por la ̅ Donde corresponde a la matriz de coeficientes originales de las variables del problema en la función objetivo (aquellos que se corresponden con la tabla de inicio). Matriz de recursos: Definimos la matriz de recursos como el vector columna conformado por los lados derechos de las restricciones del problema. Su notación es . Además, como bien sabemos, todos sus elementos son positivos o cero. La matriz de recursos para la -ésima iteración se define como: Donde corresponde a la matriz de recursos original del problema (aquella que se corresponde con la tabla de inicio). Las matrices anteriores nos permiten, siempre que se pueda, obtener todos los elementos de la tabla símplex. Todas estas matrices se relacionan mediante expresiones algebraicas sencillas, siendo el parámetro de entrada más importante la matriz inversa del problema . La condición que establece que las componentes de la matriz sean los coeficientes de restricción para las holguras del problema deja de manifiesto que los excedentes quedan fuera de dicha matriz. Esto sucede porque, como se dijo en un principio, esta matriz es canónica para una tabla de inicio. Así, la matriz puede estar conformada por componentes de las holguras del problema, y también de las variables artificiales, pero nunca por coeficientes de excedentes, porque si así fuera, en la tabla de inicio no habría una matriz inversa canónica. Lo anterior es algo complicado de explicar. Lo mejor, en virtud de un buen entendimiento de este método, es aplicarlo directamente. El siguiente ejemplo pone de manifiesto, con todo detalle, como se aplica el método símplex revisado. Ejemplo: Resolver el siguiente problema utilizando el método símplex revisado o matricial: 28 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización ( ) Solución: El PPL se reescribe en forma estándar como sigue (añadiendo variables de holgura, excedencia y artificiales): ( ) Como hemos utilizado variables artificiales para que cumplan el papel de holguras, el PPL debe resolverse utilizando el método símplex de dos fases, pero para este ejemplo, lo adaptaremos al método símplex revisado. La tabla símplex de inicio para este problema es la siguiente: V.B. x1 x2 x3 s1 a1 s2 b s1 2 0 1 1 0 0 8 a1 -1 1 1 0 1 -1 13 -z -3 2 2 0 0 0 0 -w 0 0 0 0 1 0 0 -w 1 -1 -1 0 0 1 -13 ( ) La función a minimizar en la fase 1 es . En la tabla, se han coloreado los elementos matriciales que definimos con anterioridad para el método símplex revisado. Lo primero es identificar la matriz inversa , que como bien sabemos, es aquella conformada por los coeficientes de las holguras (o las variables que cumplen el papel de holguras, como las artificiales) para cada una de las restricciones. Como esta es la tabla de inicio, la matriz es canónica: ( PASO 1 – Obtención de la matriz inversa fórmula descrita con anterioridad, definimos: ) para la primera iteración: Utilizando la La construcción de la matriz requiere saber cuáles son las variables de entrada y de salida del problema, para así poder reconocer el elemento pívot de esta tabla en la presente iteración. La variable de entrada es porque tiene el coeficiente más negativo en la fila objetivo (la fila –w). Notemos que esto mismo es válido para , que también tiene coeficiente -1 en la fila objetivo. El empate se rompe en forma arbitraria; en este caso, elegimos . 29 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización Aplicando la condición de factibilidad, determinamos que la variable de salida es (¡compruébelo!). Por lo tanto, la matriz se escribe de la siguiente manera: ( ) ( ) La primera columna de esta matriz corresponde a la variable de holgura . La segunda columna se corresponde con la variable artificial , que es la variable de salida. Esta columna es la que cambia. El primer elemento de la segunda columna es igual al primer elemento de la columna que se corresponde con la variable de entrada de esta iteración, que es 0, dividido por el elemento pívot de esta iteración, que es 1. Todo esto se multiplica luego por -1. El segundo elemento, que se ubica en la misma fila que el pivote, es igual a 1 dividido por el elemento pívot, que es 1. Por lo tanto: ( ) ( ) ( ) PASO 2 – Obtención de la matriz de valores duales para la primera iteración: Utilizando la fórmula que describimos con anterioridad, se tiene: ( ) Las variables básicas para la primera iteración son y . Por lo tanto, la matriz ( ) es igual a ( ) ( ), porque el coeficiente de en la fila objetivo es 0, y el de es -1. El orden en el cual están definidas las variables básicas en el PPL debe respetarse (el primer elemento de la matriz corresponde al coeficiente de , el segundo al coeficiente de , y no al revés). Esto suele facilitarse utilizando la siguiente tabla de valores: ( V.B. ( ) ) En esta tabla puede apreciarse el orden de las variables básicas, y por ende, la forma correcta de escribir la matriz ( ). Por lo tanto, se tiene que: ( ) ( ) ( ) PASO 3 – Obtención de la matriz de coeficientes reducidos para la primera iteración: Utilizando la fórmula descrita con anterioridad, se tiene: ̅ 30 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización La matriz es aquella cuyos elementos son los coeficientes originales de la función objetivo para las variables del problema (se excluyen las variables de holgura y artificiales); en este caso, y . Vale decir: ( ) La matriz es aquella cuyos elementos son los coeficientes originales de las variables para cada una de las restricciones del problema (se excluyen las variables de holgura y artificiales); en este caso, y . Vale decir: ( ) Por lo tanto, se tiene: ̅ ( ) ( ) ( ) ( ) Esta última matriz corresponde a los coeficientes de las variables del problema (que no sean holguras y artificiales) en la función objetivo para la primera iteración. Consecuentemente con lo que realizamos en el método símplex ordinario, a esta matriz se le debe aplicar la condición de optimalidad. En particular, para este caso, como ningún coeficiente es negativo, estamos en el óptimo (para la fase 1, cuya función objetivo es w). Por lo tanto, debemos ahora calcular la solución óptima para este PPL en la fase 1, lo que implica calcular la matriz y el valor de ( ). PASO 4 – Obtención de la solución óptima para la fase 1 con el cálculo de Utilizando la fórmula descrita con anterioridad, se tiene: : es la matriz de recursos original del problema, cuyos elementos corresponden a los lados derechos de las restricciones: ( ) Por lo tanto: ( ) ( ) ( ) Luego, la solución óptima del problema en la fase 1 es variables son no básicas (¡¡¡nulas!!!), por lo que el valor de ( ) Concluimos entonces que, como factibles para el problema en la fase 2. , con y . Todas las demás ( ) es 0. , existe un espacio de soluciones PASO 5 – Obtención de la matriz de valores duales utiliza la misma fórmula que utilizamos antes: para –z: Naturalmente, se 31 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización ( ) La diferencia es que ahora la matriz ( ) está conformada por los coeficientes originales de las variables básicas en la fila –z, en el orden en que éstas aparecen. Por lo tanto, utilizando una tabla similar a la que se utilizó para la fase 1, se tiene: ( V.B. ( ) ) Luego: ( ) ( ) ( ) PASO 6 – Obtención de la matriz de coeficientes reducidos para –z en la fase 2: Utilizando la misma fórmula que se vio en la fase 1: ̅ Lo único que cambia, al igual que en el paso 5, es que la matriz está conformada por los coeficientes originales de las variables del PPL (exceptuando las holguras y artificiales) en la fila –z. Por lo tanto: ( ) Por lo tanto, obtenemos: ̅ ( ( ) ) ( ) ( ) Notemos que uno de los coeficientes reducidos es negativo para esta iteración, lo que indica que la solución no es óptima para la fase 2. La variable que se corresponde con dicho coeficiente es , por lo que, aplicando el criterio de optimalidad, ésta pasa a ser la variable de entrada para la siguiente iteración. PASO 7 – Obtención de la columna pívot para la segunda iteración: Como ya hemos definido la variable que entra a la base en la segunda iteración, debemos determinar cuál es la variable que sale. Como ya hemos calculado la matriz de recursos para la primera iteración (la matriz ), debemos calcular los elementos y aplicar el criterio de factibilidad para determinar cuál variable saldrá de la base. Sin embargo, esto requiere la obtención de la columna que corresponde a la variable de entrada en la primera iteración (la que se corresponde con ). Dicha columna, llamada columna pívot, se calcula utilizando la siguiente fórmula: ( ) Siendo ( ) ( ) la columna original correspondiente a la variable ( ) ( : ) 32 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización Por lo tanto: ( ) ( ) ( ) ( ) ( ) Calculamos los elementos dividiendo fila a fila los elementos de la matriz elementos de la matriz ( ), con lo cual se obtiene lo siguiente: V.B. ( ) 2 8/2 = 4 Mínimo -1 13/-1 = -13 Ignorar 8 13 Luego, la variable que sale es por los , porque tiene el mínimo . PASO 8 – Obtención de la matriz inversa para la segunda iteración en la fase 2: Utilizando la fórmula descrita con anterioridad, definimos: Debemos calcular . Como la variable de salida es , la matriz será una matriz canónica, igual que , pero con la columna que se corresponde a la variable de salida cambiada con la columna que se corresponde con la variable de entrada , haciendo uso de la fórmula respectiva. Por lo tanto: ( ) Por lo tanto: ( ) ( ) PASO 9 – Obtención de la matriz de valores duales utiliza la misma fórmula que utilizamos antes: ( ( ) para –z: Naturalmente, se ) Construyendo la respectiva tabla de valores: ( V.B. ( ) ) 33 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización Se tiene entonces: ( ) ( ) ( ( ) ) PASO 10 – Obtención de la matriz de coeficientes reducidos para –z en la iteración 2: Utilizando la respectiva fórmula: ̅ Se tiene entonces: ̅ ( ) ( ) ( ) ( ) Notemos que el resultado anterior indica que ya hemos llegado al óptimo, porque los coeficientes de las variables del PPL son positivas o nulas en la función objetivo. PASO 11 – Obtención de la solución óptima y su valor: Finalmente, se deben obtener los valores de y que conforman la solución óptima, así como el valor objetivo de dicha solución, ( ). Se calcula, en primera instancia, el valor de la matriz para la segunda iteración: ( ) ( ) ( ) Por lo tanto, la solución óptima es y . Todas las demás variables son no básicas, por lo que su valor es cero. Remplazando estos valores en la función objetivo ( ) ( ) , se obtiene . 34 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización Modelo Primal – Dual 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, que llamamos problema primal, de programación lineal. Los dos problemas están relacionados de forma tan estrecha, que la resolución óptima de un problema produce automáticamente la solución del otro. Para formar el problema dual, definimos el primal en forma de ecuación como sigue: ( ) ∑ ∑ Las variables incluyen las variables de excedencia, holguras y artificiales, si las hay. El problema dual se obtiene de la siguiente forma: ( ) ∑ ∑ De lo anterior, observamos: a) Se define una variable dual por cada restricción primal b) Se define una restricción dual por cada variable primal c) Los coeficientes de restricción (columnas) de una variable primal definen los coeficientes en el lado izquierdo de la respectiva restricción dual, y su coeficiente define el lado derecho d) 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 restringidas) se determinará siguiendo la siguiente convención: 35 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización Lema de optimización para el modelo primal – dual: La función objetivo del problema primal siempre debe cambiarse a la forma estándar antes de construir el correspondiente problema dual. Como consecuencia de este lema, se tiene que el problema primal será de ( ), con todas sus restricciones del tipo ≥ o =, mientras que el minimización, problema dual será de maximización, ( ), con todas sus restricciones del tipo ≤ o =. La condición para las restricciones del problema primal (deben ser del tipo ≥) puede satisfacerse siempre, si se da el caso, multiplicando la inecuación respectiva por -1. Notemos que, para este caso, no es necesario que el lado derecho de las restricciones sea positivo. Esta forma de escribir el primal se conoce como forma canónica o formal de primal simétrico del problema primal. Los siguientes ejemplos ilustran el como se obtiene el dual a partir del primal. Ejemplo: Determinar el problema dual para el siguiente PPL: ( ) Solución: Lo primero es reescribir el problema primal de tal forma que la función objetivo sea de minimización, y que las restricciones sean del tipo ≥ o = (o sea, en forma ( ) canónica). Lo primero se logra haciendo la sustitución ( ), mientras que lo segundo se logra multiplicando la primera restricción por -1. Por lo tanto, se obtiene: ( ) Agregando las variables de holgura, excedencia o artificiales, según corresponda (y penalizando las artificiales en la función objetivo, según lo aprendido en el método de la gran M): ( ) Ahora podemos construir el problema dual. Utilizando la definición dada con anterioridad, podemos deducir que el problema dual presenta dos variables, ya que se tienen dos restricciones primales. Además, tendrá tres restricciones, porque hay tres variables primales. Por lo tanto, se obtiene lo siguiente: 36 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización ( ) Detengámonos un momento ¿No habíamos dicho que el problema dual tenía tantas restricciones como variables tenga el primal? ¿Por qué entonces hay, al parecer, 6 restricciones? Pues bien, esto no contradice, bajo ninguna circunstancia, lo establecido en la definición del problema dual. Resulta que las tres últimas restricciones determinan la naturaleza de las variables duales, puesto que éstas pueden ser positivas o no restringidas. Esto se determina utilizando las variables de holgura, excedencia y artificiales en el primal, obteniendo las respectivas ecuaciones de restricción en el dual que acotan los valores que las variables duales pueden tener. En este caso, la cuarta restricción dice que , o lo que es lo mismo, . La quinta establece que . Si recordamos lo aprendido en el método de la gran M, establecimos que, por definición, el valor de tiende a . Por ende, se obtiene que . Luego, combinando ambos resultados, determinamos la naturaleza de la variable dual , la que es tal que ), o dicho de otra forma, La última restricción establece que . De manera análoga, se tiene entonces que . Como no hay más desigualdades referidas únicamente a , establecemos entonces que es una variable no restringida, porque puede tomar valores tanto positivos como negativos. Por lo tanto, el problema dual es el siguiente: ( ) Lo anterior nos permite establecer lo siguiente: Tipo de restricción primal Naturaleza de la variable dual ≥ Positiva o nula = No restringida Tabla 5: Naturaleza de las variables duales en función del tipo de las restricciones primales 37 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización Esta simple, pero útil tabla, nos permite obviar el escribir las holguras, excedentes o variables artificiales en el primal cuando queramos construir el dual, simplemente verificando el tipo de restricción primal para determinar la naturaleza de la correspondiente variable dual. Recordemos que la variable dual se corresponde con la -ésima restricción primal. Ejemplo: Construir el problema dual para el siguiente PPL: ( ) Solución: Aprendida la tabla anterior, obviaremos el escribir las holguras del primal. Simplemente lo rescribiremos de forma tal que la función objetivo sea de minimización, y cuidando que todas las restricciones sean del tipo ≥ o =. Se tiene entonces: ( ) Notemos que este PPL tiene una particularidad que el del ejemplo anterior no tenía: una de las variables es no restringida. Utilizando el cambio de variable , con y , se tiene: ( ) Construimos entonces el problema dual; del primal, ya sabemos que el dual tendrá 3 variables y 2 restricciones. Además, utilizando la Tabla 4, sabemos que las variables duales y son positivas o nulas, mientras que la variable dual es no restringida. Se obtiene entonces: ( ) 38 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización Detengámonos nuevamente por un momento ¿No deberíamos tener 2 restricciones en lugar de 3? Pues, en efecto, debería ser así. Resulta que el haber considerado el cambio de variable en el primal para la variable , que era no restringida, ha provocado que ésta se “fragmente” en dos variables. Sin embargo, si observamos las primeras dos restricciones duales, que se corresponden con las variables primales y , podemos notar lo siguiente: Restricción 1: Restricción 2: Multiplicando la restricción 2 por -1, obtenemos . Comparando entonces ambas restricciones podemos observar que éstas pueden combinarse en una única restricción, dada por . Por lo tanto, el problema dual es el siguiente: ( ) Al final, el dual sí tenía dos restricciones. Es un alivio ¡Se ha respetado nuestra definición de problema dual! Pero lo más importante, es que hemos demostrado que la Tabla 4 funciona en ambas direcciones: si una variable primal es no restringida, significa que la correspondiente restricción dual es del tipo =. RELACIONES PRIMAL – DUAL. Los cambios que se hacen en el modelo original de programación lineal afectan a los elementos de la tabla óptima actual (y el que se tenga en el momento), que a su vez puede afectar la optimalidad y/o factibilidad de la solución actual. Si recordamos lo aprendido en el estudio del método símplex revisado, se había definido con anterioridad que uno de los elementos matriciales de la tabla símplex era precisamente una matriz de valores duales, que para la iteración k está definida como: ( ) Cotejando esto con lo aprendido acerca del problema dual concluimos lo siguiente: esta matriz representa los valores de las variables del problema dual para la k-ésima iteración. Esto confirma lo dicho en primera instancia: el problema primal y el problema dual están tan estrechamente relacionados, que la solución básica que obtengamos para uno, automáticamente conduce a la solución básica del otro. La fórmula anterior prueba esta afirmación (ya veremos el porqué del signo negativo en esta fórmula). Recapitulando, se tiene entonces que las relaciones existentes entre los problemas primal y dual son las siguientes: El dual tiene tantas variables como restricciones tiene el primal 39 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización El dual tiene tantas restricciones como variables tiene el primal Los coeficientes de la función objetivo del primal son los términos independientes de las restricciones en el dual Los términos independientes de las restricciones del primal son los coeficientes de la función objetivo en el dual La matriz de coeficientes de las restricciones del dual es igual a la transpuesta del primal Esta última aseveración puede ser más explicita si escribimos la formulación de ambos problemas en forma matricial. Si el problema primal está definido como: ( ) El dual queda definido como: ( ) Notemos que, a partir de lo anterior, es posible demostrar que el dual del dual es igual al primal. Esto se le deja como ejercicio al lector. SOLUCIÓN DUAL ÓPTIMA. Las soluciones primal y dual están tan estrechamente relacionadas, que la solución óptima del primal produce en forma directa, con un simple cálculo adicional, la solución óptima del dual. Para ello contamos con dos métodos. Ambos igualmente válidos. Método 1: Formulismo del método símplex revisado. Tal y como vimos con anterioridad, uno de los elementos matriciales de la tabla símplex es la matriz de valores duales, que corresponde a los valores de las variables duales para la correspondiente iteración. Si la k-ésima iteración resulta ser la óptima en el primal, la solución óptima del problema dual está dada por la siguiente expresión: ( ) ¿Por qué esta expresión tiene un signo negativo que la precede, cuando en el método símplex revisado no lo había? Esto sucede porque, desde un principio, nos hemos forzado a resolver problemas de minimización, inclusive cuándo éstos no están definidos ( ) de esta forma, utilizando el cambio de variable ( ). Por lo tanto, este cambio de signo implica que antepongamos un signo negativo a la fórmula de la matriz de valores duales. 40 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización Método 2: Teorema de holguras complementarias. Este método es consecuencia de la misma definición del problema dual. Definimos el teorema de holguras complementarias de la siguiente forma: TEOREMA DE HOLGURAS COMPLEMENTARIAS (THC) – Consideremos planteamiento del siguiente par de problemas, primal y dual, de programación lineal: ( ) el ( ) Supongamos que representa los elementos constituyentes de la matriz y admitimos que el problema primal tiene restricciones y variables asociadas, y sean y las soluciones óptimas de los problemas primal y dual, respectivamente. Se tiene entonces lo siguiente: [ ∑ ] [ ∑ ] Donde corresponde a los términos independientes para las m restricciones del primal, y mientras que corresponde a los coeficientes de las variables en la función objetivo del primal. ∑ En el teorema anterior, podemos notar que las expresiones [ ] y [ ∑ ] corresponden a las variables de holgura de los problemas primal y dual, respectivamente, y que son denominadas holguras complementarias para cada PPL. Visto de esta forma, podemos interpretar el teorema de holguras complementarias de la siguiente forma: Dos soluciones posibles del primal y del dual son, respectivamente óptimas, si y sólo si toda variable asociada a una restricción con holgura distinta de cero es nula. Ejemplo: Establecer el problema dual y las condiciones de holguras complementarias para el siguiente problema de programación lineal: ( ) Solución: Reescribiendo este problema en forma canónica: 41 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización ( ) Construimos ahora el problema dual. Del primal, observamos que el dual tiene 3 variables y 4 restricciones. Además, la variable dual es no restringida, mientras que el resto son no negativas. Por lo tanto, el problema dual es el siguiente: ( ) A merced del THC, establecemos las holguras complementarias respectivas. Para el primal: ( ( )] )] ( )] Para el dual: ( ( ( ( )] )] )] )] CONDICIONES DE BORDE DEL MODELO PRIMAL – DUAL: El modelo primal – dual presenta cuatro condiciones de borde que demuestran que la naturaleza de un problema tiene una consecuencia directa en el otro. 1. Para todo par de problemas primal y dual, se tendrá que: ( ) ( ) Donde las funciones z y v corresponden a las funciones objetivo para los problemas primal y dual, respectivamente. La igualdad de la expresión anterior se cumple si y sólo si estamos en el óptimo. 2. Si el primal no está acotado, y la función objetivo tendrá solución factible. tiende a , entonces el dual 42 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización 3. Si el primal no está acotado, y la función objetivo tiende a también tendrá una función objetivo no acotada, tal que , entonces el dual En términos de factibilidad de ambos problemas, estas condiciones se pueden resumir en los siguientes cuatro puntos: Si ambos problemas –primal y dual– son factibles, entonces ambos tendrán una solución óptima finita, con valores objetivos finitos Si el primal no es factible y el dual es factible, entonces el problema dual tendrá un ESF no acotado Si el primal es factible y el dual no es factible, entonces el problema primal tendrá un ESF no acotado Si ambos problemas –primal y dual– no son factibles, ambos poseen valores objetivos infinitos INTERPRETACIÓN ECONÓMICA DE LA DUALIDAD. El problema de programación lineal se puede considerar como un modelo de asignación de recursos, en que el objetivo es maximizar los ingresos o las utilidades, sujetos a recursos que naturalmente son limitados. Si se aprecia el problema desde este punto de vista, el problema dual asociado ofrece interpretaciones económica interesantes del modelo de programación lineal de asignación de recursos. Para formalizar la descripción se considerará la siguiente representación de los problemas generales primal y dual, en donde el primal asume el papel de un modelo de asignación de recursos: PRIMAL ( ) DUAL ( ) ∑ ∑ ∑ ∑ Desde el punto de vista del modelo de asignación de recursos, el problema primal tiene actividades económicas y recursos. El coeficiente del primal representa la utilidad por unidad de actividad . El recurso , cuya disponibilidad máxima es , se consume con la tasa de unidades por unidad de actividad . INTERPRETACIÓN ECONÓMICA DE LAS VARIABLES DUALES: Anteriormente, se indicó que para dos soluciones factibles primal y dual cualquiera, los valores de las funciones objetivo, cuando son finitos, deben satisfacer la siguiente desigualdad: ( ) ∑ ∑ ( ) 43 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización La igualdad estricta, óptimas. ( ) ( ), es válida cuando las soluciones primal y dual son ( ) Examinaremos primero la condición óptima, ( ). Como el problema primal representa un modelo de asignación de recursos, podemos imaginar que representa la utilidad monetaria. Como representa la cantidad disponible de unidades del recurso , la ( ) ecuación ( ) se puede expresar en forma dimensional como sigue: ∑( ) ( ) Eso quiere decir que las variables duales representan el valor por unidad de recurso . ( ) Con la misma lógica, la desigualdad ( ) relativa a dos soluciones asociadas, primal y dual, se interpreta como sigue: Según esta relación, siempre que los ingresos totales por todas las actividades sean menores que el valor de los recursos, las soluciones primal y dual correspondientes no son óptimas. La optimalidad sólo se alcanza cuando se han explotado los recursos por completo, lo que sólo puede suceder cuando los datos (valor de los recursos) son iguales a los resultados ($ de utilidad). En términos económicos se dice que el sistema permanece inestable (no óptimo) cuando los datos (valor de los recursos) son mayores que el resultado (ingreso). La estabilidad se da sólo cuando estas dos cantidades son iguales. INTERPRETACIÓN ECONÓMICA DE LAS RESTRICCIONES DUALES: Del teorema de holguras complementarias, sabemos que: ∑ Esta fórmula nos permite interpretar las restricciones duales. La utilidad por unidad de actividad está en $ por unidad. En consecuencia, para tener consistencia, la cantidad ∑ , que aparece en la ecuación con signo contrario, también debe estar en $ por unidad. Además, como representa una utilidad, la cantidad ∑ , que aparece en la ecuación con signo contrario, debe representar un costo. Al mismo tiempo, como es la cantidad del recurso que usa la actividad , las variables duales deben representar al costo imputado de todos los recursos necesarios para producir una unidad de actividad . La condición de optimalidad de maximización del método símplex indica que un aumento en la cantidad de una actividad no usada (no básica) puede mejorar la utilidad sólo en caso de que su coeficiente objetivo ∑ sea no negativo (que es al revés de la condición de minimización estándar). En función de la interpretación anterior, esta condición establece que: 44 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización ( ) ( ) Así, la condición de optimalidad de maximización indica que es económicamente bueno aumentar una actividad a un valor positivo si su utilidad unitaria es mayor que su costo imputado unitario. Por lo tanto, en síntesis, las variables duales representan el precio que deberíamos pagar, como máximo, por una unidad adicional del recurso . ALGORITMO SÍMPLEX DUAL. Como en el método símplex, la base del método símplex dual es que cada iteración siempre está asociada a una solución básica. Las condiciones de optimalidad y factibilidad se establecen para preservar la optimalidad de las soluciones básicas y al mismo tiempo, mover las iteraciones de la solución básica hacia la factibilidad. Por lo tanto, a diferencia del algoritmo símplex estándar, el símplex dual busca la factibilidad de la solución básica, que ya es óptima. Luego, este algoritmo está diseñado para tratar problemas no factibles, que tienen términos independientes en sus restricciones que son negativos. a) Condición dual de factibilidad: la variable de salida es la variable básica que tiene el valor más negativo (los empates se rompen de forma arbitraria) en la columna de términos independientes de las restricciones. Esto es, la columna b de la tabla símplex. Si todos los elementos de la columna b son positivos o cero, hemos llegado a la solución factible óptima. b) Condición dual de optimalidad: La variable de entrada se determina entre las variables no básicas, como aquella que tenga el elemento de menor valor, estando definido por: ( ) Donde es el coeficiente de la variable en la función objetivo para la correspondiente iteración, y el coeficiente de restricción asociado a dicha variable. Al respecto, si bien en el algoritmo símplex impusimos que la función objetivo del problema siempre tiene que minimizarse, en el algoritmo símplex dual usaremos la condición inversa: la función objetivo debe siempre ser de maximización. Ejemplo: Considere el siguiente problema de programación lineal: ( ) 45 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización a) Formule el problema dual b) Resuelva el problema dual mediante el algoritmo símplex dual Solución: Se debe reescribir el problema primal en la forma canónica (primal simétrico): ( ) Ahora procedemos a construir el problema dual. Notemos que el dual tendrá 3 variables y 4 restricciones. Las 3 variables duales son no negativas. Por lo tanto: ( ) Ahora debemos resolver el problema dual mediante símplex dual. Como el algoritmo símplex dual está diseñado para resolver problemas no factibles, entonces no es necesario multiplicar las restricciones duales a fin de tener términos independientes no negativos. Es más, el algoritmo símplex dual sólo funciona en problemas no factibles. Agregando las correspondientes variables de holgura (una por cada restricción), obtenemos la siguiente tabla símplex de inicio: V.B. -1 -1 -1 -1 -12 -5 -3 0 -2 -20 -2 -1 -1 0 -10 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 -2 -3 -9 -9 0 Aplicando la condición dual de factibilidad, determinamos que la variable de salida es aquella que tenga el elemento más negativo en la columna b de la tabla. En este caso, hay empate entre las variables y . Como los empates se rompen de forma arbitraria, elegimos a como variable de salida. Ahora debemos determinar la variable de entrada aplicando la condición dual de optimalidad. Como es la variable de salida, calculamos los elementos como la razón entre el coeficiente objetivo y el coeficiente de restricción respectivo en la fila para cada variable no básica. Así, se tiene lo siguiente: 46 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización V.N.B. Coeficiente en fila -1 0 -1 Coeficiente en fila -v -12 -12/-1 = 12 -20 -20/0 = ∞ → Ignorar -10 -10/-1 = 10 → Mínimo Tabla 6: Cálculo de los elementos para nuestro ejemplo La variable de entrada es entonces , porque tiene el elemento mínimo. Aplicando las operaciones de eliminación gaussiana respectivas, se obtiene la siguiente tabla: V.B. 1 0 1 1 -2 -5 -3 0 -2 -20 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 Análogamente, se determina que la variable de salida es Por tanto, para la siguiente iteración, se tiene: -2 -1 -1 0 -10 0 0 0 1 0 16 6 9 -9 90 y la variable de entrada es . V.B. 0 0 0 1 0 -7 -3 -2 2 -16 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 -2 -1 -1 0 -10 1 0 1 -1 -2 7 6 0 9 108 Como todos los elementos de b son positivos, hemos llegado a una solución factible. Esta solución es óptima, porque todos los coeficientes en la fila objetivo son negativos o cero. Esta condición es la inversa que se utilizó para los problemas de minimización, donde todos los coeficientes de la fila objetivo debían ser positivos o cero. En este caso, la función objetivo entró a la tabla símplex como una función de maximización, lo que implica que se utilice la condición inversa. 47 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización EJERCICIOS PEP 1 PROBLEMA #1 Una fábrica de jugos de 1 litro (1000 cc) desea lanzar al mercado una nueva variedad de jugo. Para ello, disponen de 4 ingredientes base. La nueva variedad apuntará a conservar un balance alimenticio, debiendo contener al menos un 15% de vitamina C, y a lo más un 30% de potasio. Existe además una relación entre los betacarotenos y la vitamina A que impone lo siguiente: la cantidad de vitamina A debe ser, cuando menos, un tercio de los betacarotenos. Además, la vitamina A no puede superar el 35% del contenido del jugo. El costo por adquirir los ingredientes, los límites de los pedidos por día, y los aportes porcentuales de cada componente a los ingredientes por unidad se resumen en la siguiente tabla: Ingrediente 1 Ingrediente 2 Ingrediente 3 Ingrediente 4 Potasio 20% 5% 35% 15% Vitamina C 15% 40% 20% 25% Vitamina A 30% 10% 25% 35% Betacarotenos 35% 45% 20% 25% Costo [$/u] 25 13 10 20 Límite [u] 6 9 8 5 FORMULAR (NO RESOLVER) un modelo de programación lineal que permita minimizar los costos, cumpliendo con todos los requerimientos. Considere, para tal caso, que cada unidad son 100 cc. Defina claramente variables, función objetivo y restricciones. SOLUCIÓN: Primero formulamos las variables del modelo. Sea la cantidad de unidades del ingrediente para la nueva variedad ( ). Como se desea minimizar los costos, la función objetivo estará dada por: ( ) Ahora veamos las restricciones. En la nueva variedad, la combinación de los 4 ingredientes debe conformar una unidad de jugo, por lo cual la primera restricción se define de la siguiente manera: ( ) ( ) En el caso de la mezcla separamos por ingrediente. Para la vitamina C, la suma de las cantidades de los ingredientes conforma, por lo menos, un 15% del juego (que son 150 cc). Por lo tanto: Para el potasio, la suma de las cantidades de cada ingrediente no puede superar el 30% del total del juego (que son 300 cc). Luego: Para la vitamina A, esta suma debe ser al menos 1/3 de los betacarotenos. Por lo tanto: 48 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización ( ) De manera simplificada: Además, la contribución de la vitamina A no debe superar el 35% del jugo (350 cc). Por ende: Por último, para los límites diarios, tenemos: Naturalmente. . El modelo es entonces el siguiente: ( ) ( ) PROBLEMA #2 Formule y resuelva adecuadamente el siguiente problema de programación lineal. La primera iteración debe ser realizada mediante el algoritmo símplex. La segunda y siguientes efectuarlas empleando el método símplex revisado o matricial: ( ) SOLUCIÓN: Primero hacemos el cambio de variable , a fin de tener sólo variables no negativas. Reescribiendo el PPL en forma estándar, se tiene: 49 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización ( ) El problema debe resolverse en dos fases. La fase 1 minimizará la función objetivo ( ) . Procedemos en la primera iteración mediante el algoritmo símplex. La tabla de inicio para este problema es la siguiente. Observe que se han marcado en la tabla la inversa respectiva, así como el elemento pívot para la respectiva iteración: V.B -4 3 1 5 0 3 Entra ; sale 1 2 0 -1 0 -1 -7 2 4 -1 0 3 -3 4 2 -1 0 1 0 0 -1 0 0 1 1 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 1 0 50 150 10 0 0 -60 -3 10 2 -4 -2 0 0 -1 0 1 1 -2 0 1 1 0 1 0 0 0 0 0 1 0 0 50 50 10 50 -10 . Primera iteración: V.B -4 11 1 1 -1 Entra , sale ( ) 50 75 --- 1 0 0 0 0 -7 16 4 -8 -4 ( ) 50/7 25/8 5/2 . Las siguientes iteraciones deben hacerse mediante el algoritmo símplex revisado. De la tabla anterior reconocemos la matriz inversa de esta primera iteración: ( ) Como ya definimos el pívot y las variables de entrada y salida a partir de la tabla anterior, podemos calcular inmediatamente la matriz : ( Calculamos ) ( ) para dar inicio a la segunda iteración: 50 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización ( ( ) ) ( ) Construimos una pequeña tabla para verificar el orden de las variables básicas: ( V.B. ( ) ) Calculamos los valores duales para esta iteración: ( ) ( ) ( ( ) ) Calculamos los coeficientes (o costos) reducidos para esta iteración: ( ) Luego: ( ) ( ) ( ) ( ) Por lo tanto: ( ) ( ) Como todos los coeficientes reducidos de la función objetivo w son nulos, hemos llegado al óptimo para la fase 1. Como y son no básicas, y por tanto nulas, se tiene que ( ) , por lo que existe un espacio de soluciones factible para el PPL original en la fase 2. Ahora debemos calcular los valores duales para la función objetivo z en la fase 2 (iteración 2). Verificando el orden de las variables básicas: ( V.B. ( ) ) Por lo tanto: 51 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización ( ) ( ) ( ( ) ) Calculamos los costos reducidos: ( ) Luego: ( ) ( ) ( ) ( ) Por lo tanto: ( ) ( ) Como el coeficiente reducido de en la función objetivo es negativo, aún no estamos en el óptimo. Se tiene que es la variable de entrada para la tercera iteración, porque tiene el coeficiente más negativo en la fila objetivo. Calculamos entonces las columnas y ( ) para determinar la variable de salida y el elemento pívot: ( ( ) ( ) ) ( ( ) ) ( ( ) ) ( ) Por lo tanto: V.B. 135/2 10 5/2 ( ) -7/4 (135/2):(-7/4) = -270/7 → Ignorar 4 10/4 = 5/2 → Mínimo -1/4 (5/2):(-1/4) = -10 → Ignorar La variable de salida es entonces Calculamos la matriz inversa . El pívot corresponde a 4. : Donde: 52 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización ( ( ) ( ) ) ( ) Entonces: ( ( ) ) ( ( ) ) Verificamos el orden de las variables básicas: V.B. ( ) Calculamos los valores duales: ( ) ( ) ( ( ) ) Calculamos los costos reducidos: ( ) Luego: ( ) ( ) ( ) ( ) Por lo tanto: ( ) ( ) 53 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización Como ahora todos los coeficientes reducidos son no negativos, hemos llegado al óptimo. Calculamos entonces para encontrar la solución óptima de este problema: ( ) ( ) ( ) Por lo tanto, la solución óptima es y . El resto de las variables son ( ) nulas. Reemplazando estos valores en la función objetivo se obtiene , con ( ) lo cual . PROBLEMA #3 Considere el problema de programación lineal cuyo tableau final (óptimo) es el siguiente. Asuma que Si es la variable de holgura para la restricción i. V.B. X1 S1 -Z a) b) c) d) X1 1 0 0 X2 -5 2 3 X3 4 1 1 X4 13 6 8 S1 5 10 4 S2 0 1 0 b 7 3 76 ¿Cuáles son las variables básicas? ¿Cuáles son las variables no básicas? ¿Cuál es la solución óptima? ¿Qué puede decir acerca de las restricciones 1 y 2? ¿Cuáles son las unidades adicionales? SOLUCIÓN: Tenemos: a) Las variables básicas son y . b) Las variables no básicas están conformadas por el resto de variables que no se encuentran en la base: son no básicas. c) La solución óptima es . Su valor es ( ) . d) En ambas restricciones hay variables de holgura asociadas. El recurso asociado a la primera restricción se considera abundante, porque no se ha consumido del todo, ya que la variable de holgura asociada, , es mayor que cero. El recurso asociado a la segunda restricción se considera escaso, porque su holgura es nula. PROBLEMA #4 Una fábrica de ropa produce tres líneas de trajes: jeans, franela y amasado. La ropa es vendida en lotes de 100 trajes de cada tipo. Cada lote pasa a través de tres procesos: corte, cosido y empaque. La planta dispone de 16 cortadores como máximo, 41 máquinas de coser como máximo y debe ocupar a 10 empacadores (no más no menos). Los 54 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización requerimientos para producir un lote de 100 trajes de cada tipo y las utilidades asociadas, se presenta a continuación: Requerimientos de Producción y Utilidad Cortadores [Personas/Lote] Máquinas de Coser [Máquinas/Lote] Empacadores [Personas/Lote] Utilidad [$/Lote] Jeans Franelas Amasados 4 2 1 1 2 1 1 1 1 400 200 300 FORMULE un modelo de programación lineal que permite maximizar las utilidades de la fábrica. Defina claramente variables, función objetivo y restricciones. A continuación, RESUELVA el modelo que planteó utilizando el método que más le acomode. SOLUCIÓN: El objetivo de la fábrica es determinar las cantidades de cada lote de ropa a fabricar, de tal forma que éstos maximicen las utilidades. Sea la cantidad de lotes de ropa a fabricar del tipo . De la tabla, podemos obtener inmediatamente la función objetivo: ( ) Las restricciones del problema están asociadas al límite de recursos impuesto por la fábrica en función de la cantidad de cortadores, máquinas de coser y personal encargado de empacar. Así, se tiene lo siguiente: Cortadores: Máquinas de coser: Personal de empaque: El modelo completo es entonces: ( ) El modelo puede resolverse utilizando cualquier método. En este caso particular, podemos hacer un arreglo algebraico sencillo que permita solucionarlo mediante el método gráfico. De la tercera restricción, despejamos, con lo cual resulta ( ). Reemplazando en el PPL, obtenemos: 55 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización ( ) El espacio de soluciones factible (ESF) de este problema es el siguiente: Figura 1: ESF del problema anterior Notemos que los únicos puntos candidatos a solución óptima de este problema son A y B. Evaluando la función objetivo se obtiene que el punto esquina óptimo es B, dado por lotes de jeans, resultando no rentable fabricar lotes de franela (porque ). Reemplazando lo anterior en el modelo original, se obtiene que lotes de amasados. ( ) La utilidad máxima que percibe la fábrica es de unidades monetarias. PROBLEMA #5 Escriba el DUAL del siguiente problema. Verifique que el dual del dual es el problema original. ( ) ( ) 56 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización SOLUCIÓN: Del primal, tenemos que: Debemos hacer entonces dos cambios de variable: en , se tiene: y . Reemplazando La última expresión podemos fragmentar en dos restricciones independientes: . Además, la expresión independientes: y y también podemos fragmentarla en dos restricciones . Escribimos entonces el problema primal en forma canónica (primal simétrico): ( ) Construimos ahora el problema dual. Notemos que, a partir de la definición, el dual tendrá 8 variables y 5 restricciones. Además, la variable dual es no restringida, mientras que el resto son no negativas. ( ) La comprobación de que el dual del dual es el primal es obvia, y se deja como ejercicio al lector. 57 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización PROBLEMA #6 La compañía minera FERROJAC CHILE tiene dos operaciones mineras que alimentan de mineral de hierro a una sola planta. Cada mina tiene dos áreas de las cuales puede extraer el mineral. La ley alimentada a planta debe ser mayor que 35% Fe, y debe ser menor que 12% Si. La planta requiere al menos 45.000 toneladas, pero no puede manejar más de 60.000. El mercado interno requiere que al menos 12.000 toneladas de Fe deben estar disponibles para el consumo – asumir un 90% de recuperación en el proceso. La razón promedio de estéril/mineral determinada para las operaciones de extracción mineral tiene un valor de 3,5. Dado los datos que se indican, FORMULAR (no RESOLVER) un modelo de programación lineal, el cual permita obtener un plan minero de producción que cumpla las restricciones operacionales y permita minimizar la desviación de la razón estéril/mineral total. Mina Área Cerro GRANATE Lomas BAYAS Norte Lomas Sur Sur Alberta Reservas (toneladas) 20.000 10.000 15.000 30.000 % Fe % Si 40 30 40 35 17 10 11 13 Razón Estéril/Mineral 3,0 2,0 4,0 5,0 SOLUCIÓN: Primero definimos las variables del problema: : Producción Cerro Granate, área Norte : Producción Cerro Granate, área Lomas : Producción Lomas Bayas, área Sur Sur : Producción Lomas Bayas, área Alberta Para este problema, es muy útil la elaboración de un diagrama que muestre el proceso en cuestión: 𝑥 𝑥 𝑥 Ley de Fe ≥ 35% Ley de Si ≤ 12% Planta 𝑥 Figura 2: Esquema del proceso que se debe modelar en Problema #6 Ahora veamos las restricciones del problema. En cuanto a las capacidades de la planta, como ésta debe recibir al menos 45.000 toneladas y no más 60.000 toneladas, se tendrá: 58 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización Si el mercado interno requiere de, al menos, 12.000 toneladas de Fe, entonces el 90% de la producción que llega a planta, en términos del Fe, debe conformar como mínimo, este tonelaje. Luego: ( ) Se debe agregar que los sectores de producción tienen como limitante a sus reservas totales. Luego: Por último, la planta debe recibir como mínimo una ley del 35% de Fe y, a lo más, una ley del 12% de Si. Luego, tenemos lo siguiente: ( ) ( ) Ahora veamos la función objetivo. Como se requiere minimizar la desviación de la razón estéril – mineral, se tendrá: ( ) ( ) ( ) El modelo completo es entonces: ( ) ( ) , ( ( ) ) PROBLEMA #7 Resuelva el siguiente problema de programación lineal, empleando el método símplex para la fase 1, y el método símplex revisado para la fase 2: ( ) 59 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización SOLUCIÓN: Se debe reescribir el PPL en forma estándar. Se tiene entonces: ( ) El problema debe resolverse en dos fases. La fase 1 minimizará la función objetivo ( ) . Procedemos en la primera fase mediante el algoritmo símplex. La tabla de inicio para este problema es la siguiente: V.B. -3 -3 1 -2 0 2 Entra , sale 1 2 0 -1 0 -1 -5 2 4 -1 0 1 -3 4 2 -1 0 1 1 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 -1 0 0 1 400 1500 120 0 0 -520 . Primera iteración. V.B. -3 3 1 -5 -1 Entra , sale 1 0 0 0 0 -5 12 4 -6 -4 -3 10 2 -4 -2 1 -2 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 -1 0 1 400 700 120 400 -120 1 -2 0 1 1 0 1 0 0 0 5/4 -3 1/4 3/2 1 -5/4 3 -1/4 -3/2 0 550 340 30 580 0 ( ) --175/3 30 . Segunda iteración. V.B. -7/4 0 1/4 -7/2 0 ( ) 400 750 --- 1 0 0 0 0 0 0 1 0 0 -1/2 4 1/2 -1 0 ( ) ----120 ( ) Entra , sale . Como , con , entonces existe un ESF para el PPL en la fase 2. Procedemos entonces mediante el método símplex revisado en dicha fase. La matriz inversa de la presente iteración es: ( ) 60 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización Como ya definimos el pívot y las variables de entrada y salida a partir de la tabla anterior, podemos calcular inmediatamente la matriz : ( ( Luego calculamos ) ) para dar inicio a la cuarta iteración: ( ) ( ( ) ) Construimos una pequeña tabla para verificar el orden de las variables básicas: ( V.B. ( ) ) Calculamos los valores duales para esta iteración: ( ) ( ) ( ) ( ) ( ) Calculamos los costos reducidos: ̅( ) Luego: ( Por lo tanto: ) ( ) ( ) ( ( ) ) Como el coeficiente reducido de en la función objetivo es negativo, aún no estamos en el óptimo. Se tiene que es la variable de entrada para la tercera iteración, porque tiene el coeficiente más negativo en la fila objetivo. Calculamos entonces las columnas y ( ) para determinar la variable de salida y el elemento pívot: 61 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización ( ) ( ) ( ) ( ) ( ) V.B. ( ) -3 760:(-3) = -253.33 → Ignorar 3 340:3 = 113.33 → Mínimo -1 120:(-1) = -120 → Ignorar ( ) ( ) ( ) Por lo tanto: 760 340 120 La variable de salida es entonces Calculamos la matriz inversa . El pívot corresponde a 3. : Donde: ( ) ( ) Entonces: ( ( ) ) ( ) Verificamos el orden de las variables básicas: ( V.B. ( ) ) Calculamos los valores duales: 62 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización ( ) ( ) ( ( ) ) Calculamos los costos reducidos: ( ) Luego: ( ) ( ) ( ) Por lo tanto: ( ) ( ) Como ahora todos los coeficientes reducidos son no negativos, hemos llegado al óptimo. Calculamos entonces para encontrar la solución óptima de este problema: ( Por lo tanto, la solución óptima es estos valores en la función objetivo se obtiene . ) ( ( ) ) , ( y ) . Reemplazando ( ) , con lo cual PROBLEMA #8 Un florista sabe hacer sólo dos tipos de arreglos florales, para los cuales dispone de 3 tipos distintos de flores: rosas, tulipanes e ibizcos. Los requerimientos de flores para cada arreglo, la disponibilidad de flores y los requerimientos de cada arreglo vienen dados en la siguiente tabla: FLORES Arreglo 1 Arreglo 2 DISPONIBILIDAD Rosas 3 1 300 Tulipanes 1 1 140 Ibizcos 1 3 300 PRECIO [$] 2000 1000 a) FORMULE un PPL que resuelva el problema de maximización de ingresos por ventas sujeto a la disponibilidad de recursos. b) ¿Cuál es el problema DUAL asociado? ¿Qué situación podría estar optimizando? Justifique. c) Usando el teorema de holguras complementarias, encuentre la solución óptima del problema dual una vez resuelto el problema primal utilizando el método símplex. 63 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización d) Suponga que retorna frustrado después que una bella dama le cerrara la puerta cuando usted le llevaba amablemente una rosa, un tulipán y un ibizco. Si se encuentra con el florista ¿Cuánto cree que estaría dispuesto a pagar él por sus flores? SOLUCIÓN: Tenemos lo siguiente: a) Sean y los dos tipos de arreglos que puede hacer el florista. De la tabla, y en forma inmediata, se obtiene el PPL deseado: ( ) b) Es posible formular inmediatamente el problema dual a partir del primal, sin utilizar la transformación de primal simétrico, invirtiendo las situaciones presentadas en la definición de ambos problemas. Se tiene entonces: ( ) El modelo dual resuelve el problema de un agente externo que desea saber el precio unitario que puede ofrecer por cada una de las flores, en el caso de éste quiera comprarle todas las flores al florista. Así, y son los precios unitarios asociados a las rosas, tulipanes e ibizcos, respectivamente. c) Reescribiendo el primal en forma estándar: ( ) Tabla de inicio: V.B. 3 1 1 -2000 Entra , sale 1 1 3 -1000 1 0 0 0 0 1 0 0 0 0 1 0 300 140 300 0 ( ) 100 140 300 . Procedemos con la primera iteración: 64 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización V.B. 1 0 0 0 Entra , sale 1/3 2/3 8/3 -1000/3 1/3 -1/3 -1/3 2000/3 0 1 0 0 0 0 1 0 100 40 200 -200000 0 0 1 0 80 60 40 -220000 ( ) 300 60 75 . Procedemos con la segunda iteración: V.B. 1 0 0 0 0 1 0 0 1/2 -1/2 1 500 -1/2 3/2 -4 500 Como todos los coeficientes de las variables en la función objetivo son no negativas, hemos llegado al óptimo. La utilidad máxima que puede percibir el florista es de $220.000, con arreglos florales del tipo 1, y arreglos florales del tipo 2. En este punto óptimo, es válido el teorema de holguras complementarias. Por lo tanto: Para el primal: ( ( ( )] )] )] Para el dual: ( ( )] )] Reemplazando los valores obtenidos en la solución primal óptima en las holguras complementarias, se obtiene el siguiente sistema de ecuaciones: Con lo cual se obtiene y . Este valor es correcto, porque si lo ( ) remplazamos en la función objetivo dual, resulta , que es equivalente a la función objetivo primal en el óptimo. Por lo tanto, el florista venderá rosas y tulipanes a un precio de $500 c/u, y entregará como “oferta” los ibizcos gratis, siempre y cuando venda todo como un paquete. Esto tiene sentido, porque si vende sólo las rosas y tulipanes, dado que sólo sabe hacer los arreglos florales descritos, no le sacará provecho a los ibizcos. d) Si tuviéramos tan desgraciada suerte, entonces, idealmente, el valor máximo que nos pagará el florista por las flores es el descrito con anterioridad: $500 por cada rosa y tulipán, y $0 por los ibizcos. 65 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización PROBLEMA #9 Dado el programa lineal: ( ) Se pide: a) Determinar el programa DUAL b) Representar gráficamente este último programa para mostrar su conjunto de soluciones factibles c) A partir de esta representación, describir un proceso por el que tras dos, y sólo dos operaciones de pivotado a partir del origen, se alcance la solución. Estas operaciones de pivotado no tienen por qué seguir las reglas del símplex. d) Por medio de las relaciones que pueden establecerse a merced del principio de holgura complementaria, determinar la solución del problema primal SOLUCIÓN: A partir del enunciado, se tiene: a) Se debe obtener el modelo lineal estándar (MLE) del problema. Para ello, hacemos los cambios de variable y , con lo cual el problema se re-escribe de la siguiente forma: ( ) Ahora podemos formular el problema dual: ( ) b) El espacio de soluciones factibles (ESF) del problema dual es el siguiente: 66 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización Figura 3: ESF del problema dual En el gráfico anterior, los puntos esquina del ESF están dados por los siguientes pares: Punto esquina Valor de G 4/3 B 3 C 36/7 J 6 Valor de 5/3 5 36/7 4 Por tanto, el valor máximo del problema dual es en el punto esquina J. Valor objetivo -1/3 -2 -4/7 2 , y se cumple cuando estamos c) Si el proceso de resolución del problema dual no tiene por qué seguir las reglas del símplex, entonces basta que, a partir del origen, el algoritmo ignore la regla dada por el criterio de optimalidad en un problema de maximización, la cual dicta que se escoja siempre el coeficiente más negativo en la fila objetivo del tableau símplex. Por tanto, si partimos desde el origen, podemos comenzar en el punto E, y luego llegar de inmediato al punto J utilizando el hecho de que, en este punto, se encuentra la solución. Notemos que, además, este nuevo proceso ignora la subdivisión del problema en dos fases, ya que se cuenta de inmediato con una solución básica de inicio (el origen). d) Utilizando el teorema de holguras complementarias (THC), se obtiene: Para el primal: ( ( )] )] Para el dual: 67 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización ( ( ( ( )] )] )] )] De las holguras complementarias para el primal, se obtiene: Con lo cual se obtiene y , lo que conforma la solución óptima del problema primal. Todas las demás variables son nulas. El valor de la solución óptima ( ) es . PROBLEMA #10 La Compañía Minera ASIOP S.A. (ASIOPSA) produce dos tipos distintos de concentrado, cobre y zinc. La siguiente tabla muestra las demandas mensuales esperadas para cada producto (en toneladas): Concentrado Mes 1 Mes 2 Mes 3 Cu 1000 3000 5000 Zn 1000 500 3000 Además, la gerencia de ASIOPSA ha determinado lo siguiente: El costo de producción por tonelada del concentrado de cobre es de 20 USD, y el del concentrado de zinc es de 10 USD El costo de mantener una cantidad arbitraria de concentrado a la espera de ser comercializado es de 0,3 USD por tonelada en inventario para el concentrado de cobre, y de 1,5 USD por tonelada en inventario para el concentrado de zinc El costo de tener mano de obra extra con respecto al mes anterior es de 10 USD/hora El costo de trabajar menos horas con respecto al mes anterior es de 2,5 USD/hora Estos dos últimos costos se refieren a las fluctuaciones en los niveles de producción, ya que ASIOPSA tiene como política trabajar todos los meses la misma cantidad de horas. Al comienzo de los tres meses existen en inventario 50 toneladas del concentrado de cobre y 200 del concentrado de zinc. Al final de los tres meses, el inventario mínimo debe ser de 400 toneladas de concentrado de cobre y 200 toneladas de concentrado de zinc. Ambos concentrados se guardan en una planta en depósitos comunes. Cada depósito permite guardar hasta dos componentes de concentrado de cobre, y hasta tres componentes de concentrado de zinc. La envergadura de la planta permite guardar hasta 1000 depósitos. Los requerimientos de fabricación de cada concentrado se resumen en la siguiente tabla: 68 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización Concentrado Maquinaria [hr/ton] Mano de obra [hr/ton] Cu 0,10 0,05 Zn 0,08 0,07 La capacidad de fabricación mensual es de 400 horas de maquinaria y 300 horas de mano de obra. Además, se sabe que el último mes sólo se usaron 225 horas de mano de obra para la fabricación de ambos componentes. FORMULAR (NO RESOLVER) un modelo de programación lineal que permita determinar el plan de producción mensual que minimiza los costos de satisfacción de la demanda esperada. Defina claramente variables, función objetivo y restricciones. SOLUCIÓN: Definimos primeramente las variables del problema: : Cantidad de concentrado del tipo (con o el mes (con ) : Inventario de concentrado del tipo al término del mes : Horas de mano de obra empleadas al mes : Aumento del empleo de mano de obra al mes : Disminución del empleo de mano de obra al mes : Número de depósitos requeridos al mes ) producido en Veamos ahora la función objetivo. Como el objetivo de ASIOPSAL es minimizar los costos, es posible definir dicha función directamente partir de los datos entregados en el enunciado: ( ) ( ) ( ( ) ) ) ( ( ( ) ) La función objetivo puede escribirse de forma más abreviada como sigue: ( ) ∑ ∑ ∑ ∑ ∑ ∑ Ahora veamos las restricciones. Lo más sencillo es verificar primero las limitaciones de satisfacción, demanda e inventario de ASIOPSAL. En este caso, para cada mes, se tiene lo siguiente: Mes 1: Mes 2: 69 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización Mes 3: Con respecto a la maquinaria, se tiene: Además, para la mano de obra, se tiene que para cada mes: Mes 1: Mes 2: Mes 3: Finalmente, de las limitaciones impuestas por la planta: Naturalmente, todas las variables consideradas para este problema son no negativas. El modelo completo (simplificado) es el siguiente: 70 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización ( ) ∑ ∑ , ∑ ∑ ∑ ∑ , , , PROBLEMA #11 Al comienzo del mes 1, la financiera ARCOS dispone de 400 USD en efectivo. Al comienzo de los meses 1, 2, 3 y 4, la financiera recibirá ingresos y, además, deberá realizar pagos como se indica en la siguiente tabla: Mes Ingresos (US$) Pagos (US$) 1 400 600 2 800 500 3 300 500 4 300 250 El dinero restante en cada mes, una vez realizados los pagos, puede ser invertido durante un mes a una tasa del 0,1% mensual; durante dos meses a una tasa del 052% mensual; durante tres meses a una tasa del 1,0% mensual; o durante cuatro meses a una tasa del 2,0% mensual. FORMULAR (NO RESOLVER) un modelo de programación lineal que permita determinar una estrategia de inversión que maximiza el dinero en efectivo al comienzo del quinto año. Defina claramente variables, función objetivo y restricciones. 71 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización SOLUCIÓN: Lo primero es definir las variables de este problema. Sea la cantidad de dinero invertido al comienzo del mes durante un período de meses. La función objetivo queda entonces definida como sigue: ( ) Las restricciones del modelo naturalmente representan la distribución del dinero. Así, éstas se definen por las siguientes desigualdades: Naturalmente, todas las variables consideradas en el modelo son no negativas. PROBLEMA #12 La Compañía FERROSUR debe decidir cuántas toneladas de acero puro X y cuántas de chatarra Y se deben utilizar en la preparación de una aleación para un cliente. El costo por tonelada de acero puro es de 3, y el de chatarra 6 (por las impurezas); la demanda del cliente es de por lo menos 5, y él aceptaría más si así se requiere. La disponibilidad de X es de 4 toneladas y 7 la de Y. La relación entre chatarra y acero puro no puede exceder 7/8. La fundición tiene 18 horas disponibles para derretir y fundir; una tonelada de acero puro requiere 3 horas, mientras que la de chatarra sólo 2 horas. Se pide: a) Escribir el problema de programación lineal b) Resolverlo gráficamente SOLUCIÓN: Se tiene lo siguiente: a) Las variables del problema ya habían sido definidas en el enunciado: : Toneladas de acero puro : Toneladas de chatarra Como se trata de un problema de costos, se debe minimizar la función objetivo, que define los costos de fabricación de cada material. Luego, dicha función viene dada por la siguiente expresión: ( ) Ahora veamos las restricciones. De la demanda del cliente y la disponibilidad de cada recurso, tenemos: De la relación entre tonelajes, tenemos: 72 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización De forma simplificada, que: Naturalmente, . Finalmente, de la disponibilidad horaria, se tiene . Por lo tanto, el modelo completo es el siguiente: ( ) b) El ESF de este modelo se muestra en Figura 9: Figura 4: ESF del problema La tabla siguiente evalúa el valor de las variables del PPL en cada uno de los puntos esquina del ESF: Punto Esquina Valor de x Valor de y Función objetivo B 1,25 0 3,75 C 0,494 0,432 4,074 D 3,789 3,316 31,263 F 6 0 18 Por lo tanto, el punto esquina B es el óptimo, porque es aquel donde la función objetivo alcanza su mínimo valor. Se concluye entonces que FERROSUR debe fabricar 1,25 toneladas de acero puro, a un costo mínimo de 3,75 unidades monetarias. La chatarra no es rentable de producir. 73 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización PROBLEMA #13 Un importador de whisky está planificando su negocio considerando que, en las próximas temporadas, tendrá las siguientes demandas (en miles de botellas): Temporadas 1 2 3 4 Seco 10 12 14 8 Frutoso 13 15 17 19 Añejo 21 25 9 11 Tipo El whisky seco lo vende a 34 dólares por botella, el frutoso a 28,8 y el añejo a 22,5 en la primera temporada. En las siguientes se espera poder venderlos a un 5% más caro. Cada tipo de whisky es elaborado mezclando tres materias primas, A, B y C, de las cuales se puede importar un máximo de 2000, 2500 y 1200 botellas por temporada a un costo de 35, 25 y 20 dólares, respectivamente. Estos costos, válidos para la primera temporada, deberían aumentar un 2% en cada temporada. El whisky seco debe contener por lo menos un 60% de la materia prima A y no más de un 20% de la materia prima C. El whisky frutoso debe contener por lo menos un 15% de la materia prima A y no más de un 60% de la materia prima C. El whisky añejo debe contener por lo menos un 50% de la materia prima B. Cada botella de whisky fabricada en una temporada puede ser vendida en dicha temporada o almacenada a un costo unitario por temporada de 0,5 dólares para ser vendidas posteriormente. FORMULAR (NO RESOLVER) un modelo de programación lineal que permita optimizar las actividades del importador. Defina claramente variables, función objetivo y restricciones del problema. SOLUCIÓN: Las variables a considerar para este problema son las siguientes: : Cantidad de materia prima k para fabricar whisky i en la temporada j : Cantidad de whisky tipo i vendido en la temporada j : Cantidad de whisky tipo i almacenado en la temporada j La función objetivo se subdivide en tres partes, y , donde representa los ingresos que obtiene el importador a partir de la venta de whisky en cada temporada, representa los costos de importación de whisky de cada tipo, y representa los costos de almacenaje de whisky. Definimos entonces: ∑( ∑ ∑( ( ))( ( ) ))( ) 74 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización ∑∑ Por lo tanto, la función objetivo será: ( ) Las restricciones del problema vienen dadas por la disponibilidad de materia prima para producir cada tipo de whisky, la cantidad máxima de ventas por temporada, la proporción de uso de las materias primas en la elaboración de cada tipo de whisky, y la producción, ventas y almacenaje por temporada. Luego, se tiene lo siguiente: Para la disponibilidad de materia prima: ∑ ∑ ∑ A partir de la tabla entregada en el enunciado del problema, se obtienen las restricciones de venta máxima por temporada: Además, considerando las proporciones de materias primas requeridas en la elaboración de cada tipo de whisky, se obtiene: ∑ ∑ ∑ ∑ ∑ 75 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización Las restricciones anteriores se cumplen para todo . Finalmente, a partir de los datos entregados en el enunciado del problema con respecto a la producción, ventas y almacenaje por temporada, se obtienen las siguientes expresiones: ∑ ∑ ∑ ∑ Naturalmente, todas las variables consideradas en la formulación de este problema son positivas o nulas. 76 Universidad de Santiago de Chile Departamento de Ingeniería en Minas Ayudantía de Optimización Bibliografía TAHA, HAMDY A. “Investigación de Operaciones”. ASCENCIO, JOSÉ A. “Notas del curso: Optimización 17015”. Apuntes de clase personales. 77