Is it possible to avoid for loop for the code given below.
@expression(JSTEP, Inj[i=1:n, j=1:s], Pg[i,j] - Pdmax[i,j] + PD[i,j] - PC[i,j])
for i = 1:r
f = from[i]
t = to[i]
for k =1:s
Inj[f,k] = Inj[f,k] -f₀[i,k]
Inj[t,k] = Inj[t,k] + f₀[i,k]
for j =1:nm_new[i]
Inj[f,k] = Inj[f,k] - fnew[i,k,j]
Inj[t,k] = Inj[t,k] + fnew[i,k,j]
end
end
end
@constraint(JSTEP, [i=1:n, j=1:s], Inj[i,j]==0)
gdalle
2
Why do you want to avoid it, because it is slow? If so, check out the performace tips on building expressions
Ok I will check the performance tips.
1 Like
odow
4
I can’t run your code because you haven’t provided a reproducible example. But this might help point you in the right direction:
@expression(JSTEP, Inj[i=1:n, j=1:s], Pg[i,j] - Pdmax[i,j] + PD[i,j] - PC[i,j])
@expression(JSTEP, sum_fnew[i=1:r, k=1:s], sum(fnew[i,k,j] for j in nm_new[i]) + f₀[i,k])
for i in 1:r, k in 1:s
add_to_expression!(JSTEP, Inj[from[i], k], -1, sum_fnew[i, k])
add_to_expression!(JSTEP, Inj[to[i], k], sum_fnew[i, k])
end
@constraint(JSTEP, [i=1:n, j=1:s], Inj[i, j] == 0)