Sunteți pe pagina 1din 27

Problemas Especiales de

Programación Lineal
Entera Binaria

Problemas de Asignación
Introducción
 El problema de asignación es un problema particular de
PL, y como tal tiene un algoritmo particular para su
resolución.

 Consiste en asignar un elemento de un grupo a un


elemento de un segundo grupo.
 Ejemplos:
 Asignar tareas a trabajadores

 Trabajos a las máquinas

 Investigadores a proyectos.
Características
 Cada elemento del primer grupo debe asignarse a exactamente un
elemento del segundo grupo.

 Cada elemento del segundo grupo debe asignarse a exactamente


un elemento del primer grupo .

 En sí, las dos características anteriores son las restricciones del


problema. Esto implica que el problema debe estar balanceado.

 Si se quiere resolver un problema de asignación no-balanceado,


se deben agregar nodoS ficticioS para balancearlo.
Características
 Por cada asignación realizada existe un “costo” asociado.

 Ejemplos:
 Cantidad de tiempo que toma un trabajador en realizar una
tarea.
 Cantidad de tiempo que tarda una máquina en realizar una tarea.

 El objetivo del problema de asignación es (siempre)


minimizar los costos.

P: ¿qué hacemos si queremos maximizar el beneficio?

R: multiplicamos los beneficios por [-1] Max (B) = Min (-B)


Comentarios y Notación
 Para este problema no es necesario usar un grafo. Es más
útil usar una tabla (tabla de asignación), donde se encuentran
los costos de asignación.

 Después de balancear el problema se tendrá una matriz de


orden mxm.

 Para resolver el problema se itera sobre esa matriz de costo


balanceada (tabla).

 Los problemas de asignación se pueden resolver usando el


algoritmo simplex de transporte y viceversa.
Modelo (balanceado)
Sea:
cij : el costo de asignar el elemento i del primer grupo al elemento j del
segundo grupo (dato).
xij = 1, si el elemento i es asignado al elemento j.
xij = 0 en otro caso.
m m
Min Z   cij xij
i 1 j 1

s.a.
m

x
i 1
ij  1 ;  j  1, m
m

x
j 1
ij  1 ;  i  1, m

xij  0,1
Tabla de asignacion
Ejemplo 1:
Un determinado trabajo se compone de 4 tareas independientes entre
si, para llevar a cabo estas tareas se dispone de 4 operarios con
habilidades distintas, dependiendo de la tarea que le sea asignada. El
cuadro siguiente muestra los tiempos para realizar las tareas según sea
la asignación hombre trabajo.

Hombre\Trabajo 1 2 3 4
1 14 18 7 10
2 6 22 15 13
3 8 11 12 5
4 10 18 21 15

Xij : Operario i asignado a la tarea j


El problema es determinar la mejor asignación hombre trabajo que
minimice el tiempo.
Ejemplo 1:
• Aplicando el método Húngaro
14 18 7 10 7 es el menor
6 22 15 13 6 es el menor
8 11 12 5 5 es el menor
10 18 21 15 10 es el menor

• Restando el numero menor a cada fila


14-7 18-7 7-7 10-7
6-6 22-6 15-6 13-6
8-5 11-5 12-5 5-5
10-10 18-10 21-10 15-10
Ejemplo 1:
 Eligiendo el menor de cada Columna

7 11 0 3
0 16 9 7
3 6 7 0
0 8 11 5
0 es el menor 6 es el menor 0 es el menor 0 es el menor

 Procediendo
7-0 11-6 0-0 3-0
0-0 16-6 9-0 7-0
3-0 6-6 7-0 0-0
0-0 8-6 11-0 5-0
Ejemplo 1:
 Procediendo

7 5 0 3
0 10 9 7
3 0 7 0
0 2 11 5

 Ahora se cubren los ceros con líneas

7 5 0 3

0 10 9 7

3 0 7 0

0 2 11 5
• Cabe destacar que el numero de filas y líneas debe ser igual al
numero de columnas de caso contrario se debe proseguir de la
siguiente manera

