Capítulo 8. Problema de Transporte y asignación Lección 8. Problemas del transporte, transbordo y asignación 8.1. El problema de transporte 8.1.1.Propiedades del sistema de transporte. 8.1.2.Método general de solución- algoritmo de transporte. 8.1.3.Determinación de una solución inicial 8.1.3.1.Método de la esquina noroeste (MEN). 8.1.3.2.Método de Aproximación de Vogel (MAV) 8.1.3.3.Soluciones degeneradas (ε posiciones) 8.1.4.Optimalidad y mejora de una solución.(MODI) 8.2 Problema de transbordo 8.3. Extensiones y consideraciones prácticas 8.4. El problema de asignación 8.4.1.Algoritmo del transporte 8.4.2.Método Húngaro 8.4.3.Algunas consideraciones 8.4.4.Problema de emparejamiento 1/13 Capítulo 8. Problema de Transporte y asignación En los dos próximos capítulos estudiaremos un conjunto de modelos lineales con una estructura especial. Tradicionalmente estos modelos se han considerado como subclases de la programación lineal, sin embargo, las variables de decisión que aparecen en ellos sólo toman valores enteros, por lo que realmente deben considerarse como problemas de programación entera. Un aspecto notable de los métodos de solución de estos problemas, es la complejidad computacional. Un enfoque primitivo de resolución consiste en evaluar cada posible solución, es decir, cada posible combinación de valores enteros para las variables del problema. En este caso incluso en un problema pequeño como podría ser con diez variables y diez valores para cada variable tendría un número grande (diez mil millones) de posibles soluciones, lo que hace necesario planteamientos de solución inteligentes. 8.1. El problema de transporte Uno de los primeros problemas que se formuló como problema de programación lineal y que en su día tuvo gran motivación debido al escaso desarrollo de los medios de transporte, es el denominado problema de transporte o distribución. Consiste en llevar unidades de un producto homogéneo de m puntos de origen a n puntos de destino con coste mínimo. Dada su estructura particular, se han desarrollado algunas heurísticas y métodos específicos que resultan mucho más eficientes que la resolución del correspondiente programa lineal. Esta denominación de problema de transporte o distribución es el resultado de la tradición. Ej: llevar unidades de un cierto bien de tres almacenes u orígenes con sus respectivas capacidades o disponibilidades a tres puntos de venta o destinos que presentan unas demandas que hay que satisfacer. Este problema. Hay un total de 9 arcos, que son las conexiones entre cada origen y destino, y vienen a ser las posibles rutas de transporte. Asociado a cada uno de los arcos aparece un número, que es el coste de transporte por unidad entre el origen y el destino que une, y que se supone constante. Bajo la hipótesis de que el coste es función lineal de las unidades transportadas, el problema consiste en determinar la forma de transporte con coste mínimo. 2/13 Capítulo 8. Problema de Transporte y asignación La formulación del problema mediante un programa lineal standart sería: Minz= 3xa1+2xa2+5xa3+4xb1+3xb2+2xb3+7xc1+3xc2+3xc3 Sujeto a: Xa1+xa2+xa3=10 Xb1+xb2+xb3=20 Xc1+xc2+xc3=15 Xa1+xb1+xc1=15 Xa2+xb2+xc2=5 Xa3+xb3+xc3=25 Xij>=0 Para resolverlo habría que añadir variables artificiales para obtener una solución inicial y aplicar el método simplex. Sin embargo hasta para valores pequeños de m y n el problema puede resultar excesivamente grande. Por ello, se han propuesto métodos más eficientes que la resolución del Simplex que se apoyan en la forma matricial. La forma matricial de problema del transporte denominada tabla del transporte es la siguiente: Siendo: En cada posición aparecen tres valores: cij= coste del transporte de una unidad desde el origen i hasta el destino j Xij: número de unidades transportadas desde el origen i al destino j. α ij: se denomina Valor indicador, y desempeña el mismo papel que el de los elementos de la fila indicador en la tabla del Simplex, es decir, nos van a indicar si la tabla es óptima y si no es así, como determinar una nueva mejora de la solución. PROPIEDADES DEL SISTEMA DE TRANSPORTE. Teorema 1. El problema de transporte tiene una solución factible, Un solución básica factible para el problema de transporte es un solución entera que verifica las restricciones de disponibilidad y demanda y con a lo sumo m+n-1 posiciones localizadas. Teorema 2. El problema del transporte (equilibrado) tiene una solución básica factible. 3/13 Capítulo 8. Problema de Transporte y asignación Teorema 3. Si para un problema de transporte se determina una solución básica factible inicial entonces todas las soluciones que se obtengan a partir de ella mediante el método del simplex son soluciones básicas factibles. Teorema 4. El problema del transporte es acotado. MÉTODO GENERAL DE SOLUCIÓN- algoritmo de transporte. I. Fase inicial Paso 0. Dado un problema de transporte, ponerlo en la forma matricial. Transformar el problema en equilibrado si no lo fuera, e ir al paso 1. Si la disponibilidad es mayor que la demanda, se crea un destino ficticio que absorba el exceso de disponibilidad. Siendo el coste de transporte cij=0 Si el problema original es tal que la disponibilidad es menor que la demanda se crea un origen ficticio que provea el exceso de demanda con una disponibilidad. Fase I Paso 1. Determinar una solución básica factible inicial. Asi en la fase I se determina una solución inicial, lo que es posible mediante alguno de los métodos existentes, entre los que estudiaremos el de la Esquina Noroeste y el Aproximado de Vogel. Fase II Paso 2. Si la solución obtenida en el paso anterior es óptima, parar. En otro caso, ir al paso 3. Paso 3. Determinar una nueva solución que mejore la anterior e ir al paso 2. La fase II consiste en determinar si la solución obtenida en la I es óptima. Si no es óptima, la mejora es posible y ésta se puede llevar a cabo mediante distintos métodos y el que estudiaremos es el conocido como MODI (MOdified DIstribution) o también u — v. En un problema de transporte con m orígenes y n destinos una solución no degenerada tendrá m+n-1 posiciones con valor positivo que llamaremos básicas. Ya que del total de m+n restricciones sólo m+n-1 serán independientes y pueden formar una base. Es importante destacar que una solución óptima puede ser degenerada, y por ello no hay inconveniente alguno. Sin embargo, no puede serlo la solución a partir de la cual se vaya a obtener otra mejor. Por ello veremos cómo convertir una solución degenerada en una que no lo sea. 4/13 Capítulo 8. Problema de Transporte y asignación DETERMINACIÓN DE UNA SOLUCIÓN INICIAL Método de la esquina noroeste (MEN). Este método conduce a una solución factible con a lo sumo m + n -1 posiciones localizadas. Las variables asociadas con tales posiciones se toman como variables básicas iniciales. El método viene dado por los siguientes pasos: Paso 1. Sea (i, j) la posición de la esquina noroeste (posición superior izquierda) de la tabla de transporte (inicialmente i = j = 1). Paso 2. Hacer xij = min (disponibilidades, demandas), y reducir el valor de la disponibilidad o de la demanda en la cantidad xij situada en (i, j), de forma que una fila o una columna o ambas quedan satisfechas y se pueden eliminar de la tabla. Paso 3. Si no queda alguna fila o columna, parar. En otro caso, volver al paso 1 (y aplicar una nueva iteración a la tabla reducida en la fila y/o columna del paso 2). Método de Aproximación de Vogel (MAV) Este método requiere mayor esfuerzo que el MEN pero conduce a una solución inicial bastante mejor, pues tiene en cuenta la información de los costes de transporte a través de penalizaciones de fila y columna, que representan el posible coste de penalización que se obtendría por no situar unidades a transportar en una determinada posición. Definimos las penalizaciones de fila: PF= valor absoluto de la diferencia entre los dos costes menores de la fila i Y de columna: PC= valor absoluto de la diferencia entre los dos costes menores de la columna j y las situamos para las respectivas filas y columnas en las partes derecha e inferior de la tabla de transporte. El método, que parte de una matriz de transporte equilibrada, es el siguiente: Paso 1. Determinar las penalizaciones de fila PFi y de columna PCj de la matriz de transporte. Paso 2. Considerar la fila o columna con mayor penalización y situar el mayor número posible de unidades en la posición con mínimo coste cij de la fila o columna anteriormente seleccionada (a igualdad de penalización, elegir una fila o columna arbitrariamente). Paso 3. Disminuir la disponibilidad de la fila i y la demanda de la columna j 5/13 Capítulo 8. Problema de Transporte y asignación en la cantidad asignada a la posición (i, j) y suprimir la fila y/o columna cuya disponibilidad o demanda, respectivamente, haya pasado a valer cero. Paso 4. Si todas las unidades están asignadas, parar. En otro caso, volver al paso 1. Soluciones degeneradas (ε posiciones) Hemos apuntado que una solución óptima puede ser degenerada, sin embargo para comprobar sí la solución actual es o no óptima y en el segundo caso mejorarla, es necesario que sea no degenerada. Existen varios métodos para tratar con soluciones degeneradas. Desarrollaremos aquí el conocido como de ε posiciones, que consiste en asignar convenientemente el valor ε (que se supone una cantidad positiva próxima a cero) a posiciones no localizadas hasta alcanzar m + n — 1 posiciones localizadas. Por ejemplo, en un problema de transporte en el que se ha obtenido una solución con 9 posiciones localizadas y tiene m=6 orígenes y n= 8 destinos, para que la solución anterior sea no degenerada, puesto que 6 + 8 — 1 = 13, habrá que añadir 13 — 9 = 4 ε-posiciones. Estas ε-posiciones se tienen en cuenta durante todo el proceso de solución de la fase II como si fueran posiciones básicas y únicamente al terminar el proceso de solución, al alcanzar la optimalidad, se hacen los ε igual a cero. Para designar las ε-posiciones es necesario el concepto de ciclo en una tabla de transporte que construimos con el siguiente algoritmo: Paso 1. Fijar una posición vacia y asignarle τ +. Paso 2. Un ciclo se construye considerando una sucesión de segmentos alternativamente verticales y horizontales con orígenes y extremos en posiciones básicas y que comienza y termina en la posición vacía inicialmente elegida. Paso 3. A las posiciones del ciclo construido se les asigna alternativamente τ+ τ -, comenzando con el τ+ de la posición vacía. La asignación de ε-posiciones se hace a posiciones independientes definidas como aquellas posiciones vacías para las que no es posible construir un ciclo. En todo caso, la determinación de las posiciones independientes debe comenzar por aquellas (vacías) con coste más bajo, ya que la asignación de ε-posiciones a éstas puede conducir más rápidamente a la solución final. Una propiedad importante para llevar a cabo esta elección es que “siempre es posible construir un ciclo a partir de una solución básica factible”. Esto nos permite obtener siempre una solución no degenerada de una generada y así entrar en la fase II. 6/13 Capítulo 8. Problema de Transporte y asignación Optimalidad y mejora de una solución.(MODI) Un vez terminada la fase I que ha proporcionado una solución básica factible no degenerada queremos saber si es optima y si no es así construir una nueva solución con menor coste que la actual. El método que desarrollaremos se conoce como MODI o u-v y utiliza el dual del problema de transporte. Desarrollamos el algoritmo correspondiente a este método, y para hacerlo más fácil de aplicación, introducimos los números MODI, que se definen. Si =—ui (número MODI de la fila i) Tj= —vj (número MODI de la columna j) (se sitúan en las respectivas filas y columnas a la derecha y en la parte inferior de la tabla de transporte) y el valor indicador de cada variable xij: αij= Si+Tj+cij Los pasos del algoritmo MODI son: Paso 1. Dada una solución no degenerada (obtenida inicialmente en la fase 1) hacer arbitrariamente igual a O cualquier Si, o Tj, y para cada posición básica imponer que Si+Tj +cij =0 Paso 2. Para cada posición no básica, determinar su valor indicador. αij= Si+Tj+cij y situarlo en su respectiva posición (αij = O para las posiciones básicas). Paso 3. Si para toda posición (i, j) es αij no negativo, la actual solución es óptima. Si algún αij es negativo, ir al paso 4. Paso 4. Considerar la posición (i, j) con el valor indicador αij más negativo y redistribuir las unidades de la tabla construyendo un ciclo para esa posición (en caso de igualdad de valores αij elegir uno arbitrariamente). Paso 5. El número máximo de unidades a asignar a la posición vacía (i, j) viene dado por ρ= min (xij)con τPaso 6. Para obtener la nueva solución básica factible, restar la cantidad ρ a las variables del ciclo con designación τ-, sumarla a aquellas con designación τ+ y el resto de las variables permanecen igual. Volver al paso 1 y continuar el proceso hasta alcanzar la optimalidad. 7/13 Capítulo 8. Problema de Transporte y asignación 8.2 Problema de transbordo En algunas aplicaciones del problema de transporte los orígenes y destinos pueden servir como puntos de transbordo, de manera que las unidades de producto se pueden enviar a través de orígenes y destinos intermedios hasta su destino final. Este planteamiento, más general que el del problema de transporte, permite por tanto en la representación mediante una red que los arcos sean aristas y que los orígenes entre sí, y también los destinos, estén unidos por aristas. Veamos que este problema se puede plantear como un problema de transporte extendiendo algunos de los conceptos utilizados anteriormente. Dado un problema de transporte equilibrado con m orígenes y n destinos, la tabla de transbordo es una matriz cuadrada de orden m + n formada por cuatro submatrices: A, que es la matriz de orígenes-orígenes; B, la de orígenes-destinos, que es precisamente la matriz de transporte sumergida en el problema de transbordo; C es la destinos-orígenes; y D, la de destinos-destinos. En la fila inferior (demandas) y columna derecha (disponibilidades) aparece la cantidad M= ∑demandas(bj) =∑disponibilidades(ai) sola o sumada, según el caso, a los ai o bj. Tal cantidad es una cota superior del número de unidades 8/13 Capítulo 8. Problema de Transporte y asignación que pueden pasar a través de cada origen o destino, es decir, la máxima cantidad que se puede transbordar por cada uno. Como en el problema de transporte, los costes son datos del problema, excepto los situados en la diagonal principal, que son cero, ya que representan el envío de unidades de un vértice a sí mismo. Obviamente los métodos de solución del problema de transporte son aplicables al de transbordo. Indiquemos únicamente que la solución básica factible inicial se puede obtener, bien como se indicó en la fase I (con los métodos MEN o MAV), bien resolviendo previamente el problema de transporte sumergido (submatriz B), situando la solución obtenida en las correspondientes posiciones de la tabla de transbordo y completando ésta con la asignación de la cantidad M a las posiciones de la diagonal principal. Este segundo método generalmente proporciona una buena solución inicial. El mayor inconveniente del problema del transbordo es el tamaño de la tabla de transporte resultante. Por ejemplo, un problema con 60 orígenes y 200 destinos tendría una tabla de transporte con 12000 posiciones, mientras que planteado como transbordo tendría 67600 posiciones. 8.3. Extensiones y consideraciones prácticas 1.Los costes de un problema pueden ser beneficios. En ese caso, ya que el algoritmo propuesto es para la forma de minimización, habría que adaptarlo a la de maximización transformando para ello la matriz. Esta transformación se puede llevar a cabo bien multiplicando todos los cij por — 1. 2. Otro aspecto interesante es la existencia de soluciones óptimas alternativas Si el indicador αij = O para alguna posición no básica en la tabla final, entonces existen soluciones óptimas alternativas que se pueden determinar relocalizando esa posición. 3. Finalmente, si hubiera aristas que no son factibles porque no esté permitido el transporte de unidades entre dos vértices (origen-destino, origen-origen, destino-origen, destino-destino) para evitar que aparezca la correspondiente posición con valor positivo en la solución final (lo que no siempre ocurre), se le asigna un coste grande (bajo la forma de minimización), en comparación con los restantes costes de la tabla. En todo caso, sí al final aparece localizada esa posición, debe darse su correcta interpretación física. 9/13 Capítulo 8. Problema de Transporte y asignación 8.4. El problema de asignación Otro tipo de modelo de distribución es el problema de asignación, que específicamente trata de asignar un número de orígenes (individuo, tareas, etc.) a un mismo número de destinos (tareas, máquinas, etc.) de manera que se optimice alguna medida de eficacia. Usualmente esta medida es coste o tiempo, de forma que los algoritmos que se consideran son de minimización. El problema de asignación forma una subclase del problema de transporte y por tanto también de los problemas de programación lineal. El nombre lo toma de la aplicación particular que inicialmente motivó el problema de asignar un conjunto de individuos a tareas o trabajos. De una manera formal, el problema se puede establecer como sigue: Dados m individuos que hay que asignar a m tareas, siendo cij el coste de asignar al individuo i la tarea j se trata de determinar una asignación con coste total mínimo. Introduciendo las variables de decisión: xij = 1 si el individuo i se asigna a la tarea j O en otro caso Notemos que cada variable de decisión está restringida a tomar el valor O ó 1, de manera que el primer conjunto de restricciones conlleva que cada individuo i se asigne a una única tarea, mientras que para el segundo conjunto de restricciones cada tarea j se asigne a un único individuo. Además, teniendo en cuenta los valores que pueden tomar las variables, vemos que el modelo se ha formulado como un problema de programación entera 0-1. Por otra parte, si tales restricciones se reemplazan por xij>=0 en tal caso el problema de asignación sería un problema de transporte con igual número de orígenes y destinos y donde cada disponibilidad y demanda es igual a la unidad. Como consecuencia, el problema de asignación tiene la misma propiedad que el de transporte (teorema 3), que dice: Si tenemos una solución básica factible inicial para el problema de asignación, el método del simplex converge a una solución básica factible (en este caso tal solución está obviamente formada por ceros y unos, ya que a tales valores están restringidas las variables de decisión Xij). 10/13 Capítulo 8. Problema de Transporte y asignación MÉTODOS DE SOLUCIÓN Son varios los métodos para resolver el problema de asignación. Entre ellos están el método del simplex, algoritmo de transporte, método Húngaro, ramificación y acotación (capítulo 9), método del simplex dual. Algoritmo de transporte. Como el problema de asignación es una subclase del problema de transporte, es posible aplicar el algoritmo de transporte para su resolución. Sin embargo, ya que el problema de asignación tiene siempre la solución degenerada se hace necesario introducir ε-posiciones, lo que hace poco eficiente al método. Notemos que cada solución en un problema de asignación con m filas y columnas tiene una única posición localizada por fila o columna (asignación independiente) y por tanto m asignaciones. Como para que el problema no sea degenerado tiene que tener 2m — 1 asignaciones, serán necesarias en la faseII del algoritmo de transporte m-1 ε-localizaciones que da un problema altamente degenerado. Así un problema con 200 filas (y columnas) necesitaría 199 ε-localizaciones, por lo que ya incluso para problemas de tamaño moderado resulta poco atractivo este enfoque. Método Húngaro El método Húngaro, propuesto por Kuhn en 1954, es más eficiente que el algoritmo de transporte para resolver el problema de asignación. Está inspirado en los algoritmos del camino mínimo y flujo máximo de la teoría de redes. El método de Kuhn, que no aparece en forma explícita hasta principios de los años setenta, se basa en el hecho de que la asignación óptima no queda afectada si se suma o resta una misma constante a una fila o columna de la matriz de asignación. El objetivo es entonces obtener el mayor número de ceros en la matriz de coste convenientemente transformada de forma que sea posible encontrar m ceros que correspondan a una solución factible. Supuesto entonces que todos los cij son no negativos, el método lleva por tanto a transformar el problema en uno "equivalente" con mínimo coste total cero, lo que será cierto si es posible obtener una asignación independiente de ceros. El algoritmo que hace esto es Paso 0. Poner el problema en la forma de minimización con todos los elementos (costes) cij>)0 Paso 1. Restar el mínimo elemento de cada fila de la matriz de asignación, a cada elemento de su fila. Paso 2. En la matriz obtenida en el paso 1, repetir la operación anterior, pero para las columnas. 11/13 Capítulo 8. Problema de Transporte y asignación Paso 3. Buscar la fila con el menor número de ceros, encuadrar uno de los ceros de la fila y tachar el resto de ceros que se encuentran en la misma fila o columna que el cero encuadrado. Proceder de forma análoga con las restantes filas, comenzando con aquella que contenga el menor número de ceros (no tachados), y así sucesivamente hasta que no sea posible encuadrar más ceros. Si todas las filas tienen un cero encuadrado, hemos obtenido una asignación independiente de ceros, y parar. En otro caso, ir al paso 4. Paso 4. Determinar el mínimo número de líneas (verticales y/u horizontales) que cubran todos los ceros de la matriz obtenida en el paso anterior. El procedimiento es como sigue: i) Se marcan (con x) todas las filas que no contienen un cero encuadrado. ii) Se marcan todas las columnas que tienen un cero tachado en filas marcadas. iii) Se marca toda fila que tenga un cero encuadrado en una columna marcada. iv) Se repiten ii) y iii) hasta que no haya más filas y columnas que marcar. v) Pasar líneas (√) a través de las filas no marcadas y columnas marcadas, obteniendo así el mínimo número de líneas que cubren lodos los ceros de la matriz. Paso 5. Para generar ceros adicionales, se selecciona el menor de los costes no cubiertos (que no estén en una fila ni en una columna marcada con √ ). Restarlo a todos los elementos no cubiertos y sumarios a los elementos cubiertos que estén en la intersección de dos líneas (elementos que están en una fila y una columna marcada con √). Paso 6- Volver al paso 3. El paso O es de inicialización. La validez de los pasos 1 y 2 se apoya en el hecho de que, si se resta una constante k a todos los elementos de una fila o columna, la asignación de mínimo coste es la misma. El paso 3 es una heurística para determinar si es posible una asignación independiente de ceros y por tanto óptima. En el paso 4 se considera otra heurística para obtener el número mínimo de líneas que cubren todos los ceros de la matriz de asignación obtenida. El paso 5 es equivalente a restar la misma constante a todos los costes no cubiertos de cada fila y sumársela a todos los costes cubiertos de cada columna, lo que lleva, como hemos justificado (pasos 1 y 2), a un problema equivalente. 12/13 Capítulo 8. Problema de Transporte y asignación El algoritmo se fundamenta en el teorema de Konig que establece que: "El numero de ceros independientes es igual al mínimo número de líneas necesarias para cubrir todos los ceros de la matriz". Con este proceso queda también asegurada la convergencia del método. ALGUNAS CONSIDERACIONES Algunas consideraciones de tipo practico son: 1. Si el problema es la forma de maximización es posible aplicar el método Húngaro, pero transformando la matriz. Esta transformación se puede llevar a cabo como se indicó multiplicando lodos los elementos de la matriz original por — 1 . 2. Si el problema no es equilibrado, es decir, tiene distinto número de filas que de columnas, se transforma en equilibrado de la misma forma que en el algoritmo de transporte, introduciendo filas o columnas ficticias hasta igualar su número. Los costes para estas nuevas posiciones generalmente se supondrán nulos, y por ejemplo, una asignación de un individuo a una tarea ficticia significaría que el individuo queda ocioso y, recíprocamente, una asignación de un individuo ficticio a una tarea significaría que la tarea queda sin asignar a un individuo y por tanto no se va a realizar. 3. Finalmente notemos que como en el problema de transporte, puede haber ciertas asignaciones no permitidas. En tal caso se les pondría unos costes muy grandes comparados con el resto de costes de la matriz. PROBLEMA DE EMPAREJAMIENTO Un caso particular de! problema de asignación es el problema de emparejamiento, cuya matriz de costes está formada únicamente por ceros y unos (matriz de emparejamiento). Sí un elemento cij = 1, significa que el individuo i puede hacer la tarea j y si cij = O, que el individuo i no puede realizar la tarea j. Es posible obtener una representación mediante un grafo en el que existe una arista que une dos vértices (el primero corresponde a un origen o individuo y el segundo a un destino o tarea), si el individuo es capaz de hacer la tarea, en cuyo caso aparece 1 en la correspondiente posición de la matriz de emparejamiento. Matemáticamente, la formulación del problema de emparejamiento es igual que la de asignación, salvo que ahora la función objetivo es de la forma de maximización. 13/13