Skip to content

Commit baf2ec5

Browse files
committed
update JuMP expressions for Electa-Git#53
1 parent 0f44c7e commit baf2ec5

File tree

7 files changed

+54
-52
lines changed

7 files changed

+54
-52
lines changed

Project.toml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ PowerModelsDistribution = "d7431456-977f-11e9-2de3-97ff7677985e"
2020
Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
2121
SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b"
2222
Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"
23+
TestEnv = "1e6cf692-eddd-4d53-88a5-2d735e33781b"
2324

2425
[compat]
2526
CSV = "0.10"
@@ -28,12 +29,13 @@ Distributions = "0.22.3 - 0.24.14, 0.25"
2829
ForwardDiff = "~0.10.18"
2930
InfrastructureModels = "~0.6, ~0.7"
3031
JSON = "~0.18, ~0.19, ~0.20, ~0.21"
31-
JuMP = "1"
32+
JuMP = "1.23.2"
3233
LoggingExtras = "~0.4"
3334
Optim = "~1.2.0, 1.7"
3435
Polynomials = "~2.0.17, 3"
35-
PowerModelsDistribution = "~0.11, ~0.12, ~0.13, ~0.14, ~0.15"
36+
PowerModelsDistribution = "~0.11, ~0.12, ~0.13, ~0.14, ~0.15, ~0.16"
3637
SpecialFunctions = "~1.5.1, ~1.6, ~1.7, ~1.8, ~2.0"
38+
TestEnv = "1.102.0"
3739
julia = "1.6 - 1.11"
3840

3941
[extras]

docs/src/measurements.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ respectively through:
8484
\tan(\text{cax}) &= \frac{\text{cix}}{\text{crx}}
8585
\end{eqnarray}
8686
```
87-
These are non-linear equality constraints, modeled using `@NLconstraint`.
87+
These are non-linear equality constraints, modeled using `@constraint`.
8888

8989
### Fraction
9090

@@ -96,7 +96,7 @@ in the ACP formulation, respectively through:
9696
\text{cix} &= \frac{\text{px}\cdot\sin(\text{va})-\text{qx}\cdot\cos(\text{va})}{\text{vm}}
9797
\end{eqnarray}
9898
```
99-
These are non-linear equality constraints, modeled using `@NLconstraint`.
99+
These are non-linear equality constraints, modeled using `@constraint`.
100100

101101
### Multiplication
102102

@@ -120,7 +120,7 @@ measurements in the ACR formulation, respectively through:
120120
\text{cix} &= \frac{\text{px}\cdot\text{vi}-\text{qx}\cdot\text{vr}}{\text{vr}^{2}+\text{vi}^{2}} \\
121121
\end{eqnarray}
122122
```
123-
These are non-linear equality constraints, modeled using `@NLconstraint`.
123+
These are non-linear equality constraints, modeled using `@constraint`.
124124

125125
### SquareFraction
126126

@@ -132,7 +132,7 @@ formulation, through:
132132
\end{equation}
133133
```
134134
If the conversion is applied to the LinDist3Flow formulation, then vm^2 is replaced by w.
135-
These are non-linear equality constraints, modeled using `@NLconstraint`.
135+
These are non-linear equality constraints, modeled using `@constraint`.
136136

137137
### Square
138138

src/PowerModelsDistributionStateEstimation.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import Logging, LoggingExtras
2121
import Optim
2222
import Polynomials as _Poly
2323
import PowerModelsDistribution
24-
import PowerModelsDistribution: _has_nl_expression #need this to use @smart_constraint
24+
#import PowerModelsDistribution: _has_nl_expression #need this to use @smart_constraint, but not anymore from PMD 0.16
2525
import Random
2626
import SpecialFunctions
2727
import Statistics