1) Elegir el menor numero que no este tapado por líneas


2) Luego se suma el numero elegido a las intersecciones de las líneas y
se resta el numero elegido a todos los números que no estén tapados
por líneas (los números que no están ni en intersecciones ni libres no
se les realiza nada)
Ejemplo 1:
 Aplicando el método anterior

9 5 0 3

0 8 7 5

5 0 7 0

0 0 9 3

 Una vez cerciorados de que el numero de líneas es igual al numero


de filas y columnas se dibuja la misma matriz en este caso 4x4 pero
con solo los 0 de esta
Ejemplo 1:
 Observando la matriz se comienza a elegir por los trabajos que solo
pueden ser realizados por un solo trabajador

0 0

0 0

 Trabajador A cubre el trabajo 3


 Trabajador B Cubre el trabajo 1

 Trabajador C Cubre el trabajo 4

 Trabajador D Cubre el trabajo 2

Por lo tanto el mínimo tiempo empleado será 36 minutos


Ejemplo 2:
 EL entrenador de un equipo de natación debe asignar competidores para la
prueba de 200 mts.
 Como muchos de sus nadadores son rápidos en más de un estilo, no le es
fácil decidir qué nadador asignar a cada uno de los cuatro estilos.
 Los cinco mejores nadadores y sus mejores tiempos (en segundos) en
cada estilo son los siguientes.

Tipo Nado Carlos Cristina David Arturo José


Dorso 37 32 33 37 35
Pecho 43 33 42 34 41
Mariposa 33 28 38 30 33
Libre 29 26 29 28 31
Ejemplo 2: modelo
Xij=1, si el estilo de nado i es asignado a la persona j. i=5 (ficticio)

Min Z  37 x11  32 x12  33x13  37 x14  35 x15  43x21  33x22  42 x23


 34 x24  41x25  33x31  28 x32  38 x33  30 x34  33x35
 29 x41  26 x42  29 x43  28 x44  31x45
s.a.
x11  x12  x13  x14  x15  1
x21  x22  x23  x24  x25  1
x31  x32  x33  x34  x35  1
x41  x42  x43  x44  x45  1
x51  x52  x53  x54  x55  1
x11  x21  x31  x41  x51  1
x12  x22  x32  x42  x52  1
x13  x23  x33  x43  x53  1
x14  x24  x34  x44  x54  1
x15  x25  x35  x45  x55  1
xij  0,1
Algoritmo: Método Húngaro
 Lo primero que se debe hacer es balancear el problema y dejarlo en
la forma de minimización.

 Paso 1:

Encontrar el elemento más pequeño en cada fila de la matriz de


costos de orden mxm. Construir una nueva matriz al restar de cada
costo el costo mínimo de su fila.

Encontrar para la nueva matriz el costo mínimo en cada columna.


Construir una nueva matriz (matriz de costos reducidos) al restar
de cada costo el costo mínimo de su columna.
Algoritmo: Método Húngaro
 Paso 2:

Dibuje el número mínimo de líneas (horizontales y/o verticales) que


se necesitan para cubrir todos los ceros en la matriz de costos
reducidos.
Si se requieren m líneas para cubrir todos los ceros, se estará en
presencia de una solución óptima entre los ceros cubiertos de la
matriz.
Si se necesitan menos de m líneas, seguir con el Paso 3.
Algoritmo: Método Húngaro
 Paso 3:

Encontrar el menor elemento no cero llamado (llamado K) en la


matriz de costos reducidos, que no esté cubierto por las líneas
dibujadas en el paso anterior.
Restar K a cada elemento no cubierto de la matriz y sumar K a cada
elemento cubierto por 2 líneas (intersección).
Regresar al Paso 2.
Ejemplo 2: resolución
Tipo Nado Carlos Cristina David Arturo José
Dorso 37 32 33 37 35 32

Pecho 43 33 42 34 41 33

