问题描述
我正在尝试使用 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
看看是否能解决超时问题。