Esta aplicación de la programación lineal busca asignar personal —operadores, abogados, médicos, ingenieros, etc.— a una tarea, actividad, proyecto, etc. En la solución cada persona debe estar asignada a alguna actividad y cada actividad debe estar asignada a una persona.
Consideremos el siguiente ejemplo:
Un pequeño taller realiza 3 operaciones. El supervisor desea asignar a un operador a cada operación de tal manera que se aproveche mejor el tiempo.
Las operaciones son fresado, rectificado y ensamble, el tiempo en minutos que tarda cada operador en realizar dichas operaciones son:
- Operador 1: 32, 19 y 29, respectivamente
- Operador 2: 26, 25 y 20, respectivamente
- Operador 3: 36, 28 y 26, respectivamente
Paso 1. Ordenar la información
La información relevante se puede ordenar en una tabla.
Paso 2. Identificar el objetivo y las restricciones
El objetivo es asignar operaciones a los operadores de tal manera que se aproveche mejor el tiempo. El objetivo es minimizar el tiempo total de la asignación.
Se identifican 2 grupos de 3 restricciones cada uno. El primer grupo de restricciones establece que cada operador debe asignarse a una operación:
- El operador 1 debe ser asignado a una operación
- El operador 2 debe ser asignado a una operación
- El operador 3 debe ser asignado a una operación
El segundo grupo de restricciones establece que cada operación debe asignarse a un operador:
- La operación fresado debe ser asignada a un operador
- La operación rectificado debe ser asignada a un operador
- La operación ensamble debe ser asignada a un operador
Paso 3. Definir variables de decisión
Lo que se desea determinar es qué operador se asigna a cada operación. Las variables de decisión se definen como:
Sean las variables de decisión tal que si el operador i se asigna a la operación j y en otro caso, para i=1, 2 y 3 y j=1, 2 y 3. Podemos usar la siguiente notación:
Paso 4. Definir la función objetivo
Ahora podemos definir la función objetivo en función de las variables de decisión que se han adoptado:
Los coeficientes de la función objetivo son los tiempos que cada operador requiere para completar cada una de las tres operaciones. Por ejemplo, el primer término nos dice que el operador 1 (i=1) tarda 32 minutos en realizar la operación de fresado (j=1), el quinto término nos dice que el operador 2 (i=2) tarda 25 minutos en completar la operación de rectificado (j=2) y el noveno término significa que el operador 3 (i=3) requiere de 26 minutos para finalizar la operación de ensamble (j=3).
Paso 5. Definir las restricciones
El primer grupo de restricciones determina que cada operador debe ser asignado a una operación. Dicho de otro modo, cada operador puede realizar solamente una de las operaciones.
El operador 1 (i=1) debe ser asignado a una de las tres operaciones (j=1, 2 y 3):
El operador 2 (i=2) debe ser asignado a una de las tres operaciones (j=1, 2 y 3):
El operador 3 (i=3) debe ser asignado a una de las tres operaciones (j=1, 2 y 3):
Para escribir el segundo grupo de tres restricciones utilizamos un razonamiento semejante: cada operación debe asignarse a un único operador.
La operación fresado (j=1) debe ser asignada a un único operador (i=1, 2 y 3):
La operación rectificado (j=2) debe ser asignada a un único operador (i=1, 2 y 3):
La operación ensamblado (j=3) debe ser asignada a un único operador (i=1, 2 y 3):
Paso 6. Establecer la no negatividad
Este paso es ineludible en los problemas de programación lineal:
Pero es importante señalar que las variables de decisión son mayores o iguales a cero por definición debido a que son binarias:
Es decir, solamente pueden tomar dos valores: 0 o 1.
Paso 7. Presentar el modelo completo
Sean las variables de decisión:
Sujeto a:
La solución obtenida con Solver en Excel es la siguiente:
El tiempo mínimo para realizar las tres operaciones es de 71 minutos, se logra asignando al operador 1 a rectificado, al operador 2 a fresado y el operador 3 a ensamblado.