C11 Problemas de Asignación
C11 Problemas de Asignación
C11 Problemas de Asignación
Problemas de asignación
Modelo
Método Húngaro
Caso de máximo
Texto. Tomo 2 – Cap. 8 – Epíg. 8.3
Introducción
El problema de asignación es un tipo especial de PPL, en el que los asignados son recursos destinados
a la realización de tareas. Por ejemplo, los asignados pueden ser operarios a quienes se tiene que dar
trabajo. Sin embargo, los asignados no tienen que ser personas. También, pueden ser máquinas,
vehículos, plantas o, incluso, intervalos de tiempo a los que se asignan tareas.
Desarrollo
Para que un problema se ajuste a la definición de problema de asignación (PA) se deben cumplir las
siguientes suposiciones:
1) El número de asignados es igual al número de tareas. (Este número se denota por n).
2) Cada asignado se asigna a exactamente una tarea.
3) Cada tarea debe realizarla exactamente un asignado.
4) Existe un costo cij asociado con el asignado i (i = 1,2,..., n) que realiza la tarea j (j = 1,2,...n).
5) El objetivo es determinar cómo deben hacerse las n asignaciones para minimizar los costos
totales.
Cualquier problema que satisfaga estas suposiciones puede resolverse mediante los algoritmos
diseñados especialmente para los problemas de asignación. Si se incumple la primera suposición, es
posible reformular el problema usando asignados o tareas ficticios; es decir, se añade una fila o
columna artificial r¸ entonces el costo correspondiente crj = 0, j = 1...n ó cir = 0, i = 1...n. Asumiremos
que si i no puede ser asignado a la tarea j entonces el cij =.
Modelo del problema de asignación.
El modelo matemático para el problema de asignación usa las variables binarias que representan
decisiones de sí o no: ¿Debe el asignado i realizar la tarea j?
{ ̅̅̅̅̅
correspondientes a las restricciones por i y por j. Observe que la submatriz de las restricciones xij < 1 es
la matriz identidad. Por tanto, A es totalmente unimodular y la solución al PPL es entera. No obstante,
se cuenta con algoritmos específicos para este tipo de modelos.
Ejemplo 1: Se trata de asignar cuatro Operarios a la realización de cuatro Tareas diferentes. Los costos
de asignación relativa de cada persona a cada tarea se indican en la Tabla 1.
Tabla 1. Matriz de costos de asignación
Tareas
Operarios 1 2 3 4
1 2 6 3 5
2 1 2 5 3
3 4 3 1 5
4 2 4 1 5
El modelo, si prescindimos de la condición de que las variables sean binarias, es el siguiente:
min = 2*X11 +6*X12 +3*X13 +5*X14 +X21 +2*X22 +5*X23 +3*X24 +4*X31 +3*X32 +X33
+5*X34 +2*X41 +4*X42 +X43 +5*X44;
X11+X12+X13+X14 = 1;
X21+X22+X23+X24 = 1;
X31+X32+X33+X34 = 1;
X41+X42+X43+X44 = 1;
X11+X21+X31+X41 = 1;
X12+X22+X32+X42 = 1;
X13+X23+X33+X43 = 1;
X14+X24+X34+X44 = 1;
Este tipo de modelos se puede resolver con un algoritmo llamado “método húngaro”.
Método Húngaro
Paso 1. El primer paso consiste en modificar los costos; mediante la resta del número más pequeño
que aparezca en cada fila de los restantes valores de la fila respectiva; este proceso se repite con cada
columna. La Tabla siguiente muestra la resta por filas.
Tabla 2. Resta por filas
Tareas
Número
Operarios 1 2 3 4
menor
1 2 6 3 5 2
2 1 2 5 3 1
3 4 3 1 5 1
4 2 4 1 5 1
Restando el menor # a cada fila:
1 0 4 1 3
2 0 1 4 2
3 3 2 0 4
4 1 3 0 4
Observe que en cada fila aparece, al menos, un cero. Esta es la asignación de menor costo posible;
pero debemos verificar si es factible: un operario diferente para cada tarea y viceversa.
Cuando haya un solo cero en cada fila y columna, se tiene la mejor combinación posible.
En la Tabla 2 no hay ceros en las columnas de las tareas 2 y 4, de manera que se debe continuar; se
realiza el mismo procedimiento, pero por columnas.
El valor más bajo que aparezca en cada columna, de la matriz resultante de las diferencias en las filas,
se resta de todos los demás valores de la columna. El resultado se muestra en la Tabla 3.
Tabla 3. Resta en columna
Tareas
Operarios 1 2 3 4
1 0 4 1 3
2 0 1 4 2
3 3 2 0 4
4 1 3 0 4
Menor
número 0 1 0 2
Restando el menor #
a cada columna:
1 0 3 1 1
2 0 0 4 0
3 3 1 0 2
4 1 2 0 2
Las columnas 1 y 3 no han variado, ya que contenían ceros. Se hace una nueva verificación de la
condición de optimalidad: La fila 2 y las columnas 1 y 3 tienen más de un cero.
Paso 2. Este paso tiene dos fases:
2.1. La fase inicial consiste en cruzar (tachar) todos los ceros que hay en la matriz resultante del
paso anterior con el menor número posible de líneas rectas horizontales o verticales. Si el número de
líneas es igual al número de filas (o columnas), se ha obtenido la solución óptima.
Como se ve en la Tabla 4, con tres líneas es suficiente para cruzar todos los ceros. Como hay
cuatro filas quiere decir que no se ha obtenido una solución y se confirman las conclusiones
obtenidas al inspeccionar en forma independiente los ceros. Esta verificación de la optimización es
la primera finalidad de las líneas.
Tabla 4. Líneas para cubrir los ceros
Tareas
Operarios 1 2 3 4
1 0 3 1 1
2 0 0 4 0
3 3 1 0 2
4 1 2 0 2
2.2. El procedimiento consiste en elegir el número más pequeño no cruzado por las líneas que se
trazaron. Ese número se suma a todos los valores que se encuentran en las intersecciones de las líneas
y se resta de todos los números no cruzados.
En la Tabla 4 el número más pequeño no cruzado es el 1. Este se encuentra en las celdas del
operario 1, Tarea 4 y del operario 3 Tarea 2. Se suma al valor de cada celda en la intersección de
las líneas:
Operario 2, Tarea 1: 0 + 1 = 1
Operario 2, Tarea 3: 4 + 1 = 5
Luego se resta el 1 de las celdas no cruzadas y obtenemos la matriz de la Tabla 5.
En caso de que no se tengan iguales cantidades de operarios y tareas, se añaden elementos ficticios para
suplir la carencia. Los costos correspondientes se toman con valor 0. En la asignación óptima, los
valores correspondientes a dichos elementos se interpretan como tareas que no se van a ejecutar u
operarios que no van a ser asignados, según sea el caso.
Caso de máximo
Si en el problema lo que se pretende es maximizar, por ejemplo la utilidad de las asignaciones, se
transforma el modelo a un caso de mínimo, de la siguiente forma:
1. Localizar en la matriz C = [cij] el mayor cij < . Sea c*ij = maxi,j{ cij < }.
2. cij ≠ 0, , calcular c’ij = c*ij – cij.
3. Aplicar el algoritmo caso mínimo a la matriz C’ = [c’ij]
4. Evaluar la solución óptima obtenida en la matriz original C = [cij].
Ejemplo 2.
Supongamos que en el Ejemplo 1, la matriz representa la utilidad de la asignación y se quiere obtener
la máxima utilidad posible.
Tareas
Operarios 1 2 3 4
1 2 6 3 5
2 1 2 5 3
3 4 3 1 5
4 2 4 1 5
Cambiando en el modelo el objetivo a Max, se obtiene:
Para aplicar el Método Húngaro, convertimos el problema de maximizar f(x) a minimizar {C –f(x)},
siendo C el mayor valor de las utilidades. En este caso, como el máximo valor es 6, transformamos la
tabla en:
Tareas
Operarios 1 2 3 4
1 4 0 3 1
2 5 4 1 3
3 2 3 5 1
4 4 2 5 1
Se aplica ahora el Método Húngaro a esta matriz y, una vez que se alcance la solución óptima, se
toman los valores originales de la utilidad para calcular el máximo valor de la función objetivo.
Resumiendo, si el problema es de máximo, se transforma a un problema de mínimo.
Para hallar el valor mínimo, se aplica:
Rutina I.
Dada la matriz de costo C, obtener C1 que tiene, al menos, un cero por fila y por columna:
P1. A todos los elementos de cada fila i restarle vi = mini (cij).
A todos los nuevos elementos de cada columna j restarle uj = minj (cij).
P2. Si no hay un solo cero en cada fila y columna, pasar a la Rutina II.
Rutina II.
P1. Dada la matriz Ck, tachar todos los ceros con el menor número posible de líneas rectas
horizontales y/o verticales. Si el número de líneas es igual al número de filas (o columnas), se ha
obtenido ya una solución. Ir al P3.
P2. Elegir el número más pequeño no cruzado por las líneas que se trazaron. Ese número se suma a
todos los valores que se encuentran en las intersecciones de las líneas y se resta de todos los
números no cruzados. Repetir el P1.
P3. Las asignaciones óptimas se identifican localizando cualquier cero que aparezca solo en una fila
o columna. Se realiza la asignación y se tachan la fila y columna correspondientes. Se repite el paso
n – 1 veces.
Los costos o utilidades de las asignaciones óptimas se toman de la matriz original.
Orientación para la CP
1. Terminar de resolver el Ejemplo 2 de la Conferencia.
2. Una empresa compró tres máquinas nuevas de diferentes tipos. Existen cuatro sitios disponibles
dentro del taller donde se podría instalar una máquina. El objetivo es asignar las máquinas a los
lugares disponibles de manera que se minimice el costo total de manejo de materiales. En la tabla
se muestra el costo estimado por unidad de tiempo del manejo de los materiales en cuestión, con
cada una de las máquinas en los sitios respectivos. El lugar 2 no se considera adecuado para la
máquina 2.
Localidad
1 2 3 4
1 13 16 12 11
Máquina 2 15 - 13 20
3 5 7 10 6
a) Escriba el modelo de PL para este problema.
b) Plantee el problema como un problema de asignación.
c) Halle la solución