-1

我正在尝试实现一个大的线性模型,但是在添加更多变量/约束时遇到了问题。例如,我想添加约束而不在矩阵 (f.con) 中添加其他零 (0),如示例中所示:

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

谢谢!

4

1 回答 1

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

虽然老实说,我不熟悉你在做什么,所以你可能需要玩这个,以便它概括你的需求

于 2013-08-28T18:39:10.387 回答