R 中有错误的单纯形函数的基本示例
A basic example of the simplex function in R with errors
早上好,
我有一个优化问题的问题,我无法在 R 中解决,但在 Excel:
我想优化以下情况(material和人员的交通):
航空公司 x1 可以运输 50 吨 material 和 500 人
航空公司 x2 可以运输 150 吨 material 和 250 人
50x1 + 150x2 >= 900 -> 运输 material 分钟。 900
500x1 + 250x2 >= 2500 -> 人员运输最小值。 2500
x1 是一家航空公司,每次航班的航班费用为 2500
x2 是一家航空公司,每次航班的航班费用为 3500
成本应该最小化!
x1>=0
x2>=0
这是我在 R 中的解决方案(包 "boot" 中的函数单纯形):
library("boot")
a <- c(2500, 3500)
A2 <- matrix(c(50, 150, 500, 250), ncol=2, nrow=2, byrow=TRUE)
b2 <- c(900, 2500)
simplex(a, A2 = A2, b2 = b2, maxi=FALSE)
我收到以下错误:
Fehler in pivot(tableau, prow, pcol) :
NAs nicht zugelassen in Teilbereichszuweisungen
Excels Solver 给出了确切的解决方案:
x1 = 2.4 和 x2 = 5.2
我在 R 中的错误在哪里?我必须使用参数 A2 和 b2 因为 >= ...
感谢您的帮助!
只是一个简短的扩展:
我使用以下语法使用包 "linprog" 中的函数 "solveLP" 解决了给定的问题:
solveLP(cvec = a, bvec = b, Amat = A,
maximum=FALSE, const.dir=c(">=",">="))
和:
A <- matrix(c(-50,-150,-500,-250),nrow=2,ncol=2,byrow=TRUE)
a <- c(2500, 3500)
b <- c(-900, -2500)
solveLP(a,b,A,maximum=FALSE)
仍然想知道为什么单纯形函数给我这个错误?
我不知道确切的原因(所以这不是必要的解决方案)。但是我知道当你用 A1
和 b1
设置上限时错误就解决了,即使 b1
是一个巨大的值。
例如;
simplex(a, A1 = c(1, 1), b1 = 1.0E+12, A2 = A2, b2 = b2, maxi = FALSE)
早上好, 我有一个优化问题的问题,我无法在 R 中解决,但在 Excel:
我想优化以下情况(material和人员的交通):
航空公司 x1 可以运输 50 吨 material 和 500 人
航空公司 x2 可以运输 150 吨 material 和 250 人
50x1 + 150x2 >= 900 -> 运输 material 分钟。 900
500x1 + 250x2 >= 2500 -> 人员运输最小值。 2500
x1 是一家航空公司,每次航班的航班费用为 2500 x2 是一家航空公司,每次航班的航班费用为 3500 成本应该最小化!
x1>=0
x2>=0
这是我在 R 中的解决方案(包 "boot" 中的函数单纯形):
library("boot")
a <- c(2500, 3500)
A2 <- matrix(c(50, 150, 500, 250), ncol=2, nrow=2, byrow=TRUE)
b2 <- c(900, 2500)
simplex(a, A2 = A2, b2 = b2, maxi=FALSE)
我收到以下错误:
Fehler in pivot(tableau, prow, pcol) :
NAs nicht zugelassen in Teilbereichszuweisungen
Excels Solver 给出了确切的解决方案: x1 = 2.4 和 x2 = 5.2
我在 R 中的错误在哪里?我必须使用参数 A2 和 b2 因为 >= ... 感谢您的帮助!
只是一个简短的扩展: 我使用以下语法使用包 "linprog" 中的函数 "solveLP" 解决了给定的问题:
solveLP(cvec = a, bvec = b, Amat = A,
maximum=FALSE, const.dir=c(">=",">="))
和:
A <- matrix(c(-50,-150,-500,-250),nrow=2,ncol=2,byrow=TRUE)
a <- c(2500, 3500)
b <- c(-900, -2500)
solveLP(a,b,A,maximum=FALSE)
仍然想知道为什么单纯形函数给我这个错误?
我不知道确切的原因(所以这不是必要的解决方案)。但是我知道当你用 A1
和 b1
设置上限时错误就解决了,即使 b1
是一个巨大的值。
simplex(a, A1 = c(1, 1), b1 = 1.0E+12, A2 = A2, b2 = b2, maxi = FALSE)