@@ -36,7 +36,7 @@ function get_power_data_ref(filename)
3636 return PowerModels. build_ref (data)[:it ][:pm ][:nw ][0 ]
3737end
3838
39- convert_data (data:: N , backend) where {names,N <: NamedTuple{names} } =
39+ convert_data (data:: N , backend) where {names, N <: NamedTuple{names} } =
4040 NamedTuple {names} (ExaModels. convert_array (d, backend) for d in data)
4141parse_ac_power_data (filename, backend) =
4242 convert_data (parse_ac_power_data (filename), backend)
@@ -53,65 +53,65 @@ function parse_ac_power_data(filename)
5353 return (
5454 bus = [
5555 begin
56- bus_loads = [ref[:load ][l] for l in ref[:bus_loads ][k]]
57- bus_shunts = [ref[:shunt ][s] for s in ref[:bus_shunts ][k]]
58- pd = sum (load[" pd" ] for load in bus_loads; init = 0.0 )
59- gs = sum (shunt[" gs" ] for shunt in bus_shunts; init = 0.0 )
60- qd = sum (load[" qd" ] for load in bus_loads; init = 0.0 )
61- bs = sum (shunt[" bs" ] for shunt in bus_shunts; init = 0.0 )
62- (i = busdict[k], pd = pd, gs = gs, qd = qd, bs = bs)
63- end for (k, v) in ref[:bus ]
56+ bus_loads = [ref[:load ][l] for l in ref[:bus_loads ][k]]
57+ bus_shunts = [ref[:shunt ][s] for s in ref[:bus_shunts ][k]]
58+ pd = sum (load[" pd" ] for load in bus_loads; init = 0.0 )
59+ gs = sum (shunt[" gs" ] for shunt in bus_shunts; init = 0.0 )
60+ qd = sum (load[" qd" ] for load in bus_loads; init = 0.0 )
61+ bs = sum (shunt[" bs" ] for shunt in bus_shunts; init = 0.0 )
62+ (i = busdict[k], pd = pd, gs = gs, qd = qd, bs = bs)
63+ end for (k, v) in ref[:bus ]
6464 ],
6565 gen = [
6666 (
67- i = gendict[k],
68- cost1 = v[" cost" ][1 ],
69- cost2 = v[" cost" ][2 ],
70- cost3 = v[" cost" ][3 ],
71- bus = busdict[v[" gen_bus" ]],
72- ) for (k, v) in ref[:gen ]
67+ i = gendict[k],
68+ cost1 = v[" cost" ][1 ],
69+ cost2 = v[" cost" ][2 ],
70+ cost3 = v[" cost" ][3 ],
71+ bus = busdict[v[" gen_bus" ]],
72+ ) for (k, v) in ref[:gen ]
7373 ],
7474 arc = [
7575 (i = k, rate_a = ref[:branch ][l][" rate_a" ], bus = busdict[i]) for
76- (k, (l, i, j)) in enumerate (ref[:arcs ])
76+ (k, (l, i, j)) in enumerate (ref[:arcs ])
7777 ],
7878 branch = [
7979 begin
80- f_idx = arcdict[i, branch[" f_bus" ], branch[" t_bus" ]]
81- t_idx = arcdict[i, branch[" t_bus" ], branch[" f_bus" ]]
82- g, b = PowerModels. calc_branch_y (branch)
83- tr, ti = PowerModels. calc_branch_t (branch)
84- ttm = tr^ 2 + ti^ 2
85- g_fr = branch[" g_fr" ]
86- b_fr = branch[" b_fr" ]
87- g_to = branch[" g_to" ]
88- b_to = branch[" b_to" ]
89- c1 = (- g * tr - b * ti) / ttm
90- c2 = (- b * tr + g * ti) / ttm
91- c3 = (- g * tr + b * ti) / ttm
92- c4 = (- b * tr - g * ti) / ttm
93- c5 = (g + g_fr) / ttm
94- c6 = (b + b_fr) / ttm
95- c7 = (g + g_to)
96- c8 = (b + b_to)
97- (
98- i = branchdict[i],
99- j = 1 ,
100- f_idx = f_idx,
101- t_idx = t_idx,
102- f_bus = busdict[branch[" f_bus" ]],
103- t_bus = busdict[branch[" t_bus" ]],
104- c1 = c1,
105- c2 = c2,
106- c3 = c3,
107- c4 = c4,
108- c5 = c5,
109- c6 = c6,
110- c7 = c7,
111- c8 = c8,
112- rate_a_sq = branch[" rate_a" ]^ 2 ,
113- )
114- end for (i, branch) in ref[:branch ]
80+ f_idx = arcdict[i, branch[" f_bus" ], branch[" t_bus" ]]
81+ t_idx = arcdict[i, branch[" t_bus" ], branch[" f_bus" ]]
82+ g, b = PowerModels. calc_branch_y (branch)
83+ tr, ti = PowerModels. calc_branch_t (branch)
84+ ttm = tr^ 2 + ti^ 2
85+ g_fr = branch[" g_fr" ]
86+ b_fr = branch[" b_fr" ]
87+ g_to = branch[" g_to" ]
88+ b_to = branch[" b_to" ]
89+ c1 = (- g * tr - b * ti) / ttm
90+ c2 = (- b * tr + g * ti) / ttm
91+ c3 = (- g * tr + b * ti) / ttm
92+ c4 = (- b * tr - g * ti) / ttm
93+ c5 = (g + g_fr) / ttm
94+ c6 = (b + b_fr) / ttm
95+ c7 = (g + g_to)
96+ c8 = (b + b_to)
97+ (
98+ i = branchdict[i],
99+ j = 1 ,
100+ f_idx = f_idx,
101+ t_idx = t_idx,
102+ f_bus = busdict[branch[" f_bus" ]],
103+ t_bus = busdict[branch[" t_bus" ]],
104+ c1 = c1,
105+ c2 = c2,
106+ c3 = c3,
107+ c4 = c4,
108+ c5 = c5,
109+ c6 = c6,
110+ c7 = c7,
111+ c8 = c8,
112+ rate_a_sq = branch[" rate_a" ]^ 2 ,
113+ )
114+ end for (i, branch) in ref[:branch ]
115115 ],
116116 ref_buses = [busdict[i] for (i, k) in ref[:ref_buses ]],
117117 vmax = [v[" vmax" ] for (k, v) in ref[:bus ]],
@@ -130,7 +130,7 @@ function exa_ac_power_model(backend, data)
130130
131131 w = ExaModels. ExaCore (backend = backend)
132132
133- va = ExaModels. variable (w, length (data. bus); )
133+ va = ExaModels. variable (w, length (data. bus))
134134
135135 vm = ExaModels. variable (
136136 w,
@@ -157,35 +157,35 @@ function exa_ac_power_model(backend, data)
157157 c2 = ExaModels. constraint (
158158 w,
159159 p[b. f_idx] - b. c5 * vm[b. f_bus]^ 2 -
160- b. c3 * (vm[b. f_bus] * vm[b. t_bus] * cos (va[b. f_bus] - va[b. t_bus])) -
161- b. c4 * (vm[b. f_bus] * vm[b. t_bus] * sin (va[b. f_bus] - va[b. t_bus])) for
162- b in data. branch
160+ b. c3 * (vm[b. f_bus] * vm[b. t_bus] * cos (va[b. f_bus] - va[b. t_bus])) -
161+ b. c4 * (vm[b. f_bus] * vm[b. t_bus] * sin (va[b. f_bus] - va[b. t_bus])) for
162+ b in data. branch
163163 )
164164
165165 c3 = ExaModels. constraint (
166166 w,
167167 q[b. f_idx] +
168- b. c6 * vm[b. f_bus]^ 2 +
169- b. c4 * (vm[b. f_bus] * vm[b. t_bus] * cos (va[b. f_bus] - va[b. t_bus])) -
170- b. c3 * (vm[b. f_bus] * vm[b. t_bus] * sin (va[b. f_bus] - va[b. t_bus])) for
171- b in data. branch
168+ b. c6 * vm[b. f_bus]^ 2 +
169+ b. c4 * (vm[b. f_bus] * vm[b. t_bus] * cos (va[b. f_bus] - va[b. t_bus])) -
170+ b. c3 * (vm[b. f_bus] * vm[b. t_bus] * sin (va[b. f_bus] - va[b. t_bus])) for
171+ b in data. branch
172172 )
173173
174174 c4 = ExaModels. constraint (
175175 w,
176176 p[b. t_idx] - b. c7 * vm[b. t_bus]^ 2 -
177- b. c1 * (vm[b. t_bus] * vm[b. f_bus] * cos (va[b. t_bus] - va[b. f_bus])) -
178- b. c2 * (vm[b. t_bus] * vm[b. f_bus] * sin (va[b. t_bus] - va[b. f_bus])) for
179- b in data. branch
177+ b. c1 * (vm[b. t_bus] * vm[b. f_bus] * cos (va[b. t_bus] - va[b. f_bus])) -
178+ b. c2 * (vm[b. t_bus] * vm[b. f_bus] * sin (va[b. t_bus] - va[b. f_bus])) for
179+ b in data. branch
180180 )
181181
182182 c5 = ExaModels. constraint (
183183 w,
184184 q[b. t_idx] +
185- b. c8 * vm[b. t_bus]^ 2 +
186- b. c2 * (vm[b. t_bus] * vm[b. f_bus] * cos (va[b. t_bus] - va[b. f_bus])) -
187- b. c1 * (vm[b. t_bus] * vm[b. f_bus] * sin (va[b. t_bus] - va[b. f_bus])) for
188- b in data. branch
185+ b. c8 * vm[b. t_bus]^ 2 +
186+ b. c2 * (vm[b. t_bus] * vm[b. f_bus] * cos (va[b. t_bus] - va[b. f_bus])) -
187+ b. c1 * (vm[b. t_bus] * vm[b. f_bus] * sin (va[b. t_bus] - va[b. f_bus])) for
188+ b in data. branch
189189 )
190190
191191 c6 = ExaModels. constraint (
@@ -216,8 +216,8 @@ function exa_ac_power_model(backend, data)
216216 c14 = ExaModels. constraint! (w, c10, g. bus => - qg[g. i] for g in data. gen)
217217
218218 return ExaModels. ExaModel (w; prod = true ),
219- (va, vm, pg, qg, p, q),
220- (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10)
219+ (va, vm, pg, qg, p, q),
220+ (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10)
221221
222222end
223223
227227 examodel = first (exa_ac_power_model (backend, data))
228228 res = ipopt (examodel, print_level = 0 )
229229 milp = CoolPDLP. MILP (QuadraticModel (examodel, res. solution), ignore_islp = true )
230- sol, cres = CoolPDLP. solve (milp, PDLP (
231- Float32, Int32, SparseMatrixCSC; backend,
232- termination_reltol = 1.0f-4 , time_limit = 10.0 ,
233- ))
230+ sol, cres = CoolPDLP. solve (
231+ milp, PDLP (
232+ Float32, Int32, SparseMatrixCSC; backend,
233+ termination_reltol = 1.0f-4 , time_limit = 10.0 ,
234+ )
235+ )
234236 @test cres. termination_status == CoolPDLP. OPTIMAL
235- end
237+ end
0 commit comments