diff --git a/src/form/wrm.jl b/src/form/wrm.jl index 918468d8..e9449332 100644 --- a/src/form/wrm.jl +++ b/src/form/wrm.jl @@ -50,7 +50,7 @@ function variable_bus_voltage(pm::AbstractWRMModel; nw::Int=nw_id_default, bound end WI = var(pm, nw)[:WI] = JuMP.@variable(pm.model, - [1:length(bus_ids), 1:length(bus_ids)], base_name="$(nw)_WI", start=0.0 + [1:length(bus_ids), 1:length(bus_ids)] in JuMP.SkewSymmetricMatrixSpace(), base_name="$(nw)_WI", start=0.0 ) if report sol(pm, nw)[:WI] = WI @@ -78,13 +78,16 @@ function variable_bus_voltage(pm::AbstractWRMModel; nw::Int=nw_id_default, bound for (i,j) in ids(pm, nw, :buspairs) wi_idx = lookup_w_index[i] wj_idx = lookup_w_index[j] - if bounded JuMP.set_upper_bound(WR[wi_idx, wj_idx], wr_max[(i,j)]) JuMP.set_lower_bound(WR[wi_idx, wj_idx], wr_min[(i,j)]) - - JuMP.set_upper_bound(WI[wi_idx, wj_idx], wi_max[(i,j)]) - JuMP.set_lower_bound(WI[wi_idx, wj_idx], wi_min[(i,j)]) + if wi_idx <= wj_idx + JuMP.set_upper_bound(WI[wi_idx, wj_idx], wi_max[(i,j)]) + JuMP.set_lower_bound(WI[wi_idx, wj_idx], wi_min[(i,j)]) + else + JuMP.set_upper_bound(WI[wj_idx, wi_idx], -wi_min[(i,j)]) + JuMP.set_lower_bound(WI[wj_idx, wi_idx], -wi_max[(i,j)]) + end end end