# AC Optimal Power Flow in Various Nonlinear Optimization Frameworks

**URL:** https://discourse.julialang.org/t/ac-optimal-power-flow-in-various-nonlinear-optimization-frameworks/78486
**Category:** Optimization (Mathematical)
**Tags:** optimization, nonlinear
**Created:** [March 25, 2022, 6:25pm UTC](https://discourse.julialang.org/t/ac-optimal-power-flow-in-various-nonlinear-optimization-frameworks/78486 "2022-03-25T18:25:05Z")
**Posts on this page:** 1
**Showing post:** 81

<div class="post-metadata">

### Author: ![ccoffrin](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ccoffrin/32/400_2.png) [@ccoffrin](https://discourse.julialang.org/u/ccoffrin)
#### Post date: [February 4, 2024, 6:36pm UTC](https://discourse.julialang.org/t/ac-optimal-power-flow-in-various-nonlinear-optimization-frameworks/78486/81 "2024-02-04T18:36:37Z")

</div>

Thanks to recent contributions from @sshin23, a new [rosetta-opf model](https://github.com/lanl-ansi/rosetta-opf/blob/main/examodels.jl) has been added based on the [ExaModels](https://github.com/exanauts/ExaModels.jl) framework. As the detailed results below show, this implementation tends to be the fastest Julia AC-OPF implementation I have seen so far, specially at the largest scales. Amazing work @sshin23!

This table also includes updates to the [NLPModels to use the ConcreteStructs](https://github.com/lanl-ansi/rosetta-opf/pull/51) that were proposed in the SciML Benchmarks and an improvement to the [Julia JIT warmup](https://github.com/lanl-ansi/rosetta-opf/pull/43) procedure and other small maintenance updates.

| Case | Vars | Cons | ExaModels | JuMP | NLPModels | NonConvex | Optimization |
| --- | --- | --- | --- | --- | --- | --- | --- |
| case3\_lmbd | 24 | 28 | 1.01e-01 | 1.34e-02 | 2.96e-02 | 7.82e+00 | 2.47e+00 |
| case5\_pjm | 44 | 53 | 5.27e-02 | 6.56e-02 | 1.46e-01 | 1.78e+01 | 3.47e+00 |
| case14\_ieee | 118 | 169 | 4.17e-02 | 5.57e-02 | 1.64e-01 | 7.69e+01 | 7.29e+00 |
| case24\_ieee\_rts | 266 | 315 | 6.72e-02 | 1.23e-01 | 5.72e-01 | 2.37e+02 | 1.84e+01 |
| case30\_ieee | 236 | 348 | 4.66e-02 | 7.86e-02 | 4.76e-01 | 2.51e+02 | 1.75e+01 |
| case30\_as | 236 | 348 | 6.00e-02 | 8.46e-02 | 4.98e-01 | 2.50e+02 | 1.65e+01 |
| case39\_epri | 282 | 401 | 4.18e-02 | 1.12e-01 | 3.63e-01 | 3.34e+02 | 2.18e+01 |
| case57\_ieee | 448 | 675 | 5.38e-02 | 1.03e-01 | 7.58e-01 | 5.52e+02 | 4.27e+01 |
| case60\_c | 518 | 737 | 5.30e-02 | 1.33e-01 | 9.63e-01 | 5.23e+02 | 4.62e+01 |
| case73\_ieee\_rts | 824 | 987 | 9.99e-02 | 2.10e-01 | 1.70e+00 | 1.23e+03 | 8.95e+01 |
| case89\_pegase | 1042 | 1649 | 1.21e-01 | 3.57e-01 | 3.84e+00 | 3.93e+03 | 2.19e+02 |
| case118\_ieee | 1088 | 1539 | 1.17e-01 | 2.90e-01 | 2.63e+00 | 3.05e+03 | 1.81e+02 |
| case162\_ieee\_dtc | 1484 | 2313 | 1.53e-01 | 3.50e-01 | 4.10e+00 | N.D. | 3.84e+02 |
| case179\_goc | 1468 | 2200 | 1.76e-01 | 4.69e-01 | 4.66e+00 | 5.77e+03 | 3.02e+02 |
| case197\_snem | 1608 | 2397 | 1.25e-01 | 3.45e-01 | 4.20e+00 | N.D. | 4.17e+02 |
| case200\_activ | 1456 | 2116 | 1.01e-01 | 2.78e-01 | 3.56e+00 | 6.41e+03 | 3.10e+02 |
| case240\_pserc | 2558 | 3617 | 9.14e-01 | 2.78e+00 | 1.81e+01 | N.D. | 8.96e+02 |
| case300\_ieee | 2382 | 3478 | 2.09e-01 | 5.85e-01 | 8.40e+00 | N.D. | 8.31e+02 |
| case500\_goc | 4254 | 6097 | 4.28e-01 | 1.15e+00 | 1.82e+01 | N.D. | 3.07e+03 |
| case588\_sdet | 4110 | 5979 | 3.49e-01 | 9.98e-01 | 1.47e+01 | N.D. | 2.55e+03 |
| case793\_goc | 5432 | 7978 | 4.80e-01 | 1.43e+00 | 2.68e+01 | N.D. | 5.23e+03 |
| case1354\_pegase | 11192 | 16646 | 1.23e+00 | 4.70e+00 | 1.08e+02 | N.D. | N.D. |
| case1803\_snem | 15246 | 23172 | 2.11e+00 | 8.15e+00 | 2.02e+02 | N.D. | N.D. |
| case1888\_rte | 14480 | 21494 | 4.44e+00 | 2.01e+01 | 2.94e+02 | N.D. | N.D. |
| case1951\_rte | 15018 | 22075 | 2.44e+00 | 9.74e+00 | 1.99e+02 | N.D. | N.D. |
| case2000\_goc | 19008 | 29432 | 2.05e+00 | 7.80e+00 | 3.26e+02 | N.D. | N.D. |
| case2312\_goc | 17128 | 25716 | 1.83e+00 | 7.02e+00 | 2.37e+02 | N.D. | N.D. |
| case2383wp\_k | 17004 | 25039 | 2.34e+00 | 8.40e+00 | 1.90e+02 | N.D. | N.D. |
| case2736sp\_k | 19088 | 28356 | 1.83e+00 | 6.73e+00 | 2.60e+02 | N.D. | N.D. |
| case2737sop\_k | 18988 | 28358 | 1.64e+00 | 5.85e+00 | 2.56e+02 | N.D. | N.D. |
| case2742\_goc | 24540 | 38196 | 7.32e+00 | 2.74e+01 | 6.98e+02 | N.D. | N.D. |
| case2746wp\_k | 19520 | 28446 | 1.88e+00 | 6.66e+00 | 2.47e+02 | N.D. | N.D. |
| case2746wop\_k | 19582 | 28642 | 1.75e+00 | 6.38e+00 | 2.72e+02 | N.D. | N.D. |
| case2848\_rte | 21822 | 32129 | 3.73e+00 | 1.86e+01 | 4.40e+02 | N.D. | N.D. |
| case2853\_sdet | 23028 | 33154 | 2.68e+00 | 1.05e+01 | 5.28e+02 | N.D. | N.D. |
| case2868\_rte | 22090 | 32393 | 4.23e+00 | 1.71e+01 | 4.76e+02 | N.D. | N.D. |
| case2869\_pegase | 25086 | 37813 | 3.42e+00 | 1.33e+01 | 6.70e+02 | N.D. | N.D. |
| case3012wp\_k | 21082 | 31029 | 2.67e+00 | 1.09e+01 | 3.44e+02 | N.D. | N.D. |
| case3022\_goc | 23238 | 34990 | 2.82e+00 | 1.16e+01 | 5.54e+02 | N.D. | N.D. |
| case3120sp\_k | 21608 | 32092 | 2.71e+00 | 1.05e+01 | 3.63e+02 | N.D. | N.D. |
| case3375wp\_k | 24350 | 35876 | 3.23e+00 | 1.19e+01 | 5.15e+02 | N.D. | N.D. |
| case3970\_goc | 35270 | 54428 | 6.51e+00 | 1.74e+01 | 1.63e+03 | N.D. | N.D. |
| case4020\_goc | 36696 | 56957 | 8.87e+00 | 2.17e+01 | 1.68e+03 | N.D. | N.D. |
| case4601\_goc | 38814 | 59596 | 7.64e+00 | 2.60e+01 | 1.96e+03 | N.D. | N.D. |
| case4619\_goc | 42532 | 66289 | 7.91e+00 | 2.16e+01 | 2.22e+03 | N.D. | N.D. |
| case4661\_sdet | 34758 | 51302 | 5.65e+00 | 1.76e+01 | 1.22e+03 | N.D. | N.D. |
| case4837\_goc | 41398 | 64030 | 6.59e+00 | 2.26e+01 | 2.09e+03 | N.D. | N.D. |
| case4917\_goc | 37872 | 56917 | 5.77e+00 | 2.01e+01 | 1.76e+03 | N.D. | N.D. |
| case5658\_epigrids | 48552 | 74821 | 7.92e+00 | 2.46e+01 | 3.18e+03 | N.D. | N.D. |
| case6468\_rte | 49734 | 75937 | 1.64e+01 | 6.33e+01 | 3.49e+03 | N.D. | N.D. |
| case6470\_rte | 50482 | 75976 | 1.07e+01 | 3.61e+01 | 3.36e+03 | N.D. | N.D. |
| case6495\_rte | 50426 | 76124 | 1.88e+01 | 6.27e+01 | 3.59e+03 | N.D. | N.D. |
| case6515\_rte | 50546 | 76290 | 1.50e+01 | 5.32e+01 | 3.39e+03 | N.D. | N.D. |
| case7336\_epigrids | 62116 | 95306 | 9.79e+00 | 3.00e+01 | 5.09e+03 | N.D. | N.D. |
| case8387\_pegase | 78748 | 118702 | 1.56e+01 | 5.03e+01 | N.D. | N.D. | N.D. |
| case9241\_pegase | 85568 | 130826 | 1.78e+01 | 5.34e+01 | N.D. | N.D. | N.D. |
| case9591\_goc | 83572 | 130588 | 2.61e+01 | 6.06e+01 | N.D. | N.D. | N.D. |
| case10000\_goc | 76804 | 112352 | 1.63e+01 | 5.00e+01 | 6.85e+03 | N.D. | N.D. |
| case10192\_epigrids | 89850 | 139456 | 2.09e+01 | 5.90e+01 | N.D. | N.D. | N.D. |
| case10480\_goc | 96750 | 150874 | 2.85e+01 | 6.84e+01 | N.D. | N.D. | N.D. |
| case13659\_pegase | 117370 | 170588 | 2.25e+01 | 6.80e+01 | N.D. | N.D. | N.D. |
| case19402\_goc | 179562 | 281733 | 7.36e+01 | 1.49e+02 | N.D. | N.D. | N.D. |
| case20758\_epigrids | 179236 | 274918 | 3.71e+01 | 1.01e+02 | N.D. | N.D. | N.D. |
| case24464\_goc | 203374 | 313641 | 5.00e+01 | 1.31e+02 | N.D. | N.D. | N.D. |
| case30000\_goc | 208624 | 307752 | 9.94e+01 | 2.55e+02 | N.D. | N.D. | N.D. |
| case78484\_epigrids | 674562 | 1039062 | 3.69e+02 | 7.86e+02 | N.D. | N.D. | N.D. |

Julia v1.10.0

[54578032] ADNLPModels v0.7.0  
[2569d6c7] ConcreteStructs v0.2.3  
[1037b233] ExaModels v0.5.0  
[f6369f11] ForwardDiff v0.10.36  
[b6b21f68] Ipopt v1.6.1  
[4076af6c] JuMP v1.19.0  
[961ee093] ModelingToolkit v8.75.0  
[f4238b75] NLPModelsIpopt v0.10.1  
[01bcebdf] Nonconvex v2.1.3  
[bf347577] NonconvexIpopt v0.4.2  
[429524aa] Optim v1.9.1  
[7f7a1694] Optimization v3.22.0  
[fd9f6733] OptimizationMOI v0.3.4  
[c36e90e8] PowerModels v0.21.0  
[0c5d862f] Symbolics v5.16.1

Ipopt was configured to run with the linear solver HSL ma27.

---

_[View the full topic](https://discourse.julialang.org/t/ac-optimal-power-flow-in-various-nonlinear-optimization-frameworks/78486)._
