我正在尝试为一个大型线性程序构建一组约束,我计划在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
}
}
}
}
}
}
我将不胜感激任何帮助或建议!谢谢!