从 R 中的单纯形优化中获取目标向量

get target vector from simplex optimisation in R

我开始使用 R 使用库中的单纯形函数来解决 LP 问题 ("boot")。当我尝试以下代码时,我只将目标向量作为字符串而不是作为向量。

library("boot") 
# This example is taken from Exercise 7.5 of Gill, Murray and Wright (1991).
enj <- c(200, 6000, 3000, -200)
fat <- c(800, 6000, 1000, 400)
vitx <- c(50, 3, 150, 100)
vity <- c(10, 10, 75, 100)
vitz <- c(150, 35, 75, 5)
j<-simplex(a = enj, A1 = fat, b1 = 13800, A2 = rbind(vitx, vity, vitz),
b2 = c(600, 300, 550), maxi = TRUE)
xx<-(j["soln"])
print(xx)

由此得到以下输出

$soln
x1   x2   x3   x4 
0.0  0.0 13.8  0.0 

但是,这不是矢量对象,所以我无法使用 x[1] 获取第一个维度的元素。你能帮我把结果作为向量吗?

您的变量 xx 是一个列表,因此很容易 return 其中的特定值。

例如,如果你想要x1,你可以这样做:

xx[["soln"]]["x1"]xx[[1]][1]

但是如果你想把xx转换成一个向量,你可以这样做:

xx2 <- unlist(xx)

然后你有一个向量:

> xx2
soln.x1 soln.x2 soln.x3 soln.x4 
    0.0     0.0    13.8     0.0 

> is.vector(xx2)
[1] TRUE

如果您不想保留向量中每个元素的名称,请将参数 use.names 设为 FALSE :

> xx2 <- unlist(xx, use.names = FALSE)
> xx2
[1]  0.0  0.0 13.8  0.0

> is.vector(xx2)
[1] TRUE