1 UNIVERSIDAD NACIONAL EXPERIMENTAL “FRANCISCO DE MIRANDA” ÁREA DE TECNOLOGÍA DEPARTAMENTO DE GERENCIA INVESTIGACIÓN DE OPERACIONES PROFESOR: Dr. JUAN LUGO MARÍN Tema No. 6 Transporte y Asignación Introducción La programación lineal (PL) constituye el enfoque de más amplia aplicación en el mundo de los modelos cuantitativos. La aptitud para manejar cientos de restricciones, miles de variables de decisión y la increíble cantidad de iteraciones que esos números implican hacen que la PL sea un valioso instrumento para una gran variedad de problemas. En este tema nos concentraremos en algunas aplicaciones especiales de la programación lineal. Inicialmente trataremos el problema de transporte, en el cual el tomador de decisiones busca determinar como hacer llegar los productos de sus diversos almacenamientos a sus consumidores, con el objetivo de satisfacer la demanda a un costo mínimo. Este modelo es importante debido a sus exitosas aplicaciones y porque se puede resolver en forma rápida y eficiente mediante algoritmos especiales. Posteriormente nos dedicaremos al problema de asignación. Este modelo capacita a los administradores y gerentes para determinar la asignación óptima como por ejemplo de vendedores a municipios (o almacenes), trabajadores a máquinas, o editores a manuscritos, entre una amplia gama de aplicaciones. Este último modelo es un tipo especial de problema de transporte; el cual puede resolverse a través de un algoritomo especial llamado el método húngaro.
44
Embed
UNIVERSIDAD NACIONAL EXPERIMENTAL “FRANCISCO DE · PDF file1 universidad nacional experimental “francisco de miranda” Área de tecnologÍa departamento de gerencia....
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
1
UNIVERSIDAD NACIONAL EXPERIMENTAL “FRANCISCO DE MIRANDA” ÁREA DE TECNOLOGÍA DEPARTAMENTO DE GERENCIA INVESTIGACIÓN DE OPERACIONES PROFESOR: Dr. JUAN LUGO MARÍN
Tema No. 6
Transporte y Asignación
Introducción
La programación lineal (PL) constituye el enfoque de más amplia aplicación
en el mundo de los modelos cuantitativos. La aptitud para manejar cientos
de restricciones, miles de variables de decisión y la increíble cantidad de
iteraciones que esos números implican hacen que la PL sea un valioso
instrumento para una gran variedad de problemas.
En este tema nos concentraremos en algunas aplicaciones especiales de la
programación lineal. Inicialmente trataremos el problema de transporte, en
el cual el tomador de decisiones busca determinar como hacer llegar los
productos de sus diversos almacenamientos a sus consumidores, con el
objetivo de satisfacer la demanda a un costo mínimo. Este modelo es
importante debido a sus exitosas aplicaciones y porque se puede resolver
en forma rápida y eficiente mediante algoritmos especiales. Posteriormente
nos dedicaremos al problema de asignación. Este modelo capacita a los
administradores y gerentes para determinar la asignación óptima como por
ejemplo de vendedores a municipios (o almacenes), trabajadores a
máquinas, o editores a manuscritos, entre una amplia gama de
aplicaciones. Este último modelo es un tipo especial de problema de
transporte; el cual puede resolverse a través de un algoritomo especial
llamado el método húngaro.
2
El Problema de Transporte
La programación lineal es un campo tan amplio que se extiende a subclases
de problemas para los cuales existen métodos de solución especiales. Una
de estas subclases se conoce como problemas de transporte. El método
símplex de programación lineal, puede servir para resolver estos problemas,
sin embargo, se han desarrollado métodos más sencillos que aprovechan
ciertas características de los problemas. Entonces, el método del transporte
son sólo técnicas especiales para resolver ciertos tipos de problemas de
programación lineal que presentan características especiales.
El transporte desempeña un papel importante en la economía y en las
decisiones administrativas. Con frecuencia la disponibilidad de transporte
económico es crítica para la supervivencia de una empresa.
¿Qué significa problema de transporte? Supóngase que un fabricante
tiene tres plantas que producen el mismo producto. Estas plantas a su vez
mandan el producto a cuatro almacenes. Cada planta puede mandar
productos a todos los almacenes, pero el costo de transporte varía con las
diferentes combinaciones (orígenes a destinos). El problema es determinar
la cantidad de productos que cada planta debe mandar a cada almacén con
el fin de minimizar el costo total de transporte.
La manera más fácil de reconocer un problema de transporte es por
su naturaleza o estructura “de-hacia”: de un origen hacia un destino, de
una fuente hacia un usuario, del presente hacia el futuro, de aquí hacia allá.
Al enfrentar este tipo de problemas, la intuición dice que debe haber una
manera de obtener una solución. Se conocen las fuentes y los destinos, las
capacidades y demandas y los costos de cada trayectoria. Debe haber una
combinación óptima que minimice el costo (o maximice la ganancia). La
dificultad estriba en el gran número de combinaciones posibles.
Puede formularse un problema de transporte como un problema de
programación lineal y aplicarse el método símplex, de la misma manera que
lo hemos hechos en los capítulos anteriores. Si se hiciera, se encontraría
que los problemas de transporte tienen características matemáticas únicas.
Para visualizar esto, considérese el siguiente ejemplo:
3
Ejemplo prototipo.
Chícharos enlatados es uno de los productos más importantes de la
compañía P & T. Los chícharos se preparan en tres enlatadoras (cercanas a
Bellingham, Washington; a Eugene, Oregón y a Albert Lea, Minnesota) y
después se mandan por camión a cuatro almacenes de distribución (en
Sacramento, California; Salt Lake City, Utah; Rapid City, South Dakota y
Alburquerque, New Mexico) en el oeste de Estados Unidos. Puesto que los
costos de embarque constituyen un gasto importante, la gerencia ha
iniciado un estudio para reducirlos lo más posible que se pueda. Se ha
hecho una estimación de la producción de cada enlatadora para la próxima
temporada y se ha asignado a cada almacén una cierta cantidad de la
producción total de chícharos. En la siguiente tabla se proporciona esta
información (en unidades de carga de camión), junto con el costo de
transporte por camión cargado para cada combinación de enlatadora-
almacén. Como se ve hay un total de 300 cargas de camión que se deben
transportar. El problema es determinar el plan de asignación de estos
embarques a las distintas combinaciones de enlatadora-almacén que
minimice el costo total de transporte.
Costo de embarque ($) por carga
Almacén 1 2 3 4
Producción
1 464 513 654 867 75 Enlatadora
2 352 416 690 791 125
3 995 682 388 685 100 Asignación 80 65 70 85
Este, de hecho, es un problema de programación lineal del tipo de los
problemas de transporte. Para formularlo, sea Z el costo total de transporte
y sea xij (i = 1, 2, 3; j = 1, 2, 3, 4) el número de cargas de camión que se
4
mandan de la enlatadora i al almacén j. Entonces el objetivo es seleccionar
los valores de estas 12 variables de decisión (las xij) para:
Ejemplo prototipo Problema general Cargas de chícharos enlatados Unidades de un bien Tres enlatadoras m orígenes Cuatro almacenes n destinos Producción de la enlatadora i si recursos en el origen i Asignación al almacén j Demanda dj en el destino j Costo de embarque por carga
desde la enlatadora i al almacén j
Costo cij por unidad distribuida desde el origen i al destino j
Así, por lo general, el origen i (i = 1, 2, ..., m) dispone de si unidades
para distribuir a los destinos y el destino j (j = 1, 2, ..., n) tiene una
demanda de dj unidades que recibe desde los orígenes. Una suposición
básica es que el costo de distribución de unidades desde el origen i al
destino j es directamente proporcional al número distribuido, donde cij
denota el costo por unidad distribuida. Igual que para el ejemplo prototipo,
estos datos de entrada se pueden resumir en forma muy conveniente en la
tabla de costos y requerimientos que se muestra enseguida:
Costo por unidad distribuida
Destino 1 2 . . . n Recursos
1 c11 c12 . . . c1n s1
Origen 2 c21 c22 . . . c2n s2
. . . . . . . . .
.
.
. .
. . . . . m cm1 cm2 . . . cmn sm
Demanda d1 d2 . . . dn
Sea Z el costo total de distribución y xij (i = 1, 2, ..., m; j = 1, 2,...,
n) el número de unidades que se distribuyen del origen i al destino j, la
formulación de programación lineal para este problema es:
7
Minimizar Z = c xij ij
j
n
i
m
==∑∑
11 sujeta a
x s
x d
ij i
j
n
ij j
i
m
=
=
=
=
∑
∑
para i = 1, 2, ... , m
para j = 1, 2, ... , n
1
1 y
xij ≥ 0, para toda i y j
Note que la tabla que resulta de los coeficientes de las restricciones
tiene la estructura especial que se muestra en la siguiente tabla:
Coeficiente de
x11 x12 . . .
x1n x21 x22 . . .
x2n . . .
xm1 xm2 . . .
xmn
1 1 . .
. 1 Restricciones
1 1 . . .
1 de origen
.
.
.
A =
1 1 . . .
1
1 1 1 Restricciones 1 1 . .
. 1 de
destino . . .
.
.
.
.
.
.
1 1 1
8
Cualquier problema de programación lineal que se ajuste a esta
formulación especial es del tipo de problemas de transporte, sin importar su
contexto físico. De hecho, se han realizado numerosas aplicaciones no
relacionadas con el transporte que se ajustan a esta estructura especial.
Ésta es una de las razones por las que el problema de transporte se suele
considerar como uno de los tipos especiales de problemas de programación
lineal más importantes.
Una condición necesaria y suficiente para que un problema de
transporte tenga soluciones factibles es que:
s di j
j
n
i
m
===∑∑
11 Esta propiedad se puede verificar observando que las restricciones requieren que:
s d xi j ij
j
n
i
m
j
n
i
m
y sean iguales a ====∑∑∑∑
1111
Esta condición de que los recursos totales deben ser iguales a la demanda
total en realidad exige que el sistema esté balanceado. Si el problema tiene
algún significado físico y esta condición no se cumple, casi siempre significa
que, o bien si, o bien dj de hecho representan una cota y no un
requerimiento exacto. Si este es el caso, se puede introducir un “origen” o
“destino” imaginario (llamado origen ficticio o destino ficticio) para
captar la holgura, con el fin de convertir las desigualdades en igualdades y
satisfacer la condición de factibilidad.
El problema de transporte es sólo un tipo especial de problemas de
programación lineal y puede resolverse aplicando el método símplex tal y
como lo hemos estudiado. Sin embargo, veremos que si se aprovecha la
estructura especial que se muestra en la tabla anterior, se puede lograr un
importante ahorro en los cálculos. Se hará referencia a este procedimiento
simplificado como el método símplex de transporte.
9
Para hacer hincapié en la simplificación lograda por el método
símplex de transporte, se revisará primero la forma en que el método
símplex general (no simplificado) establecería el problema de transporte en
forma tabular. Después de construir la tabla de los coeficientes de
restricción (vea la tabla anterior), de convertir la función objetivo a la forma
de maximización y de usar el método de la M para introducir las variables
artificiales z1, z2, ..., zm+n en las m+n ecuaciones de restricción respectivas,
se ve que las columnas de la tabla símplex tendrían la forma que se
muestra en la siguiente tabla:
Variable Ec. Coeficiente de
Lado
básica núm. Z . . . xij . . . zi . . . zm+j . . . derecho Z (0) −1 cij M M 0 (1) . . . zi (i) 0 1 1 si . . .
zm+j (m+j) 0 1 1 dj . . . (m+n)
En esta tabla, todos los elementos que no se muestran en estas
columnas son ceros. El único ajuste que queda por hacer antes de la
primera iteración es eliminar algebraicamente los coeficientes distintos de
cero de las variables básicas iniciales (artificiales) en el renglón de Z
(renglón 0).
Después de cualquier iteración subsecuente, el renglón 0 tendría la
forma que se muestra en la siguiente tabla:
10
Variable Ec. Coeficiente de
Lado
básica núm Z . . . xij . . . zi . . . zm+j . . . derecho Z
(0)
−1
cij−ui−vj
M−ui
M−vj
− −
= =∑ ∑s u d vi i
i
m
j j
j
n
1 1
A causa del patrón de ceros y unos que siguen los coeficientes en la
tabla anterior, ui y vj tienen la siguiente interpretación:
ui = múltiplo del renglón i original que se ha restado (directa o
indirectamente) del renglón 0 original durante todas las iteraciones
del método símplex que llevaron a la tabla actual.
vj = múltiplo del renglón m+j original que se ha restado (directa o
indirectamente) del renglón 0 original durante todas las iteraciones
del método símplex que llevaron a la tabla actual.
El renglón 0 actual se puede obtener sin usar ningún otro renglón con
sólo calcular los valores de ui y vj directamente. Como cada variable básica
debe tener coeficiente cero en el renglón 0, estos valores se pueden
obtener resolviendo el sistema de ecuaciones:
cij−ui−vj = 0 para cada i y j tal que xij es variable básica,
lo cual se puede hacer de manera directa.
Además de los datos de entrada (los valores de cij, si y dj), la única
información que necesita el método símplex de transporte es la solución
básica factible actual, los valores actuales de ui y vj y los valores resultantes
de cij−ui−vj para las variables no básicas xij. Cuando se resuelve un problema
a mano es conveniente registrar esta información en una tabla símplex
de transporte, como la que se muestra enseguida:
11
En los casos en que la sumatoria de todo lo que se produce en todos los
orígenes es mayor que la sumatoria de todo lo que se demanda en todos los
destino o viceversa, entonces se dice que el problema no está balanceado.
En estos casos lo primero que se debe hacer antes de intentar resolver el
problema es balancearlo.
Para el caso de SOBREPRODUCCIÓN ( si
i
m
=∑
1 >>>> dj
j
n
=∑
1 )
Si el caso es que se dispone de mayor producción de la que se
demanda, entonces para balancear el problema se agrega un destino
imaginario o artificial (llamado también destino ficticio) el cual tendrá como
demanda dicha sobreproducción. En cuanto a los costos asociados a este
nuevo destino los estableceremos a cero (¿por qué?). El siguiente dibujo
muestra lo que se debe hacer:
12
donde
dn+1 = s di j
i
m
j
n
= =∑ ∑−
1 1 y
ci,n+1 = 0, para i = 1, 2, ..., m
Para el caso de SOBREDEMANDA ( dj
j
n
=∑
1 >>>> si
j
n
=∑
1 )
Si el caso es que se tiene mayor demanda de lo que se produce,
entonces para balancear el problema se agrega un origen imaginario o
artificial (llamado también origen ficticio) el cual tendrá como recursos
(producirá) dicha sobredemanda. En cuanto a los costos asociados a este
nuevo origen los estableceremos a cero (¿por qué?). El siguiente dibujo
muestra lo que se debe hacer:
13
donde
sm+1 = d sj i
j
n
i
m
= =∑ ∑−
1 1 y
cm+1j = 0 para j = 1, 2, ..., n
Como todas las restricciones funcionales en el problema de transporte
son igualdades, el método símplex obtendría una solución inicial básica
factible introduciendo variables artificiales y usándolas como variables
básicas iniciales. La solución básica que resulta de hecho sólo es factible
para la versión aumentada del problema, por lo que se necesita un buen
número de iteraciones para hacer que el valor de estas variables artificiales
sea cero y se alcancen las soluciones básicas factibles reales. El método
símplex de transporte pasa por alto todo esto, pues usa un procedimiento
más sencillo para construir directamente una solución básica factible real en
la tabla de transporte.
Antes de describir este procedimiento, es necesario establecer que el
número de variables básicas en cualquier solución básica de un
problema de transporte es una menos de lo que se espera.
Normalmente en los problemas de programación lineal, se tiene una
14
variable básica por cada restricción funcional. En los problemas de
transporte con m recursos y n destinos el número de restricciones
funcionales es m+n. Sin embargo,
el número de variables básicas = m + n − 1.
Esto se debe a que se manejan restricciones de igualdad y este
conjunto de m + n ecuaciones tiene una ecuación adicional o (redundante)
que se puede eliminar. La razón es que se sabe que la cantidad total que
se manda desde todos los orígenes debe ser igual que la cantidad total que
se recibe en todos los destinos. Por lo tanto, cualquier solución básica
factible en una tabla de transporte debe aparecer con exactamente m + n −
1 asignaciones no negativas, en donde la suma de las asignaciones en cada
renglón o columna es igual a su demanda o sus recursos
El Algoritmo de Transporte
Como ya se mencionó, cualquier problema de programación lineal,
incluyendo los problemas de transporte, pueden resolverse aplicando el
algoritmo simplex. No obstante debido a la especial estructura del problema
de transporte, podemos usar otro algoritmo que se ha diseñado para
aprovechar las características únicas de esta clase de problema.
En particular, analizaremos tres algoritmos específicos: El Método de la
Esquina Noroeste, El método de aproximación de vogel y El método de los
multiplicadores. El Método de la Esquina Noroeste y El método de
aproximación de vogel son validos únicamente para encontrar una solución
inicial factible, mientras que el método de los multiplicadores es una
alternativa para obtener una solución óptima.
Los problemas de transporte se resuelven en dos etapas o fases:
Fase I: Determinación de un solución de inicio factible (El Método de la
Esquina Noroeste y El método de aproximación de vogel).
Fase II: Determinación de la Solución Óptima (El método de los
multiplicadores).
15
Como la presentación anterior sugiere, el primer paso o fase de la solución
del problema de transporte consiste en encontrar una solución inicial
factible, una vez que se ha obtenido una solución inicial factible, la misma
es empleado como insumo para proceder a la obtención de la solución
óptima del problema considerado.
Métodos para encontrar soluciones factibles.
a. Método de la esquina noroeste.
Este es el método más sencillo para la determinación de una solución de
inicio factible. El método de la esquina noroeste comienza con la asignación
de la máxima cantidad admisible através de la oferta y la demanda de la
variable x11 (la de la esquina noroeste de la tabla). Después se tacha la
columna (renglón) satisfecha, lo que indica que las variables restantes de la
columna (renglón) tachada son iguales a cero. Si se satisfacen una columna
y un renglón al mismo tiempo, sólo una (una u otro) puede ser tachado.
(Esta condición garantiza la ubicación automática de variables básicas cero,
si las hay). Después de ajustar las cantidades de oferta y demanda de todos
los renglones y columnas no tachados, la cantidad factible máxima se
asigna al primer elemento no tachado de la nueva columna (renglón). El
proceso se completa cuando se deja sin tachar exactamente un renglón o
una columna. Detallando el método en pasos específicos tendríamos:
1. Comience asignando a la variable X11 (es decir la que
corresponde a la Esquina Noroeste de la tabla), la máxima
cantidad posible, es decir tantas unidades como pueda (esto es
Mínimo entre a1 y b1).
2. Reduzca la actual oferta disponible del origen y la actual
demanda insatisfecha del destino en la cantidad asignada.
3. Identifique el primer origen con oferta disponible. Éste es o
bien el origen actual o el que está directamente abajo.
16
4. Identifique el primer destino con demanda insatisfecha. Éste
es o bien el destino actual o el que está directamente a la
derecha de él.
5. Asigne, como en el primer paso, tantos artículos como sea
posible con la combinación de origen – destino identificados en
los pasos 3 y 4.
6. Regrese al paso 2.
Para hacer más concreta esta descripción, se ilustrará el
procedimiento general, utilizando la regla de la esquina noroeste en el
siguiente ejemplo:
Dest. 1 Dest. 2 Dest. 3 Dest. 4 Recursos Origen 1
5
Origen 2
2
Origen 3
3
Demanda
3
4
2
1
10 10
Lo primero que debemos hacer al resolver cualquier problema de
transporte es comprobar que esté balanceado, si no lo estuviera,
agregamos un origen o un destino artificial según sea el caso para
conseguir que el problema quede balanceado y podamos comenzar a
resolverlo. En nuestro ejemplo, la sumatoria de los recursos de los tres
orígenes es de 10 unidades que es igual a la sumatoria de las demandas de
los destinos, por lo que nuestro problema está balanceado y podemos
iniciar con la resolución.
Comenzamos asignando en la esquina noroeste de la tabla, es decir,
en la celda correspondiente a la variable básica x11 (paso 1), podemos
observar que en la primera columna se demandan 3 unidades del bien y en
el primer renglón disponemos de 5 unidades, entonces enviamos las 3
unidades demandadas desde el origen 1 hacia el destino 1 (ya que hay los
recursos suficiente para satisfacer toda la demanda) y decrementamos a 2
los recursos restantes en ese origen (paso 2). Con esto cubrimos toda la
4 7 3 6
2 3 2 4
3 4 8 5
17
demanda del primer destino y lo cancelamos para las próximas asignaciones
(paso3):
Recursos
3 5 2
2
3
Demanda
3 0
4
2
1
La siguiente asignación será en la celda correspondiente a la variable
x12 (paso 1) ya que todavía le quedan recursos al origen 1 (además es la
esquina noroeste de la tabla restante después de haber eliminado la
primera columna). Notemos que en el segundo destino se demandan 4
unidades del bien y ahora solamente se disponen de 2 unidades en el origen
1, entonces se envían las 2 unidades del origen 1 al destino 2 para
satisfacer 2 de las 4 unidades demandadas en este destino quedando 2 por
satisfacer (paso 2) y cancelamos el origen 1 ya que no tiene más unidades
del bien para enviar a otro destino
(paso 3):
Recursos
3 2
5 2 0
2
3
Demanda
3 0
4 2
2
1
La siguiente asignación será en la celda correspondiente a la variable
x22 (paso 1) ya que no le quedan unidades del bien al origen 1 (notemos
también que esa celda es la que se encuentra en la esquina noroeste de la
tabla restante después de haber eliminado el primer renglón y la primera
columna y no olvidemos que estamos aplicando la regla de la esquina
4 7 3 6
2 3 2 4
3 4 8 5
4 7 3 6
2 3 2 4
3 4 8 5
18
noroeste). Ya que solamente faltan 2 unidades para satisfacer por completo
la demanda del segundo destino y se disponen exactamente de 2 unidades
en el segundo origen, entonces enviamos 2 unidades del bien del origen 2 al
destino 2 (paso 2) y cancelamos el segundo renglón ya que no le quedan
más unidades para enviar a otro destino. Dejamos pendiente la eliminación
de la segunda columna ya que nos servirá más adelante para hacer la
asignación de una variable básica degenerada, es decir, una asignación con
cero unidades (paso 3):
Recursos
3 2
5 2 0
2
2 0
3
Demanda
3 0
4 2 0
2
1
La siguiente asignación será en la celda correspondiente a la variable x32
(paso1) ya que no le quedan más unidades al origen 2. Notemos que “se
demandan cero unidades del bien en el segundo destino”, en este momento
es cuando hacemos una asignación de cero unidades convirtiendo así a la
variable x32 en una variable básica degenerada (paso 2) y ahora sí podemos
cancelar la segunda columna para ya no considerarla más en las siguientes
asignaciones (paso 3). Notemos que esta demanda de cero unidades es
satisfecha sin ningún problema por el origen 3 ya que éste dispone todavía
de 3 unidades del bien:
4 7 3 6
2 3 2 4
3 4 8 5
19
Recursos
3 2
5 2 0
2
2 0
0
3
Demanda
3 0
4 2 0
2
1
Como solamente queda un renglón dentro de las posibilidades (el
renglón 3 no ha sido cancelado), entonces aplicando el paso 4 del
procedimiento general para construir una solución inicial básica factible, la
siguiente asignación será en la celda que corresponde a la variable x33 (paso
1). Ya que la demanda del tercer destino (2 unidades) puede ser satisfecha
muy bien por el tercer origen, entonces enviamos 2 unidades del bien del
origen 3 al destino 3 quedando solamente 1 unidad en el tercer origen
(paso 2) para enviarlo al cuarto destino y con eso cubrir su demanda de una
unidad, cancelando de esta manera tanto el destino 3 como el destino 4 y el
tercer renglón ya que la demanda de todos los destinos ya ha sido
satisfecha y no quedan más unidades del bien en ningún origen:
Recursos
3
2
5 2 0
2
2 0
0
2
1
3 1 0
Demanda
3 0
4 2 0
2 0
1 0
Costo = 52
La solución inicial básica factible es x11=3, x12=2, x22=2, x32=0
(variable básica degenerada), x33=2 y x34=1 y el costo total de transporte
asociado a esta primera “Política de Transporte” factible es de: