Programación de la producción con costo mínimo: solución de un problema de asignación con lpSolve en R

El problema de asignación es un problema clásico en el programa lineal. Si, por ejemplo, tiene n trabajos que deben fabricarse durante el próximo turno (en una planta de fabricación) y tiene m máquinas para producir estas tareas, entonces desea asignar los trabajos a las máquinas de una manera óptima. En este sentido, es posible que desee reducir los costos de fabricación incurridos; por lo tanto, desea encontrar el plan de producción con un costo óptimo. La restricción, en este ejemplo, es que cada máquina solo puede realizar un trabajo durante el próximo turno. Todos los trabajos deben programarse, es decir, asignarse a una máquina.

El problema se puede plantear en un modelo matemático. A continuación, se indica el problema para un caso en el que hay 3 trabajos y 3 máquinas. El costo de producir el trabajo 1 en la máquina 1 USD pero 2 USD cuando se produce en la máquina 2. El trabajo 2 cuesta 2 USD en la máquina 1 y 3 USD en la máquina 2. El trabajo 3 cuesta 5 USD en la máquina 1 y 1 USD en la máquina 2. La máquina 3 puede realizar el trabajo 1 por 2 USD y los trabajos 2 y 3 por 3 USD respectivamente.

El modelo matemático para esto tiene el siguiente aspecto:

Se puede modelar y resolver este problema con el paquete lpSolve en R, un paquete para programación lineal (para problemas con variables enteras y continuas). La función lp.assign puede hacer el trabajo:

library(lpSolve)

# preparar la matriz de costos
cost.mat <- rbind(c(1,2,3),
                     c(2,3,3),
                     c(5,1,3))

# modelar y resolver con lp.assign
solution <- lp.assign(cost.mat=cost.mat,
                      direction="min")

lp.assign es una función diseñada específicamente para resolver el problema de asignación. El problema de asignación, por definición, es un problema en el que todas las variables de decisión son variables enteras. Por lo tanto, no se necesita decirle específicamente a lp.assign que las variables de decisión deben considerarse variables enteras.

Observe los costos mínimos que a los que enfrentar durante el próximo turno:

solution
## Success: the objective function is 5

Ahora observe el plan de producción de costo mínimo para el próximo turno:

solution$solution
##      [,1] [,2] [,3]
## [1,]    1    0    0
## [2,]    0    0    1
## [3,]    0    1    0

El problema del transporte es otro problema clásico. Puede observar un ejemplo de resolución en R – aquí: Resolviendo el problema de transporte de Bronson con lpSolve, usando lp.transport.

Editado y traducido por: Ricardo Caballero, M.Sc.

You May Also Like

Leave a Reply

Leave a Reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.