ltbams 0.9.9__py3-none-any.whl → 1.0.2a1__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.
- ams/__init__.py +4 -11
- ams/_version.py +3 -3
- ams/cases/5bus/pjm5bus_demo.xlsx +0 -0
- ams/cases/5bus/pjm5bus_jumper.xlsx +0 -0
- ams/cases/5bus/pjm5bus_uced.json +1062 -0
- ams/cases/5bus/pjm5bus_uced.xlsx +0 -0
- ams/cases/5bus/pjm5bus_uced_esd1.xlsx +0 -0
- ams/cases/5bus/pjm5bus_uced_ev.xlsx +0 -0
- ams/cases/ieee123/ieee123.xlsx +0 -0
- ams/cases/ieee123/ieee123_regcv1.xlsx +0 -0
- ams/cases/ieee14/ieee14.json +1166 -0
- ams/cases/ieee14/ieee14.raw +92 -0
- ams/cases/ieee14/ieee14_conn.xlsx +0 -0
- ams/cases/ieee14/ieee14_uced.xlsx +0 -0
- ams/cases/ieee39/ieee39.xlsx +0 -0
- ams/cases/ieee39/ieee39_uced.xlsx +0 -0
- ams/cases/ieee39/ieee39_uced_esd1.xlsx +0 -0
- ams/cases/ieee39/ieee39_uced_pvd1.xlsx +0 -0
- ams/cases/ieee39/ieee39_uced_vis.xlsx +0 -0
- ams/cases/matpower/benchmark.json +1594 -0
- ams/cases/matpower/case118.m +787 -0
- ams/cases/matpower/case14.m +129 -0
- ams/cases/matpower/case300.m +1315 -0
- ams/cases/matpower/case39.m +205 -0
- ams/cases/matpower/case5.m +62 -0
- ams/cases/matpower/case_ACTIVSg2000.m +9460 -0
- ams/cases/npcc/npcc.m +644 -0
- ams/cases/npcc/npcc_uced.xlsx +0 -0
- ams/cases/pglib/pglib_opf_case39_epri__api.m +243 -0
- ams/cases/wecc/wecc.m +714 -0
- ams/cases/wecc/wecc_uced.xlsx +0 -0
- ams/cli.py +6 -0
- ams/core/__init__.py +2 -0
- ams/core/documenter.py +652 -0
- ams/core/matprocessor.py +782 -0
- ams/core/model.py +330 -0
- ams/core/param.py +322 -0
- ams/core/service.py +918 -0
- ams/core/symprocessor.py +224 -0
- ams/core/var.py +59 -0
- ams/extension/__init__.py +5 -0
- ams/extension/eva.py +401 -0
- ams/interface.py +1085 -0
- ams/io/__init__.py +133 -0
- ams/io/json.py +82 -0
- ams/io/matpower.py +406 -0
- ams/io/psse.py +6 -0
- ams/io/pypower.py +103 -0
- ams/io/xlsx.py +80 -0
- ams/main.py +81 -4
- ams/models/__init__.py +24 -0
- ams/models/area.py +40 -0
- ams/models/bus.py +52 -0
- ams/models/cost.py +169 -0
- ams/models/distributed/__init__.py +3 -0
- ams/models/distributed/esd1.py +71 -0
- ams/models/distributed/ev.py +60 -0
- ams/models/distributed/pvd1.py +67 -0
- ams/models/group.py +231 -0
- ams/models/info.py +26 -0
- ams/models/line.py +238 -0
- ams/models/renewable/__init__.py +5 -0
- ams/models/renewable/regc.py +119 -0
- ams/models/reserve.py +94 -0
- ams/models/shunt.py +14 -0
- ams/models/static/__init__.py +2 -0
- ams/models/static/gen.py +165 -0
- ams/models/static/pq.py +61 -0
- ams/models/timeslot.py +69 -0
- ams/models/zone.py +49 -0
- ams/opt/__init__.py +12 -0
- ams/opt/constraint.py +175 -0
- ams/opt/exprcalc.py +127 -0
- ams/opt/expression.py +188 -0
- ams/opt/objective.py +174 -0
- ams/opt/omodel.py +432 -0
- ams/opt/optzbase.py +192 -0
- ams/opt/param.py +156 -0
- ams/opt/var.py +233 -0
- ams/pypower/__init__.py +8 -0
- ams/pypower/_compat.py +9 -0
- ams/pypower/core/__init__.py +8 -0
- ams/pypower/core/pips.py +894 -0
- ams/pypower/core/ppoption.py +244 -0
- ams/pypower/core/ppver.py +18 -0
- ams/pypower/core/solver.py +2451 -0
- ams/pypower/eps.py +6 -0
- ams/pypower/idx.py +174 -0
- ams/pypower/io.py +604 -0
- ams/pypower/make/__init__.py +11 -0
- ams/pypower/make/matrices.py +665 -0
- ams/pypower/make/pdv.py +506 -0
- ams/pypower/routines/__init__.py +7 -0
- ams/pypower/routines/cpf.py +513 -0
- ams/pypower/routines/cpf_callbacks.py +114 -0
- ams/pypower/routines/opf.py +1803 -0
- ams/pypower/routines/opffcns.py +1946 -0
- ams/pypower/routines/pflow.py +852 -0
- ams/pypower/toggle.py +1098 -0
- ams/pypower/utils.py +293 -0
- ams/report.py +212 -50
- ams/routines/__init__.py +23 -0
- ams/routines/acopf.py +117 -0
- ams/routines/cpf.py +65 -0
- ams/routines/dcopf.py +241 -0
- ams/routines/dcpf.py +209 -0
- ams/routines/dcpf0.py +196 -0
- ams/routines/dopf.py +150 -0
- ams/routines/ed.py +312 -0
- ams/routines/pflow.py +255 -0
- ams/routines/pflow0.py +113 -0
- ams/routines/routine.py +1033 -0
- ams/routines/rted.py +519 -0
- ams/routines/type.py +160 -0
- ams/routines/uc.py +376 -0
- ams/shared.py +63 -9
- ams/system.py +61 -22
- ams/utils/__init__.py +3 -0
- ams/utils/misc.py +77 -0
- ams/utils/paths.py +257 -0
- docs/Makefile +21 -0
- docs/make.bat +35 -0
- docs/source/_templates/autosummary/base.rst +5 -0
- docs/source/_templates/autosummary/class.rst +35 -0
- docs/source/_templates/autosummary/module.rst +65 -0
- docs/source/_templates/autosummary/module_toctree.rst +66 -0
- docs/source/api.rst +102 -0
- docs/source/conf.py +203 -0
- docs/source/examples/index.rst +34 -0
- docs/source/genmodelref.py +61 -0
- docs/source/genroutineref.py +47 -0
- docs/source/getting_started/copyright.rst +20 -0
- docs/source/getting_started/formats/index.rst +20 -0
- docs/source/getting_started/formats/matpower.rst +183 -0
- docs/source/getting_started/formats/psse.rst +46 -0
- docs/source/getting_started/formats/pypower.rst +223 -0
- docs/source/getting_started/formats/xlsx.png +0 -0
- docs/source/getting_started/formats/xlsx.rst +23 -0
- docs/source/getting_started/index.rst +76 -0
- docs/source/getting_started/install.rst +234 -0
- docs/source/getting_started/overview.rst +26 -0
- docs/source/getting_started/testcase.rst +45 -0
- docs/source/getting_started/verification.rst +13 -0
- docs/source/images/curent.ico +0 -0
- docs/source/images/dcopf_time.png +0 -0
- docs/source/images/sponsors/CURENT_Logo_NameOnTrans.png +0 -0
- docs/source/images/sponsors/CURENT_Logo_Transparent.png +0 -0
- docs/source/images/sponsors/CURENT_Logo_Transparent_Name.png +0 -0
- docs/source/images/sponsors/doe.png +0 -0
- docs/source/index.rst +108 -0
- docs/source/modeling/example.rst +159 -0
- docs/source/modeling/index.rst +17 -0
- docs/source/modeling/model.rst +210 -0
- docs/source/modeling/routine.rst +122 -0
- docs/source/modeling/system.rst +51 -0
- docs/source/release-notes.rst +398 -0
- ltbams-1.0.2a1.dist-info/METADATA +210 -0
- ltbams-1.0.2a1.dist-info/RECORD +188 -0
- {ltbams-0.9.9.dist-info → ltbams-1.0.2a1.dist-info}/WHEEL +1 -1
- ltbams-1.0.2a1.dist-info/top_level.txt +3 -0
- tests/__init__.py +0 -0
- tests/test_1st_system.py +33 -0
- tests/test_addressing.py +40 -0
- tests/test_andes_mats.py +61 -0
- tests/test_case.py +266 -0
- tests/test_cli.py +34 -0
- tests/test_export_csv.py +89 -0
- tests/test_group.py +83 -0
- tests/test_interface.py +216 -0
- tests/test_io.py +32 -0
- tests/test_jumper.py +27 -0
- tests/test_known_good.py +267 -0
- tests/test_matp.py +437 -0
- tests/test_model.py +54 -0
- tests/test_omodel.py +119 -0
- tests/test_paths.py +22 -0
- tests/test_report.py +251 -0
- tests/test_repr.py +21 -0
- tests/test_routine.py +178 -0
- tests/test_rtn_dcopf.py +101 -0
- tests/test_rtn_dcpf.py +77 -0
- tests/test_rtn_ed.py +279 -0
- tests/test_rtn_pflow.py +219 -0
- tests/test_rtn_rted.py +273 -0
- tests/test_rtn_uc.py +248 -0
- tests/test_service.py +73 -0
- ltbams-0.9.9.dist-info/LICENSE +0 -692
- ltbams-0.9.9.dist-info/METADATA +0 -859
- ltbams-0.9.9.dist-info/RECORD +0 -14
- ltbams-0.9.9.dist-info/top_level.txt +0 -1
- {ltbams-0.9.9.dist-info → ltbams-1.0.2a1.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,210 @@
|
|
1
|
+
Metadata-Version: 2.2
|
2
|
+
Name: ltbams
|
3
|
+
Version: 1.0.2a1
|
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
|
+
[](https://github.com/CURENT/ams/blob/master/LICENSE)
|
34
|
+

|
35
|
+
[](https://www.python.org/)
|
36
|
+
[](https://www.repostatus.org/#active)
|
37
|
+

|
38
|
+
[](https://github.com/CURENT/ams/commits/master/)
|
39
|
+
[](https://github.com/CURENT/ams/commits/develop/)
|
40
|
+
[](https://libraries.io/pypi/ltbams)
|
41
|
+
[](https://mango-dune-07a8b7110.1.azurestaticapps.net/?repo=CURENT%2Fams)
|
42
|
+
|
43
|
+
<img src="docs/source/images/sponsors/CURENT_Logo_NameOnTrans.png" alt="CURENT ERC Logo" width="300" height="auto">
|
44
|
+
|
45
|
+
| | Latest | Stable |
|
46
|
+
|---------------|-----------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------|
|
47
|
+
| Documentation | [](https://ams.readthedocs.io/en/latest/?badge=latest) | [](https://ams.readthedocs.io/en/stable/?badge=stable) |
|
48
|
+
|
49
|
+
|
50
|
+
| Badges | | |
|
51
|
+
|---------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
52
|
+
| Downloads | [](https://pypi.python.org/pypi/ltbams) | [](https://anaconda.org/conda-forge/ltbams) |
|
53
|
+
| Try on Binder | [](https://mybinder.org/v2/gh/curent/ams/master) | |
|
54
|
+
| Code Quality |[](https://app.codacy.com/gh/CURENT/ams/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade)| [](https://app.codacy.com/gh/CURENT/ams/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_coverage) |
|
55
|
+
| Build Status | [](https://github.com/curent/ams/actions) | [](https://dev.azure.com/curentltb/ams/_build/latest?definitionId=2&branchName=master) |
|
56
|
+
|
57
|
+
|
58
|
+
# Why AMS
|
59
|
+
|
60
|
+
AMS facilitates **Dynamics Incorporated Scheduling** and **Scheduling-Dynamics Co-Simulation**
|
61
|
+
through an integrated interface with ANDES.
|
62
|
+
|
63
|
+
This package is helpful for power system engineers, researchers, and students conducting
|
64
|
+
scheduling and transient stability studies at specific operating points. It also benefits
|
65
|
+
those interested in developing new scheduling formulations and algorithms, particularly
|
66
|
+
by extending existing formulations to include new decision variables, constraints, and
|
67
|
+
objective functions.
|
68
|
+
|
69
|
+
AMS is a **Modeling Framework** that provides a descriptive way to formulate
|
70
|
+
scheduling problems. The optimization problems are then handled by **CVXPY**
|
71
|
+
and solved with third-party solvers.
|
72
|
+
|
73
|
+
AMS produces credible scheduling results and competitive performance.
|
74
|
+
The following results show the comparison of DCOPF between AMS and other tools.
|
75
|
+
|
76
|
+
| Cost [\$] | AMS | pandapower | MATPOWER |
|
77
|
+
|-----------------------|--------------|--------------|--------------|
|
78
|
+
| IEEE 14-Bus | 7,642.59 | 7,642.59 | 7,642.59 |
|
79
|
+
| IEEE 39-Bus | 41,263.94 | 41,263.94 | 41,263.94 |
|
80
|
+
| PEGASE 89-Bus | 5,733.37 | 5,733.37 | 5,733.37 |
|
81
|
+
| IEEE 118-Bus | 125,947.88 | 125,947.88 | 125,947.88 |
|
82
|
+
| NPCC 140-Bus | 810,033.37 | 810,016.06 | 810,033.37 |
|
83
|
+
| WECC 179-Bus | 411,706.13 | 411,706.13 | 411,706.13 |
|
84
|
+
| IEEE 300-Bus | 706,292.32 | 706,292.32 | 706,292.32 |
|
85
|
+
| PEGASE 1354-Bus | 1,218,096.86 | 1,218,096.86 | 1,218,096.86 |
|
86
|
+
| PEGASE 2869-Bus | 2,386,235.33 | 2,386,235.33 | 2,386,235.33 |
|
87
|
+
| GOC 4020-Bus | 793,634.11 | 793,634.11 | 793,634.11 |
|
88
|
+
| EPIGRIDS 5658-Bus | 1,195,466.12 | 1,195,466.12 | 1,195,466.12 |
|
89
|
+
| EPIGRIDS 7336-Bus | 1,855,870.94 | 1,855,870.94 | 1,855,870.94 |
|
90
|
+
|
91
|
+
<div style="text-align: left;">
|
92
|
+
<img src="docs/source/images/dcopf_time.png" alt="DCOPF Time" width="480" height="auto">
|
93
|
+
<p><strong>Figure:</strong> Computation time of OPF on small-scale cases.</p>
|
94
|
+
</div>
|
95
|
+
|
96
|
+
In the bar chart, the gray bar labeled "AMS Symbolic Processing" represents the time spent
|
97
|
+
on symbolic processing, while the wheat-colored bar "AMS Numeric Evaluation" represents the
|
98
|
+
time spent on system matrices calculation and optimization model construction.
|
99
|
+
The orange bar labeled "AMS GUROBI" represents the optimization-solving time using the GUROBI solver.
|
100
|
+
Similarly, the red bar labeled "AMS MOSEK" and the pink bar labeled "AMS PIQP" represent the
|
101
|
+
time used by the solvers MOSEK and PIQP, respectively.
|
102
|
+
Regarding the baselines, the blue and green bars represent the running time of MATPOWER using
|
103
|
+
solver MIPS and pandapower using solver PIPS, respectively.
|
104
|
+
The results for AMS, pandapower, and matpower are the average time consumed over ten repeat tests.
|
105
|
+
|
106
|
+
AMS is currently under active development.
|
107
|
+
Use the following resources to get involved.
|
108
|
+
|
109
|
+
- Start from the [documentation][readthedocs] for installation and tutorial.
|
110
|
+
- Check out examples in the [examples folder][examples]
|
111
|
+
- Read the model verification results in the [examples/verification folder][verification]
|
112
|
+
- Ask a question in the [GitHub Discussions][Github Discussions]
|
113
|
+
- Report bugs or issues by submitting a [GitHub issue][GitHub issues]
|
114
|
+
- Submit contributions using [pull requests][GitHub pull requests]
|
115
|
+
- Read release notes highlighted [here][release notes]
|
116
|
+
- Try in Jupyter Notebook on [Binder][Binder]
|
117
|
+
- Check out the source code used for [benchmark][benchmark]
|
118
|
+
- Check out and and cite our [paper][paper]
|
119
|
+
|
120
|
+
# Installation
|
121
|
+
|
122
|
+
AMS is released as ``ltbams`` on PyPI and conda-forge.
|
123
|
+
Install from PyPI using pip:
|
124
|
+
|
125
|
+
```bash
|
126
|
+
pip install ltbams
|
127
|
+
```
|
128
|
+
|
129
|
+
Install from conda-forge using conda:
|
130
|
+
|
131
|
+
```bash
|
132
|
+
conda install conda-forge::ltbams
|
133
|
+
```
|
134
|
+
|
135
|
+
Install from GitHub source:
|
136
|
+
|
137
|
+
```bash
|
138
|
+
pip install git+https://github.com/CURENT/ams.git
|
139
|
+
```
|
140
|
+
|
141
|
+
***NOTE:***
|
142
|
+
- Version **0.9.9** has known issues and has been yanked from PyPI
|
143
|
+
- `kvxopt` is recommended to install via `conda` as sometimes ``pip`` struggles to set the correct path for compiled libraries
|
144
|
+
- `cvxpy` versions **below 1.5** are incompatible with `numpy` versions **2.0 and above**
|
145
|
+
- 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`
|
146
|
+
- Version **1.0.0** is only available on PyPI
|
147
|
+
|
148
|
+
# Example Usage
|
149
|
+
|
150
|
+
```python
|
151
|
+
import ams
|
152
|
+
import andes
|
153
|
+
|
154
|
+
ss = ams.load(ams.get_case('ieee14/ieee14_uced.xlsx'))
|
155
|
+
|
156
|
+
# solve RTED
|
157
|
+
ss.RTED.run(solver='CLARABEL')
|
158
|
+
|
159
|
+
ss.RTED.pg.v
|
160
|
+
>>> array([1.8743862, 0.3226138, 0.01 , 0.02 , 0.01 ])
|
161
|
+
|
162
|
+
# convert to ANDES case
|
163
|
+
sa = ss.to_andes(addfile=andes.get_case('ieee14/ieee14_full.xlsx'),
|
164
|
+
setup=True, verify=False)
|
165
|
+
sa
|
166
|
+
>>> <andes.system.System at 0x14bd98190>
|
167
|
+
```
|
168
|
+
|
169
|
+
# Citing AMS
|
170
|
+
If you use AMS for research or consulting, please cite the following paper in your publication that uses AMS:
|
171
|
+
|
172
|
+
> 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.
|
173
|
+
|
174
|
+
# Sponsors and Contributors
|
175
|
+
AMS is the scheduling simulation engine for the CURENT Largescale Testbed (LTB).
|
176
|
+
More information about CURENT LTB can be found at the [LTB Repository][LTB Repository].
|
177
|
+
|
178
|
+
This work was supported in part by the Engineering Research Center Program of the National Science Foundation and the Department of Energy
|
179
|
+
under NSF Award Number EEC-1041877 and the CURENT Industry Partnership Program.
|
180
|
+
|
181
|
+
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.
|
182
|
+
|
183
|
+
See [GitHub contributors][GitHub contributors] for the contributor list.
|
184
|
+
|
185
|
+
# License
|
186
|
+
AMS is licensed under the [GPL v3 License](./LICENSE).
|
187
|
+
|
188
|
+
# Related Projects
|
189
|
+
- [Popular Open Source Libraries for Power System Analysis](https://github.com/jinningwang/best-of-ps)
|
190
|
+
- [G-PST Tools Portal](https://g-pst.github.io/tools/): An open tools portal with a classification approach
|
191
|
+
- [Open Source Software (OSS) for Electricity Market Research, Teaching, and Training](https://www2.econ.iastate.edu/tesfatsi/ElectricOSS.htm)
|
192
|
+
|
193
|
+
Some commercial solvers provide academic licenses, such as COPT, GUROBI, CPLEX, and MOSEK.
|
194
|
+
|
195
|
+
* * *
|
196
|
+
|
197
|
+
[GitHub releases]: https://github.com/CURENT/ams/releases
|
198
|
+
[GitHub issues]: https://github.com/CURENT/ams/issues
|
199
|
+
[Github Discussions]: https://github.com/CURENT/ams/discussions
|
200
|
+
[GitHub insights]: https://github.com/CURENT/ams/pulse
|
201
|
+
[GitHub pull requests]: https://github.com/CURENT/ams/pulls
|
202
|
+
[GitHub contributors]: https://github.com/CURENT/ams/graphs/contributors
|
203
|
+
[readthedocs]: https://ams.readthedocs.io
|
204
|
+
[release notes]: https://ams.readthedocs.io/en/latest/release-notes.html
|
205
|
+
[examples]: https://github.com/CURENT/ams/tree/master/examples
|
206
|
+
[verification]: https://github.com/CURENT/ams/tree/master/examples/verification
|
207
|
+
[Binder]: https://mybinder.org/v2/gh/curent/ams/master
|
208
|
+
[LTB Repository]: https://github.com/CURENT
|
209
|
+
[benchmark]: https://github.com/CURENT/demo/tree/master/demo/ams_benchmark
|
210
|
+
[paper]: https://ieeexplore.ieee.org/document/9169830
|