src/core/constraint.jl

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -225,12 +225,12 @@ function constraint_mc_voltage_angle_bounds(pm::_PMD.AbstractUnbalancedACRModel,
225225

226226
for (idx,t) in enumerate(_PMD.ref(pm, nw, :bus, i)["terminals"])
227227
if vamin[idx] > -Inf
228-
JuMP.@NLconstraint(pm.model, tan(vamin[idx]) <= vi[t]/vr[t])
228+
JuMP.@constraint(pm.model, tan(vamin[idx]) <= vi[t]/vr[t])
229229
@warn "consrtained minimum angle vamin at $(vamin[idx]) for bus $i to be less than $(atan(vi[t],vr[t]))"
230230
end
231231

232232
if vamax[idx] < Inf
233-
JuMP.@NLconstraint(pm.model, tan(vamax[idx]) >= vi[t]/vr[t])
233+
JuMP.@constraint(pm.model, tan(vamax[idx]) >= vi[t]/vr[t])
234234
@warn "consrtained maximum angle vamax at $(vamax[idx]) for bus $i to be greater than $(atan(vi[t],vr[t]))"
235235
end
236236

@@ -303,9 +303,9 @@ function constraint_mc_current_balance_se(pm::_PMD.IVRENPowerModel, nw::Int, i::
303303
Gs, Bs = _PMD._build_bus_shunt_matrices(pm, nw, terminals, bus_shunts)
304304

305305
ungrounded_terminals = [(idx,t) for (idx,t) in enumerate(terminals) if !grounded[idx]]
306-
307-
for (idx, t) in ungrounded_terminals
308-
JuMP.@NLconstraint(pm.model, sum(cr[a][t] for (a, conns) in bus_arcs if t in conns)
306+
307+
for (idx, t) in ungrounded_terminals
308+
JuMP.@constraint(pm.model, sum(cr[a][t] for (a, conns) in bus_arcs if t in conns)
309309
+ sum(crsw[a_sw][t] for (a_sw, conns) in bus_arcs_sw if t in conns)
310310
+ sum(crt[a_trans][t] for (a_trans, conns) in bus_arcs_trans if t in conns)
311311
==
@@ -314,7 +314,7 @@ function constraint_mc_current_balance_se(pm::_PMD.IVRENPowerModel, nw::Int, i::
314314
- sum(crd[d][t] for (d, conns) in bus_loads if t in conns)
315315
- sum( Gs[idx,jdx]*vr[u] -Bs[idx,jdx]*vi[u] for (jdx,u) in ungrounded_terminals) # shunts
316316
)
317-
JuMP.@NLconstraint(pm.model, sum(ci[a][t] for (a, conns) in bus_arcs if t in conns)
317+
JuMP.@constraint(pm.model, sum(ci[a][t] for (a, conns) in bus_arcs if t in conns)
318318
+ sum(cisw[a_sw][t] for (a_sw, conns) in bus_arcs_sw if t in conns)
319319
+ sum(cit[a_trans][t] for (a_trans, conns) in bus_arcs_trans if t in conns)
320320
==

src/core/measurement_conversion.jl

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@ function create_conversion_constraint(pm::_PMD.AbstractUnbalancedPowerModel, ori
256256

257257
new_var_den = [_PMD.var(pm, nw, msr.denominator, msr.cmp_id)]
258258

259-
JuMP.@NLconstraint(pm.model, [c in conn],
259+
JuMP.@constraint(pm.model, [c in conn],
260260
original_var[id][c]^2 == (sum( n[c]^2 for n in new_var_num ))/
261261
(sum( d[c] for d in new_var_den))
262262
)
@@ -272,7 +272,7 @@ function create_conversion_constraint(pm::_PMD.AbstractUnbalancedPowerModel, ori
272272
end
273273
end
274274

275-
JuMP.@NLconstraint(pm.model, [c in conn],
275+
JuMP.@constraint(pm.model, [c in conn],
276276
original_var[id][c]^2 == (sum( n[c]^2 for n in new_var_num ))/
277277
(sum( d[c]^2 for d in new_var_den))
278278
)
@@ -361,7 +361,7 @@ function create_conversion_constraint(pm::_PMD.AbstractUnbalancedPowerModel, ori
361361
den = _PMD.var(pm, nw, msr.denominator, msr.cmp_id)
362362
end
363363
msr.cmp_type == :branch ? id = (msr.cmp_id, _PMD.ref(pm,nw,:branch,msr.cmp_id)["f_bus"], _PMD.ref(pm,nw,:branch,msr.cmp_id)["t_bus"]) : id = msr.cmp_id
364-
JuMP.@NLconstraint(pm.model,
364+
JuMP.@constraint(pm.model,
365365
original_var[id][c]*den[c] == num[c]
366366
)
367367
end
@@ -385,11 +385,11 @@ function create_conversion_constraint(pm::_PMD.AbstractUnbalancedPowerModel, ori
385385
conn = get_active_connections(pm, nw, msr.cmp_type, msr.cmp_id)
386386

387387
if occursin("r", String(msr.msr_type))
388-
JuMP.@NLconstraint(pm.model, [c in conn],
388+
JuMP.@constraint(pm.model, [c in conn],
389389
original_var[id][c]*den[c] == num[1][c]*cos(num[3][c])+num[2][c]*sin(num[3][c])
390390
)
391391
elseif occursin("i", String(msr.msr_type))
392-
JuMP.@NLconstraint(pm.model, [c in conn],
392+
JuMP.@constraint(pm.model, [c in conn],
393393
original_var[id][c]*den[c] == -num[2][c]*cos(num[3][c])+num[1][c]*sin(num[3][c])
394394
)
395395
else
@@ -417,11 +417,11 @@ function create_conversion_constraint(pm::_PMD.AbstractUnbalancedPowerModel, ori
417417
conn = get_active_connections(pm, nw, msr.cmp_type, msr.cmp_id)
418418

419419
if occursin("cr", string(msr.msr_type))
420-
JuMP.@NLconstraint(pm.model, [c in conn],
420+
JuMP.@constraint(pm.model, [c in conn],
421421
original_var[id][c] == (p[1][c]*v[1][c]+p[2][c]*v[2][c])/(v[1][c]^2+v[2][c]^2)
422422
)
423423
elseif occursin("ci", string(msr.msr_type))
424-
JuMP.@NLconstraint(pm.model, [c in conn],
424+
JuMP.@constraint(pm.model, [c in conn],
425425
original_var[id][c] == (-p[2][c]*v[1][c]+p[1][c]*v[2][c])/(v[1][c]^2+v[2][c]^2)
426426
)
427427
end

src/form/adapted_pmd_constraints.jl

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -65,15 +65,15 @@ function constraint_mc_generator_power_delta_se(pm::_PMD.AbstractUnbalancedIVRMo
6565
vrg = Dict()
6666
vig = Dict()
6767
for c in connections
68-
vrg[c] = JuMP.@NLexpression(pm.model, vr[c]-vr[next[c]])
69-
vig[c] = JuMP.@NLexpression(pm.model, vi[c]-vi[next[c]])
68+
vrg[c] = JuMP.@expression(pm.model, vr[c]-vr[next[c]])
69+
vig[c] = JuMP.@expression(pm.model, vi[c]-vi[next[c]])
7070
end
7171

7272
if bounded
73-
JuMP.@NLconstraint(pm.model, [i in 1:nph], pmin[i] <= vrg[i]*crg[i]+vig[i]*cig[i])
74-
JuMP.@NLconstraint(pm.model, [i in 1:nph], pmax[i] >= vrg[i]*crg[i]+vig[i]*cig[i])
75-
JuMP.@NLconstraint(pm.model, [i in 1:nph], qmin[i] <= -vrg[i]*cig[i]+vig[i]*crg[i])
76-
JuMP.@NLconstraint(pm.model, [i in 1:nph], qmax[i] >= -vrg[i]*cig[i]+vig[i]*crg[i])
73+
JuMP.@constraint(pm.model, [i in 1:nph], pmin[i] <= vrg[i]*crg[i]+vig[i]*cig[i])
74+
JuMP.@constraint(pm.model, [i in 1:nph], pmax[i] >= vrg[i]*crg[i]+vig[i]*cig[i])
75+
JuMP.@constraint(pm.model, [i in 1:nph], qmin[i] <= -vrg[i]*cig[i]+vig[i]*crg[i])
76+
JuMP.@constraint(pm.model, [i in 1:nph], qmax[i] >= -vrg[i]*cig[i]+vig[i]*crg[i])
7777
end
7878
end
7979

@@ -113,7 +113,7 @@ function constraint_mc_current_balance_se(pm::_PMD.AbstractUnbalancedIVRModel, n
113113
ungrounded_terminals = [(idx,t) for (idx,t) in enumerate(terminals) if !grounded[idx]]
114114

115115
for (idx, t) in ungrounded_terminals
116-
JuMP.@NLconstraint(pm.model, sum(cr[a][t] for (a, conns) in bus_arcs if t in conns)
116+
JuMP.@constraint(pm.model, sum(cr[a][t] for (a, conns) in bus_arcs if t in conns)
117117
+ sum(crsw[a_sw][t] for (a_sw, conns) in bus_arcs_sw if t in conns)
118118
+ sum(crt[a_trans][t] for (a_trans, conns) in bus_arcs_trans if t in conns)
119119
==
@@ -122,7 +122,7 @@ function constraint_mc_current_balance_se(pm::_PMD.AbstractUnbalancedIVRModel, n
122122
- sum(crd[d][t] for (d, conns) in bus_loads if t in conns)
123123
- sum( Gs[idx,jdx]*vr[u] -Bs[idx,jdx]*vi[u] for (jdx,u) in ungrounded_terminals) # shunts
124124
)
125-
JuMP.@NLconstraint(pm.model, sum(ci[a][t] for (a, conns) in bus_arcs if t in conns)
125+
JuMP.@constraint(pm.model, sum(ci[a][t] for (a, conns) in bus_arcs if t in conns)
126126
+ sum(cisw[a_sw][t] for (a_sw, conns) in bus_arcs_sw if t in conns)
127127
+ sum(cit[a_trans][t] for (a_trans, conns) in bus_arcs_trans if t in conns)
128128
==
@@ -175,7 +175,7 @@ function constraint_mc_power_balance_se(pm::_PMD.AbstractUnbalancedACRModel, nw:
175175

176176
# pd/qd can be NLexpressions, so cannot be vectorized
177177
for (idx, t) in ungrounded_terminals
178-
cp = _PMD.@smart_constraint(pm.model, [p, q, pg, qg, ps, qs, psw, qsw, pt, qt, pd, qd, vr, vi],
178+
cp = JuMP.@constraint(pm.model, [p, q, pg, qg, ps, qs, psw, qsw, pt, qt, pd, qd, vr, vi],
179179
sum( p[arc][t] for (arc, conns) in bus_arcs if t in conns)
180180
+ sum(psw[arc][t] for (arc, conns) in bus_arcs_sw if t in conns)
181181
+ sum( pt[arc][t] for (arc, conns) in bus_arcs_trans if t in conns)
@@ -189,7 +189,7 @@ function constraint_mc_power_balance_se(pm::_PMD.AbstractUnbalancedACRModel, nw:
189189
)
190190
push!(cstr_p, cp)
191191

192-
cq = _PMD.@smart_constraint(pm.model, [p, q, pg, qg, ps, qs, psw, qsw, pt, qt, pd, qd, vr, vi],
192+
cq = JuMP.@constraint(pm.model, [p, q, pg, qg, ps, qs, psw, qsw, pt, qt, pd, qd, vr, vi],
193193
sum( q[arc][t] for (arc, conns) in bus_arcs if t in conns)
194194
+ sum(qsw[arc][t] for (arc, conns) in bus_arcs_sw if t in conns)
195195
+ sum( qt[arc][t] for (arc, conns) in bus_arcs_trans if t in conns)
@@ -231,7 +231,7 @@ function constraint_mc_power_balance_se(pm::_PMD.AbstractUnbalancedACPModel, nw:
231231

232232
for (idx,t) in ungrounded_terminals
233233
if any(Bs[idx,jdx] != 0 for (jdx, u) in ungrounded_terminals if idx != jdx) || any(Gs[idx,jdx] != 0 for (jdx, u) in ungrounded_terminals if idx != jdx)
234-
cp = JuMP.@NLconstraint(pm.model,
234+
cp = JuMP.@constraint(pm.model,
235235
sum( p[a][t] for (a, conns) in bus_arcs if t in conns)
236236
+ sum(psw[a][t] for (a, conns) in bus_arcs_sw if t in conns)
237237
+ sum( pt[a][t] for (a, conns) in bus_arcs_trans if t in conns)
@@ -249,7 +249,7 @@ function constraint_mc_power_balance_se(pm::_PMD.AbstractUnbalancedACPModel, nw:
249249
)
250250
push!(cstr_p, cp)
251251

252-
cq = JuMP.@NLconstraint(pm.model,
252+
cq = JuMP.@constraint(pm.model,
253253
sum( q[a][t] for (a, conns) in bus_arcs if t in conns)
254254
+ sum(qsw[a][t] for (a, conns) in bus_arcs_sw if t in conns)
255255
+ sum( qt[a][t] for (a, conns) in bus_arcs_trans if t in conns)
@@ -267,7 +267,7 @@ function constraint_mc_power_balance_se(pm::_PMD.AbstractUnbalancedACPModel, nw:
267267
)
268268
push!(cstr_q, cq)
269269
else
270-
cp = _PMD.@smart_constraint(pm.model, [p, pg, ps, psw, pt, pd, vm],
270+
cp = JuMP.@constraint(pm.model, [p, pg, ps, psw, pt, pd, vm],
271271
sum( p[a][t] for (a, conns) in bus_arcs if t in conns)
272272
+ sum(psw[a][t] for (a, conns) in bus_arcs_sw if t in conns)
273273
+ sum( pt[a][t] for (a, conns) in bus_arcs_trans if t in conns)
@@ -280,7 +280,7 @@ function constraint_mc_power_balance_se(pm::_PMD.AbstractUnbalancedACPModel, nw:
280280
)
281281
push!(cstr_p, cp)
282282

283-
cq = _PMD.@smart_constraint(pm.model, [q, qg, qs, qsw, qt, qd, vm],
283+
cq = JuMP.@constraint(pm.model, [q, qg, qs, qsw, qt, qd, vm],
284284
sum( q[a][t] for (a, conns) in bus_arcs if t in conns)
285285
+ sum(qsw[a][t] for (a, conns) in bus_arcs_sw if t in conns)
286286
+ sum( qt[a][t] for (a, conns) in bus_arcs_trans if t in conns)

src/form/reduced_ivr.jl

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -48,12 +48,12 @@ function constraint_mc_generator_power_wye(pm::ReducedIVRUPowerModel, nw::Int, i
4848
crg = _PMD.var(pm, nw, :crg, id)
4949
cig = _PMD.var(pm, nw, :cig, id)
5050

51-
pg = Vector{JuMP.NonlinearExpression}([])
52-
qg = Vector{JuMP.NonlinearExpression}([])
51+
pg = JuMP.NonlinearExpr[]
52+
qg = JuMP.NonlinearExpr[]
5353

5454
for (idx, c) in enumerate(connections)
55-
push!(pg, JuMP.@NLexpression(pm.model, vr[c]*crg[c]+vi[c]*cig[c]))
56-
push!(qg, JuMP.@NLexpression(pm.model, -vr[c]*cig[c]+vi[c]*crg[c]))
55+
push!(pg, JuMP.@expression(pm.model, vr[c]*crg[c]+vi[c]*cig[c]))
56+
push!(qg, JuMP.@expression(pm.model, -vr[c]*cig[c]+vi[c]*crg[c]))
5757
end
5858

5959
if bounded
@@ -93,29 +93,29 @@ function constraint_mc_generator_power_delta(pm::ReducedIVRUPowerModel, nw::Int,
9393
vrg = Dict()
9494
vig = Dict()
9595
for c in connections
96-
vrg[c] = JuMP.@NLexpression(pm.model, vr[c]-vr[next[c]])
97-
vig[c] = JuMP.@NLexpression(pm.model, vi[c]-vi[next[c]])
96+
vrg[c] = JuMP.@expression(pm.model, vr[c]-vr[next[c]])
97+
vig[c] = JuMP.@expression(pm.model, vi[c]-vi[next[c]])
9898
end
9999

100-
pg = Vector{JuMP.NonlinearExpression}([])
101-
qg = Vector{JuMP.NonlinearExpression}([])
100+
pg = JuMP.NonlinearExpr[]
101+
qg = JuMP.NonlinearExpr[]
102102
for c in connections
103-
push!(pg, JuMP.@NLexpression(pm.model, vrg[c]*crg[c]+vig[c]*cig[c]))
104-
push!(qg, JuMP.@NLexpression(pm.model, -vrg[c]*cig[c]+vig[c]*crg[c]))
103+
push!(pg, JuMP.@expression(pm.model, vrg[c]*crg[c]+vig[c]*cig[c]))
104+
push!(qg, JuMP.@expression(pm.model, -vrg[c]*cig[c]+vig[c]*crg[c]))
105105
end
106106

107107
if bounded
108-
JuMP.@NLconstraint(pm.model, [i in 1:nph], pmin[i] <= pg[i])
109-
JuMP.@NLconstraint(pm.model, [i in 1:nph], pmax[i] >= pg[i])
110-
JuMP.@NLconstraint(pm.model, [i in 1:nph], qmin[i] <= qg[i])
111-
JuMP.@NLconstraint(pm.model, [i in 1:nph], qmax[i] >= qg[i])
108+
JuMP.@constraint(pm.model, [i in 1:nph], pmin[i] <= pg[i])
109+
JuMP.@constraint(pm.model, [i in 1:nph], pmax[i] >= pg[i])
110+
JuMP.@constraint(pm.model, [i in 1:nph], qmin[i] <= qg[i])
111+
JuMP.@constraint(pm.model, [i in 1:nph], qmax[i] >= qg[i])
112112
end
113113

114-
crg_bus = Vector{JuMP.NonlinearExpression}([])
115-
cig_bus = Vector{JuMP.NonlinearExpression}([])
114+
crg_bus = JuMP.NonlinearExpr[]
115+
cig_bus = JuMP.NonlinearExpr[]
116116
for c in connections
117-
push!(crg_bus, JuMP.@NLexpression(pm.model, crg[c]-crg[prev[c]]))
118-
push!(cig_bus, JuMP.@NLexpression(pm.model, cig[c]-cig[prev[c]]))
117+
push!(crg_bus, JuMP.@expression(pm.model, crg[c]-crg[prev[c]]))
118+
push!(cig_bus, JuMP.@expression(pm.model, cig[c]-cig[prev[c]]))
119119
end
120120

121121
_PMD.var(pm, nw, :crg_bus)[id] = JuMP.Containers.DenseAxisArray(crg_bus, connections)

0 commit comments

Comments
 (0)