You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
As discussed in #123 I took a closer look at the opf-optimod.
In doing so, a very small suggestion for improvement came to my mind, which I would like to recommend here (it's not a bug):
The lower and upper bound for the imaginary part of the slack voltage are set to zero in line 453 of grbformulator_ac.py. This is clear and reasonable.
But the upper bound of the real part of the slack voltage is set to bus.Vmax and the lower bound is set to -bus.Vmax in lines 444 & 445. I think a tighter formulation is possible without loss of generality: Analogous to setting the voltage angle at the slack bus to zero in polar coordinates, the real part of the slack voltage can be limited between bus.Vmin <= fvar[bus] <= bus.Vmax. This prevents a "mirrored solution" (--> symmetry during optimization) on the negative side of the real axis, which corresponds to an voltage angle of 180°. Therefore, I suggest to add the following code before line 447: if j == alldata["refbus"]: lbound = bus.Vmin # Modified slack lower bound to prevent a mirrored solution
Furthermore, the quadratic voltage constraint for the slack bus can be omitted.
I assume that this will only bring minor improvements, but I wanted to share the suggestion anyway and put it up for discussion.
The text was updated successfully, but these errors were encountered:
As discussed in #123 I took a closer look at the opf-optimod.
In doing so, a very small suggestion for improvement came to my mind, which I would like to recommend here (it's not a bug):
The lower and upper bound for the imaginary part of the slack voltage are set to zero in line 453 of grbformulator_ac.py. This is clear and reasonable.
But the upper bound of the real part of the slack voltage is set to bus.Vmax and the lower bound is set to -bus.Vmax in lines 444 & 445. I think a tighter formulation is possible without loss of generality: Analogous to setting the voltage angle at the slack bus to zero in polar coordinates, the real part of the slack voltage can be limited between bus.Vmin <= fvar[bus] <= bus.Vmax. This prevents a "mirrored solution" (--> symmetry during optimization) on the negative side of the real axis, which corresponds to an voltage angle of 180°. Therefore, I suggest to add the following code before line 447:
if j == alldata["refbus"]: lbound = bus.Vmin # Modified slack lower bound to prevent a mirrored solution
Furthermore, the quadratic voltage constraint for the slack bus can be omitted.
I assume that this will only bring minor improvements, but I wanted to share the suggestion anyway and put it up for discussion.
The text was updated successfully, but these errors were encountered: