ltbams 0.9.9__py3-none-any.whl → 1.0.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (191) hide show
  1. ams/__init__.py +4 -11
  2. ams/_version.py +3 -3
  3. ams/cases/5bus/pjm5bus_demo.xlsx +0 -0
  4. ams/cases/5bus/pjm5bus_jumper.xlsx +0 -0
  5. ams/cases/5bus/pjm5bus_uced.json +1062 -0
  6. ams/cases/5bus/pjm5bus_uced.xlsx +0 -0
  7. ams/cases/5bus/pjm5bus_uced_esd1.xlsx +0 -0
  8. ams/cases/5bus/pjm5bus_uced_ev.xlsx +0 -0
  9. ams/cases/ieee123/ieee123.xlsx +0 -0
  10. ams/cases/ieee123/ieee123_regcv1.xlsx +0 -0
  11. ams/cases/ieee14/ieee14.json +1166 -0
  12. ams/cases/ieee14/ieee14.raw +92 -0
  13. ams/cases/ieee14/ieee14_conn.xlsx +0 -0
  14. ams/cases/ieee14/ieee14_uced.xlsx +0 -0
  15. ams/cases/ieee39/ieee39.xlsx +0 -0
  16. ams/cases/ieee39/ieee39_uced.xlsx +0 -0
  17. ams/cases/ieee39/ieee39_uced_esd1.xlsx +0 -0
  18. ams/cases/ieee39/ieee39_uced_pvd1.xlsx +0 -0
  19. ams/cases/ieee39/ieee39_uced_vis.xlsx +0 -0
  20. ams/cases/matpower/benchmark.json +1594 -0
  21. ams/cases/matpower/case118.m +787 -0
  22. ams/cases/matpower/case14.m +129 -0
  23. ams/cases/matpower/case300.m +1315 -0
  24. ams/cases/matpower/case39.m +205 -0
  25. ams/cases/matpower/case5.m +62 -0
  26. ams/cases/matpower/case_ACTIVSg2000.m +9460 -0
  27. ams/cases/npcc/npcc.m +644 -0
  28. ams/cases/npcc/npcc_uced.xlsx +0 -0
  29. ams/cases/pglib/pglib_opf_case39_epri__api.m +243 -0
  30. ams/cases/wecc/wecc.m +714 -0
  31. ams/cases/wecc/wecc_uced.xlsx +0 -0
  32. ams/cli.py +6 -0
  33. ams/core/__init__.py +2 -0
  34. ams/core/documenter.py +652 -0
  35. ams/core/matprocessor.py +782 -0
  36. ams/core/model.py +330 -0
  37. ams/core/param.py +322 -0
  38. ams/core/service.py +918 -0
  39. ams/core/symprocessor.py +224 -0
  40. ams/core/var.py +59 -0
  41. ams/extension/__init__.py +5 -0
  42. ams/extension/eva.py +401 -0
  43. ams/interface.py +1085 -0
  44. ams/io/__init__.py +133 -0
  45. ams/io/json.py +82 -0
  46. ams/io/matpower.py +406 -0
  47. ams/io/psse.py +6 -0
  48. ams/io/pypower.py +103 -0
  49. ams/io/xlsx.py +80 -0
  50. ams/main.py +81 -4
  51. ams/models/__init__.py +24 -0
  52. ams/models/area.py +40 -0
  53. ams/models/bus.py +52 -0
  54. ams/models/cost.py +169 -0
  55. ams/models/distributed/__init__.py +3 -0
  56. ams/models/distributed/esd1.py +71 -0
  57. ams/models/distributed/ev.py +60 -0
  58. ams/models/distributed/pvd1.py +67 -0
  59. ams/models/group.py +231 -0
  60. ams/models/info.py +26 -0
  61. ams/models/line.py +238 -0
  62. ams/models/renewable/__init__.py +5 -0
  63. ams/models/renewable/regc.py +119 -0
  64. ams/models/reserve.py +94 -0
  65. ams/models/shunt.py +14 -0
  66. ams/models/static/__init__.py +2 -0
  67. ams/models/static/gen.py +165 -0
  68. ams/models/static/pq.py +61 -0
  69. ams/models/timeslot.py +69 -0
  70. ams/models/zone.py +49 -0
  71. ams/opt/__init__.py +12 -0
  72. ams/opt/constraint.py +175 -0
  73. ams/opt/exprcalc.py +127 -0
  74. ams/opt/expression.py +188 -0
  75. ams/opt/objective.py +174 -0
  76. ams/opt/omodel.py +432 -0
  77. ams/opt/optzbase.py +192 -0
  78. ams/opt/param.py +156 -0
  79. ams/opt/var.py +233 -0
  80. ams/pypower/__init__.py +8 -0
  81. ams/pypower/_compat.py +9 -0
  82. ams/pypower/core/__init__.py +8 -0
  83. ams/pypower/core/pips.py +894 -0
  84. ams/pypower/core/ppoption.py +244 -0
  85. ams/pypower/core/ppver.py +18 -0
  86. ams/pypower/core/solver.py +2451 -0
  87. ams/pypower/eps.py +6 -0
  88. ams/pypower/idx.py +174 -0
  89. ams/pypower/io.py +604 -0
  90. ams/pypower/make/__init__.py +11 -0
  91. ams/pypower/make/matrices.py +665 -0
  92. ams/pypower/make/pdv.py +506 -0
  93. ams/pypower/routines/__init__.py +7 -0
  94. ams/pypower/routines/cpf.py +513 -0
  95. ams/pypower/routines/cpf_callbacks.py +114 -0
  96. ams/pypower/routines/opf.py +1803 -0
  97. ams/pypower/routines/opffcns.py +1946 -0
  98. ams/pypower/routines/pflow.py +852 -0
  99. ams/pypower/toggle.py +1098 -0
  100. ams/pypower/utils.py +293 -0
  101. ams/report.py +212 -50
  102. ams/routines/__init__.py +23 -0
  103. ams/routines/acopf.py +117 -0
  104. ams/routines/cpf.py +65 -0
  105. ams/routines/dcopf.py +241 -0
  106. ams/routines/dcpf.py +209 -0
  107. ams/routines/dcpf0.py +196 -0
  108. ams/routines/dopf.py +150 -0
  109. ams/routines/ed.py +312 -0
  110. ams/routines/pflow.py +255 -0
  111. ams/routines/pflow0.py +113 -0
  112. ams/routines/routine.py +1033 -0
  113. ams/routines/rted.py +519 -0
  114. ams/routines/type.py +160 -0
  115. ams/routines/uc.py +376 -0
  116. ams/shared.py +63 -9
  117. ams/system.py +61 -22
  118. ams/utils/__init__.py +3 -0
  119. ams/utils/misc.py +77 -0
  120. ams/utils/paths.py +257 -0
  121. docs/Makefile +21 -0
  122. docs/make.bat +35 -0
  123. docs/source/_templates/autosummary/base.rst +5 -0
  124. docs/source/_templates/autosummary/class.rst +35 -0
  125. docs/source/_templates/autosummary/module.rst +65 -0
  126. docs/source/_templates/autosummary/module_toctree.rst +66 -0
  127. docs/source/api.rst +102 -0
  128. docs/source/conf.py +206 -0
  129. docs/source/examples/index.rst +34 -0
  130. docs/source/genmodelref.py +61 -0
  131. docs/source/genroutineref.py +47 -0
  132. docs/source/getting_started/copyright.rst +20 -0
  133. docs/source/getting_started/formats/index.rst +20 -0
  134. docs/source/getting_started/formats/matpower.rst +183 -0
  135. docs/source/getting_started/formats/psse.rst +46 -0
  136. docs/source/getting_started/formats/pypower.rst +223 -0
  137. docs/source/getting_started/formats/xlsx.png +0 -0
  138. docs/source/getting_started/formats/xlsx.rst +23 -0
  139. docs/source/getting_started/index.rst +76 -0
  140. docs/source/getting_started/install.rst +231 -0
  141. docs/source/getting_started/overview.rst +26 -0
  142. docs/source/getting_started/testcase.rst +45 -0
  143. docs/source/getting_started/verification.rst +13 -0
  144. docs/source/images/curent.ico +0 -0
  145. docs/source/images/dcopf_time.png +0 -0
  146. docs/source/images/sponsors/CURENT_Logo_NameOnTrans.png +0 -0
  147. docs/source/images/sponsors/CURENT_Logo_Transparent.png +0 -0
  148. docs/source/images/sponsors/CURENT_Logo_Transparent_Name.png +0 -0
  149. docs/source/images/sponsors/doe.png +0 -0
  150. docs/source/index.rst +108 -0
  151. docs/source/modeling/example.rst +159 -0
  152. docs/source/modeling/index.rst +17 -0
  153. docs/source/modeling/model.rst +210 -0
  154. docs/source/modeling/routine.rst +122 -0
  155. docs/source/modeling/system.rst +51 -0
  156. docs/source/release-notes.rst +398 -0
  157. ltbams-1.0.2.dist-info/METADATA +215 -0
  158. ltbams-1.0.2.dist-info/RECORD +188 -0
  159. {ltbams-0.9.9.dist-info → ltbams-1.0.2.dist-info}/WHEEL +1 -1
  160. ltbams-1.0.2.dist-info/top_level.txt +3 -0
  161. tests/__init__.py +0 -0
  162. tests/test_1st_system.py +33 -0
  163. tests/test_addressing.py +40 -0
  164. tests/test_andes_mats.py +61 -0
  165. tests/test_case.py +266 -0
  166. tests/test_cli.py +34 -0
  167. tests/test_export_csv.py +89 -0
  168. tests/test_group.py +83 -0
  169. tests/test_interface.py +216 -0
  170. tests/test_io.py +32 -0
  171. tests/test_jumper.py +27 -0
  172. tests/test_known_good.py +267 -0
  173. tests/test_matp.py +437 -0
  174. tests/test_model.py +54 -0
  175. tests/test_omodel.py +119 -0
  176. tests/test_paths.py +22 -0
  177. tests/test_report.py +251 -0
  178. tests/test_repr.py +21 -0
  179. tests/test_routine.py +178 -0
  180. tests/test_rtn_dcopf.py +101 -0
  181. tests/test_rtn_dcpf.py +77 -0
  182. tests/test_rtn_ed.py +279 -0
  183. tests/test_rtn_pflow.py +219 -0
  184. tests/test_rtn_rted.py +273 -0
  185. tests/test_rtn_uc.py +248 -0
  186. tests/test_service.py +73 -0
  187. ltbams-0.9.9.dist-info/LICENSE +0 -692
  188. ltbams-0.9.9.dist-info/METADATA +0 -859
  189. ltbams-0.9.9.dist-info/RECORD +0 -14
  190. ltbams-0.9.9.dist-info/top_level.txt +0 -1
  191. {ltbams-0.9.9.dist-info → ltbams-1.0.2.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,398 @@
1
+ .. _ReleaseNotes:
2
+
3
+ =============
4
+ Release notes
5
+ =============
6
+
7
+ The APIs before v3.0.0 are in beta and may change without prior notice.
8
+
9
+ Pre-v1.0.0
10
+ ==========
11
+
12
+ v1.0.2 (2024-02-01)
13
+
14
+ --------------------
15
+
16
+ - Enhance the GitHub Actions workflow file
17
+ - Deprecate andes logger configuration in ``config_logger``
18
+ - Deprecate solver specification in ``demo_ESD1``
19
+
20
+ v1.0.1 (2024-01-26)
21
+ --------------------
22
+
23
+ Hotfix: removed dependencies on `SCIP` and `pyscipopt` to resolve installation issues
24
+
25
+ v1.0.0 (2024-01-24)
26
+ --------------------
27
+
28
+ - **Breaking Change**: rename model ``Region`` to ``Zone`` for clarity. Prior case
29
+ files without modification can run into error.
30
+ - Fix bugs in ``RTED.dc2ac``
31
+ - Minor refacotr ``OptzBase.get_idx`` to reduce duplication
32
+ - Rename module ``OptBase`` to ``OptzBase`` for clarity
33
+ - Update benchamrk figure in README
34
+ - Set ANDES requirement to v1.9.3
35
+ - Deprecate method ``get_idx`` and suggest using ``get_all_idxes`` instead
36
+ - Remove module ``benchmarks.py`` and its tests for simplicity
37
+
38
+ v0.9.13 (2024-12-05)
39
+ --------------------
40
+
41
+ - Add a step to report in ``RoutineBase.run``
42
+ - Add more tests to cover DG and ES related routines
43
+ - Improve formulation for DG and ESD involved routines
44
+ - Improve module ``Report`` and method ``RoutineBase.export_csv``
45
+ - Support ``TimedEvent`` in ANDES case conversion
46
+ - Add Var ``vBus`` in ``DCOPF`` for placeholder
47
+
48
+ v0.9.12 (2024-11-23)
49
+ --------------------
50
+
51
+ - Refactor ``OModel.initialized`` as a property method
52
+ - Add a demo to show using ``Constraint.e`` for debugging
53
+ - Fix ``ams.opt.omodel.Param.evaluate`` when its value is a number
54
+ - Improve ``ams.opt.omodel.ExpressionCalc`` for better performance
55
+ - Refactor module ``ams.opt``
56
+ - Add class ``ams.opt.Expression``
57
+ - Switch from PYPOWER to ANDES in routine ``PFlow``
58
+ - Switch from PYPOWER to regular formulation in routine ``DCPF``
59
+ - Refactor routines ``DCPF`` and ``DCOPF``
60
+ - In ``RDocumenter``, set Srouce to be owner if there is no src
61
+ - Specify ``multiprocess<=0.70.16`` in requirements as 0.70.17 does not support Linux
62
+
63
+ RC1
64
+ ~~~~
65
+ - Reset setup.py to ensure compatibility
66
+
67
+ v0.9.11 (2024-11-14)
68
+ --------------------
69
+
70
+ - Add pyproject.toml for PEP 517 and PEP 518 compliance
71
+ - Add model ``Jumper``
72
+ - Fix deprecation warning related to ``pandas.fillna`` and ``newshape`` in NumPy
73
+ - Minor refactor on solvers information in the module ``shared``
74
+ - Change default values of minimum ON/OFF duration time of generators to be 1 and 0.5 hours
75
+ - Add parameter ``uf`` for enforced generator on/off status
76
+ - In servicee ``LoadScale``, consider load online status
77
+ - Consider line online status in routine ``ED``
78
+ - Add methods ``evaluate`` and ``finalize`` in the class ``OModel`` to handle optimization
79
+ elements generation and assembling
80
+ - Refactor ``OModel.init`` and ``Routine.init``
81
+ - Add ANDES paper as the citation file for now
82
+ - Add more routine tests for generator trip, line trip, and load trip
83
+ - Add a README to overview built-in cases
84
+ - Rename methods ``v2`` as ``e`` for classes ``Constraint`` and ``Objective``
85
+ - Add benchmark functions
86
+ - Improve the usage of ``eval`` in module ``omodel``
87
+ - Refactor module ``interop.andes`` as module ``interface`` for simplicity
88
+
89
+ v0.9.10 (2024-09-03)
90
+ --------------------
91
+
92
+ Hotfix of import issue in ``v0.9.9``.
93
+
94
+ - In module ``MatProcessor``, add two parameters ``permc_spec`` and ``use_umfpack`` in function ``build_ptdf``
95
+ - Follow RTD's deprecation of Sphinx context injection at build time
96
+ - In MATPOWER conversion, set devices name as None
97
+ - Skip macOS tests in azure-pipelines due to failure in fixing its configuration
98
+ - Prepare to support NumPy v2.0.0, but solvers have unexpected behavior
99
+ - Improve the logic of setting ``Optz`` value
100
+ - Support NumPy v2.0.0
101
+
102
+ v0.9.9 (2024-09-02)
103
+ -------------------
104
+
105
+ **NOTICE: This version has known issues and has been yanked on PyPI.**
106
+
107
+ v0.9.8 (2024-06-18)
108
+ -------------------
109
+
110
+ - Assign ``MParam.owner`` when declaring
111
+ - In ``MatProcessor``, improve ``build_ptdf`` and ``build_lodf`` to allow partial building and
112
+ incremental building
113
+ - Add file ``cases/matpower/Benchmark.json`` for benchmark with MATPOWER
114
+ - Improve known good results test
115
+ - Minor fix in ``main.py`` selftest part
116
+ - Set dependency NumPy version to be <2.0.0 to avoid CVXPY compatibility issues
117
+
118
+ v0.9.7 (2024-05-24)
119
+ -------------------
120
+
121
+ This patch release add the Roadmap section in the release notes, to list out some potential features.
122
+ It also drafts the EV Aggregation model based on the state space modelg, but the finish date remains unknown.
123
+
124
+ References:
125
+
126
+ [1] J. Wang et al., "Electric Vehicles Charging Time Constrained Deliverable Provision of Secondary
127
+ Frequency Regulation," in IEEE Transactions on Smart Grid, doi: 10.1109/TSG.2024.3356948.
128
+
129
+ - Fix OTDF calculation
130
+ - Add parameter ``dtype='float64'`` and ``no_store=False`` in ``MatProcessor`` PTDF, LODF, and OTDF
131
+ calculation, to save memory
132
+ - Add placeholder parameter ``Bus.type``
133
+
134
+ v0.9.6 (2024-04-21)
135
+ -------------------
136
+
137
+ This patch release refactor and improve ``MatProcessor``, where it support PTDF, LODF,
138
+ and OTDF for static analysis.
139
+
140
+ The reference can be found online "PowerWorld > Web Help > Sensitivities > Line
141
+ Outage Distribution Factors".
142
+
143
+ - Refactor DCPF, PFlow, and ACOPF
144
+ - Add a loss factor in ``RTED.dc2ac``
145
+ - Add ``DCOPF.dc2ac``
146
+ - Fix OModel parse status to ensure no_parsed params can be updated
147
+ - Fix and rerun ``ex2``
148
+ - Format ``Routine.get`` return type to be consistent with input idx type
149
+ - Remove unused ``Routine.prepare``
150
+ - Refactor ``MatProcessor`` to separate matrix building
151
+ - Add Var ``plf`` in ``DCPF``, ``PFlow``, and ``ACOPF`` to store the line flow
152
+ - Add ``build_ptdf``, ``build_lodf``, and ``build_otdf``
153
+ - Fix ``Routine.get`` to support pd.Series type idx input
154
+ - Reserve ``exec_time`` after ``dc2ac``
155
+ - Adjust kloss to fix ``ex2``
156
+
157
+ v0.9.5 (2024-03-25)
158
+ -------------------
159
+
160
+ - Add more plots in ``demo_AGC``
161
+ - Improve line rating adjustment
162
+ - Adjust static import sequence in ``models.__init__.py``
163
+ - Adjust pjm5bus case line rate_a
164
+ - Fix formulation of constraint line angle diff
165
+ - Align slack bus angle to zero in ``DCOPF``
166
+ - Align StaticGen idx sequence with converted MATPOWER case
167
+ - Fix several issues in MATPOWER converter
168
+
169
+ v0.9.4 (2024-03-16)
170
+ -------------------
171
+
172
+ - Add Var ``pi`` and ExpressionCalc ``pic`` to store the dual of constraint power balance
173
+ - Add Param ``M`` and ``D`` to model ``REGCV1``
174
+ - Add CPS1 score calculation in ``demo_AGC``
175
+
176
+ v0.9.3 (2024-03-06)
177
+ -------------------
178
+
179
+ - Major improvemets on ``demo_AGC``
180
+ - Bug fix in ``RTED.dc2ac``
181
+
182
+ v0.9.2 (2024-03-04)
183
+ -------------------
184
+
185
+ - Add ``demo_AGC`` to demonstrate detailed secondary frequency regulation study
186
+ - Add ``ExpressionCalc`` to handle post-solving calculation
187
+ - Rename ``type='eq'`` to ``is_eq=False`` in ``Constraint`` to avoid overriding built-in attribute
188
+ - Several formatting improvements
189
+
190
+ v0.9.1 (2024-03-02)
191
+ -------------------
192
+
193
+ - Change sphinx extension myst_nb to nbsphinx for math rendering in ``ex8``
194
+ - Improve ``symprocessor`` to include routine config
195
+ - Add config to Routine reference
196
+ - Fix symbol processor issue with power operator
197
+
198
+ v0.9.0 (2024-02-27)
199
+ -------------------
200
+
201
+ - Add ``ex8`` for formulation customization via API
202
+ - Improve Development documentation
203
+ - Fix ``addService``, ``addVars``
204
+ - Rename ``RoutineModel`` to ``RoutineBase`` for better naming
205
+ - Fix ANDES file converter issue
206
+ - Initial release on conda-forge
207
+
208
+ v0.8.5 (2024-01-31)
209
+ -------------------
210
+
211
+ - Improve quality of coverage and format
212
+ - Fix dependency issue
213
+
214
+ v0.8.4 (2024-01-30)
215
+ -------------------
216
+
217
+ - Version cleanup
218
+
219
+ v0.8.3 (2024-01-30)
220
+ -------------------
221
+
222
+ - Initial release on PyPI
223
+
224
+ v0.8.2 (2024-01-30)
225
+ -------------------
226
+
227
+ - Improve examples
228
+ - Add module ``report`` and func ``RoutineBase.export_csv`` for results export
229
+
230
+ v0.8.1 (2024-01-20)
231
+ -------------------
232
+
233
+ - Improve ``MatProcessor``
234
+ - Add more examples
235
+ - Improve ANDES interface
236
+
237
+ v0.8.0 (2024-01-09)
238
+ -------------------
239
+
240
+ - Refactor ``DCED`` routines to improve performance
241
+
242
+ v0.7.5 (2023-12-28)
243
+ -------------------
244
+
245
+ - Refactor ``MatProcessor`` and ``DCED`` routines to improve performance
246
+ - Integrate sparsity pattern in ``RParam``
247
+ - Rename energy storage routines ``RTED2``, ``ED2`` and ``UC2`` to ``RTEDES``, ``EDES`` and ``UCES``
248
+
249
+ v0.7.4 (2023-11-29)
250
+ -------------------
251
+
252
+ - Refactor routins and optimization models to improve performance
253
+ - Fix routines modeling
254
+ - Add examples
255
+ - Fix built-in cases
256
+
257
+ v0.7.3 (2023-11-03)
258
+ -------------------
259
+
260
+ - Add tests
261
+
262
+ v0.7.2 (2023-10-26)
263
+ -------------------
264
+
265
+ - Add routines ``ED2`` and ``UC2``
266
+ - Minor fix on ``SymProcessor`` and ``Documenter``
267
+
268
+ v0.7.1 (2023-10-12)
269
+ -------------------
270
+
271
+ - Add function ``_initial_guess`` to routine ``UC``
272
+ - Refactor PYPOWER
273
+
274
+ v0.7.0 (2023-09-22)
275
+ -------------------
276
+
277
+ - Add interfaces for customizing optimization
278
+ - Add models ``REGCV1`` and ``REGCV1Cost`` for virtual inertia scheduling
279
+ - Add cost models: ``SRCost``, ``NSRCost``, ``DCost``
280
+ - Add reserve models: ``SR``, ``NSR``
281
+ - Add routine ``UC``
282
+ - Add routine ``RTED2`` to include energy storage model
283
+
284
+ v0.6.7 (2023-08-02)
285
+ -------------------
286
+
287
+ - Version cleanup
288
+
289
+ v0.6.6 (2023-07-27)
290
+ -------------------
291
+
292
+ - Improve routine reference
293
+ - Add routine ED, LDOPF
294
+
295
+ v0.6.5 (2023-06-27)
296
+ -------------------
297
+
298
+ - Update documentation with auto-generated model and routine reference
299
+ - Add interface with ANDES ``ams.interop.andes``
300
+ - Add routine RTED and example of RTED-TDS co-simulation
301
+ - Draft development documentation
302
+
303
+ v0.6.4 (2023-05-23)
304
+ -------------------
305
+
306
+ - Setup PFlow and DCPF using PYPOWER
307
+
308
+ v0.6.3 (2023-05-22)
309
+ -------------------
310
+
311
+ - Using CVXPY for draft implementation
312
+ - Improve ``model``, ``group``, ``param`` and ``var`` in ``core``
313
+ - Refactor ``routines`` and ``opt``
314
+ - Improve PYPOWER interface ``io.pypower.system2ppc``
315
+ - Fix PYPOWER function ``solver.pypower.makePTDF``
316
+
317
+ v0.6.2 (2023-04-23)
318
+ -------------------
319
+
320
+ - Enhance docstring
321
+ - Remove unused module ``utils.LazyImport``
322
+ - Remove unused module ``shared``
323
+
324
+ v0.6.1 (2023-03-05)
325
+ -------------------
326
+
327
+ - Fix incompatiability of NumPy attribute ``object`` in ``io.matpower._get_bus_id_caller``
328
+ - Add file parser ``io.pypower`` for PYPOWER case file
329
+ - Deprecate PYPOWER interface ``solvers.ipp``
330
+
331
+ v0.6.0 (2023-03-04)
332
+ -------------------
333
+
334
+ - Set up PYPOWER for power flow calculation
335
+ - Add PYPOWER interface ``solvers.ipp``
336
+ - Develop module ``routines`` for routine analysis
337
+ - Revise module ``system``, ``core.var``, ``core.model`` for routine analysis
338
+ - Set up routine ``PFlow`` for power flow calculation
339
+ - Add file parser ``io.matpower`` and ``io.raw`` for MATPOWER file and RAW file
340
+ - Documentation of APIs
341
+
342
+ v0.5 (2023-02-17)
343
+ -------------------
344
+
345
+ - Develop module ``system``, ``main``, ``cli``
346
+ - Development preparation: versioneer, documentation, etc.
347
+
348
+ v0.4 (2023-01)
349
+ -------------------
350
+
351
+ This release outlines the package.
352
+
353
+ Known Limitations
354
+ =================
355
+
356
+ - For builit-in PYPOWER-based ACOPF, the known largest solvable case is "pglib_opf_case1354_pegase.m"
357
+ - Batch processing is not supported yet
358
+ - Routine ``DCOPF`` has been extensively benchmarked with pandapower and MATPOWER.
359
+ - Routines besides above mentioned are not fully benchmarked yet.
360
+
361
+ Roadmap
362
+ =======
363
+
364
+ This section lists out some potential features that may be added in the future.
365
+ Note that the proposed features are not guaranteed to be implemented and subject to change.
366
+
367
+ Electric Vehicle for Grid Service
368
+ ------------------------------------------
369
+
370
+ A charging-time-constrained EV aggregation based on the state-space model
371
+
372
+ References:
373
+
374
+ [1] J. Wang et al., "Electric Vehicles Charging Time Constrained Deliverable Provision of Secondary
375
+ Frequency Regulation," in IEEE Transactions on Smart Grid, doi: 10.1109/TSG.2024.3356948.
376
+
377
+ [2] M. Wang et al., "State Space Model of Aggregated Electric Vehicles for Frequency Regulation," in
378
+ IEEE Transactions on Smart Grid, vol. 11, no. 2, pp. 981-994, March 2020, doi: 10.1109/TSG.2019.2929052.
379
+
380
+ Distribution OPF
381
+ --------------------------
382
+
383
+ - Distribution networks OPF and its LMP
384
+ - DG siting and sizing considering energy equity
385
+
386
+ References:
387
+
388
+ [1] H. Yuan, F. Li, Y. Wei and J. Zhu, "Novel Linearized Power Flow and Linearized OPF Models for
389
+ Active Distribution Networks With Application in Distribution LMP," in IEEE Transactions on Smart Grid,
390
+ vol. 9, no. 1, pp. 438-448, Jan. 2018, doi: 10.1109/TSG.2016.2594814.
391
+
392
+ [2] C. Li, F. Li, S. Jiang, X. Wang and J. Wang, "Siting and Sizing of DG Units Considering Energy
393
+ Equity: Model, Solution, and Guidelines," in IEEE Transactions on Smart Grid, doi: 10.1109/TSG.2024.3350914.
394
+
395
+ Planning
396
+ --------------------------
397
+
398
+ - Transmission expansion planning
@@ -0,0 +1,215 @@
1
+ Metadata-Version: 2.2
2
+ Name: ltbams
3
+ Version: 1.0.2
4
+ Summary: Python software for scheduling modeling and co-simulation with dynamics.
5
+ Home-page: https://github.com/CURENT/ams
6
+ Author: Jinning Wang
7
+ Author-email: Jinning Wang <jinninggm@gmail.com>
8
+ License: GPL-3.0-or-later
9
+ Classifier: Development Status :: 4 - Beta
10
+ Classifier: Natural Language :: English
11
+ Classifier: Programming Language :: Python :: 3
12
+ Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
13
+ Classifier: Environment :: Console
14
+ Description-Content-Type: text/markdown
15
+ Requires-Dist: kvxopt>=1.3.2.1
16
+ Requires-Dist: numpy
17
+ Requires-Dist: scipy
18
+ Requires-Dist: sympy!=1.10.0,>=1.6
19
+ Requires-Dist: pandas
20
+ Requires-Dist: matplotlib
21
+ Requires-Dist: psutil
22
+ Requires-Dist: openpyxl
23
+ Requires-Dist: andes>=1.9.3
24
+ Requires-Dist: pybind11
25
+ Requires-Dist: cvxpy
26
+ Dynamic: author
27
+ Dynamic: home-page
28
+
29
+ # LTB AMS
30
+
31
+ Python Software for Power System Scheduling Modeling and Co-Simulation with Dynamics, serving as the market simulator for the [CURENT Largescale Testbed][LTB Repository].
32
+
33
+ [![License: GPL-3.0](https://img.shields.io/badge/License-GPL--3.0-blue.svg)](https://github.com/CURENT/ams/blob/master/LICENSE)
34
+ ![platforms](https://anaconda.org/conda-forge/ltbams/badges/platforms.svg)
35
+ [![Python Versions](https://img.shields.io/badge/Python-3.9%20%7C%203.10%20%7C%203.11%20%7C%203.12-blue)](https://www.python.org/)
36
+ [![Project Status: Active – The project has reached a stable, usable state and is being actively developed.](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active)
37
+ ![Repo Size](https://img.shields.io/github/repo-size/CURENT/ams)
38
+ [![GitHub last commit (master)](https://img.shields.io/github/last-commit/CURENT/ams/master?label=last%20commit%20to%20master)](https://github.com/CURENT/ams/commits/master/)
39
+ [![GitHub last commit (develop)](https://img.shields.io/github/last-commit/CURENT/ams/develop?label=last%20commit%20to%20develop)](https://github.com/CURENT/ams/commits/develop/)
40
+ [![libraries](https://img.shields.io/librariesio/release/pypi/ltbams)](https://libraries.io/pypi/ltbams)
41
+ [![Structure](https://img.shields.io/badge/code_base-visualize-blue)](https://mango-dune-07a8b7110.1.azurestaticapps.net/?repo=CURENT%2Fams)
42
+
43
+ [![Compatibility Tests](https://github.com/CURENT/ams/actions/workflows/compatibility.yml/badge.svg)](https://github.com/CURENT/ams/actions/workflows/compatibility.yml)
44
+ [![Publish to TestPyPI and PyPI](https://github.com/CURENT/ams/actions/workflows/publish-pypi.yml/badge.svg?branch=master)](https://github.com/CURENT/ams/actions/workflows/publish-pypi.yml)
45
+ [![Azure Pipline](https://dev.azure.com/curentltb/ams/_apis/build/status%2FCURENT.ams?branchName=master)](https://dev.azure.com/curentltb/ams/_build/latest?definitionId=2&branchName=master)
46
+
47
+ <img src="docs/source/images/sponsors/CURENT_Logo_NameOnTrans.png" alt="CURENT ERC Logo" width="300" height="auto">
48
+
49
+ | | Stable | Latest |
50
+ |---------------|-----------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------|
51
+ | Documentation | [![Documentation Status](https://readthedocs.org/projects/ams/badge/?version=stable)](https://ams.readthedocs.io/en/stable/?badge=stable) | [![Latest Documentation](https://readthedocs.org/projects/ams/badge/?version=latest)](https://ams.readthedocs.io/en/latest/?badge=latest) |
52
+
53
+
54
+ | Badges | | |
55
+ |---------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
56
+ | Downloads | [![PyPI Version](https://img.shields.io/pypi/v/ltbams.svg)](https://pypi.python.org/pypi/ltbams) | [![Conda Version](https://anaconda.org/conda-forge/ltbams/badges/version.svg)](https://anaconda.org/conda-forge/ltbams) |
57
+ | Try on Binder | [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/curent/ams/master) | |
58
+ | Code Quality |[![Codacy Badge](https://app.codacy.com/project/badge/Grade/69456da1b8634f2f984bd769e35f0050)](https://app.codacy.com/gh/CURENT/ams/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade)| [![Codacy Badge](https://app.codacy.com/project/badge/Coverage/69456da1b8634f2f984bd769e35f0050)](https://app.codacy.com/gh/CURENT/ams/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_coverage) |
59
+
60
+
61
+
62
+ # Why AMS
63
+
64
+ AMS facilitates **Dynamics Incorporated Scheduling** and **Scheduling-Dynamics Co-Simulation**
65
+ through an integrated interface with ANDES.
66
+
67
+ This package is helpful for power system engineers, researchers, and students conducting
68
+ scheduling and transient stability studies at specific operating points. It also benefits
69
+ those interested in developing new scheduling formulations and algorithms, particularly
70
+ by extending existing formulations to include new decision variables, constraints, and
71
+ objective functions.
72
+
73
+ AMS is a **Modeling Framework** that provides a descriptive way to formulate
74
+ scheduling problems. The optimization problems are then handled by **CVXPY**
75
+ and solved with third-party solvers.
76
+
77
+ AMS produces credible scheduling results and competitive performance.
78
+ The following results show the comparison of DCOPF between AMS and other tools.
79
+
80
+ | Cost [\$] | AMS | pandapower | MATPOWER |
81
+ |-----------------------|--------------|--------------|--------------|
82
+ | IEEE 14-Bus | 7,642.59 | 7,642.59 | 7,642.59 |
83
+ | IEEE 39-Bus | 41,263.94 | 41,263.94 | 41,263.94 |
84
+ | PEGASE 89-Bus | 5,733.37 | 5,733.37 | 5,733.37 |
85
+ | IEEE 118-Bus | 125,947.88 | 125,947.88 | 125,947.88 |
86
+ | NPCC 140-Bus | 810,033.37 | 810,016.06 | 810,033.37 |
87
+ | WECC 179-Bus | 411,706.13 | 411,706.13 | 411,706.13 |
88
+ | IEEE 300-Bus | 706,292.32 | 706,292.32 | 706,292.32 |
89
+ | PEGASE 1354-Bus | 1,218,096.86 | 1,218,096.86 | 1,218,096.86 |
90
+ | PEGASE 2869-Bus | 2,386,235.33 | 2,386,235.33 | 2,386,235.33 |
91
+ | GOC 4020-Bus | 793,634.11 | 793,634.11 | 793,634.11 |
92
+ | EPIGRIDS 5658-Bus | 1,195,466.12 | 1,195,466.12 | 1,195,466.12 |
93
+ | EPIGRIDS 7336-Bus | 1,855,870.94 | 1,855,870.94 | 1,855,870.94 |
94
+
95
+ <div style="text-align: left;">
96
+ <img src="docs/source/images/dcopf_time.png" alt="DCOPF Time" width="480" height="auto">
97
+ <p><strong>Figure:</strong> Computation time of OPF on small-scale cases.</p>
98
+ </div>
99
+
100
+ In the bar chart, the gray bar labeled "AMS Symbolic Processing" represents the time spent
101
+ on symbolic processing, while the wheat-colored bar "AMS Numeric Evaluation" represents the
102
+ time spent on system matrices calculation and optimization model construction.
103
+ The orange bar labeled "AMS GUROBI" represents the optimization-solving time using the GUROBI solver.
104
+ Similarly, the red bar labeled "AMS MOSEK" and the pink bar labeled "AMS PIQP" represent the
105
+ time used by the solvers MOSEK and PIQP, respectively.
106
+ Regarding the baselines, the blue and green bars represent the running time of MATPOWER using
107
+ solver MIPS and pandapower using solver PIPS, respectively.
108
+ The results for AMS, pandapower, and matpower are the average time consumed over ten repeat tests.
109
+
110
+ AMS is currently under active development.
111
+ Use the following resources to get involved.
112
+
113
+ - Start from the [documentation][readthedocs] for installation and tutorial.
114
+ - Check out examples in the [examples folder][examples]
115
+ - Read the model verification results in the [examples/verification folder][verification]
116
+ - Ask a question in the [GitHub Discussions][Github Discussions]
117
+ - Report bugs or issues by submitting a [GitHub issue][GitHub issues]
118
+ - Submit contributions using [pull requests][GitHub pull requests]
119
+ - Read release notes highlighted [here][release notes]
120
+ - Try in Jupyter Notebook on [Binder][Binder]
121
+ - Check out the source code used for [benchmark][benchmark]
122
+ - Check out and and cite our [paper][paper]
123
+
124
+ # Installation
125
+
126
+ AMS is released as ``ltbams`` on PyPI and conda-forge.
127
+ Install from PyPI using pip:
128
+
129
+ ```bash
130
+ pip install ltbams
131
+ ```
132
+
133
+ Install from conda-forge using conda:
134
+
135
+ ```bash
136
+ conda install conda-forge::ltbams
137
+ ```
138
+
139
+ Install from GitHub source:
140
+
141
+ ```bash
142
+ pip install git+https://github.com/CURENT/ams.git
143
+ ```
144
+
145
+ ***NOTE:***
146
+ - `cvxpy` is distributed with the open source solvers CLARABEL, OSQP, and SCS, but MIP-capable solvers need separate installation
147
+ - `cvxpy` versions **below 1.5** are incompatible with `numpy` versions **2.0 and above**
148
+ - If the solver `SCIP` encounters an import error caused by a missing `libscip.9.1.dylib`, try reinstalling its Python interface by running `pip install pyscipopt --no-binary scip --force`
149
+ - `kvxopt` is recommended to install via `conda` as sometimes ``pip`` struggles to set the correct path for compiled libraries
150
+ - Versions **1.0.0** and **1.0.1** are only available on PyPI
151
+ - Version **0.9.9** has known issues and has been yanked from PyPI
152
+
153
+ # Example Usage
154
+
155
+ ```python
156
+ import ams
157
+ import andes
158
+
159
+ ss = ams.load(ams.get_case('ieee14/ieee14_uced.xlsx'))
160
+
161
+ # solve RTED
162
+ ss.RTED.run(solver='CLARABEL')
163
+
164
+ ss.RTED.pg.v
165
+ >>> array([1.8743862, 0.3226138, 0.01 , 0.02 , 0.01 ])
166
+
167
+ # convert to ANDES case
168
+ sa = ss.to_andes(addfile=andes.get_case('ieee14/ieee14_full.xlsx'),
169
+ setup=True, verify=False)
170
+ sa
171
+ >>> <andes.system.System at 0x14bd98190>
172
+ ```
173
+
174
+ # Citing AMS
175
+ If you use AMS for research or consulting, please cite the following paper in your publication that uses AMS:
176
+
177
+ > J. Wang et al., "Dynamics-incorporated Modeling Framework for Stability Constrained Scheduling Under High-penetration of Renewable Energy," in IEEE Transactions on Sustainable Energy, doi: 10.1109/TSTE.2025.3528027.
178
+
179
+ # Sponsors and Contributors
180
+ AMS is the scheduling simulation engine for the CURENT Largescale Testbed (LTB).
181
+ More information about CURENT LTB can be found at the [LTB Repository][LTB Repository].
182
+
183
+ This work was supported in part by the Engineering Research Center Program of the National Science Foundation and the Department of Energy
184
+ under NSF Award Number EEC-1041877 and the CURENT Industry Partnership Program.
185
+
186
+ This work was supported in part by the Advanced Grid Research and Development Program in the Office of Electricity at the U.S. Department of Energy.
187
+
188
+ See [GitHub contributors][GitHub contributors] for the contributor list.
189
+
190
+ # License
191
+ AMS is licensed under the [GPL v3 License](./LICENSE).
192
+
193
+ # Related Projects
194
+ - [Popular Open Source Libraries for Power System Analysis](https://github.com/jinningwang/best-of-ps)
195
+ - [G-PST Tools Portal](https://g-pst.github.io/tools/): An open tools portal with a classification approach
196
+ - [Open Source Software (OSS) for Electricity Market Research, Teaching, and Training](https://www2.econ.iastate.edu/tesfatsi/ElectricOSS.htm)
197
+
198
+ Some commercial solvers provide academic licenses, such as COPT, GUROBI, CPLEX, and MOSEK.
199
+
200
+ * * *
201
+
202
+ [GitHub releases]: https://github.com/CURENT/ams/releases
203
+ [GitHub issues]: https://github.com/CURENT/ams/issues
204
+ [Github Discussions]: https://github.com/CURENT/ams/discussions
205
+ [GitHub insights]: https://github.com/CURENT/ams/pulse
206
+ [GitHub pull requests]: https://github.com/CURENT/ams/pulls
207
+ [GitHub contributors]: https://github.com/CURENT/ams/graphs/contributors
208
+ [readthedocs]: https://ams.readthedocs.io
209
+ [release notes]: https://ams.readthedocs.io/en/latest/release-notes.html
210
+ [examples]: https://github.com/CURENT/ams/tree/master/examples
211
+ [verification]: https://github.com/CURENT/ams/tree/master/examples/verification
212
+ [Binder]: https://mybinder.org/v2/gh/curent/ams/master
213
+ [LTB Repository]: https://github.com/CURENT
214
+ [benchmark]: https://github.com/CURENT/demo/tree/master/demo/ams_benchmark
215
+ [paper]: https://ieeexplore.ieee.org/document/9169830