【发布时间】:2018-12-31 04:38:40
【问题描述】:
我正在尝试建立一个关于商品如何在各州之间移动的线性程序。我正在与 R studio 合作,使用 lpSolve 包。我对 R 很陌生,所以请原谅基本语言!但是我查看了帮助文件,似乎无法找出问题所在。
国家既是“供应者”(m)又是“需求者”(n)。我想要一个运输单位的矩阵,这意味着我的矩阵的对角线元素将为 0。需求必须等于供给,需求首先由各州自己的供应满足,然后是其他州的过剩供应。我的需求和供应总量是相等的。目标函数是成本矩阵——我认为这只是一个典型的“运输问题”。有 5 个州,为了方便起见,我刚刚给出了“供应过剩”和“需求未满足”的数据,即不包括供应约束必须等于需求。对于等于供给/需求总量,只有两组约束。
我在 Sallan 等人的 Modeling and Solveving Linear Programming with R 中找到了以下代码。
obj.fun <- c(0, 1706.7028, 1916.6580, 2136.8103, 2022.6844, 1700.9534, 0,
1975.2873, 2274.0058, 1351.2115, 1909.6172, 1973.9959, 0, 310.3474,
851.0575, 2129.6639, 2272.6088, 310.2418, 0, 1101.0733, 2013.8803,
1348.1568, 849.2942, 1099.4156, 0)
m <- 5
n <- 5
constr <- matrix (0 , n +m , n*m )
for(i in 1:m){
for(j in 1:n){
constr[i, n*(i-1) + j] <- 1
constr[m+j, n*(i-1) + j] <- 1
}
}
constr.dir <- c(rep("=",m ), rep("=", n))
rhs <- c(0, 0, 0, 528534585, 5181690936, 2446322302, 412720974,
2851182245, 0 , 0)
prod.trans <- lp ("min", obj.fun, constr, constr.dir, rhs,
compute.sens = TRUE )
prod.trans$obj.val
sol<-matrix (prod.trans$solution, m, n, byrow=TRUE)
prod.trans$duals
但是,当我运行它时,我只得到一个零矩阵:
> prod.trans$obj.val
> NULL
> sol<-matrix (prod.trans$solution, m, n, byrow=TRUE)
> prod.trans$duals
> [1] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
我假设矩阵中的对角线元素不能为 0?
任何建议都非常感谢 - 即使只是指出我在哪里可以获得帮助!
谢谢! F
【问题讨论】:
标签: r matrix linear-programming transport