2017-04-26 25 views
0

我只是試圖在R腳本中制定dea(數據開發分析)。和LP在以下格式: Snapshot of the model如何在線性規劃中制定「自由符號變量」?

雖然我不知道如何設置「自由在-SIGN變量」中包「Rglpk」(這是我用來解決在R中的LP),我設置增加兩個變量來表示模型中的u1和u2。

u1 = u1a - u1b ; u2 = u2a - u2b 

而我的R代碼裏面解決這個模型如下圖所示:

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

Rglpk的文檔顯示有一個可用的邊界參數

使用它! (不要分裂)

  • 雖然分VAR的方法應該在一般的工作(我沒有檢查你的代碼),這是一個不錯的辦法(雙打變量的數量;至少是可能的數值不穩定性對基於IPM求解器)和更直接的人是首選
    • 由於GLPK是單純爲基礎(我認爲這是一個沒有國家的最先進的IPM過,但單純很可能默認)有一個很有可能存在這些邊界的更直接處理,因此,使用它(通過使用邊界參數)
    • 定義變量爲f稀土元素在這種情況下是指:設置這些界限到-INF,INF

東西直接從文檔(第7頁6;版本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)