From 8cd110c9900394da8848cdc597cc847d0cc9e556 Mon Sep 17 00:00:00 2001 From: odow Date: Mon, 28 Apr 2025 15:03:05 +1200 Subject: [PATCH] Use JuMP.SkewSymmetricMatrixSpace in variable_bus_voltage(::AbstractWRMModel --- src/form/wrm.jl | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) 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