Mariposa 33 28 38 30 33 28

Libre 29 26 29 28 31 26

Fict. 0 0 0 0 0 0

Tipo Nado Carlos Cristina David Arturo José


Dorso 5 0 1 5 3
Pecho 10 0 9 1 8
Mariposa 5 0 10 2 5
Libre 3 0 3 2 5
Fict. 0 0 0 0 0
cont.

Ejemplo 2: resolución
Tipo Nado Carlos Cristina David Arturo José
Dorso 5 0 1 5 3
Pecho 10 0 9 1 8
Mariposa 5 0 10 2 5
Libre 3 0 3 2 5
Fict. 0 0 0 0 0
0 0 0 0 0

Al hacer la diferencia la matriz queda igual.


cont.

Ejemplo 2: resolución
Tipo Nado Carlos Cristina David Arturo José
Dorso 5 0 1 5 3
Pecho 10 0 9 1 8
Mariposa 5 0 10 2 5
Libre 3 0 3 2 5
Fict. 0 0 0 0 0

K=1
Tipo Nado Carlos Cristina David Arturo José
Dorso 4 0 0 4 2
Pecho 9 0 8 0 7
Mariposa 4 0 9 1 4
Libre 2 0 2 1 4
Fict. 0 1 0 0 0
cont.

Ejemplo 2: resolución
Tipo Nado Carlos Cristina David Arturo José
Dorso 4 0 0 4 2
Pecho 9 0 8 0 7
Mariposa 4 0 9 1 4
Libre 2 0 2 1 4
Fict. 0 1 0 0 0

K=1
Tipo Nado Carlos Cristina David Arturo José
Dorso 3 0 0 3 1
Pecho 9 1 9 0 7
Mariposa 3 0 9 0 3
Libre 1 0 2 0 3
Fict. 0 2 1 0 0
cont.

Ejemplo 2: resolución
Tipo Nado Carlos Cristina David Arturo José
Dorso 3 0 0 3 1
Pecho 9 1 9 0 7
Mariposa 3 0 9 0 3
Libre 1 0 2 0 3
Fict. 0 2 1 0 0

K=1

Tipo Nado Carlos Cristina David Arturo José


Dorso 3 1 0 4 1
Pecho 8 1 8 0 6
Mariposa 2 0 8 0 2
Libre 0 0 1 0 2
Fict. 0 3 1 1 0
m=5
cont.

Ejemplo 2: resolución
Busquemos la solución óptima.
inicialmente buscamos la fila o columna que tenga sólo 1 cero.

Tipo Nado Carlos Cristina David Arturo José


Dorso 3 1 0 4 1
Pecho 8 1 8 0 6
Mariposa 2 0 8 0 2
Libre 0 0 1 0 2
Fict. 0 3 1 1 0

Solución:

x13  1 x24  1 x32  1 x41  1 x55  1


cont.

Ejemplo 2: resolución
Tipo Nado Carlos Cristina David Arturo José
Dorso 37 32 33 37 35
Pecho 43 33 42 34 41
Mariposa 33 28 38 30 33
Libre 29 26 29 28 31
Fict. 0 0 0 0 0

Z = 33+34+28+29+0 = 124
P: ¿qué nadador no participara en la prueba?
Solución: R: José

x13  1 x24  1 x32  1 x41  1 x55  1


cont.

Ejemplo 3:
Tipo Nado Carlos Cristina David Arturo José
Dorso 37 32 33 37 35
Pecho 43 33 42 34 41
Mariposa 33 28 38 30 33
Libre 29 26 29 28 31
Fict. 0 0 0 0 0

P: ¿qué pasa si David no puede participar en estilo Libre?


R: Agregamos una M para negar la participación

Tipo Nado Carlos Cristina David Arturo José


Dorso 37 32 33 37 35
Pecho 43 33 42 34 41
Mariposa 33 28 38 30 33
Libre 29 26 M 28 31
Fict. 0 0 0 0 0

S-ar putea să vă placă și