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)

仍然想知道为什么单纯形函数给我这个错误?

我不知道确切的原因(所以这不是必要的解决方案)。但是我知道当你用 A1b1 设置上限时错误就解决了,即使 b1 是一个巨大的值。

例如;
simplex(a, A1 = c(1, 1), b1 = 1.0E+12, A2 = A2, b2 = b2, maxi = FALSE)