IO-Modelo de Transporte y Asignacion
IO-Modelo de Transporte y Asignacion
IO-Modelo de Transporte y Asignacion
El problema de transporte y el
problema de asignacion
En este tema se presentan algoritmos para resolver dos problemas lineales parti-
culares: el problema de transporte y el problema de asignacion.
167
168 Tema 6. El problema de transporte y el problema de asignacion
m X
X n
min z = cij xij
i=1 j=1
sujeto a
n
X
xij ai , i = 1, . . . , m
j=1
Xm
xij bj , j = 1, . . . , n
i=1
xij 0, i = 1, . . . , m, j = 1, . . . , n
Las primeras m restricciones estan asociadas a las ofertas de los orgenes, que
no se deben sobrepasar. Las n siguientes restricciones aseguran que se deben
satisfacer las demandas de los destinos. Las variables no pueden tomar valores
negativos, ya que representan cantidades de producto que se transportan.
m X
X n
min z = cij xij
i=1 j=1
sujeto a
n
X
xij = ai , i = 1, . . . , m
j=1
Xm
xij = bj , j = 1, . . . , n
i=1
xij 0, i = 1, . . . , m, j = 1, . . . , n
OpenCourseWare, UPV/EHU
6.1. El problema de transporte 169
P1 1500
8
2000 A1 6
10
P2 2000
10 4
2500 A2
9
P3 1000
sujeto a
x11
x12
x13
min z = (8, 6, 10, 10, 4, 9)
x21
x22
x23
sujeto a
x11
1 1 1 0 0 0 2000
x12
0 0 0 1 1 1 2500
x13
=
1 0 0 1 0 0 1500
x21
0 1 0 0 1 0 2000
x22
0 0 1 0 0 1 1000
x23
xij 0, i = 1, 2, j = 1, 2, 3
En este ejemplo hay 2 orgenes, m = 2, y 3 destinos, n = 3. La matriz A
tiene 2 + 3 filas y 2 3 columnas. Se puede comprobar que el rango de la matriz
es 4.
Por otra parte, todos los vectores columna tienen solamente 2 componentes
iguales a 1 y las demas son 0. Si denotamos los vectores columna de la matriz A
con dos subndices, es decir, a11 , a12 , a13 , a21 , a22 , a23 , podemos observar en que
posiciones aparece un 1 y en que posiciones aparece un 0. Por ejemplo, el vector
a11 tiene un 1 en la primera posicion y otro 1 en la posicion m + 1; el vector
a21 tiene un 1 en las posiciones 2 y en la m + 1; el vector a23 tiene un 1 en las
posiciones 2 y m + 3. En general, podemos decir que un vector aij de la matriz
A tiene un 1 en las posiciones i y m + j. 2
En general, la matriz A y su estructura dependen del numero de origenes y
destinos. Cualquier problema de transporte de m orgenes y n destinos tiene la
misma matriz A. Esta matriz tiene m + n filas y m n columnas. El rango de
OpenCourseWare, UPV/EHU
6.2. Forma matricial 171
D1 D2 Dn Oferta
Demanda b1 b2 bn
Figura 6.1: Forma matricial para el problema del transporte o tabla del costes
P1 P2 P3 Oferta
A1 8 6 10 2000
A2 10 4 9 2500
1 2 3 4 Oferta
OpenCourseWare, UPV/EHU
6.3. Ejemplos practicos 173
1 2 3 4
A1 30 10 25 20
A2 15 25 30 10
A3 20 30 15 20
1 2 3 4 Oferta
A1 80 100 85 90 1500
A2 95 85 80 100 1500
A3 90 80 95 90 1500
Por otra parte, las demandas de los destinos verifican las restricciones
m
X
xij = bj , j = 1, . . . , n.
i=1
La demanda total es n X
m n
X X
xij = bj . (6.2)
j=1 i=1 j=1
Los miembros izquierdos de las formulas (6.1) y (6.2) son iguales. Por tanto,
dichas formulas se verifican si y solo si
m
X n
X
ai = bj .
i=1 j=1
2
En el teorema anterior se demuestra que para que un problema de transporte
tenga solucion la oferta total debe ser igual a la demanda total. Sin embargo,
esta condicion no se verifica en todos los problemas. En los casos en los que
dicha condicion no se verifica es necesario adecuar el problema y posteriormente
interpretar la solucion obtenida.
OpenCourseWare, UPV/EHU
6.4. Teoremas y definiciones 175
m
X n
X
Caso 1. La oferta total es menor que la demanda total: ai < bj .
i=1 j=1
En ese caso se crea un origen ficticio, Om+1 , con una oferta ficticia, am+1 ,
tal que
X n m
X
am+1 = bj ai ,
j=1 i=1
y costes de transporte
cm+1,j = 0, j = 1, . . . , n.
Dado que la oferta am+1 del origen ficticio Om+1 no es real, aquellos desti-
nos que en una solucion reciben unidades de producto desde el origen fic-
ticio no son satisfechos en la realidad. En algunos casos practicos pueden
asignarse valores distintos de cero a los costes cm+1,j , j = 1, . . . , n, para
expresar, por ejemplo, penalizacion por no satisfacer la demanda.
1 2 3 Oferta
1 2 4 3 10
2 6 1 4 20
Demanda 20 20 20
1 2 3 Oferta
1 2 4 3 10
2 6 1 4 20
3 0 0 0 30
Demanda 20 20 20
m
X n
X
Caso 2. La demanda total es menor que la oferta total: ai > bj .
i=1 j=1
En este caso se crea un destino ficticio Dn+1 con una demanda ficticia bn+1
tal que
m
X n
X
bn+1 = ai bj ,
i=1 j=1
y costes de transporte
ci,n+1 = 0, i = 1, . . . , m.
OpenCourseWare, UPV/EHU
6.4. Teoremas y definiciones 177
1 2 3 Oferta
1 3 2 1 50
2 6 4 4 50
Demanda 20 20 20
1 2 3 4 Oferta
1 3 2 1 0 50
2 6 4 4 0 50
Demanda 20 20 20 40
2
Teorema 6.4.2 Un problema de transporte equilibrado siempre tiene una solucion
factible.
Demostracion. Supongamos que tenemos un modelo en forma estandar para
un problema de transporte equilibrado. Del Teorema 6.4.1 conclumos que el
problema tiene solucion. Demostraremos ahora que existe una solucion factible.
Sea m n
X X
T = ai = bj .
i=1 j=1
Teorema 6.4.3 Todo problema de transporte equilibrado tiene una solucion factible
basica. Esta solucion tiene m + n 1 variables positivas como maximo.
El la siguiente seccion se dan dos metodos para obtener una solucion factible
basica para un problema de transporte: el Metodo de la esquina noroeste y el
Metodo de Vogel.
D1 D2 Dn Oferta
Demanda b1 b2 bn
OpenCourseWare, UPV/EHU
6.5. Solucion factible basica inicial 179
Si queda solo una fila o solo una columna, se asignan todas las unidades
que estan sin asignar. Parar.
En otro caso, ir al Paso 1.
P1 P2 P3 Oferta
A1 8 6 10 2000
A2 10 4 9 2500
P1 P2 P3 Oferta
A1 * 2000
A2 2500
P1 P2 P3 Oferta
A1 2000
1500 500
A2 2500
Paso 3. Queda mas de una fila y de una columna sin sombrear en la tabla.
Ir al Paso 1.
Segunda iteracion.
Procedemos como en la iteracion anterior eligiendo la esquina noroeste de la
tabla, fila 1 y columna 2. Asignamos
OpenCourseWare, UPV/EHU
6.5. Solucion factible basica inicial 181
P1 P2 P3 Oferta
A1 2000
1500 500
500
A2 2500
2000
Demanda 1500 1500 1000
Ahora solo queda un origen; asignamos todas las unidades que estan sin asig-
nar: x22 = 1500 y x23 = 1000.
P1 P2 P3 Oferta
Coste de transporte:
z = (8 1500) + (6 500) + (4 1500) + (9 1000) = 30000.
2
El metodo de la esquina noroeste es un metodo sencillo para el calculo de
una solucion factible basica inicial para el problema de transporte. Este metodo
no toma en cuenta la tabla de costes para calcular una solucion. Una mejora del
metodo consiste en tomar en cuenta los costes al elegir las posiciones para asignar
los flujos.
Paso 1. Calcular las diferencias por fila y por columna en la tabla de costes.
Seleccionar la fila o columna de mayor diferencia y en ella la casilla (i, j)
de mnimo coste cij .
xij = min{ai , bj }.
Si queda solo una fila o solo una columna, se asignan todas las unidades
que estan sin asignar. Parar.
En otro caso, ir al Paso 1.
OpenCourseWare, UPV/EHU
6.5. Solucion factible basica inicial 183
A2 10 4 9 2500 5 A2 * 2500
Segunda iteracion.
Se procede como en la iteracion anterior. Calculamos las diferencias por filas
y por columnas. Elegimos la mayor diferencia; en este caso hay empate en la
primera fila y en la primera columna. Elegimos cualquiera de ellas, por ejemplo
la fila 1 y en ella el mnimo coste, c11 = 8. Asignamos el maximo flujo
Solo queda una columna y, por tanto, hay que asignar todas las cantidades que
todava no se han asignado y se tiene una solucion inicial para el problema.
Tabla de costes Tabla de Flujos
P1 P2 P3 Ofer. P1 P2 P3 Ofer.
A1 8 6 10 2000 A1 1500 500 2000
Solucion:
x11 = 1500, x12 = 0, x13 = 500, x21 = 0, x22 = 2000, x23 = 500.
Coste de transporte:
Esta solucion es mejor que la obtenida por el metodo de la esquina noroeste porque
tiene un coste menor. 2
OpenCourseWare, UPV/EHU
6.6. Mejora de una solucion factible basica 185
sujeto a
n
X
xij = ai , i = 1, . . . , m
j=1
m
X
xij = bj , j = 1, . . . , n
i=1
xij 0, i = 1, . . . , m, j = 1, . . . , n
Si denotamos por u1 , . . . , um y v1 , . . . , vn las variables duales, el problema dual
asociado es
m
X n
X
max G = ai ui + bj vj
i=1 j=1
sujeto a
ui + vj cij , i = 1, . . . , m, j = 1, . . . , n
ui , vj : no restringidas, i = 1, . . . , m, j = 1, . . . , n
sujeto a
u1 +v1 8
u1 +v2 6
u1 +v3 10
u2 +v1 10
u2 +v2 4
u2 +v3 9
ui , vj : no restringidas
2
El algoritmo de transporte es una adaptacion del algoritmo simplex. En este
caso el objetivo es minimizar; obtenida una solucion factible basica inicial, calcu-
lamos otra para la que la funcion objetivo tome un valor mas pequeno. Hay que
realizar un cambio de base eligiendo una variable para entrar en la base y otra para
salir. Esta seleccion se realiza siguiendo los criterios del teorema de mejora.
cTB B1 = (u1 , . . . , um , v1 , . . . , vn ).
Entonces,
zij cij = (u1 , . . . , um, v1 , . . . , vn )aij cij .
El vector aij solo tiene componentes con valor 1 en las posiciones i y m + j. El
resto de componentes son cero. Por tanto,
OpenCourseWare, UPV/EHU
6.6. Mejora de una solucion factible basica 187
Para calcular los indicadores es necesario conocer los valores de las variables
duales. Estos valores se pueden calcular teniendo en cuenta que zij cij = 0 para
todas las variables xij que son basicas.
En la base hay m + n 1 variables; se tienen m + n 1 ecuaciones del tipo
ui + vj cij = 0 y m + n incognitas, u1 , . . . , um , v1 , . . . , vn . Este es un sistema
con un grado de libertad. Se puede puede calcular una solucion del sistema dando
un valor a una de las incognitas.
Una vez conocidos los valores de las variables duales se pueden calcular todos
los indicadores. Teniendo en cuenta que el objetivo es minimizar, se pueden dar
dos casos.
Si zij cij 0, i = 1, . . . , m, j = 1, . . . , n, entonces la solucion es optima.
Si existe zij cij > 0, la solucion puede ser mejorada. Para mejorarla, entra
en la base la variable asociada al mayor zij cij entre los positivos.
Las variables basicas son x11 , x12 , x22 y x23 . Para calcular las variables duales
u1 , u2 , v1 , v2 , v3 se tiene el siguiente sistema:
x11 es basica z11 c11 =0 u1 + v1 8 = 0
x12 es basica z12 c12 =0 u1 + v2 6 = 0
x22 es basica z22 c22 =0 u2 + v2 4 = 0
x23 es basica z23 c23 =0 u2 + v3 9 = 0
Tenemos un sistema de 4 ecuaciones y 5 incognitas, por lo que este sistema
tiene infinitas soluciones. Nos interesa cualquiera de las soluciones, y para ello,
damos un valor cualquiera a una incognita, y calcularemos el valor del resto. Por
ejemplo, si u1 = 0, se obtienen v1 = 8, v2 = 6, u2 = 2 y v3 = 11.
Calculamos los indicadores para todas las variables xij que no son basicas, en
este caso x13 y x21 .
El indicador z13 c13 = 1 > 0. Por tanto, se puede encontrar una solucion
mejor haciendo basica la variable x13 . 2
2. Se puede encontrar un unico ciclo formado por las variables que pertenecen
a la base y la variable que entra en la base.
Regla para encontrar el ciclo. Considerar la variable que entra en la base
como flujo positivo y eliminar filas y columnas que tengan un unico flujo
positivo. El proceso se realiza de la siguiente manera: empezar eliminando
filas, despues columnas, y repetir el proceso hasta que ya no se puedan
eliminar mas lneas. Las casillas que contienen flujo positivo y no han sido
eliminadas forman el ciclo unico.
OpenCourseWare, UPV/EHU
6.6. Mejora de una solucion factible basica 189
P1 P2 P3 Oferta
Los flujos que tienden a disminuir son x12 y x23 . Elegiremos el flujo mnimo entre
los que tienden a disminuir,
min{x12 = 500, x23 = 1000} = x12 .
Se modifican los flujos que forman el ciclo; los flujos que no forman parte del
ciclo no modifican su valor. As, se obtiene la siguiente solucion:
P1 P2 P3 Oferta
Solucion:
x11 = 1500, x12 = 0, x13 = 500, x21 = 0, x22 = 2000, x23 = 500.
Coste de transporte:
z = (8 1500) + (10 500) + (4 2000) + (9 500) = 29500.
v1 v2 vn
z11 c11 c11 z12 c12 c12 z1n c1n c1n
u1 x11 x12 x1n a1
z21 c21 c21 z22 c22 c22 z2n c2n c2n
u2 x21 x22 x2n a2
. .. .
.. . ..
Sale
v1 = 8 v2 = 6 v3 = 11
Entra
8 6 1 10
u1 = 0
1500 500 2000
4 10 4 9
OpenCourseWare, UPV/EHU
6.8. Algoritmo de transporte 191
Paso 4. Calcular los valores zij cij = ui + vj cij para los vectores no
basicos.
Paso 5. Detectar el ciclo que forman la variable que entra en la base y las
variables de la base actual. Calcular la nueva solucion. Ir al Paso 3.
1 2 3 4 Ofertas
1 5 9 - 4 28
2 6 10 3 - 32
3 4 2 5 7 60
Demandas 48 29 40 33
Oferta = 28 + 32 + 60 = 120.
Demanda = 48 + 29 + 40 + 33 = 150.
5 9 M 4
28
6 10 3 M
32
4 2 5 7
60
0 0 0 0
30
48 29 40 33
OpenCourseWare, UPV/EHU
6.9. Aplicacion del algoritmo de transporte 193
DFi
5 9 M 4
28 1
6 10 3 M
32 3
4 2 5 7
60 2
0 0 0 0
30 0 0
18 29 40 33
DCj 4 2 3 4
DFi
5 9 M 4
28 1
6 10 3 M
32 3
4 2 5 7
29 31 2
0 0 0 0
30 0
18 0 40 33
DCj 1 7 2 3
DFi
5 9 M 4
28 1
6 10 3 M
32 0 3
4 2 5 7
29 31 1
0 0 0 0
30 0
18 0 8 33
DCj 1 2 3
DFi
5 9 M 4
28 1
6 10 3 M
32 0
4 2 5 7
29 8 23 1
0 0 0 0
30 0
18 0 0 33
DCj 1 M 5 3
OpenCourseWare, UPV/EHU
6.9. Aplicacion del algoritmo de transporte 195
DFi
5 9 M 4
28 1
6 10 3 M
32 0
4 2 5 7
18 29 8 5 3
0 0 0 0
30 0
0 0 0 33
DCj 1 3
Ya no queda mas que una columna, asignamos todas las unidades que quedan
sin asignar y se obtiene la siguiente solucion factible basica:
5 9 M 4
28 28
6 10 3 M
32 32
4 2 5 7
18 29 8 5 60
0 0 0 0
30 30
48 29 40 33
v1 = 4 v2 = 2 v3 = 5 v4 = 7
5 9 M 4
u1 = 3 28 28
6 10 3 M
u2 = 2 32 32
4 2 5 7
u3 = 0 18 29 8 5 60
0 0 0 0
u4 = 4 30 30
48 29 40 33
Paso 4. Calcular los indicadores zij cij = ui + vj cij para las variables no
basicas. As, por ejemplo, z21 c21 = u2 + v1 c21 = 2 + 4 6 = 4. El resto
de indicadores se calcula de la misma forma.
v1 = 4 v2 = 2 v3 = 5 v4 = 7
4 5 10 9 2M M 4
u1 = 3 28 28
4 6 10 10 3 5M M
u2 = 2 32 32
4 2 5 7
u3 = 0 18 29 8 5 60
0 2 0 1 0 3 0 Entra
u4 = 4 30 30
48 29 40 33
Se observa en la tabla anterior que hay dos valores zij cij positivos en las
posiciones (4,3) y (4,4), y el mayor entre los positivos corresponde a la posicion
(4,4). Por lo tanto, esa sera la variable de entrada.
Paso 5. El ciclo esta formado por las variables x31 , x34 , x41 y x44 . En las ca-
sillas se senalan con flechas los flujos que aumentan y los que disminuyen. Entre
OpenCourseWare, UPV/EHU
6.9. Aplicacion del algoritmo de transporte 197
los que disminuyen el mas pequeno es 5, la variable x34 sale de la base. Calcular
la nueva tabla y volver al Paso 3.
v1 = 4 v2 = 2 v3 = 5 v4 = 7
4 5 10 9 2 M M 4 5 9 M 4
u1 = 3 28 28 28 28
4 6 10 10 3 5M M 6 10 3 M
u2 = 2 32 32 32 32
Sale
4 2 5 7 4 2 5 7
u3 = 0 18 29 8 5 60 23 29 8 60
Entra
0 2 0 1 0 3 0 0 0 0 0
u4 = 4 30 30 25 5 30
48 29 40 33 48 29 40 33
Segunda iteracion.
Se repite el proceso, calculando las variables duales, los indicadores y el ciclo.
Todos estos calculos se recogen en la tabla de la izquierda. Actualizamos los flujos
que forman el ciclo y tenemos la nueva solucion en la tabla de la derecha.
v1 = 4 v2 = 2 v3 = 5 v4 = 4
1 5 7 9 5 M M 4 5 9 M 4
u1 = 0 28 28 28 28
4 6 10 10 3 2M M 6 10 3 M
u2 = 2 32 32 32 32
4 2 5 3 7 Sale 4 2 5 7
u3 = 0 23 29 8 60 31 29 60
0 2 0 1 0 0 Entra 0 0 0 0
u4 = 4 25 5 30 17 8 5 30
48 29 40 33 48 29 40 33
Tercera iteracion.
Se vuelve a repetir el proceso y se llega a la solucion optima para el problema.
En esta tabla se observa que todos los valores zij cij son negativos, entonces la
solucion es optima unica.
v1 = 0 v2 = 2 v3 = 0 v4 = 0
1 5 7 9 4M M 4
u1 = 4 28 28
3 6 9 10 3 3M M
u2 = 3 32 32
4 2 1 5 3 7
u3 = 4 31 29 60
0 2 0 0 0
u4 = 0 17 8 5 30
48 29 40 33
Solucion optima: x14 = 28, x23 = 32, x31 = 31, x32 = 29, x41 = 17,
x43 = 8, x44 = 5. El destino 1 recibe 17 unidades ficticias, 8 unidades
el destino 3, y 5 el destino 4. Por tanto, sus demandas no han podido ser
satisfechas, ya que la oferta existente no es suficiente.
z = (428)+(332)+(431)+(229)+(017)+(08)+(05) = 390.
OpenCourseWare, UPV/EHU
6.9. Aplicacion del algoritmo de transporte 199
Cuando una solucion es degenerada hay que distinguir entre los flujos nulos
que corresponden a variables basicas y aquellos que corresponden a variables no
basicas.
1 2 3 Oferta
1 3 2 1 15
2 1 2 3 10
3 2 3 1 14
Demanda 10 6 12
3 2 1 0
4 11 15
1 2 3 0
10 10
2 3 1 0
6 8 14
10 6 12 11
3 2 1 0
4 11 15
1 2 3 0
10 0 10
2 3 1 0
6 8 14
10 6 12 11
v1 = 6 v2 = 4 v3 = 1 v4 = 4
6 4 3 4 4 8
u1 = 0 10 12 22
9 2 9 6 0 9
u2 = 5 10 8 18
3 6 4 11 4 7
u3 = 3 15 5 20
10 22 23 5
El indicador mas grande entre los positivos es z21 c21 = 9; x21 entra en la
base. El ciclo esta formado por x11 , x12 , x21 y x22 . Actualizamos los flujos y
vemos que x11 = 0 y x22 = 0. Sin embargo, las dos variables no pueden dejar la
base al mismo tiempo porque no tendramos un numero suficiente de variables en
la base. Mantenemos en la base cualquiera de las dos, por ejemplo x11 , y se tiene
la solucion degenerada de la tabla.
OpenCourseWare, UPV/EHU
6.9. Aplicacion del algoritmo de transporte 201
v1 = 6 v2 = 4 v3 = 1 v4 = 4
6 4 3 4 4 8 6 4 4 8
u1 = 0 10 12 22 0 22 22
Entra 9 2 9 6 0 9 2 10 6 9
u2 = 5 10 8 18 10 8 18
Sale 3 6 4 11 4 7 6 11 4 7
15 5 20 15 5 20
u3 = 3
10 22 23 5 10 22 23 5
Una vez que se ha obtenido la solucion optima se pueden encontrar nuevas solu-
ciones optimas si hay algun indicador de un vector no basico que vale cero.
Ejemplo.
Calcular las soluciones optimas para el problema de transporte
1 2 3 4 5 Oferta
1 4 1 2 6 9 100
2 6 4 3 5 7 120
3 5 2 6 4 8 120
Demanda 40 50 70 90 90
v1 = 4 v2 = 1 v3 = 2 v4 = 3 v5 = 6
4 1 2 3 6 3 9
u1 = 0 40 20 40 100
1 6 2 4 3 1 5 7
u2 = 1 30 90 120
0 5 2 3 6 4 1 8
u3 = 1 30 90 120
40 50 70 90 90
Se verifica zij cij 0 para todos los vectores que no estan en la base. Por lo
tanto, la solucion es optima. Ademas, dado que z31 c31 = 0, existen optimos
multiples. Para calcularlos, elegimos como variable de entrada x31 y como vari-
able de salida x32 . La nueva solucion optima es
4 1 2 6 9
10 50 40 100
6 4 3 5 7
30 90 120
5 2 6 4 8
30 90 120
40 50 70 90 90
Este proceso para calcular soluciones optimas multiples se puede repetir hasta que
una nueva solucion ya haya sido calculada anteriormente. 2
OpenCourseWare, UPV/EHU
6.10. El problema de asignacion 203
n X
X n
min z = cij xij
i=1 j=1
sujeto a
n
X
xij = 1, i = 1, . . . , n
j=1
Xn
xij = 1, j = 1, . . . , n
i=1
xij = 0, 1, i, j = 1, . . . , n
D1 D2 . . . Dn
O1 c11 c12 . . . c1n
O2 c21 c22 . . . c2n
.. .. .. . . .
. . . . ..
On cn1 cn2 . . . cnn
entonces esos mismos valores son tambien solucion optima para un problema
cuya funcion objetivo es
Xn Xn
z = cij xij ,
j=1 i=1
Demostracion.
n X
X n n X
X n
z = cij xij = (cij ui vj )xij =
j=1 i=1 j=1 i=1
n X
X n n X
X n n X
X n
= cij xij uixij vj xij =
j=1 i=1 j=1 i=1 j=1 i=1
n
X n
X n
X n
X
=z ui xij vj xij =
i=1 j=1 j=1 i=1
OpenCourseWare, UPV/EHU
6.10. El problema de asignacion 205
n
X n
X
=z ui vj = z k.
i=1 j=1
ui = min{cij }.
j
vj = min{cij }.
i
Paso 5. Elegir el mnimo numero de filas y/o columnas que cubren todos
los ceros. Este numero mnimo se consigue con el siguiente procedimiento.
Repetir (b) y (c) hasta que ya no se puedan marcar mas filas y/o columnas.
Las filas no marcadas y las columnas marcadas cubren todos los ceros.
Cubrir estas filas y columnas. Ir al Paso 6.
OpenCourseWare, UPV/EHU
6.10. El problema de asignacion 207
Paso 6. Crear nuevos ceros. Elegir el elemento mnimo que no esta cu-
bierto. Restarlo a todos los elementos de las filas no cubiertas y sumarlo a
los elementos de las columnas cubiertas. Ir al Paso 4.
Ejemplo. Supongamos que cuatro contratistas concursan para conseguir la
construccion de cuatro edificios, debiendo ser asignado cada edificio a un unico
contratista. El tiempo que cada contratista necesita para la construccion de cada
edificio viene dado en la siguiente tabla. Calcular la asignacion para que la suma
total del tiempo empledo en la construccion de los cuatro edificios sea mnima.
1 2 3 4
A 58 58 60 54
B 66 70 70 78
C 106 104 100 95
D 52 54 64 54
Paso 1. El problema es equilibrado.
Paso 2. Restamos en cada fila el mnimo, es decir, 54, 66, 95 y 52 para las
filas primera, segunda, tercera y cuarta, respectivamente.
1 2 3 4
A 4 4 6 0
B 0 4 4 12
C 11 9 5 0
D 0 2 12 2
1 2 3 4
A 4 2 2 0
B 0 2 0 12
C 11 7 1 0
D 0 0 8 2
La fila primera tiene solo un cero. Asignar (A, 4) y Eliminar (C, 4).
En la segunda fila hay 2 ceros para asignar, en la tercera no hay ceros,
en la cuarta hay 2 ceros.
1 2 3 4
A 4 2 2 0
B 0 2 0 12
C 11 7 1 60
D 0 0 8 2
Seguir en las columnas. En la primera hay dos ceros; en la segunda
hay un cero, asignar (D, 2) y eliminar (D, 1). En la columna 3 hay un
cero, asignar (B, 3) y eliminar (B, 1).
1 2 3 4
A 4 2 2 0
B 60 2 0 12
C 11 7 1 60
D 60 0 8 2
Paso 5. Elegir el mnimo numero de filas y/o columnas que cubren todos
los ceros.
OpenCourseWare, UPV/EHU
6.10. El problema de asignacion 209
1 2 3 4
A 4 2 2 0 X
B 0 2 0 12
C 11 7 1 0 X
D 0 0 8 2
X
Las lineas cubiertas son tres y contienen todos los ceros. Pero no hemos
conseguido asignar cuatro ceros.
1 2 3 4
A 3 1 1 0
B 0 2 0 13
C 10 6 0 0
D 0 0 8 3
Volver al Paso 4.
1 2 3 4
A 3 1 1 0
B 0 2 6 0 13
C 10 6 0 60
D 60 0 8 3
Solucion optima:
A 4: el contratista 4 construira el edificio A.
B 1 : el contratista 1 construira el edificio B.
C 3 : el contratista 3 construira el edificio C.
D 2 : el contratista 2 construira el edificio D.
Coste optimo: cA4 + cB1 + cC3 + cD2 = 54 + 66 + 100 + 54 = 274.
Sin embargo, con esta transformacion de la funcion objetivo, los costes de asig-
nacion se han hecho negativos. El Teorema 6.10.2 exige que todos los costes
sean mayores o iguales que cero. Una manera de conseguir que no haya valores
negativos en la tabla es restando el mnimo.
Oi
Oi cij cij ckl Oi cij
Restar
Ejemplo. Una empresa convoca unas pruebas de seleccion para cubrir las
vacantes que hay en 3 puestos de trabajo, A, B, y C. Realizadas las pruebas la
OpenCourseWare, UPV/EHU
6.10. El problema de asignacion 211
empresa asigna a las 5 personas que se han presentado una puntuacion entre 1 y
10. Las puntuaciones se recogen en la tabla. En la casilla (C, 4) no hay puntuacion
porque la persona 4 no esta capacitada para realizar el trabajo C.
1 2 3 4 5
A 2 4 10 3 6
B 7 7 5 6 4
C 8 6 7 9
1 2 3 4 5
A 2 4 10 3 6
B 7 7 5 6 4
C 8 6 7 9
1 2 3 4 5
A 8 6 0 7 4
B 3 3 5 4 6
C 2 4 3 1
1 2 3 4 5
A 8 6 0 7 4
B 3 3 5 4 6
C 2 4 3 M 1
1 2 3 4 5
A 8 6 0 7 4
B 3 3 5 4 6
C 2 4 3 M 1
D 0 0 0 0 0
E 0 0 0 0 0
Paso 2. Para obtener ceros por filas, se hacen operaciones en las filas 2 y 3
restando el mnimo en cada una.
1 2 3 4 5
A 8 6 0 7 4
B 0 0 2 1 3
C 1 3 2 M 0
D 0 0 0 0 0
E 0 0 0 0 0
OpenCourseWare, UPV/EHU
6.10. El problema de asignacion 213
Paso 3. Todas las columnas tienen ceros, por lo que la tabla no se modifica.
Paso 4. Asignacion de ceros.
1 2 3 4 5
A 8 6 0 7 4
B 0 60 2 1 3
C 1 3 2 M 0
D 60 0 60 60 60
E 60 60 60 0 60
El numero de ceros asignados es 5 y la solucion es optima.
Solucion: A 3, B 1, C 5, D 2 y E 4.
Los trabajadores 2 y 4 se quedan sin trabajo.
Coste: cA3 + cB1 + cC5 + cD2 + cE4 = 10 + 7 + 9 + 0 + 0 = 26.
Se puede observar que, al hacer la asignacion de ceros, en la segunda fila es
posible asignar la tarea B a la persona 1 (solucion anterior), o a la persona 2. Esa
segunda eleccion da la siguiente solucion optima:
1 2 3 4 5
A 8 6 0 7 4
B 60 0 2 1 3
C 1 3 2 M 0
D 0 60 60 60 60
E 60 60 60 0 60
Solucion: A 3, B 2, C 5, D 1, E 4.
En este caso, son las personas 1 y 4 las que se quedan sin trabajo.
Coste: cA3 + cB2 + cC5 + cD1 + cE4 = 10 + 7 + 9 + 0 + 0 = 26.
De la misma forma, en las filas correspondientes a las tareas D y E se pueden
hacer otras asignaciones que proporcionan nuevas asignaciones optimas. Pero es-
tas nuevas asignaciones no tienen influencia en la solucion final por corresponder
a trabajos ficticios introducidos para equilibrar el problema. 2
OpenCourseWare, UPV/EHU