【问题标题】:lpSolve running for extended period of time without finishinglpSolve 长时间运行而未完成
【发布时间】:2021-06-30 18:52:16
【问题描述】:

我正在尝试使用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。函数要处理的变量太多了吗?或者代码最终会完成运行吗?

【问题讨论】:

  • “延长时间”到底有多长?
  • LpSolve 不是最快的 LP 求解器。但是,运输问题是网络问题,因此使用网络求解器可能会更快。

标签: r linear-programming lpsolve


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-06
    • 2021-01-24
    • 1970-01-01
    • 2021-05-05
    • 2017-08-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多