提高R中构建大型稀疏矩阵的速度

时间:2015-05-28 15:51:47

标签: r performance indexing nested-loops linear-programming

我正在尝试为一个大型线性程序构建一组约束,我计划在R中使用Gurobi。下面的代码创建了一个带有其中一个约束的矩阵,但运行速度非常慢。我正在寻找加快速度的方法。

现在,每个i和j循环从1到23运行,t循环从1运行到192.jnew循环也从1到23运行。一个循环当前只有1,但我计划把它增加到4或5之后。 d [i,j]是大小为23x23的矩阵。 MaxAirspeed是带有一个条目的向量 - 再次,我将在之后将其增加到4或5。 colfind函数直接位于下方,仅涉及几个算术计算。

colfind <- function(ii,jj,tt,aa,j,t,a) {
  x <- ii*(j*t*a)+jj*(t*a)+tt*(a)+aa
  return(x)
}

这是导致我出现问题的代码。

L <- 101568
time <- 192
ACNum <- 1
Airport <- 23

A <- simple_triplet_zero_matrix(nrow=time*Airport,ncol=2*L)
for (t in 1:time){
  print(t)
  for (j in 1:Airport){
    for (i in 1:Airport){
      timedist <- d[i,j]/MaxAirspeed[a]*4
      for (a in 1:ACNum){
        for (tau in 1:t){
          col <- colfind(i,j,tau,a,Airport,time,ACNum)
          A[(t-1)*Airport+j,col] = 1
        }
        for (jnew in 1:Airport){
          for (tau in 1:t+timedist){
            col <- colfind(j,jnew,tau,a,Airport,time,ACNum)
            A[(t-1)*Airport+j,col] = -1
          }
        }
      }
    }
  }
}

我将不胜感激任何帮助或建议!谢谢!

0 个答案:

没有答案