2013-08-28 18 views
-1

我试图实现一个大的线性模型,但是我有一个问题 来添加更多的变量/约束。例如,我想补充的约束,而不在基质(f.con)加入 其他零(0),如在例如:在使用R的线性编程中添加1000个约束lpSolve

library(linprog) 
f.obj <- c(3,24,79,140,230,306,338, 
      26,78,145,226,309,336,354, 
      146,250,312,364,417,496,508, 
      314,382,424,472,503,525,548) 
f.con <- matrix (c(1,1,1,1,1,1,1, 0,0,0,0,0,0,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0,0, 
        0,0,0,0,0,0,0, 1,1,1,1,1,1,1, 0,0,0,0,0,0,0, 0,0,0,0,0,0,0, 
        0,0,0,0,0,0,0, 0,0,0,0,0,0,0, 1,1,1,1,1,1,1, 0,0,0,0,0,0,0, 
        0,0,0,0,0,0,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0,0, 1,1,1,1,1,1,1)    
       ,nrow=4, byrow=TRUE) 
f.rhs <- c(10,22,8,30) 
f.dir <- c("<=", "<=","<=","<=") 
lp ("max", f.obj, f.con, f.dir, f.rhs) 

n<-lp ("max", f.obj, f.con, f.dir, f.rhs)$solution 
n 

谢谢!

+0

字符串“我”不是英语中的单词。 – 2013-08-28 18:42:30

回答

0

我想你这样的事情之后是:

makef.con <- function(f.obj,f.dir){ 
    k  <- length(f.dir) 
    Nconst <- length(f.obj)/k 
    Diag <- diag(k) 
    c(matrix(rep(Diag, each = Nconst), nrow = k, byrow = TRUE)) 
} 
all(makef.con(f.obj,f.dir) == f.con) 
[1] TRUE 

但说实话,我不熟悉的你在做什么,所以你可能需要这样它概括玩这个根据您的需要