Problema de asignación
El problema de asignación consiste en encontrar la forma de asignar ciertos recursos disponibles (máquinas o personas) para la realización de determinadas tareas al menor coste, suponiendo que cada recurso se destina a una sola tarea, y que cada tarea es ejecutada por uno solo de los recursos. Es uno de los problemas fundamentales de optimización combinatoria de la rama de optimización o investigación operativa en matemática. El modelo se puede aplicar a la asignación de empleados a tareas, de fábricas a productos, de vendedores a territorios, de postores a contratos, etc. Con una sencilla manipulación, el método también se puede aplicar al caso en el que se pretende maximizar cierta cantidad.
Formalmente, el problema de la asignación consiste en encontrar un emparejamiento de peso óptimo en un grafo bipartito ponderado. El problema de asignación es un caso particular del problema de transporte, en el que la oferta en cada origen y la demanda en cada destino son ambas de valor 1.
Historia
El problema de asignación tuvo su origen en la revolución industrial, ya que el surgimiento de las máquinas hizo que fuera necesario asignar una tarea a un trabajador.
Thomas Jefferson en 1792 lo sugirió para asignar un representante a cada estado, pero formalmente aparece este problema en 1941, cuando F.L. Hitchcook publica una solución analítica del problema. Pero no es hasta 1955 cuando Harold W. Kuhn plantea el método húngaro, que fue posteriormente revisado por James Munkres en 1957. Dicho método está basado fundamentalmente en los primeros trabajos de otros dos matemáticos húngaros: Dénes Köning y Jenö Egervary.
Hoy en día en pleno apogeo de la globalización surge cada vez con mayor frecuencia el uso de este problema en la rama de la investigación de operaciones. Podemos decir que es la aplicación del método científico para asignar los recursos o actividades de forma eficaz, en la gestión y organización de sistemas complejos. Su objetivo es ayudar a la toma de decisiones.
Definición del problema de asignación
En su forma más general, el problema es como sigue:
- Hay un número de agentes y un número de tareas. Cualquier agente puede ser asignado para desarrollar cualquier tarea, contrayendo algún coste que puede variar dependiendo del agente y la tarea asignados. Es necesario, para desarrollar todas las tareas, asignar un solo agente a cada tarea de modo que el coste total de la asignación sea mínimo.
Este tipo de problemas son lineales, con una estructura de transporte, solo que la oferta en cada origen es de valor uno y la demanda en cada destino es también de valor uno. Sería muy ineficiente resolver este tipo de problemas por medio del método simplex o por medio del algoritmo de transporte. Debido a la estructura propia de los problemas de asignación, existen métodos de solución llamados "algoritmos de asignación" que son más eficientes que el simplex o que el método de transporte.
Los problemas de asignación presentan una estructura similar a los de transporte, pero con dos diferencias: asocian igual número de orígenes con igual número de demandas y las ofertas en cada origen es de valor uno, como lo es la demanda en cada destino.
La restricción importante para cada agente es que será asignado a una sola tarea.
Características
El problema de asignación presenta las siguientes características:
- El Problema de Asignación debe estar equilibrado, es decir, que la relación entre las ofertas y las demandas sean igual a 1. Un elemento importante para el problema de asignación es la matriz de costos. Si el número de renglones o columnas no son iguales el problema está desbalanceado y se puede obtener una solución incorrecta. Para obtener una solución correcta la matriz debe ser cuadrada.
- Si el número de agentes y tareas son iguales y el coste total de la asignación para todas las tareas es igual a la suma de los costes de cada agente (o la suma de los costes de cada tarea, que es lo mismo en este caso), entonces el problema es llamado problema de asignación lineal. Normalmente, cuando hablamos de problema de asignación sin ninguna matización adicional, nos referimos al problema de asignación lineal.
Oferta: Cantidad que representa la disponibilidad del artículo en la fuente/fábrica de donde proviene. 4
Demanda: Cantidad de artículos que necesita recibir el destino para cumplir sus necesidades. 4
Diferencias con el Modelo de Transporte y Asignación
El problema de asignación es un caso particular del problema de transporte y constituyen la clase más sencilla de los problemas lineales, en el cual los trabajadores representan las fuentes y los puestos representan los destinos.
- En el problema de transporte existen orígenes y destinos, y el flujo se realiza desde un origen hacia cada uno de los diferentes destinos. Si en este caso permitimos el flujo en ambos sentidos (de origen a destino y destino a origen) se puede hablar de un problema de orígenes y destinos. A este tipo de problemas se les conoce con el nombre de problemas de transbordo (transhipment problems) o transporte con nodos intermedios.
- En el caso más general, cada punto de origen o destino puede ser un punto de transbordo, es decir, cada origen puede evitar o transportar a otros orígenes o a distintos; y los destinos pueden transportar a su vez a otros destinos o volver a los orígenes. Un punto conserva su identidad, origen o destino, solamente cuando sea respectivamente, un punto que originalmente disponga de un suministro o un punto que tenga una demanda a satisfacer.
- En los problemas de asignación las ofertas en cada origen es de valor uno, como lo es la demanda en cada destino; una gran diferencia con respecto a los problemas de transporte.
Formas de representación de un problema de asignación
- Red
- Modelo de programación lineal
- Matriz de costos
- Tabla de transporte
Asignación Inicial
Implica asignar números a las celdas para satisfacer las restricciones de oferta y demanda. Para realizar esto se puede emplear alguno de estos métodos: El método de la esquina noroccidental, el método de menor costo y el método de aproximación de Vogel.
Elementos del problema de asignación
Tabla de transporte: Otra forma de plantear el problema de transporte ( recordemos que el problema de asignación es un caso especial del de transporte) es mediante una tabla llamada tabla de transporte, la cual tiene forma de matriz donde los renglones representan las fuentes y las columnas los destinos o trabajos.
- En las casillas que se encuentran en la esquina se colocan los coeficientes de costo.
- Una vez realizado esto, utilizamos alguno de los métodos (Vogel, esquina noroeste, costos mínimos) para obtener una solución inicial
- Donde no exista un coeficiente de costo se le anota una M. 4
Matriz de costos: Es una matriz cuadrada de n*n, donde cada elemento representa el costo de asignar el enésimo trabajador al enésimo trabajo; renglones = trabajadores. Es la tabla en donde, se identifica, se evalúa y se cuantifica los beneficios económicos, costos y riesgos de los productos/servicios, después de definir la necesidad el alcance y el alineamiento estratégico de los productos/servicios, en donde se evalúa el beneficio total de la propiedad (características). Una vez creada la matriz se demuestra el valor económico para la realización del producto o servicio correspondiente. 4
Matriz de Costos Reducida Es la matriz que se obtiene después de haber restado el elemento más pequeño a cada renglón (reducción de renglones) y restarle a esa nueva matriz el elemento más pequeño a cada columna (reducción de columnas).
Distribución óptima: Sean un conjunto de fragmentos y una red formada por el conjunto de sitios en la cual un conjunto de aplicaciones se ejecutan. El problema de la asignación implica encontrar la distribución óptima de F sobre S. (multi)
Método Simplex: Método de solución de los problemas de programación lineal donde se obtiene una solución factible y óptima (en donde se pueden obtener resultados como solución múltiple, solución no acotada, o que el problema no tenga solución).
Solución Óptima: El conjunto de los vértices del recinto se denomina conjunto de soluciones factibles básicas y el vértice donde se presenta la solución óptima se llama solución máxima (o mínima según el caso).
Red
Muchos problemas de redes son más que una representación abstracta de procesos o actividades, tales como el camino crítico en las actividades entre las redes de un proyecto. Para definir lo que es una red necesitaremos saber qué es un nodo.
Nodo: Es uno de los elementos de una lista enlazada, de un árbol o de un grafo. Cada nodo será una estructura o registro que dispondrá de varios campos, y al menos uno de esos campos será un puntero referencia a otro nodo, de forma que, conocido un nodo, a partir de esa referencia, será posible en teoría tener acceso a otros nodos de la estructura.
Una red consiste en una serie de nodos enlazados con arcos (o ramas). La notación para describir una red es , donde es el conjunto de nodos y es el conjunto de arcos.
Casos especiales
Oferta y demanda desiguales. Cuando la oferta y la demanda son desiguales, se asigna una actividad ficticia con un costo de cero para mantener la condición de método que deben ser igual número de ofertas y demandas
Problemas de Maximización. Considere un problema de asignación en el que la respuesta a cada asignación es una utilidad en vez de un costo. Considere la matriz de utilidades del problema como la característica nueva la cual consiste en que el número que aparece en cada celdilla representa un beneficio en lugar de un costo.
Problemas con asignación inaceptable. Supóngase que se está resolviendo un problema de asignación y que se sabe que ciertas asignaciones son inaceptables. Para alcanzar esta meta, simplemente asigna un costo arbitrariamente grande representado mediante la letra M. M es un número tan grande que si se le resta un número finito cualquiera, queda todavía un valor mayor que los demás.
Problema de selección: Es un caso especial donde la función u objetivo es maximizar pero el problema se trata igual que una minimización al multiplicar por (-1).
Método de Selección
Cuando el problema de asignación es de maximización se le llama problema de selección.
Balanceado
Se dice que un problema de asignación se encuentra balanceado, si los recursos totales son iguales a las demandas totales. En caso contrario se dice que no está balanceado el problema.
Además en el modelo, (obtener una matriz cuadrada), en donde número de renglones y es número de columnas.
Para lograr que el modelo este balanceado se pueden agregar trabajadores/tareas ficticias con costos de cero.
Algoritmos y generalizaciones
El algoritmo Húngaro es uno de los muchos algoritmos que han sido diseñados para resolver el problema del asignación lineal con un tiempo acotado por una expresión polinómica del número de agentes.
El problema de asignación es un caso especial del problema del transportador, que es un caso especial del problema del flujo de coste mínimo. El problema de asignación también puede ser resuelto por medio del algoritmo simplex (creado en 1947 por el matemático George Dantzig). El método simplex se utiliza, sobre todo, para resolver problemas de programación lineal en los que intervienen tres o más variables. Es un método iterativo que permite ir mejorando la solución en cada paso. Cada especialización tiene algoritmos más eficientes tomando ventaja de su estructura espacial.
Si entonces se asigna el trabajador a la tarea y si entonces no se asigna el trabajador a la tarea . Cij: Costo de asignar al trabajador i la tarea j.
Parámetro M: M es un número muy grande en los problemas de asignación. Se utiliza para representar que al trabajador i no se le puede asignar la tarea j.
Modelo binario
Problema Binario: Son los problemas en los cuales la variable solo puede tomar valores de y ; el problema de asignación es un problema binario.
Es un modelo de programación lineal donde en la solución las variables solo pueden tomar los valores de cero o uno.
Teorema Fundamental de la Asignación
Si a todos los elementos de una fila o de una columna de una matriz de rendimientos se le suma o se le resta una cantidad constante la asignación óptima no varía.
Definición matemática formal
La definición formal del problema de asignación (o problema asignación lineal) es
- Dados dos conjuntos, A y T. de igual tamaño, juntos con una función peso C: A × T → R. Encuentra una biyección f: A → T como la función de coste:
- está minimizada.
Normalmente la función peso es vista como una matriz cuadrada de valores reales C, con lo que el coste de la función queda así:
El problema es "lineal" porque la función coste a optimizar así como todas las restricciones contienen solo términos lineales.
Método Húngaro
Pasos para el método húngaro:
Paso 1: De la matriz de costos m*m, encontrar primero el mínimo elemento de cada fila, y restarlo a cada costo de la fila. Repetimos la operación por columnas, buscando el costo mínimo en cada columna, y construyendo una nueva matriz (denominada matriz de costos reducidos) al restar de cada costo el costo mínimo de su columna.
Paso 2: Repetiremos este paso hasta encontrar una solución:
- 1) Trace el número mínimo de líneas (horizontales, verticales o ambas) en la última matriz de costos reducidos que cubra todos los ceros.
- 2) Si se necesitan m líneas para cubrir todos los ceros, se tiene una solución óptima entre los ceros cubiertos de la matriz. Si no continuamos.
- 3) Selecciones el elemento no cubierto más pequeño y réstelo de todos los elementos no cubiertos; después, súmelo a todos los elementos en la intersección de dos líneas.
Paso 3: Usando los ceros que hemos obtenido construimos la solución sabiendo que solo es posible asignar i a j, si el elemento xij de la matriz de costos reducidos modificada es 0. Se llega por descarte a una (o varias) soluciones óptimas.
Caso especial al aplicar el Método Húngaro cuando se trata de Maximizar
Cuando hay que pasar de maximizar a minimizar en lugar de operar con el menor de toda la matriz podemos ir tomando el mayor de cada fila o columna e ir restándole todos los elementos de esa fila o columna con lo cual conseguiremos obtener por lo menos un cero como mínimo en cada fila o columna. Si en alguna columna no hubiera ceros le quitamos el mayor a la columna.
Método de Flood
Este método es utilizado en aquellos casos donde no se ha podido hacer una asignación óptima después de haber realiza el método húngaro.
El método consta de los siguientes pasos: Paso 1: Señalar todas las filas que no tienen una asignación. (Cuando se dice señalar puede ser una pequeña X a la izquierda de la fila o arriba de la columna)
Paso 2: Señalar todas las columnas que tengan un cero en la columna señalada.
Paso 3: Señalar todas las filas que tienen una asignación en las columnas indicadas.
Paso 4: Repetir estos pasos hasta que no pueda señalarse más columnas o filas. (No hay más filas que no tengan asignación) Dibujar una línea por cada fila NO señalada y por cada columna SI señalada.
Paso 5: Encontrar el mínimo valor de los elementos no cubiertos y restarlo a todos los elementos no cubiertos, y sumar este valor a cada elemento que se encuentre en la intersección de una línea horizontal con una línea vertical.
Paso 6: Realizar la asignación como en el método húngaro. (arqui)
Ejemplo 1
Una empresa de logística cuenta con 4 máquinas para realizar 3 tareas, cada máquina realiza la tarea según el tiempo en que esta pueda ejecutarla. En la siguiente tabla se muestran los tiempos en horas para dichas tareas.
Se plantea la red de la siguiente forma:
Ejemplo 1: Balanceando
Para resolver el problema usando el método Húngaro será necesario equilibrar la tabla de costos, si se construye una tabla sobre la base de la red tendremos 4 filas ≠ 3 columnas, por tanto será necesario agregar una nueva columna con costos 0. Esto significa que se añadirá una tarea falsa.
Ahora se tienen 4 filas = 4 columnas, por tanto el modelo está balanceado y listo para aplicar el método Húngaro para su solución.
Ejemplo 2
Machineco tiene cuatro máquinas y cuatro tareas por completar. Cada máquina se debe asignar para completar una tarea. El tiempo requerido para preparar cada máquina para completar cada tarea se muestra en la siguiente tabla. Machineco desea reducir el tiempo de preparación total necesario para completar las cuatro tareas.
Planteamiento del modelo de programación lineal
Machineco debe determinar qué máquina debe asignarse a cada tarea. Xij=1 si la máquina i se asigna para satisfacer las demandas de la tarea j Xij=0 si la máquina i no se asigna para satisfacer las demandas de la tarea j
Ejemplo 2: Modelo de Programación Lineal
Entonces el modelo de P.L. de Machineco es el siguiente:
Las restricciones de máquina aseguran que cada máquina se asignó a una tarea, y las restricciones de trabajo aseguran que se completó cada tarea. Si Xij = 1 entonces la función objetivo tomará el tiempo requerido para preparar la máquina i para la tarea j, si Xij =0 entonces la función objetivo no tomara el tiempo requerido.
Se puede notar que Machineco enfrenta un problema de transporte equilibrado en el que cada punto de suministro tiene un suministro de 1 y cada punto de demanda tiene una demanda de 1. En general el problema de asignación es un problema de transporte equilibrado en el que suministros y demandas son iguales a 1, Así, un problema de asignación se caracteriza porque se conoce el costo de asignar cada punto de suministro a cada punto de demanda.
Ejemplo 2: Matriz de costos
Ejemplo 2: Solución por el Método Húngaro
Paso 1: Reste el número más pequeño de cada renglón a cada número del renglón. Esto se llama reducción de renglón.
Paso 2: Reste el número más pequeño de la nueva matriz a cada número de la columna. Esto se llama reducción de columna.
Al momento de realizar los dos pasos anteriores la matriz nueva recibe el nombre de matriz reducida de costos.
Paso 3: Pruebe si se puede hacer una asignación óptima. Se hace mediante la determinación del número mínimo de líneas necesarias para cubrir todos los ceros.
Como el número de líneas no es igual al número de renglones no es posible hacer una asignación, en este caso se continúa con el método.
Paso 4: Reste el número no cubierto más pequeño de todos los números no cubiertos de la matriz. Sume el número no cubierto más pequeño a los números que se encuentren en intersección de líneas. Los números cruzados pero que no se encuentran en intersección de líneas permanece igual.
Paso 5: Repetir los pasos 3 y 4 hasta que el número de líneas sea igual al número de renglones de la matriz.
Como el número de líneas es igual al número de renglones se tiene una solución óptima. Se puede pasar al último paso.
Paso 6: Se hacen las asignaciones una a una en las posiciones que tienen elemento cero. Comience con los renglones y columnas que tienen solo un cero. Cada renglón y columna necesita recibir exactamente una asignación. Después continúe con los renglones y columnas que no han sido asignados. Siga hasta que todos los renglones y columnas estén asignados.
Ejemplo 2: Interpretación de resultados
'z = 2 + 5 + 3 + 5 = 15'
Ejemplo 3
Doc Counsilman reúne a un equipo de relevos para el relevo de 400 metros. Cada nadador debe nadar 100 metros de brazada de pecho, dorso, mariposa o estilo libre. Doc cree que cada nadador obtendrá los tiempos en segundos dados en la tabla. ¿Qué nadador debe nadar que estilo?
Nadador | Libre | Pecho | Mariposa | Dorso |
Gary | 54 | 54 | 51 | 53 |
Mark | 51 | 57 | 52 | 52 |
Jim | 50 | 53 | 54 | 56 |
Chet | 56 | 54 | 55 | 53 |
Ejemplo 3: Modelo de Programación Lineal
Min z= 54x11 + 54x12 + 51x13 + 53x14 + 51x21 + 57x22 + 52x23 + 52x24 + 50x31 + 53x32 + 54x33 + 56x34 + 56x41 + 54x42 + 55x43 + 53x44
S.A
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 xij = {0,1} i,j = Z34fg
Ejemplo 3: Tabla de Transporte
1 | 2 | 3 | 4 | ||
---|---|---|---|---|---|
1 | 54 | 54 | 51 | 53 | 1 |
2 | 51 | 57 | 52 | 52 | 1 |
3 | 50 | 53 | 54 | 56 | 1 |
4 | 56 | 54 | 55 | 53 | 1 |
1 | 1 | 1 | 1 | 1 |
Texto de cabecera | Texto de cabecera | Texto de cabecera | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Ejemplo | Ejemplo | Ejemplo
| ||||||||||||||||||||||
Ejemplo | Ejemplo | Ejemplo | ||||||||||||||||||||||
Ejemplo | Ejemplo | Ejemplo |
Ejemplo 3: Solución por el Método Húngaro
1. Se escribe la matriz de costos.
2. Se escoge el número más pequeño de cada renglón y se le resta a cada número del renglón y los resultados se pone en una nueva matriz. Queda de la siguiente manera:
3. De la nueva matriz se escoge el número más pequeño de cada columna y se le resta a cada número de la columna. Queda de la siguiente manera:
4. Procedemos a encontrar el número mínimo de rectas que cubren todos los ceros de la matriz.
5.Si el número de rectas es igual al número de renglones es posible hacer una asignación, como en este caso son diferentes se hace el siguiente paso.
6. Se escoge el número más pequeño no cubierto y se le resta a los demás números no cubiertos. En los números de intersección de rectas se suma este número.
Procedemos a encontrar el número mínimo de rectas que cubren todos los ceros de la matriz.
Como el número de rectas es igual al número de renglones procedemos a asignar. Se escoge el cero donde solo esté una vez en el renglón o la columna.
Así queda la asignación.
Nadador | Estilo |
1 | 3 |
4 | 2 |
2 | 4 |
3 | 1 |
Ejemplo 3: Interpretación de resultados
Con esto se hizo una asignación la cual quiere decir que:
- El nadador 1 hará el estilo mariposa.
- El nadador 4 hará el estilo pecho.
- El nadador 2 hará el estilo dorso.
- El nadador 3 hará el estilo libre.
En total se harán como mínimo 207 minutos entre los 4 nadadores.
Ejemplo 4
Una empresa ha preseleccionado 5 candidatos para ocupar 4 puestos de trabajo en dicha empresa. Los puestos de trabajo consisten en manejar 4 máquinas diferentes (un trabajador para cada máquina). La empresa puso a prueba a los 5 trabajadores en las 4 máquinas, realizando el mismo trabajo todos ellos en cada una de las máquinas, obteniendo los siguientes tiempos:
Ejemplo 4: Tabla de asignación
Máquina 1 | Máquina 2 | Máquina 3 | Máquina 4 | |
Candidato 1 | 10 | 6 | 6 | 5 |
Candidato 2 | 8 | 7 | 6 | 6 |
Candidato 3 | 8 | 6 | 5 | 6 |
Candidato 4 | 9 | 7 | 7 | 6 |
Candidato 5 | 8 | 7 | 6 | 5 |
Ejemplo 4: Red
Comenzamos por plantear la red
Posteriormente se determina qué candidatos debe seleccionar la empresa y a qué máquinas debe asignarlos. Se determinan las variables de decisión, en este caso: Xij: acción de que el trabajador i es asignado a la máquina j (0 indica que el trabajador no ha sido asignado y 1 que sí ha sido asignado)
Se determinan las restricciones y se expresan como ecuaciones o inecuaciones de las variables de decisión. Dichas restricciones son que cada trabajador debe ser asignado a una sola máquina y no debe quedar ninguna máquina sin un trabajador asignado a ella: Cada trabajador debe estar asignado a una sola máquina o a ninguna si no se selecciona:
Ejemplo 4: Modelo de Programación Lineal
- X11 + X12 + X13 + X14 ≤ 1
- X21 + X22 + X23 + X24 ≤ 1
- X31 + X32 + X33 + X34 ≤ 1
- X41 + X42 + X43 + X44 ≤ 1
- X51 + X52 + X53 + X54 ≤ 1
En cada máquina debe haber un trabajador:
- X11 + X21 + X31 + X41 + X51 = 1
- X12 + X22 + X32 + X42 + X52 = 1
- X13 + X23 + X33 + X43 + X53 = 1
- X14 + X24 + X34 + X44 + X54 = 1
Se expresan todas las condiciones implícitamente establecidas por la naturaleza de las variables: que no puedan ser negativas, que sean enteras, que solo puedan tomar determinados valores... En este caso las restricciones son que las asignaciones de trabajadores a máquinas no puede ser negativa y debe ser además una variable booleana (0 no se asigna, 1 se asigna):
- Xij ≥ 0
- Xij es booleano
Se determina la función objetivo:
Min Z = 10X11 + 8X21 + 8X31 + 9X41 + 8X51 + 6X12 + 7X22 + 6X32 + 7X42 + 7X52 + 6X13 + 6X23 + 5X33 + 7X43 + 6X53 + 5X14 + 6X24 + 6X34 + 6X44 + 5X54
Ejemplo 4: Solución
Ejemplo 4: Interpretación de resultados
Por lo tanto: El candidato 1 trabajara con la máquina 2 El candidato 2 trabajara con la máquina 1 El candidato 3 trabajara con la máquina 3 El candidato 5 trabajará con la máquina 4 El candidato 4 no trabajaría Así tendremos un costo de: 24 ( Z*=6+8+5+0+5)
Ejemplo 5
Un profesor han determinado 4 capítulos de un libro X y está pensando en pedir ayuda para terminarlo. Él ha elegido a 4 secretarias que podrían tipearle cada uno de sus capítulos. El costo asociado refleja la velocidad de la secretaria y la exactitud del trabajo.
Ejemplo 5: Tabla de asignación
Los datos están en la tabla.
Ejemplo 5: Solución
Ejemplo 6
El profesor Michell ha terminado 4 capítulos de su libro y está pensando en pedir ayuda para terminarlo. Él ha elegido a 4 secretarias que podrían mecanografiarle cada uno de sus capítulos. El costo asociado refleja la velocidad de la secretaria y la exactitud con la que realiza el trabajo. Además los capítulos difieren en la cantidad de hojas y en la complejidad. ¿Qué puede hacer el profesor si conoce la siguiente tabla?:
Ejemplo 6: Tabla de asignación
Capítulo 14 | Capítulo 15 | Capítulo 16 | Capítulo 17 | |
SECRETARIA1 | 96 | 99 | 105 | 108 |
SECRETARIA2 | 116 | 109 | 107 | 96 |
SECRETARIA3 | 120 | 102 | 113 | 111 |
SECRETARIA4 | 114 | 105 | 118 | 115 |
Ejemplo 6: Modelo de programación lineal
Xij =Secretaria i asignada al capítulo j.
Min Z= 96X11 + 99X12 + 105X13 +108X14 + 116X21 + 109X22 + 107X23 + 96X24 + 120X31 + 102X32 + 113X33 + 111X34 + 114X41 + 105X42 + 118X43 + 115X44.
s.a
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
Xij ≥0
Después de aplicar el Método Húngaro se obtiene la solución:
Capítulo 14 | Capítulo 15 | Capítulo 16 | Capítulo 17 | |
Secretaria 1 | 0 | 5 | 0 | 14 |
Secretaria 2 | 18 | 13 | 0 | 0 |
Secretaria 3 | 16 | 0 | 0 | 9 |
Secretaria 4 | 7 | 0 | 2 | 10 |
Por lo que al tomar los valores en donde existan ceros, se elige alguno y se eliminan los ceros consecuentes por fila y por columna, por lo tanto la solución es:
Ejemplo 6: Interpretación de resultados
Juana escribirá el Cap.14 María escribirá Cap. 17 Jackeline escribirá Cap.16 Edith escribirá Cap.15 Costo de Asignación es: 96 + 96 + 113 + 105 = 410
Ejemplo 7
En la empresa Sinco se tienen tres vacantes, que ya han sido solicitadas por tres profesionistas: Jorge, Karen y Armando. El gerente de recursos humanos, Martín, pidió propuestas de salarios a cada uno de los profesionistas para las actividades de capturista de datos, programador y analista de base de datos, que todos los solicitantes podrían realizar. Se sobreentiende que después los tres aceptarán la decisión de Martín sobre quién hace que actividad. La tabla siguiente resume las propuestas recibidas por lo que cobra un profesionista por realizar las diferentes actividades por hora:
Capturista de datos | Programador | Analista de base de datos | |
---|---|---|---|
Jorge | 160 | 110 | 100 |
Karen | 100 | 160 | 110 |
Armando | 110 | 130 | 90 |
Con base en esta información ¿Cómo debe asignar las actividades el gerente de recursos humanos?
Ejemplo 7: Modelo de Programación lineal
xij = La asignación del profesionista i a la actividad j
Min z = 160 X11+ 110X12 + 100X13 + 100X21 + 160X22 + 110X23 + 110X31 + 130X32 + 90X33
s.a.
Delimitamos a los profesionistas
X11 + X12 + X13 = 1
X21 + X22 + X23 = 1
X31 + X32 + X33 = 1
Delimitamos a las tareas
X11 + X21 + X31 = 1
X12 + X22 + X32 = 1
X13 + X23 + X33 = 1
Xij ≥ 0, xij ε {0,1}
Ejemplo 7: Matriz de costos
Ejemplo 7: Solución por medio del Método Húngaro
Reste el número más pequeño de cada renglón, esto se llama reducción de renglón. Introduzca los resultados en una nueva matriz
Reste el número más pequeño de la nueva matriz a cada número de la columna, esto se llama reducción de columna. Introduzca los nuevos datos en otra matriz.
Pruebe si puede hacer una asignación óptima. Hágalo mediante la determinación del número mínimo de líneas necesarias para cubrir todos los ceros (horizontales y verticales). Si el número de líneas es igual al número de renglones entonces es posible hacer una asignación.
En este caso tuvimos suerte, el número de líneas es igual al número de renglones de la matriz por lo tanto podemos hacer una asignación.
Nos pasamos al paso 6, les dejó también los pasos que hubiéramos tenido que realizar en caso de no fuera igual el número de renglones que de columnas.
Si el número de líneas es menor que el número de renglones, modifique la matriz de la siguiente forma: a) Reste el número no cubierto más pequeño de todos los números no cubiertos de la matriz. b) Sume el número no cubierto más pequeño a los números que se encuentran en intersección de líneas. c) Los números cruzados pero que no se encuentren en intersección de líneas permanecen igual.
Repita los pasos 3 y 4 hasta que el número de líneas sea igual al número de renglones de la matriz.
Haga las asignaciones una a una en las posiciones que tienen elementos cero, comience con los renglones y columnas que tienen un solo cero. Cada renglón y columna necesita recibir exactamente una asignación, después continúe con los renglones y columnas que no han sido asignados. Siga hasta que todos los renglones y columnas hayan sido asignados.
En nuestro ejemplo asignamos las posiciones X21, X12 y X33.
Ejemplo 7: Interpretación de resultados
Profesionista | Actividad |
---|---|
1 | 2 |
2 | 1 |
3 | 3 |
Jorge va a ser el programador, Karen la capturista de datos y Armando el analista de base de datos. El costo total será de 110 + 100 + 90 = $300 por hora.
Ejemplo 8
En la empresa de computo llamada “El Lago Azul” se tienen 6 circuitos lógicos para ser colocados en 5 equipos. Se requiere saber cuál es el costo mínimo en la adaptación de los circuitos a las computadoras. En la siguiente tabla se muestran los costos que se llevan a cabo en la adaptación:
Ejemplo 8: Modelo de Programación Lineal
Xij = Circuito i, Computadora j
Min z = 1000X11 + 1500X12 + 3200X13 + 500X14 + 1900X15 + 700X21 + 920X22 + 2000X23 + 1100X24 + 3000X25 + 840X31 + 799X32 + 1600X33 + 2300X34 + 1500X35 + 1500X41 + 2000X42 + 1800X43 + 3400X44 + 2600X45 + 1300X51 + 3200X52 + 600X53 + 980X54 + 1000X55 + 2000X61 + 2500X62 + 700X63 + 640X64 + 1500X65.
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
X61 + X62 + X63 + X64 + X65≤1
X11 + X21 + X31 + X41 + X51 + X61 = 1
X12 + X22 + X32 + X42 + X52 + X62 = 1
X13 + X23 + X33 + X43 + X53 + X63 = 1
X14 + X24 + X34 + X44 + X54 + X64 = 1
X15 + X25 + X35 + X45 + X55 + X65 = 1
X16 + X26 + X36 + X46 + X56 + X66 = 1
Ejemplo 8: Tabla de transporte
Para resolver el problema es necesario balancearlo; la tabla resulta de la siguiente forma:
Ejemplo 8: Solución por medio del Método Húngaro
Resta por renglón. Para realizar la resta por renglón elegimos el menor número que se encuentra en cada uno. En este caso todos los números menores por renglón pertenecen a la columna ficticia por lo tanto en este ejemplo no habrá ningún cambio.
Resta por columna. Ahora restamos el número menor que se encuentra en cada columna, que son los marcados de color verde, a cada elemento que se encuentre en la columna correspondiente. El resultado de los pasos anteriores se le llama matriz resultante.
Trazado de líneas. Ahora trazamos la menor cantidad de líneas que cubra la mayor cantidad de ceros, todos los ceros deben de terminar cubiertos. Nosotros los marcamos de color rojo.
6 renglones y 5 líneas. Para que el problema se dé por terminado tendría que ser igual el número de renglones con el número de líneas; en este caso no se cumple. Por lo tanto se realiza una segunda iteración.
Se elige el número menor no marcado en este caso que no esté de color rojo y lo restamos a los demás números no marcados. Mientras tanto en las intersecciones de las líneas anteriormente marcadas le sumamos este número. En este caso es el número 100.
Trazado de líneas Ahora nuevamente trazamos las líneas, y en este caso se cumple la condición.
Elegimos las columnas que tengan un cero y esa será la asignación de cada circuito a computadora. En el caso de que tengan 2 ceros asignamos uno que no haya sido asignado anteriormente mientras que tachamos el cero sobrante.
Finalmente aquí se puede apreciar mejor cada asignación. Como podemos ver el circuito 4 no tiene computadora asignada. Si recordamos anteriormente agregamos una columna ficticia para balancear el problema; por lo tanto sobrara un circuito.
Ejemplo 8: Interpretación de resultados
z = 500 + 700 + 799 + 1000 + 700 = $ 3699
Lo que buscaba el problema era encontrar el costo mínimo así que ya dada la asignación sumamos los costos que cada celda tenía en la primera tabla.
Ejemplo 9
Suponga que Aero-México tiene el siguiente horario de vuelos diarios
El problema que tiene Aero-México es la calendarización de la tripulación en estos vuelos. Resulta que una tripulación que sale de México un lunes a las 7:30, llega a Río el mismo lunes a las 13:30; sale el martes de Río a las 9 y llega a México a las 15 horas. El tiempo transcurrido desde las 13:30 del lunes hasta las 9 del martes siguiente, es un tiempo muerto. Se trata entonces de reducir los tiempos muertos de las tripulaciones en estos vuelos, sujeto a ciertas condiciones. En este caso, las condiciones son que cada tripulación debe descansar al menos 8 horas, pero no más de 24.
El problema se puede enunciar de la siguiente manera: dónde deben vivir las tripulaciones y qué tripulaciones deben asignarse a qué vuelos, para que los tiempos muertos totales se minimicen y al mismo tiempo se respeten las condiciones de descanso de las tripulaciones.
Suponga que una tripulación que vive en la ciudad de México que trabaja en el vuelo C y regresa en el vuelo 2 de Río de Janeiro. De acuerdo con los tiempos de vuelo, esa tripulación llega a las 17:30 y sale a las 9 de la mañana rumbo a México, tras 15 y media horas de tiempo muerto. En cambio, una tripulación que vive en Río y sale en el vuelo 1 hacia México, y regresa en el vuelo A a Río, tiene un tiempo muerto de 18 y media horas. Así se pueden construir 2 matrices de tiempos muertos, a saber:
Dadas estas dos matrices, se construye una nueva, donde los elementos tij serán.
tij=mín (tij1, tij2),
siempre y cuando 8≤tij≤24. En caso de que tij no cumpla con esta restricción, la asignación i,j es imposible y por lo tanto, tij = M, donde M>>0.
En efecto, la nueva matriz es:
Ejemplo 9: Modelo de Programación Lineal
Así el Modelo de Programación Lineal quedaría: Minimizar Z= 17.5 Xa1 + 15Xa21 + 9Xa3 +... 12Xe4 + 17.5Xe5
s.a
Xa1 + Xa2 + Xa3 + Xa4 + Xa5 = 1
Xb1 + Xb2 + Xb3 + Xb4 + Xb5 = 1
Xc1 + Xc2 + Xc3 + Xc4 + Xc5 = 1
Xd1 + Xd2 + Xd3 + Xd4 + Xd5 = 1
Xe1 + Xe2 + Xe3 + Xe4 + Xe5 = 1
Xa1 + Xb1 + Xc1 + Xd1 + Xe1 = 1
Xa2 + Xb2 + Xc2 + Xd2 + Xe2 = 1
Xa3 + Xb3 + Xc3 + Xd3 + Xe3 = 1
Xa4 + Xb4 + Xc4 + Xd4 + Xe4 = 1
Xa5 + Xb5 + Xc5 + Xd5 + Xe5 = 1
Xij = { 0, 1 } Xij Z
Ejemplo 9: Solución por medio del Método Húngaro
Como A ya está balanceada, se le aplica el método Húngaro para obtener la solución. Paso 1. Ceros en cada columna
Ceros en cada renglón
Paso 2. Vemos si se puede hacer una asignación, determinando el número mínimo de líneas necesario para cubrir los ceros (para poder hacerse el número de líneas tiene que ser igual al número de renglones)
No se puede hacer la asignación, por tanto seguimos con el paso 3 Paso3. Si el número de líneas es menor que el de renglones
a) Restamos el número no cubierto más pequeño a todos los números no cubiertos
b) sumamos el número no cubierto más pequeño a los números que se encuentran en las intersecciones de las líneas
c) Los demás números permanecen igual.
Con esta iteración ya son 5 líneas y por tanto ya podemos continuar
Paso 4. Hacemos asignaciones 1 a 1 de acuerdo a las posiciones de los ceros. Comenzamos por los renglones y columnas que solo tienen un cero. Cada renglón y cada columna debe recibir una sola asignación.
La asignación óptima queda:
A- 3 con tiempo muerto de 9 horas
B- 5 con tiempo muerto de 10.5 horas
C- 1 con tiempo muerto de 12 horas
D- 2 con tiempo muerto de 8 horas
E- 4 con tiempo muerto de 12 horas
Ejemplo 9: Interpretación de resultados
Refiriéndonos a las 2 matrices originales se tiene que en términos de donde viven las tripulaciones la asignación óptima es:
El tiempo muerto total mínimo es de 51.5 horas.
Ejemplo 10
Los tres hijos de Joe Klyne, John, Karen y Terri, quieren ganar algún dinero para cubrir sus gastos personales durante un viaje organizado por la escuela al zoológico local. El señor Klyne eligió tres tareas para sus hijos: podar el césped, pintar la cochera y lavar los automóviles de la familia. Para evitar las competencias anticipadas entre hermanos, les pidió que presentaran licitaciones (secretas) para lo que ellos creían era un pago justo para cada una de las tres tareas. Quedaba entendido que los tres hijos aceptarían la decisión de su padre en lo concerniente a quién desempeñaría cada tarea. La siguiente tabla resume las licitaciones recibidas:
Ejemplo 10: Tabla de asignación
Podar | Pintar | Lavar | |
---|---|---|---|
John | $15 | $10 | $9 |
Karen | $9 | $10 | $10 |
Terri | $10 | $2 | $8 |
Ejemplo 10: Solución por medio del Método Húngaro
Basándose en esta información, ¿Cómo debe asignar las tareas el señor Klyne? Este problema se resolverá con los primeros tres pasos del método Húngaro.
1.ª iteración.
Podar | Pintar | Lavar | renglón mínimo | |
---|---|---|---|---|
John | 15 | 10 | 9 | p1=9 |
Karen | 9 | 15 | 10 | p2=9 |
Terri | 10 | 12 | 8 | p3=8 |
En seguida restamos el renglón mínimo de cada renglón respectivo, para obtener la matriz reducida.
Podar | Pintar | Lavar | |
---|---|---|---|
John | 6 | 1 | 0 |
Karen | 0' | 6 | 1 |
Terri | 2 | 4 | 0 |
Columna mínima | q1=0 | q2=1 | q3=0 |
La aplicación del paso 2 nos da los mínimos en la columna. Si restamos estos valores de las columnas respectivas obtenemos las matriz reducida:
Podar | Pintar | Lavar | |
---|---|---|---|
John | 6 | 0 | 0 |
Karen | 0 | 5 | 1 |
Terri | 2 | 3 | 0 |
Ejemplo 10: Interpretación de resultados
Los cuadros con las entradas cero en negritas proporcionan la solución óptima. Eso quiere decir que John pintará la cochera, Karen podará el césped y Terri lavará los automóviles de la familia. El costo total para el sr Klyne es 9+10+8 =27 dólares. Además esa cantidad siempre igualará (p1 + p2 + p3) + (q1 + q2 + q3)=(9+9+8)+(0+1+0)= 27 dólares.
Ejemplo 11
Asignar maximizando el siguiente Problema.
Cómo este es un problema de maximización entonces primero pasaremos a convertirlo en minimización: lo pasamos a minimización con operación columna
Ahora como una minimización primero operación fila:
Ahora operación columna
Como aquí se encuentra la solución entonces se compara con la matriz original, Por lo tanto el resultado será:
A le corresponde e
B se le asigna c
C lo canalizamos con d
D lo asignamos a b
E le corresponde a
⇒ Z=8 + 6 + 5 + 7 + 4 =30
Ejemplo 12
Una agencia de publicidad trata cual de entre 4 ejecutivos de contabilidad debe asignarse a cada uno de los clientes mayores. Use el método conveniente para encontrar la solución óptima. A continuación se presentan los costos estimados de la asignación de cada ejecutivo:
Ejemplo 12: Solución por medio del Método Húngaro
Realizando operación renglón, primero buscamos el menor de la fila correspondiente. Como no se tienen los suficientes ceros pasamos a operación columna: Pero como no se encuentran los suficientes Ceros para cada fila se procede a buscar el menor de toda la matriz que no estén tachados (en nuestro caso con rojo). En este caso el menor es 1. Entonces restaremos este valor a cada uno de los elementos no tachados y sumaremos este mismo valor a los elementos que están en las intersecciones; los demás se copian sin operación alguna.
Como tampoco obtenemos al menos un cero en las filas se vuelve a realizar la operación anterior. Entonces el menor de los elementos de la matriz no tachada será nuevamente 1, entonces queda:
Aquí encontramos al menos un cero en todas las filas, entonces si tenemos más de 1 Cero en una determinada fila se compara quién es el menor y se toma este. Luego se tacha los ceros que podrían existir en las filas y columnas correspondientes al número tomado. Luego comparamos con la matriz original y se toman los números en las que están los ceros no tachados, luego sumamos y encontramos la solución óptima.
(A, 1)=15 (B, 4)=14 (C, 3)=15 (D, 2)=24 entonces 15 + 14 + 15 + 24 = 68, en otras palabras el cliente A estará con el contador 1, el B con el 4, el C con el 3 y el cliente D con el contador 2.
Ejemplo 13: Ejemplo con oferta ficticia
Existen 3 empleados que se pueden asignar al trabajo con 4 máquinas. Un estudio de tiempos y movimientos ha arrojado los siguientes tiempos por empleado para las 4 máquinas. Indicar que empleado debe trabajar en que máquina y cuál de ellas no será asignado a ningún empleado.
Máquina 1 | Máquina 2 | Máquina 3 | Máquina 4 | |
Empleado 1 | 10 | 7 | 9 | 8 |
Empleado 2 | 7 | 5 | 8 | 9 |
Empleado 3 | 9 | 8 | 10 | 7 |
Como la matriz no está balanceada, es necesario incluir un empleado ficticio: (esto es fundamental para asegurar que haya una respuesta. Si la matriz no está balanceada, el problema no será factible de resolver)
Máquina 1 | Máquina 2 | Máquina 3 | Máquina 4 | |
Empleado 1 | 10 | 7 | 9 | 8 |
Empleado 2 | 7 | 5 | 8 | 9 |
Empleado 3 | 9 | 8 | 10 | 7 |
Ficticio | 0 | 0 | 0 | 0 |
Xij =¿Se debe asignar el operario i a la máquina j? ¿Sí o no?
Existen dos números cuyas propiedades hacen que puedan representar estas respuestas son el 1 y el 0, debido a que todo número multiplicado por 1 da el mismo número. Entonces el 1 se puede reemplazar por la respuesta Sí y como todo número multiplicado por cero da cero entonces se puede reemplazar por la respuesta No. Así por ejemplo: 10X11 + 7X12 + 9X13 + 8X14
Representa el tiempo sumado que requiere el empleado 1 en operar las máquinas, pero solo una variable de las tres anteriores puede tomar el valor de Sí, o sea de 1 las demás tendrán que tomar el valor de 0, y eso es debido a que el empleado 1 solo puede ser asignado a una máquina, lo que significaría que el tiempo que utilice el empleado1 puede ser ya sea de "10" de "7" o de "9". o de “8”.
Con base en esto podemos formular la función objetivo:
Min Z = 10X11 + 7X12 + 9X13 + 8X14 + 7X21 + 5X22 + 8X23 + 9x24 +9X31 + 8X32 + 10X33 + 7x34
Restricciones:
Como cada empleado solo puede estar asignado a una máquina.
X11 + X12 + X13 + X14 = 1 X21 + X22 + X23 + X24 = 1 X31 + X32 + X33 + X34 = 1 X41 + X42 + X43 + X44 = 1
Y como cada máquina solo puede tener un operario asignado... X11 + X21 + X31 + X41 = 1 X12 + X22 + X32 + X42 = 1 X13 + X23 + X33 + X43 = 1 X14 + X24 + X34 + X44 = 1 Xij = 1 o 0 para toda i,j.
Al resolver utilizando Software, por ejemplo el Solver del Excel, la respuesta que se obtiene es la siguiente:
Máquina 1 | Máquina 2 | Máquina 3 | Máquina 4 | |
Empleado 1 | 0 | 0 | 1 | 0 |
Empleado 2 | 0 | 1 | 0 | 0 |
Empleado 3 | 0 | 0 | 0 | 1 |
Ficticio | 1 | 0 | 0 | 0 |
Esto significa que al empleado 1 queda asignado a la máquina 3, el empleado 2 a la 2, el empleado 3 a la 4 y el empleado Ficticio a la 1 (es decir, es la que sobra).
Ejemplo 14
Doc Concilman reúne a un equipo de relevos para el relevo de 400m. Cada nadador debe nadar 100m de brazada de pecho, dorso, mariposa o estilo libre. Doc cree que cada nadador obtendrá los tiempos en segundos dados en la tabla. ¿Qué nadador debe nadar cada estilo?
Libre | Pecho | Mariposa | Dorso | |
Gary | 54 | 54 | 51 | 53 |
Mark | 51 | 57 | 52 | 52 |
Jim | 50 | 53 | 54 | 56 |
Chat | 56 | 54 | 55 | 53 |
Xij = ¿Asignar el nadador i al estilo j? Sí o no?
Planteamiento: El Modelo de Programación Lineal será un modelo binario.
1 Se asigna al asigna en nadador i a la tarea j Xij = 0 No se asigna
Min Z= 54X11 + 54 X12 + 51X13 +53X14 +... + 55X43 +53X44
s.a. X11 + X12 +X13 +X14= 1 X21 + X22 +X23 +X24= 1 X31 + X32 +X33 +X34= 1 NADADORES X41 + X42 +X43 +X44= 1
X11 + X21 +X31 +X41= 1 X12 + X22 +X32 +X41= 1 X13 + X23 +X33 +X43= 1 ESTILOS X14 + X24 +X34 +X44= 1 Xij>=0
APLICACIÓN DEL MÉTODO HÚNGARO
1. Obtener matriz de costos.
2. Realizar la reducción por renglón, restando el número más pequeño del renglón a cada renglón, después realizar lo mismo para las columnas.
3. Determinación del número de líneas necesario para hacer una asignación óptima.
El número de renglones es 4, y es mayor que el número de columnas que cubren los ceros, por lo tanto realizaremos el paso 5
5. Como el número de líneas es menor que el número de renglones, modificaremos la matriz de la siguiente manera: Restaremos el número no cubierto más pequeño al número que se encuentra en intersección de las líneas. Sumaremos el número no cubierto más pequeño a los números que se encuentran en la intersección de las líneas.
RESULTADOS
Como el número de renglones es igual al número de Líneas que cubren los ceros, podemos hacer una asignación óptima.
INTERPRETACIÓN DE RESULTADOS.
De esta forma, se observa que la mejor asignación de nadadores a estilos según sus tiempos, es la siguiente:
Referencias
(1) * Autor: Anónimo. Polilibros del IPN. Investigación de Operaciones. Capítulo 4. Aplicaciones de la Programación Lineal. 4.3.3. Modelo de asignación pura. https://web.archive.org/web/20110412021426/http://148.204.211.134/polilibros/portal/Polilibros/P_Terminados/Investigacion_de_Operaciones_Careaga/Common/IO-modulo4-asignacionpura.htm
(2) * Autor: Dr. Franco Bellini. Investigación de Operaciones. Curso de la Escuela de Administración y Contaduría Universidad Santa María, Tema 4: Modelos de transporte, Caracas-Venezuela, julio de 2004. http://www.investigacion-operaciones.com/modelo_de_transporte.htm
(3) * Autor: Anónimo. Medelo de Asignación https://web.archive.org/web/20110818154354/http://antiguo.itson.mx/dii/elagarda/apagina2001/PM/asignacion.html#define
(4) * Hamdy A. Taha. (2004). Investigación de operaciones. México. Pearson Educación.
(5) * Wayne L. Winston. (2005) Investigación de operaciones y aplicación de algoritmos, 4.ª ed.. México, Ed Thomson.
(6) * Tutorial del Método de asignación http://www.ingenieria-industrial.net/index.php?accion=1&id=73 Ingeniería-industrial.net] Tutorial del Método de Asignación