我只是试图在R脚本中制定dea(数据开发分析)。 LP的格式如下: Snapshot of the model
虽然我不知道如何设置" free-in-sign变量"在包" Rglpk"(我曾经在R中解决LP)中,我设置了两个变量来表示模型中的u1和u2。
u1 = u1a - u1b ; u2 = u2a - u2b
我的解码此模型的代码如下所示:
f.rhs <- c(rep(0,1,2*N),1)
f.dir <- c(rep("<=",1,2*N),"==")
aux1 <- cbind(-1*X,Z,0*Y,1,-1,0,0)
aux2 <- cbind(0*X,-1*Z,Y,0,0,1,-1)
for (i in 1:N) {
f.obj <- c(rep(0,1,s),as.numeric(Z[i,]),as.numeric(Y[i,]),1,-1,1,-1)
f.con <- rbind(aux1,aux2,c(as.numeric(X[i,]),as.numeric(Z[i,]),rep(0,1,m+4)))
results <- Rglpk_solve_LP(f.obj,f.con,f.dir,f.rhs,max=TRUE)
}
但我没有得到任何可接受的结果,也不知道我的配方是否有任何问题。这个模型的结果应该是0~1,但我得到了一个1.033,其中一个结果是负重。
有人可以指导我如何解决这个问题吗?谢谢!
答案 0 :(得分:1)
Rglpk的文档显示有一个可用的绑定参数。
使用它! (并且不要分开)
直接来自文档(第6页,共7页;版本0.6-2):
## Same as before but with bounds replaced by
## -Inf < x_1 <= 4
## 0 <= x_2 <= 100
## 2 <= x_3 < Inf
bounds <- list(lower = list(ind = c(1L, 3L), val = c(-Inf, 2)),
upper = list(ind = c(1L, 2L), val = c(4, 100)))
Rglpk_solve_LP(obj, mat, dir, rhs, bounds, types, max)