ltbams 1.0.12__py3-none-any.whl → 1.0.14__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/_version.py +3 -3
- ams/cli.py +2 -7
- ams/core/common.py +7 -3
- ams/core/documenter.py +2 -1
- ams/core/matprocessor.py +174 -108
- ams/core/model.py +14 -6
- ams/core/param.py +5 -3
- ams/core/symprocessor.py +8 -2
- ams/core/var.py +1 -1
- ams/extension/eva.py +11 -7
- ams/interface.py +7 -7
- ams/io/json.py +20 -16
- ams/io/matpower.py +10 -6
- ams/io/psse.py +4 -1
- ams/io/xlsx.py +21 -16
- ams/main.py +53 -45
- ams/models/distributed/esd1.py +4 -7
- ams/models/distributed/ev.py +10 -6
- ams/models/distributed/pvd1.py +4 -7
- ams/models/group.py +17 -18
- ams/models/renewable/regc.py +14 -22
- ams/models/timeslot.py +30 -0
- ams/models/zone.py +2 -4
- ams/opt/exprcalc.py +11 -0
- ams/opt/optzbase.py +4 -3
- ams/report.py +2 -7
- ams/routines/dcopf.py +7 -4
- ams/routines/dcopf2.py +14 -4
- ams/routines/dopf.py +2 -2
- ams/routines/ed.py +5 -5
- ams/routines/grbopt.py +2 -0
- ams/routines/pflow.py +1 -1
- ams/routines/pypower.py +8 -0
- ams/routines/routine.py +125 -1
- ams/routines/rted.py +5 -5
- ams/routines/uc.py +2 -2
- ams/shared.py +99 -2
- ams/system.py +103 -18
- ams/utils/paths.py +6 -10
- docs/source/genroutineref.py +12 -0
- docs/source/index.rst +4 -3
- docs/source/release-notes.rst +14 -0
- {ltbams-1.0.12.dist-info → ltbams-1.0.14.dist-info}/METADATA +21 -23
- {ltbams-1.0.12.dist-info → ltbams-1.0.14.dist-info}/RECORD +47 -75
- {ltbams-1.0.12.dist-info → ltbams-1.0.14.dist-info}/top_level.txt +0 -1
- tests/__init__.py +0 -0
- tests/test_1st_system.py +0 -64
- tests/test_addressing.py +0 -40
- tests/test_case.py +0 -301
- tests/test_cli.py +0 -34
- tests/test_export_csv.py +0 -89
- tests/test_group.py +0 -83
- tests/test_interface.py +0 -238
- tests/test_io.py +0 -190
- tests/test_jumper.py +0 -27
- tests/test_known_good.py +0 -267
- tests/test_matp.py +0 -437
- tests/test_model.py +0 -54
- tests/test_omodel.py +0 -119
- tests/test_paths.py +0 -89
- tests/test_report.py +0 -251
- tests/test_repr.py +0 -21
- tests/test_routine.py +0 -178
- tests/test_rtn_acopf.py +0 -75
- tests/test_rtn_dcopf.py +0 -121
- tests/test_rtn_dcopf2.py +0 -103
- tests/test_rtn_ed.py +0 -279
- tests/test_rtn_opf.py +0 -142
- tests/test_rtn_pflow.py +0 -147
- tests/test_rtn_pypower.py +0 -315
- tests/test_rtn_rted.py +0 -273
- tests/test_rtn_uc.py +0 -248
- tests/test_service.py +0 -73
- {ltbams-1.0.12.dist-info → ltbams-1.0.14.dist-info}/WHEEL +0 -0
- {ltbams-1.0.12.dist-info → ltbams-1.0.14.dist-info}/entry_points.txt +0 -0
ams/system.py
CHANGED
@@ -51,9 +51,9 @@ def disable_methods(methods):
|
|
51
51
|
|
52
52
|
class System(adSystem):
|
53
53
|
"""
|
54
|
-
|
55
|
-
|
56
|
-
|
54
|
+
Base system class, revised from `andes.system.System`.
|
55
|
+
This class encapsulates data, models, and routines for scheduling
|
56
|
+
modeling and analysis in power systems.
|
57
57
|
|
58
58
|
Parameters
|
59
59
|
----------
|
@@ -400,7 +400,7 @@ class System(adSystem):
|
|
400
400
|
"""
|
401
401
|
Add a device instance for an existing model.
|
402
402
|
|
403
|
-
Revised from ``andes.system.System.add
|
403
|
+
Revised from ``andes.system.System.add``.
|
404
404
|
"""
|
405
405
|
if model not in self.models and (model not in self.model_aliases):
|
406
406
|
if model in ad_dyn_models:
|
@@ -652,9 +652,10 @@ class System(adSystem):
|
|
652
652
|
|
653
653
|
Notes
|
654
654
|
-----
|
655
|
-
|
656
|
-
|
657
|
-
|
655
|
+
- Power flow models in the addfile will be skipped and only dynamic models
|
656
|
+
will be used.
|
657
|
+
- The addfile format is guessed based on the file extension.
|
658
|
+
- Index in the addfile is automatically adjusted when necessary.
|
658
659
|
"""
|
659
660
|
return to_andes(system=self, addfile=addfile,
|
660
661
|
setup=setup, no_output=no_output,
|
@@ -740,10 +741,18 @@ class System(adSystem):
|
|
740
741
|
- Unlike the XLSX and JSON converters, this implementation uses value providers
|
741
742
|
(`v`) instead of vin. As a result, any changes made through `model.set` will be
|
742
743
|
reflected in the generated MPC.
|
744
|
+
|
745
|
+
.. versionadded:: 1.0.10
|
743
746
|
"""
|
744
747
|
return system2mpc(self)
|
745
748
|
|
746
|
-
def to_m(
|
749
|
+
def to_m(
|
750
|
+
self,
|
751
|
+
outfile: str,
|
752
|
+
overwrite: Optional[bool] = None,
|
753
|
+
skip_empty: bool = True,
|
754
|
+
to_andes: bool = False
|
755
|
+
) -> bool:
|
747
756
|
"""
|
748
757
|
Export an AMS system to a MATPOWER M-file.
|
749
758
|
Wrapper method for `ams.io.matpower.write`.
|
@@ -769,12 +778,21 @@ class System(adSystem):
|
|
769
778
|
- Unlike the XLSX and JSON converters, this implementation uses value providers
|
770
779
|
(`v`) instead of vin. As a result, any changes made through `model.set` will be
|
771
780
|
reflected in the generated MPC.
|
781
|
+
|
782
|
+
.. versionadded:: 1.0.10
|
772
783
|
"""
|
773
784
|
return write_m(self, outfile=outfile, overwrite=overwrite)
|
774
785
|
|
775
|
-
def to_xlsx(
|
786
|
+
def to_xlsx(
|
787
|
+
self,
|
788
|
+
outfile: str,
|
789
|
+
overwrite: Optional[bool] = None,
|
790
|
+
skip_empty: bool = True,
|
791
|
+
add_book: Optional[str] = None,
|
792
|
+
to_andes: bool = False
|
793
|
+
) -> bool:
|
776
794
|
"""
|
777
|
-
Export
|
795
|
+
Export the AMS system to an Excel (XLSX) file.
|
778
796
|
Wrapper method for `ams.io.xlsx.write`.
|
779
797
|
|
780
798
|
Parameters
|
@@ -783,12 +801,40 @@ class System(adSystem):
|
|
783
801
|
The output file name.
|
784
802
|
overwrite : bool, optional
|
785
803
|
If True, overwrite the existing file. Default is None.
|
804
|
+
skip_empty : bool, optional
|
805
|
+
If True, skip output of empty models (n = 0). Default is True.
|
806
|
+
add_book : str, optional
|
807
|
+
An optional workbook to be added to the output spreadsheet.
|
808
|
+
If None, no additional workbook is added. Default is None.
|
809
|
+
to_andes : bool, optional
|
810
|
+
If True, write to an ANDES system, where non-ANDES models are skipped.
|
811
|
+
|
812
|
+
Returns
|
813
|
+
-------
|
814
|
+
bool
|
815
|
+
True if the file is written successfully, False otherwise.
|
816
|
+
|
817
|
+
Notes
|
818
|
+
-----
|
819
|
+
- Only models with n > 0 are exported if `skip_empty` is True.
|
820
|
+
- If `to_andes` is True, only ANDES-compatible models are exported.
|
821
|
+
- The `add_book` parameter allows merging another workbook into the output.
|
822
|
+
|
823
|
+
.. versionadded:: 1.0.10
|
786
824
|
"""
|
787
|
-
return write_xlsx(self, outfile=outfile,
|
825
|
+
return write_xlsx(self, outfile=outfile,
|
826
|
+
skip_empty=skip_empty, overwrite=overwrite,
|
827
|
+
add_book=add_book, to_andes=to_andes)
|
788
828
|
|
789
|
-
def to_json(
|
829
|
+
def to_json(
|
830
|
+
self,
|
831
|
+
outfile: str,
|
832
|
+
overwrite: Optional[bool] = None,
|
833
|
+
skip_empty: bool = True,
|
834
|
+
to_andes: bool = False
|
835
|
+
) -> bool:
|
790
836
|
"""
|
791
|
-
Export
|
837
|
+
Export the AMS system to a JSON file.
|
792
838
|
Wrapper method for `ams.io.json.write`.
|
793
839
|
|
794
840
|
Parameters
|
@@ -797,22 +843,61 @@ class System(adSystem):
|
|
797
843
|
The output file name.
|
798
844
|
overwrite : bool, optional
|
799
845
|
If True, overwrite the existing file. Default is None.
|
846
|
+
skip_empty : bool, optional
|
847
|
+
If True, skip output of empty models (n = 0). Default is True.
|
848
|
+
to_andes : bool, optional
|
849
|
+
If True, write to an ANDES system, where non-ANDES models are skipped.
|
850
|
+
|
851
|
+
Returns
|
852
|
+
-------
|
853
|
+
bool
|
854
|
+
True if the file is written successfully, False otherwise.
|
855
|
+
|
856
|
+
Notes
|
857
|
+
-----
|
858
|
+
- Only models with n > 0 are exported if `skip_empty` is True.
|
859
|
+
- If `to_andes` is True, only ANDES-compatible models are exported.
|
860
|
+
|
861
|
+
.. versionadded:: 1.0.10
|
800
862
|
"""
|
801
|
-
return write_json(self, outfile=outfile,
|
863
|
+
return write_json(self, outfile=outfile,
|
864
|
+
skip_empty=skip_empty, overwrite=overwrite,
|
865
|
+
to_andes=to_andes)
|
802
866
|
|
803
|
-
def to_raw(
|
867
|
+
def to_raw(
|
868
|
+
self,
|
869
|
+
outfile: str,
|
870
|
+
overwrite: Optional[bool] = None,
|
871
|
+
skip_empty: bool = True,
|
872
|
+
to_andes: bool = False
|
873
|
+
) -> bool:
|
804
874
|
"""
|
805
|
-
Export
|
875
|
+
Export the AMS system to a PSS/E RAW v33 file.
|
806
876
|
Wrapper method for `ams.io.psse.write_raw`.
|
807
877
|
|
808
|
-
This method has not been fully benchmarked yet!
|
809
|
-
|
810
878
|
Parameters
|
811
879
|
----------
|
812
880
|
outfile : str
|
813
881
|
The output file name.
|
814
882
|
overwrite : bool, optional
|
815
883
|
If True, overwrite the existing file. Default is None.
|
884
|
+
skip_empty : bool, optional
|
885
|
+
If True, skip output of empty models (n = 0). Default is True.
|
886
|
+
to_andes : bool, optional
|
887
|
+
If True, write only ANDES-compatible models.
|
888
|
+
|
889
|
+
Returns
|
890
|
+
-------
|
891
|
+
bool
|
892
|
+
True if the file is written successfully, False otherwise.
|
893
|
+
|
894
|
+
Notes
|
895
|
+
-----
|
896
|
+
- Only models with n > 0 are exported if `skip_empty` is True.
|
897
|
+
- If `to_andes` is True, only ANDES-compatible models are exported.
|
898
|
+
- This method has not been fully benchmarked yet.
|
899
|
+
|
900
|
+
.. versionadded:: 1.0.10
|
816
901
|
"""
|
817
902
|
return write_raw(self, outfile=outfile, overwrite=overwrite)
|
818
903
|
|
ams/utils/paths.py
CHANGED
@@ -271,21 +271,17 @@ def get_export_path(system, fname, path=None, fmt='csv'):
|
|
271
271
|
fname : str
|
272
272
|
The descriptive file name, e.g., 'PTDF', or 'DCOPF'.
|
273
273
|
path : str, optional
|
274
|
-
The desired output path.
|
275
|
-
|
276
|
-
|
277
|
-
as the base, and the `fmt` argument will determine the final extension.
|
278
|
-
- If None, the current working directory will be used, and the filename will
|
279
|
-
be generated.
|
274
|
+
The desired output path. For a directory, the file name will be generated;
|
275
|
+
For a full file path, the base name will be used with the specified format;
|
276
|
+
For None, the current working directory will be used.
|
280
277
|
fmt : str, optional
|
281
278
|
The file format to export, e.g., 'csv', 'json'. Default is 'csv'.
|
282
279
|
|
283
280
|
Returns
|
284
281
|
-------
|
285
|
-
tuple
|
286
|
-
|
287
|
-
|
288
|
-
- The **export file name** (e.g., 'data_Routine.csv'), including the format extension.
|
282
|
+
tuple : (str, str)
|
283
|
+
- The absolute export path (e.g., '/home/user/project/data_Routine.csv').
|
284
|
+
- The export file name (e.g., 'data_Routine.csv'), including the format extension.
|
289
285
|
"""
|
290
286
|
# Determine the base name from system.files.fullname or default to "Untitled"
|
291
287
|
if system.files.fullname is None:
|
docs/source/genroutineref.py
CHANGED
@@ -20,6 +20,18 @@ Routine reference
|
|
20
20
|
Use the left navigation pane to locate the group and model
|
21
21
|
and view details.
|
22
22
|
|
23
|
+
Typical acronyms used in AMS include:
|
24
|
+
|
25
|
+
+------------+--------------------+
|
26
|
+
| Acronym | Meaning |
|
27
|
+
+============+====================+
|
28
|
+
| OPF | Optimal Power Flow |
|
29
|
+
+------------+--------------------+
|
30
|
+
| ED | Economic Dispatch |
|
31
|
+
+------------+--------------------+
|
32
|
+
| UC | Unit Commitment |
|
33
|
+
+------------+--------------------+
|
34
|
+
|
23
35
|
"""
|
24
36
|
|
25
37
|
out += ss.supported_routines(export='rest')
|
docs/source/index.rst
CHANGED
@@ -89,9 +89,10 @@ dynamic simulator ANDES.
|
|
89
89
|
publication.
|
90
90
|
|
91
91
|
|
92
|
-
.. [Wang2025] J. Wang et al., "Dynamics-
|
93
|
-
Constrained Scheduling Under High-
|
94
|
-
Transactions on Sustainable Energy,
|
92
|
+
.. [Wang2025] J. Wang et al., "Dynamics-Incorporated Modeling Framework for Stability
|
93
|
+
Constrained Scheduling Under High-Penetration of Renewable Energy," in IEEE
|
94
|
+
Transactions on Sustainable Energy, vol. 16, no. 3, pp. 1673-1685, July 2025,
|
95
|
+
doi: 10.1109/TSTE.2025.3528027.
|
95
96
|
|
96
97
|
|
97
98
|
.. toctree::
|
docs/source/release-notes.rst
CHANGED
@@ -9,6 +9,20 @@ The APIs before v3.0.0 are in beta and may change without prior notice.
|
|
9
9
|
v1.0
|
10
10
|
==========
|
11
11
|
|
12
|
+
v1.0.14 (2025-08-29)
|
13
|
+
----------------------
|
14
|
+
|
15
|
+
- Add supported Python versions in README
|
16
|
+
|
17
|
+
|
18
|
+
v1.0.13 (2025-08-18)
|
19
|
+
----------------------
|
20
|
+
|
21
|
+
- Add methods ``export_npz``, ``load_npz``, ``load_csv`` in ``MatProcessor``
|
22
|
+
to save and load matrices from files
|
23
|
+
- Add methods ``export_json``, ``load_json`` in ``RoutineBase``
|
24
|
+
to save and load routine results from JSON files
|
25
|
+
|
12
26
|
v1.0.12 (2025-05-29)
|
13
27
|
----------------------
|
14
28
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: ltbams
|
3
|
-
Version: 1.0.
|
3
|
+
Version: 1.0.14
|
4
4
|
Summary: Python software for scheduling modeling and co-simulation with dynamics.
|
5
5
|
Home-page: https://github.com/CURENT/ams
|
6
6
|
Author: Jinning Wang
|
@@ -23,6 +23,7 @@ Requires-Dist: openpyxl
|
|
23
23
|
Requires-Dist: andes>=1.9.3
|
24
24
|
Requires-Dist: pybind11
|
25
25
|
Requires-Dist: cvxpy
|
26
|
+
Requires-Dist: cffi
|
26
27
|
Provides-Extra: dev
|
27
28
|
Requires-Dist: pytest; extra == "dev"
|
28
29
|
Requires-Dist: pytest-cov; extra == "dev"
|
@@ -50,30 +51,31 @@ Dynamic: home-page
|
|
50
51
|
|
51
52
|
# LTB AMS
|
52
53
|
|
54
|
+
<img src="docs/source/images/sponsors/CURENT_Logo_NameOnTrans.png" alt="CURENT ERC Logo" width="300" height="auto">
|
55
|
+
|
53
56
|
Python Software for Power System Scheduling Modeling and Co-Simulation with Dynamics, serving as the market simulator for the [CURENT Largescale Testbed][LTB Repository].
|
54
57
|
|
55
58
|

|
56
59
|
[](https://ieeexplore.ieee.org/document/10836855)
|
57
60
|
|
58
|
-
<img src="docs/source/images/sponsors/CURENT_Logo_NameOnTrans.png" alt="CURENT ERC Logo" width="300" height="auto">
|
59
|
-
|
60
61
|
| Badges | | |
|
61
62
|
|---|---|---|
|
62
63
|
| Repo |  |  |
|
64
|
+
| Python | [](https://www.python.org/) |
|
63
65
|
| Version | [](https://pypi.org/project/ltbams/) | [](https://anaconda.org/conda-forge/ltbams) |
|
64
66
|
| Tag | [](https://github.com/CURENT/ams/tags) |  |
|
65
67
|
| Documentation | [](https://ltb.readthedocs.io/projects/ams/en/stable/?badge=stable) | [](https://ltb.readthedocs.io/projects/ams/en/develop/?badge=develop) |
|
66
68
|
| Download | [](https://pypi.org/project/ltbams/) | [](https://anaconda.org/conda-forge/ltbams) |
|
67
|
-
|
|
68
|
-
|
|
69
|
+
| Quality |  | [](https://codebeat.co/projects/github-com-curent-ams-master) |
|
70
|
+
| Coverage |  |  |
|
69
71
|
| Last Commit |  |  |
|
70
|
-
| CI | [](https://github.com/CURENT/ams/actions/workflows/compatibility.yml) | [](https://github.com/CURENT/ams/actions/workflows/publish-pypi.yml) |
|
72
|
+
| CI | [](https://github.com/CURENT/ams/actions/workflows/compatibility.yml) | [](https://dev.azure.com/curentltb/ams/_build/latest?definitionId=2&branchName=master) |
|
73
|
+
| CD | [](https://github.com/CURENT/ams/actions/workflows/publish-pypi.yml) | [](https://dev.azure.com/conda-forge/feedstock-builds/_build/latest?definitionId=21708&branchName=main) |
|
72
74
|
| Structure | [](https://mango-dune-07a8b7110.1.azurestaticapps.net/?repo=CURENT%2Fams) | [](https://deepwiki.com/CURENT/ams) |
|
73
75
|
| Dependency | [](https://libraries.io/pypi/ltbams) | |
|
74
76
|
| Try on Binder | [](https://mybinder.org/v2/gh/curent/ams/master) | |
|
75
77
|
|
76
|
-
|
78
|
+
## Why AMS
|
77
79
|
|
78
80
|
AMS facilitates **Dynamics Incorporated Scheduling** and **Scheduling-Dynamics Co-Simulation**
|
79
81
|
through an integrated interface with ANDES.
|
@@ -148,9 +150,9 @@ Use the following resources to get involved.
|
|
148
150
|
- Read release notes highlighted [here][release notes]
|
149
151
|
- Try in Jupyter Notebook on [Binder][Binder]
|
150
152
|
- Check out the source code used for [benchmark][benchmark]
|
151
|
-
- Check out and
|
153
|
+
- Check out and cite our [paper][paper]
|
152
154
|
|
153
|
-
|
155
|
+
## Installation
|
154
156
|
|
155
157
|
AMS is released as ``ltbams`` on PyPI and conda-forge.
|
156
158
|
Install from PyPI using pip:
|
@@ -189,11 +191,11 @@ pip install git+https://github.com/CURENT/ams.git
|
|
189
191
|
- `cvxpy` is distributed with the open source solvers CLARABEL, OSQP, and SCS, but MIP-capable solvers need separate installation
|
190
192
|
- `cvxpy` versions **below 1.5** are incompatible with `numpy` versions **2.0 and above**
|
191
193
|
- 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`
|
192
|
-
- `kvxopt
|
194
|
+
- For the ImportError related to `kvxopt`, it is recommended to reinstall it via `conda` as sometimes ``pip`` struggles to set the correct path for compiled libraries. More details can be found in this closed issue [Bug with dependency kvxopt 1.3.2.0](https://github.com/CURENT/andes/issues/508)
|
193
195
|
- Versions **1.0.0** and **1.0.1** are only available on PyPI
|
194
196
|
- Version **0.9.9** has known issues and has been yanked from PyPI
|
195
197
|
|
196
|
-
|
198
|
+
## Example Usage
|
197
199
|
|
198
200
|
```python
|
199
201
|
import ams
|
@@ -214,12 +216,15 @@ sa
|
|
214
216
|
>>> <andes.system.System at 0x14bd98190>
|
215
217
|
```
|
216
218
|
|
217
|
-
|
219
|
+
Here, RTED stands for Real-Time Economic Dispatch.
|
220
|
+
For a full list of acronyms used in the library, please consult the [Documentation - Routine Reference](https://ltb.readthedocs.io/projects/ams/en/stable/routineref.html#routine-reference).
|
221
|
+
|
222
|
+
## Citing AMS
|
218
223
|
If you use AMS for research or consulting, please cite the following paper in your publication that uses AMS:
|
219
224
|
|
220
|
-
> J. Wang et al., "Dynamics-
|
225
|
+
> J. Wang et al., "Dynamics-Incorporated Modeling Framework for Stability Constrained Scheduling Under High-Penetration of Renewable Energy," in IEEE Transactions on Sustainable Energy, vol. 16, no. 3, pp. 1673-1685, July 2025, doi: 10.1109/TSTE.2025.3528027.
|
221
226
|
|
222
|
-
|
227
|
+
## Sponsors and Contributors
|
223
228
|
AMS is the scheduling simulation engine for the CURENT Largescale Testbed (LTB).
|
224
229
|
More information about CURENT LTB can be found at the [LTB Repository][LTB Repository].
|
225
230
|
|
@@ -230,16 +235,9 @@ This work was supported in part by the Advanced Grid Research and Development Pr
|
|
230
235
|
|
231
236
|
See [GitHub contributors][GitHub contributors] for the contributor list.
|
232
237
|
|
233
|
-
|
238
|
+
## License
|
234
239
|
AMS is licensed under the [GPL v3 License](./LICENSE).
|
235
240
|
|
236
|
-
# Related Projects
|
237
|
-
- [Popular Open Source Libraries for Power System Analysis](https://github.com/ps-wiki/best-of-ps)
|
238
|
-
- [G-PST Tools Portal](https://g-pst.github.io/tools/): An open tools portal with a classification approach
|
239
|
-
- [Open Source Software (OSS) for Electricity Market Research, Teaching, and Training](https://www2.econ.iastate.edu/tesfatsi/ElectricOSS.htm)
|
240
|
-
|
241
|
-
Some commercial solvers provide academic licenses, such as COPT, GUROBI, CPLEX, and MOSEK.
|
242
|
-
|
243
241
|
* * *
|
244
242
|
|
245
243
|
[GitHub releases]: https://github.com/CURENT/ams/releases
|
@@ -1,12 +1,12 @@
|
|
1
1
|
ams/__init__.py,sha256=q-9-f0YCg6aaTW19VCkY6VosfvRA2ObI9mF1f_3016Y,313
|
2
2
|
ams/__main__.py,sha256=EB4GfGiKgvnQ_psNr0QwPoziYvjmGvQ2yVsBwQtfrLw,170
|
3
|
-
ams/_version.py,sha256=
|
4
|
-
ams/cli.py,sha256=
|
5
|
-
ams/interface.py,sha256
|
6
|
-
ams/main.py,sha256=
|
7
|
-
ams/report.py,sha256=
|
8
|
-
ams/shared.py,sha256=
|
9
|
-
ams/system.py,sha256=
|
3
|
+
ams/_version.py,sha256=BikZvXVZg-CCtVazeGNbDsJ_SnSEAX5lEIleKSitfVU,498
|
4
|
+
ams/cli.py,sha256=OuQc4xotv0dCgEIEaw-ZFEfDZvt1w9QQ9yjeaJiDe_s,6067
|
5
|
+
ams/interface.py,sha256=wYqoh_rK4vHidJjWnE5VZHzonm4D-uCzZt0Z9oFBKVo,45233
|
6
|
+
ams/main.py,sha256=OFbEtXEIuv-zSFccyN_1Mrg8XEn4TZTHXa3Ly-zbxmo,23559
|
7
|
+
ams/report.py,sha256=iqa--JZwDldjmOaMhDdg8yYkuNL5ITeMxQak0OTPtos,10860
|
8
|
+
ams/shared.py,sha256=sr5xMTP-7FWHsSCRz_dLMUN2OsmszlPcdYzR3orol0c,6613
|
9
|
+
ams/system.py,sha256=hGokwNl5pgzVs07jnONteD5ipqoKukZetHi4dq2pIO0,34534
|
10
10
|
ams/cases/5bus/pjm5bus_demo.json,sha256=IpxO2vzB9-9Kg9xjOXREKeXEz9wjFE7cuQbcUu8VORA,23152
|
11
11
|
ams/cases/5bus/pjm5bus_demo.xlsx,sha256=OWIUprkg8_aQ_bTCaEFMl7Bhfa1R20zxAHXRQtXBix0,32607
|
12
12
|
ams/cases/5bus/pjm5bus_ev.xlsx,sha256=vR8dJv5jIxib1pgcMonhzvraoqZVJWhBSJdVXDL0qsI,19498
|
@@ -36,76 +36,76 @@ ams/cases/pglib/pglib_opf_case39_epri__api.m,sha256=DKUNon8FgIYKJWOK5ZyQ0fLP0zow
|
|
36
36
|
ams/cases/wecc/wecc.m,sha256=8Wqal6H5r1wNxLLQBCXo2V3v3JZY5IJDEkyrEGCrCWE,30498
|
37
37
|
ams/cases/wecc/wecc_uced.xlsx,sha256=R3tZgxEqz_ctKcjA1wwFecxn-QZXutvf7NzgnCg_078,94767
|
38
38
|
ams/core/__init__.py,sha256=lIvrAvYf2yrHWqYi0rVuJgJt8KNA8nTmN2iuZ125z9Q,123
|
39
|
-
ams/core/common.py,sha256=
|
40
|
-
ams/core/documenter.py,sha256=
|
41
|
-
ams/core/matprocessor.py,sha256=
|
42
|
-
ams/core/model.py,sha256=
|
43
|
-
ams/core/param.py,sha256=
|
39
|
+
ams/core/common.py,sha256=UrgM3W2zjzGKZsI0vA7ozqA2RwjTu1idQAo_nzqQgjk,840
|
40
|
+
ams/core/documenter.py,sha256=Q8u_AN1ljyQIKdbPsmcscCc8iUwpz4fTRVXZieJZByI,25814
|
41
|
+
ams/core/matprocessor.py,sha256=ooYQEq6YCfLb2bpVdK8cjBOG1wmDgSEeUkkG1xOA9Qo,27952
|
42
|
+
ams/core/model.py,sha256=wS8LN3F6wCy3aATnxrbvN6RwvG3mKfAlfBwvOuBdEx0,10990
|
43
|
+
ams/core/param.py,sha256=uNNjlBkaC8HXiLPsceDS5AIc9U2gNo7pHKquni0LRfE,11183
|
44
44
|
ams/core/service.py,sha256=Q4aeaYFWycIEH7I8DSO8Itah2CJxc3oAW46dtKCQEyA,28041
|
45
|
-
ams/core/symprocessor.py,sha256=
|
46
|
-
ams/core/var.py,sha256=
|
45
|
+
ams/core/symprocessor.py,sha256=QlVfKdFYsXwcNChltfmosXW2HRCqsOpgi0rZhbtdYYI,8547
|
46
|
+
ams/core/var.py,sha256=cwvFKz3LmjGH--nkaGo2lron8q7UViyBd3YrAkhuR7s,1575
|
47
47
|
ams/extension/__init__.py,sha256=5IFTNirDL0uDaUsg05_oociVT9VCy2rhPx1ad4LGveM,65
|
48
|
-
ams/extension/eva.py,sha256=
|
48
|
+
ams/extension/eva.py,sha256=CoijRlJ7-4hyCdT8028aoI5BOZQi3HaSYoXlOatboVY,16449
|
49
49
|
ams/io/__init__.py,sha256=GIfF7X44olHaySL8EzOBU1eXUnunr1owzzdPfPvvHZU,3802
|
50
|
-
ams/io/json.py,sha256=
|
51
|
-
ams/io/matpower.py,sha256=
|
52
|
-
ams/io/psse.py,sha256=
|
50
|
+
ams/io/json.py,sha256=PhbF1kUhl7UXR2OtTAx-fdb3mZ2ujyYpn-vJqUe5Gdg,2508
|
51
|
+
ams/io/matpower.py,sha256=g-qOtKGvnJJuHDqcyiGGGCY_BeuSbnQpmflolMV_wo8,27575
|
52
|
+
ams/io/psse.py,sha256=IqE8EDAZrm2FrjYmLpcV7231Dw-1gD-4f1Xndx0nmGo,13724
|
53
53
|
ams/io/pypower.py,sha256=Fe0sxzC5DZegtYksTixadXk_LcfJ1GNetWu9EuHCkG8,2790
|
54
|
-
ams/io/xlsx.py,sha256=
|
54
|
+
ams/io/xlsx.py,sha256=xvo3eMwavFRWzppVI1HR0za9vI0w05WJaVctA8erEr4,2443
|
55
55
|
ams/models/__init__.py,sha256=EGkViLkVX_We9FAGuEkgfleMNmPw_vGp2Nq1OQimL7U,691
|
56
56
|
ams/models/area.py,sha256=AKYU6aJQKsVWRZdvMO7yic-8wZ1GumSTQXgDg5L0THw,899
|
57
57
|
ams/models/bus.py,sha256=U0vSegkm-9fqPQS9KMJQU6gpIMX_1GK5O_dvRc8-0P0,1585
|
58
58
|
ams/models/cost.py,sha256=rmGNj9ztMbqA-OIJj8fNNBh8bdYJSY9hk10vffgxc6k,5916
|
59
|
-
ams/models/group.py,sha256=
|
59
|
+
ams/models/group.py,sha256=3jzytOxnb9kqYqKfVD02ZhgaswbJ0lih_0_WMl2DGfw,5897
|
60
60
|
ams/models/info.py,sha256=Oh0Xo5J4ZHBsNIkMOzIwv_DegsX1inyuv3Q5CpCfyQw,788
|
61
61
|
ams/models/line.py,sha256=ju5h1BcW4kgVWm_lgl8zWhSYqlsUjbdoUwzz2t0Vx1s,2770
|
62
62
|
ams/models/reserve.py,sha256=3BjWCyKrPL4CwTvmzRxk25H8Nkxh-Rz0Ne17I9Y2TUA,2816
|
63
63
|
ams/models/shunt.py,sha256=h5QV33EcCd86XRR0sMIzcO0PTeTirkWaxi8imPKzOi0,337
|
64
|
-
ams/models/timeslot.py,sha256=
|
65
|
-
ams/models/zone.py,sha256
|
64
|
+
ams/models/timeslot.py,sha256=yTIezlphWLrnfelkd80yPfpqnx9VkhvUOvYy_TxH_KU,3057
|
65
|
+
ams/models/zone.py,sha256=-oOmPiMa8I7TzgheKEZOImXWv273ri6TURhmzy_ygkE,1089
|
66
66
|
ams/models/distributed/__init__.py,sha256=3uiMHT2YRq79DXIB1jni6wP7dNoQMjU1bMTUpr4P6Rc,161
|
67
|
-
ams/models/distributed/esd1.py,sha256=
|
68
|
-
ams/models/distributed/ev.py,sha256=
|
69
|
-
ams/models/distributed/pvd1.py,sha256=
|
67
|
+
ams/models/distributed/esd1.py,sha256=Ojqp_dJOJqa65u8kZ-oreA5cxruX2kXZ5AeNAAeYV7g,2136
|
68
|
+
ams/models/distributed/ev.py,sha256=DO5cIqAX09lMKfrlsK-W_6gypI6hWpXHObQ0JZ6g9OE,2096
|
69
|
+
ams/models/distributed/pvd1.py,sha256=RGxpkb5lWfoxafSyc_Tc8GcxBf0lF9Zl1RbN3WSE7MQ,1966
|
70
70
|
ams/models/renewable/__init__.py,sha256=7dZyRXbvBAHbLJeJssJ1hsOHj9Bgeg77kB5gcX_mBtg,118
|
71
|
-
ams/models/renewable/regc.py,sha256=
|
71
|
+
ams/models/renewable/regc.py,sha256=A4CYMVeKPZsqD6tTMz0GmPYiuZjfKGYx8f2eCX_D0lg,3483
|
72
72
|
ams/models/static/__init__.py,sha256=lh5yR5Xb2unS4ndng-cLU1TAeoidu2s6VAVFLc3HUDU,96
|
73
73
|
ams/models/static/gen.py,sha256=QXklOYlnU7QHWy-WFJwhxuNItUPqFsLJIjAO4sGMUbg,7087
|
74
74
|
ams/models/static/pq.py,sha256=SCwAqhqvKy_PFHp6VYO_zgv3v6gI5pK3KvT3RNX-nvA,2782
|
75
75
|
ams/opt/__init__.py,sha256=INsl8yxtOzTKqV9pzVxlL6RSGDRaUDwxpZMY1QROrF4,459
|
76
76
|
ams/opt/constraint.py,sha256=ERT9zwjQyGkvDo465Yd0wBexlIhjVmw0MyWq4BWnWoI,5534
|
77
|
-
ams/opt/exprcalc.py,sha256=
|
77
|
+
ams/opt/exprcalc.py,sha256=7io0vEZu5zqsEnetocasRT1tu7o7g0TXw7iJf2YFIxI,4317
|
78
78
|
ams/opt/expression.py,sha256=WrWnYliB61uHA_wQjtYgtAXdpgSN1pNqQmWvzHWSsdE,5569
|
79
79
|
ams/opt/objective.py,sha256=W0dQfW5dHNdWEc2DQtWYNGMuhMY6Pu-HTD0n7-izDZA,5519
|
80
80
|
ams/opt/omodel.py,sha256=hEtfKoSNssSxHgUDdep79pifNTsywytDTjgGgne7nKM,12750
|
81
|
-
ams/opt/optzbase.py,sha256=
|
81
|
+
ams/opt/optzbase.py,sha256=wp5Logvti1psRnuzRKDV36HN_EQw-cEbk3BsORDx1_0,5623
|
82
82
|
ams/opt/param.py,sha256=G0KkWo1SqLiecZ7gLPzsbG5_WBORSVZ2GJ20ekdYJoQ,5121
|
83
83
|
ams/opt/var.py,sha256=cpDiELo37E7IoTDlVn_NbkuFNQ88oey23YOF6Gpg6zM,7707
|
84
84
|
ams/routines/__init__.py,sha256=V_IyEb5qLBrZ4zc_eVe-Rc0G_j-u881tvEzcEejhNv8,647
|
85
85
|
ams/routines/acopf.py,sha256=dLVTh84KiBvLyG2auNsIfcufsl6N-9FcXWjpdYrQfYQ,208
|
86
|
-
ams/routines/dcopf.py,sha256=
|
87
|
-
ams/routines/dcopf2.py,sha256=
|
86
|
+
ams/routines/dcopf.py,sha256=QagOUPWgBIh9zhh2LQp7aZw0kx3n-JKtClVh7X3M-yI,11874
|
87
|
+
ams/routines/dcopf2.py,sha256=4Q9qsgYmYgH7p9SB_0VXyFaDOOXxAS82ctbN_l-mILY,4146
|
88
88
|
ams/routines/dcpf.py,sha256=lGZ9LmCL1DsFB-sNxI7NGrq0qd_iBRMDPJmU5022t20,8242
|
89
|
-
ams/routines/dopf.py,sha256=
|
90
|
-
ams/routines/ed.py,sha256
|
91
|
-
ams/routines/grbopt.py,sha256=
|
92
|
-
ams/routines/pflow.py,sha256=
|
93
|
-
ams/routines/pypower.py,sha256=
|
94
|
-
ams/routines/routine.py,sha256
|
95
|
-
ams/routines/rted.py,sha256
|
89
|
+
ams/routines/dopf.py,sha256=IRvkwYF80sYAPI0iUS5L6c2jChFT3vl8tELf7LA6V7Q,6275
|
90
|
+
ams/routines/ed.py,sha256=-OpoWiTEMDC5dHcumJikKPsp7DoyfxQ0sRXjKhWQ6vE,11870
|
91
|
+
ams/routines/grbopt.py,sha256=hEDy7L-lSd7QxSN_GAyDLaLkhIpxl6csXz6ntdKT_fw,5510
|
92
|
+
ams/routines/pflow.py,sha256=vFnf61cYv7gWJSGqcQrMOaw-aOODd2eJMLpQ4aM1PQM,9438
|
93
|
+
ams/routines/pypower.py,sha256=VnqMQZkBIvDe3tDbTJcxYz04idon5XvmGlf7OSs8kOI,27334
|
94
|
+
ams/routines/routine.py,sha256=-8vsi6UVznz1_1S7yrmWLuu-DPfYxeBaTJlxp9QNE5k,39594
|
95
|
+
ams/routines/rted.py,sha256=-5UOeEGx3ZOrF0FG0M0OUPP2tIfajQmKyZHTQ3c6kaE,22058
|
96
96
|
ams/routines/type.py,sha256=lvTWSnCYIbRJXIm3HX6jA0Hv-WWYusTOUPfoW8DITlU,3877
|
97
|
-
ams/routines/uc.py,sha256=
|
97
|
+
ams/routines/uc.py,sha256=L9LpwjoqKoUzIwYq-G-r1zRTMGfbaSWSwT8GZuf_nB0,15650
|
98
98
|
ams/utils/__init__.py,sha256=2hAQmWRgmnE-bCGT9cJoW9FkPDMGRiGkbBcUgj-bgjI,122
|
99
99
|
ams/utils/misc.py,sha256=Y6tPKpUKJa7bL9alroJuG2UNW9vdQjnfAmKb2EbIls8,2027
|
100
|
-
ams/utils/paths.py,sha256=
|
100
|
+
ams/utils/paths.py,sha256=Zx0PMqHjd_uuZI2pPu-Jec98FMNE2rCaaXJCHlZ22qs,9295
|
101
101
|
docs/Makefile,sha256=UKXBFAbKGPt1Xw9J84343v0Mh8ylAZ-tE0uCd74DrQU,725
|
102
102
|
docs/make.bat,sha256=9UgKGb4SdP006622fJiFxeFT1BeycYAs6hDbV1xwPy8,804
|
103
103
|
docs/source/api.rst,sha256=BRzdDFDzDwVL7Jr_Xj-O5Icgx0gt5hNNd1OjvPl7ap0,1490
|
104
104
|
docs/source/conf.py,sha256=UyoWogZTUNSJU7pQS_JaR28nKddW94zr01LYoIciZZw,6688
|
105
105
|
docs/source/genmodelref.py,sha256=IhmF7bDw8BXPvLD8V3WjQNrfc-H07r5iS-_4DHbbp-8,1420
|
106
|
-
docs/source/genroutineref.py,sha256=
|
107
|
-
docs/source/index.rst,sha256=
|
108
|
-
docs/source/release-notes.rst,sha256=
|
106
|
+
docs/source/genroutineref.py,sha256=bIdsE2eg7DO5IWbMlnj9B-zT_BdKrJycsveFLnJB4dE,1427
|
107
|
+
docs/source/index.rst,sha256=oAdRBWTLCX8nEMVatfDFkn0dtvinOK7vg4QUekT4jns,2738
|
108
|
+
docs/source/release-notes.rst,sha256=rwDneax-bHJsfRpjxidmOvfO3S0RTTGrQ3m6L7MsE6A,14397
|
109
109
|
docs/source/_templates/autosummary/base.rst,sha256=zl3U4baR4a6YjsHyT-x9zCOrHwKZOVUdWn1NPX2u3bc,106
|
110
110
|
docs/source/_templates/autosummary/class.rst,sha256=Hv_igCsLsUpM62_zN0nqj6FSfKnS5xLyu8ZldMbfOAk,668
|
111
111
|
docs/source/_templates/autosummary/module.rst,sha256=YdbpCudOrEU-JbuSlzGvcOI2hn_KrCM6FW5HcGqkaEE,1113
|
@@ -135,36 +135,8 @@ docs/source/modeling/index.rst,sha256=TasRAJSglc5KAZaGAj9TLMktOO2TtzZsqG5WvvZXB_
|
|
135
135
|
docs/source/modeling/model.rst,sha256=j7OSvoXnDht6rGpgwPiJklsCWrebfx4DxIN-G8r6iFo,7086
|
136
136
|
docs/source/modeling/routine.rst,sha256=BkUE3y5L1lA7LP9Nyzc4zzY-tF3t4k7egBE188kybHY,4286
|
137
137
|
docs/source/modeling/system.rst,sha256=NMOPNMOKG1_dRyNPPx-MiCKbbpadxWJxGyU6geRUsvQ,1374
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
tests/test_export_csv.py,sha256=NTULXfTexgI1jf5koUMOYi3RLrSQouS7zxRjXo3ng50,2921
|
144
|
-
tests/test_group.py,sha256=Tq0s9gtenqrv4ws5YNzWxbiF4WgyhtMEAXZfJtew6M4,2699
|
145
|
-
tests/test_interface.py,sha256=8hOZ1caRfoyoEdy1lnh8Y4rIL97FLb2oUKfX_N1lEDo,8838
|
146
|
-
tests/test_io.py,sha256=OXt1C6F_RAt0RoRj3xLKdbA3raKEAjvVyWlKD7Ju7BA,6947
|
147
|
-
tests/test_jumper.py,sha256=bdOknplEGnO_tiJc7p3xQvgTe2b6Dz53bOgbFaXKMAI,537
|
148
|
-
tests/test_known_good.py,sha256=NBrlAxnVMxIHXR2cWps-Kwjh36fiU4Y-eupspZkM0ks,9670
|
149
|
-
tests/test_matp.py,sha256=LkjhqxSFr6oY_ENpduDQ77rhLLBl6RzIHZ2d0m_8i-8,17262
|
150
|
-
tests/test_model.py,sha256=ZgghNYmEeALf8_1sPjq9lIJwuYDQ2SelivJNEYpHxJU,1621
|
151
|
-
tests/test_omodel.py,sha256=niVdTZJEZNSVHz-ocA0nnVx84Dt3-8P5FUrwKkNiA0I,4305
|
152
|
-
tests/test_paths.py,sha256=j_D9-Cjg73mwhTS3sUHDfQ8mCebD8enCQxjyRaR2ZH4,3020
|
153
|
-
tests/test_report.py,sha256=RR23by4G-cyleaHTy9A7SEVet0eOVS-Tm0kk1GXY5dM,8134
|
154
|
-
tests/test_repr.py,sha256=g7MRdxLcZRI1PlREFdUG_npp0LkcQiJZfOPw1aq0EFM,570
|
155
|
-
tests/test_routine.py,sha256=DP5CwKtzliw2gNLW2W_3kp0Ihy4rCaxeBxMpgyN5AXA,6234
|
156
|
-
tests/test_rtn_acopf.py,sha256=Kg-RHflrrwyX2uHr16xSAze9XAdYcK7eg1LHMyr1uyA,2354
|
157
|
-
tests/test_rtn_dcopf.py,sha256=qFY9mKTAIG-qDlU9-loHZddKDDszdGQwRjL-ZDnESu8,4204
|
158
|
-
tests/test_rtn_dcopf2.py,sha256=57_62TnHW-cS6iK2zXT_eXChnh83YiYoPypJwub3VmQ,3747
|
159
|
-
tests/test_rtn_ed.py,sha256=SeSuzqpTZZnBph41PV2Piplo9yxR3qpbhQUa6UCYnSw,10267
|
160
|
-
tests/test_rtn_opf.py,sha256=MmMNwb9-G0KzHcrrP4uHTvs9DBU71_XPIJqNnkQQPHo,4846
|
161
|
-
tests/test_rtn_pflow.py,sha256=QLg0q89Tcb-rrncpiNw6phjMEnvzvExjGTrkqGliiak,4664
|
162
|
-
tests/test_rtn_pypower.py,sha256=KO5VOZxETxVH2mY1mgNvzj1gz1Gdak1sAWxYleDU4E8,10477
|
163
|
-
tests/test_rtn_rted.py,sha256=QHDUymorCqQAJKFlDgTy40JyLTGDvNVNU3tjbjDl3-0,9850
|
164
|
-
tests/test_rtn_uc.py,sha256=UbMeaam3dZwgq2LAJokGOl3LT5B3TWKMjCp4dRcLs40,8497
|
165
|
-
tests/test_service.py,sha256=6IP6CAH2xHxGHZM4-R8LjZxVJ2L10LcGaPDyRIqKLmc,2438
|
166
|
-
ltbams-1.0.12.dist-info/METADATA,sha256=ZKZlrfSVEg8RkdZ-YjEWGZfY4p7kdEGppQfhHV6hgpg,13808
|
167
|
-
ltbams-1.0.12.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
168
|
-
ltbams-1.0.12.dist-info/entry_points.txt,sha256=FA56FlhO_yVNeEf810SrorVQb7_Xsmo3_EW-W-ijUfA,37
|
169
|
-
ltbams-1.0.12.dist-info/top_level.txt,sha256=pyKDqG2kj13F9-BYd_wkruRdBSqLXw8Nwc-cmljqrxg,15
|
170
|
-
ltbams-1.0.12.dist-info/RECORD,,
|
138
|
+
ltbams-1.0.14.dist-info/METADATA,sha256=zjk9Vm4fc4cSiPVp0GLN1em6xNJg4iazn59Y1CRHJx0,14199
|
139
|
+
ltbams-1.0.14.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
140
|
+
ltbams-1.0.14.dist-info/entry_points.txt,sha256=FA56FlhO_yVNeEf810SrorVQb7_Xsmo3_EW-W-ijUfA,37
|
141
|
+
ltbams-1.0.14.dist-info/top_level.txt,sha256=5QQ_oDY9sa52MVmqCjqjUq07BssHOKmDSaQ8EZi6DOw,9
|
142
|
+
ltbams-1.0.14.dist-info/RECORD,,
|
tests/__init__.py
DELETED
File without changes
|