lpSolve 长时间运行而不完成

问题描述

我正在尝试使用 lpSolve::lp.transport 优化 R 中的运输问题。我的代码如下:

library(lpSolve)

cost <- matrix(rep(100,34968),nrow = 372)
row.signs <- rep("<=",372)
row.RHS <- c(t(vehicleGVWR2[,2]))
col.signs <- rep(">=",94)
col.RHS <- c(t(branchGVWR[,2]))

lptrans <- lp.transport(cost,"min",row.signs,row.RHS,col.signs,col.RHS)

成本矩阵在每个值上都是“100”,因为分配成本被认为可以忽略不计/每个组合都相同。

成本矩阵是 372x94。这是函数要处理的太多变量吗?还是代码最终会完成运行?

解决方法

您应该发布 branchGVWR 和 branchGVWR2 向量,以便我们进行测试。但是,如果没有这些,由于您的所有成本系数都完全相等,因此问题解决方案可能会严重退化。所以求解器正在从一个解决方案移动到另一个解决方案,其中解决方案总是相等的。您可以尝试为每个成本系数添加一个随机 epsilon 值:

cost <- matrix(rep(100,34968),nrow = 372)
cost <- abs(rnorm(34968)) + cost

看看是否能解决超时问题。