成本最小的生产计划-使用R中的lpSolve解决分配问题

赋值问题是线性程序中的经典问题。例如,如果在即将到来的轮班中(在制造工厂中)有n个需要制造的工作,并且有m台机器来执行这些任务,那么您想以最佳方式将这些工作分配给机器。也就是说,您可能希望减少制造成本,因此您希望找到成本最佳的生产计划。在此示例中,约束是每台机器在即将到来的轮班期间只能完成一项工作。所有作业都需要安排,即分配给机器。

可以在数学模型中说明问题。下面说明了存在3个作业和3台机器的情况下的问题。在机器1上生产作业1的成本,而在机器2上生产作业2的成本。作业2在机器1上的成本为2 USD,在机器2上的成本为3 USD。在机器1上,作业3的成本为5 USD,在机器2上的成本为1 USD。机器3可以分别以2美元执行作业1,并以3美元执行作业2和3。

为此的数学模型如下所示:

我们可以使用R中的lpSolve程序包来建模和解决此问题,R程序包是用于线性编程的程序包(用于连续和整数问题)。 lp.assign函数可以完成以下任务:

library(lpSolve)

#准备成本矩阵
cost.mat <- rbind(c(1,2,3),
                     c(2,3,3),
                     c(5,1,3))

#模型并使用lp.assign解决
solution <- lp.assign(cost.mat=cost.mat,
                      direction="min")

lp.assign是专门用于解决分配问题的功能。根据定义,分配问题是所有决策变量都是整数变量的问题。因此,我们不需要专门告诉lp.assign决策变量必须视为整数变量。

让我们看看在即将到来的转变中我们必须面对的最低成本:

solution
## Success: the objective function is 5

让我们看看即将发生的转变的最低成本生产计划:

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

运输问题是另一个经典问题。您可以看到我在R中解决了该问题–此处:使用lp.transport使用lpSolve解决Bronson的运输问题。

Leave a Reply

发表回复

您的电子邮箱地址不会被公开。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

Close

其他操作