ltbams 1.0.12__tar.gz → 1.0.14__tar.gz

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 (183) hide show
  1. {ltbams-1.0.12/ltbams.egg-info → ltbams-1.0.14}/PKG-INFO +21 -23
  2. {ltbams-1.0.12 → ltbams-1.0.14}/README.md +19 -22
  3. {ltbams-1.0.12 → ltbams-1.0.14}/ams/_version.py +3 -3
  4. {ltbams-1.0.12 → ltbams-1.0.14}/ams/cli.py +2 -7
  5. {ltbams-1.0.12 → ltbams-1.0.14}/ams/core/common.py +7 -3
  6. {ltbams-1.0.12 → ltbams-1.0.14}/ams/core/documenter.py +2 -1
  7. {ltbams-1.0.12 → ltbams-1.0.14}/ams/core/matprocessor.py +174 -108
  8. {ltbams-1.0.12 → ltbams-1.0.14}/ams/core/model.py +14 -6
  9. {ltbams-1.0.12 → ltbams-1.0.14}/ams/core/param.py +5 -3
  10. {ltbams-1.0.12 → ltbams-1.0.14}/ams/core/symprocessor.py +8 -2
  11. {ltbams-1.0.12 → ltbams-1.0.14}/ams/core/var.py +1 -1
  12. {ltbams-1.0.12 → ltbams-1.0.14}/ams/extension/eva.py +11 -7
  13. {ltbams-1.0.12 → ltbams-1.0.14}/ams/interface.py +7 -7
  14. {ltbams-1.0.12 → ltbams-1.0.14}/ams/io/json.py +20 -16
  15. {ltbams-1.0.12 → ltbams-1.0.14}/ams/io/matpower.py +10 -6
  16. {ltbams-1.0.12 → ltbams-1.0.14}/ams/io/psse.py +4 -1
  17. {ltbams-1.0.12 → ltbams-1.0.14}/ams/io/xlsx.py +21 -16
  18. {ltbams-1.0.12 → ltbams-1.0.14}/ams/main.py +53 -45
  19. {ltbams-1.0.12 → ltbams-1.0.14}/ams/models/distributed/esd1.py +4 -7
  20. {ltbams-1.0.12 → ltbams-1.0.14}/ams/models/distributed/ev.py +10 -6
  21. {ltbams-1.0.12 → ltbams-1.0.14}/ams/models/distributed/pvd1.py +4 -7
  22. {ltbams-1.0.12 → ltbams-1.0.14}/ams/models/group.py +17 -18
  23. {ltbams-1.0.12 → ltbams-1.0.14}/ams/models/renewable/regc.py +14 -22
  24. {ltbams-1.0.12 → ltbams-1.0.14}/ams/models/timeslot.py +30 -0
  25. {ltbams-1.0.12 → ltbams-1.0.14}/ams/models/zone.py +2 -4
  26. {ltbams-1.0.12 → ltbams-1.0.14}/ams/opt/exprcalc.py +11 -0
  27. {ltbams-1.0.12 → ltbams-1.0.14}/ams/opt/optzbase.py +4 -3
  28. {ltbams-1.0.12 → ltbams-1.0.14}/ams/report.py +2 -7
  29. {ltbams-1.0.12 → ltbams-1.0.14}/ams/routines/dcopf.py +7 -4
  30. {ltbams-1.0.12 → ltbams-1.0.14}/ams/routines/dcopf2.py +14 -4
  31. {ltbams-1.0.12 → ltbams-1.0.14}/ams/routines/dopf.py +2 -2
  32. {ltbams-1.0.12 → ltbams-1.0.14}/ams/routines/ed.py +5 -5
  33. {ltbams-1.0.12 → ltbams-1.0.14}/ams/routines/grbopt.py +2 -0
  34. {ltbams-1.0.12 → ltbams-1.0.14}/ams/routines/pflow.py +1 -1
  35. {ltbams-1.0.12 → ltbams-1.0.14}/ams/routines/pypower.py +8 -0
  36. {ltbams-1.0.12 → ltbams-1.0.14}/ams/routines/routine.py +125 -1
  37. {ltbams-1.0.12 → ltbams-1.0.14}/ams/routines/rted.py +5 -5
  38. {ltbams-1.0.12 → ltbams-1.0.14}/ams/routines/uc.py +2 -2
  39. {ltbams-1.0.12 → ltbams-1.0.14}/ams/shared.py +99 -2
  40. {ltbams-1.0.12 → ltbams-1.0.14}/ams/system.py +103 -18
  41. {ltbams-1.0.12 → ltbams-1.0.14}/ams/utils/paths.py +6 -10
  42. {ltbams-1.0.12 → ltbams-1.0.14}/docs/source/genroutineref.py +12 -0
  43. {ltbams-1.0.12 → ltbams-1.0.14}/docs/source/index.rst +4 -3
  44. {ltbams-1.0.12 → ltbams-1.0.14}/docs/source/release-notes.rst +14 -0
  45. {ltbams-1.0.12 → ltbams-1.0.14/ltbams.egg-info}/PKG-INFO +21 -23
  46. {ltbams-1.0.12 → ltbams-1.0.14}/ltbams.egg-info/SOURCES.txt +1 -1
  47. {ltbams-1.0.12 → ltbams-1.0.14}/ltbams.egg-info/requires.txt +1 -0
  48. {ltbams-1.0.12 → ltbams-1.0.14}/ltbams.egg-info/top_level.txt +0 -1
  49. {ltbams-1.0.12 → ltbams-1.0.14}/pyproject.toml +3 -1
  50. {ltbams-1.0.12 → ltbams-1.0.14}/requirements-dev.txt +1 -1
  51. {ltbams-1.0.12 → ltbams-1.0.14}/requirements.txt +2 -1
  52. {ltbams-1.0.12 → ltbams-1.0.14}/setup.py +1 -1
  53. ltbams-1.0.14/tests/test_export_json.py +110 -0
  54. {ltbams-1.0.12 → ltbams-1.0.14}/tests/test_known_good.py +6 -6
  55. {ltbams-1.0.12 → ltbams-1.0.14}/tests/test_matp.py +62 -35
  56. ltbams-1.0.12/tests/__init__.py +0 -0
  57. {ltbams-1.0.12 → ltbams-1.0.14}/CONTRIBUTING.rst +0 -0
  58. {ltbams-1.0.12 → ltbams-1.0.14}/LICENSE +0 -0
  59. {ltbams-1.0.12 → ltbams-1.0.14}/MANIFEST.in +0 -0
  60. {ltbams-1.0.12 → ltbams-1.0.14}/ams/__init__.py +0 -0
  61. {ltbams-1.0.12 → ltbams-1.0.14}/ams/__main__.py +0 -0
  62. {ltbams-1.0.12 → ltbams-1.0.14}/ams/cases/5bus/pjm5bus_demo.json +0 -0
  63. {ltbams-1.0.12 → ltbams-1.0.14}/ams/cases/5bus/pjm5bus_demo.xlsx +0 -0
  64. {ltbams-1.0.12 → ltbams-1.0.14}/ams/cases/5bus/pjm5bus_ev.xlsx +0 -0
  65. {ltbams-1.0.12 → ltbams-1.0.14}/ams/cases/5bus/pjm5bus_jumper.xlsx +0 -0
  66. {ltbams-1.0.12 → ltbams-1.0.14}/ams/cases/hawaii40/Hawaii40.m +0 -0
  67. {ltbams-1.0.12 → ltbams-1.0.14}/ams/cases/ieee123/ieee123.xlsx +0 -0
  68. {ltbams-1.0.12 → ltbams-1.0.14}/ams/cases/ieee123/ieee123_regcv1.xlsx +0 -0
  69. {ltbams-1.0.12 → ltbams-1.0.14}/ams/cases/ieee14/ieee14.json +0 -0
  70. {ltbams-1.0.12 → ltbams-1.0.14}/ams/cases/ieee14/ieee14.raw +0 -0
  71. {ltbams-1.0.12 → ltbams-1.0.14}/ams/cases/ieee14/ieee14_conn.xlsx +0 -0
  72. {ltbams-1.0.12 → ltbams-1.0.14}/ams/cases/ieee14/ieee14_uced.xlsx +0 -0
  73. {ltbams-1.0.12 → ltbams-1.0.14}/ams/cases/ieee39/ieee39.xlsx +0 -0
  74. {ltbams-1.0.12 → ltbams-1.0.14}/ams/cases/ieee39/ieee39_uced.xlsx +0 -0
  75. {ltbams-1.0.12 → ltbams-1.0.14}/ams/cases/ieee39/ieee39_uced_esd1.xlsx +0 -0
  76. {ltbams-1.0.12 → ltbams-1.0.14}/ams/cases/ieee39/ieee39_uced_pvd1.xlsx +0 -0
  77. {ltbams-1.0.12 → ltbams-1.0.14}/ams/cases/ieee39/ieee39_uced_vis.xlsx +0 -0
  78. {ltbams-1.0.12 → ltbams-1.0.14}/ams/cases/matpower/benchmark.json +0 -0
  79. {ltbams-1.0.12 → ltbams-1.0.14}/ams/cases/matpower/case118.m +0 -0
  80. {ltbams-1.0.12 → ltbams-1.0.14}/ams/cases/matpower/case14.m +0 -0
  81. {ltbams-1.0.12 → ltbams-1.0.14}/ams/cases/matpower/case300.m +0 -0
  82. {ltbams-1.0.12 → ltbams-1.0.14}/ams/cases/matpower/case39.m +0 -0
  83. {ltbams-1.0.12 → ltbams-1.0.14}/ams/cases/matpower/case5.m +0 -0
  84. {ltbams-1.0.12 → ltbams-1.0.14}/ams/cases/matpower/case_ACTIVSg2000.m +0 -0
  85. {ltbams-1.0.12 → ltbams-1.0.14}/ams/cases/npcc/npcc.m +0 -0
  86. {ltbams-1.0.12 → ltbams-1.0.14}/ams/cases/npcc/npcc_uced.xlsx +0 -0
  87. {ltbams-1.0.12 → ltbams-1.0.14}/ams/cases/pglib/pglib_opf_case39_epri__api.m +0 -0
  88. {ltbams-1.0.12 → ltbams-1.0.14}/ams/cases/wecc/wecc.m +0 -0
  89. {ltbams-1.0.12 → ltbams-1.0.14}/ams/cases/wecc/wecc_uced.xlsx +0 -0
  90. {ltbams-1.0.12 → ltbams-1.0.14}/ams/core/__init__.py +0 -0
  91. {ltbams-1.0.12 → ltbams-1.0.14}/ams/core/service.py +0 -0
  92. {ltbams-1.0.12 → ltbams-1.0.14}/ams/extension/__init__.py +0 -0
  93. {ltbams-1.0.12 → ltbams-1.0.14}/ams/io/__init__.py +0 -0
  94. {ltbams-1.0.12 → ltbams-1.0.14}/ams/io/pypower.py +0 -0
  95. {ltbams-1.0.12 → ltbams-1.0.14}/ams/models/__init__.py +0 -0
  96. {ltbams-1.0.12 → ltbams-1.0.14}/ams/models/area.py +0 -0
  97. {ltbams-1.0.12 → ltbams-1.0.14}/ams/models/bus.py +0 -0
  98. {ltbams-1.0.12 → ltbams-1.0.14}/ams/models/cost.py +0 -0
  99. {ltbams-1.0.12 → ltbams-1.0.14}/ams/models/distributed/__init__.py +0 -0
  100. {ltbams-1.0.12 → ltbams-1.0.14}/ams/models/info.py +0 -0
  101. {ltbams-1.0.12 → ltbams-1.0.14}/ams/models/line.py +0 -0
  102. {ltbams-1.0.12 → ltbams-1.0.14}/ams/models/renewable/__init__.py +0 -0
  103. {ltbams-1.0.12 → ltbams-1.0.14}/ams/models/reserve.py +0 -0
  104. {ltbams-1.0.12 → ltbams-1.0.14}/ams/models/shunt.py +0 -0
  105. {ltbams-1.0.12 → ltbams-1.0.14}/ams/models/static/__init__.py +0 -0
  106. {ltbams-1.0.12 → ltbams-1.0.14}/ams/models/static/gen.py +0 -0
  107. {ltbams-1.0.12 → ltbams-1.0.14}/ams/models/static/pq.py +0 -0
  108. {ltbams-1.0.12 → ltbams-1.0.14}/ams/opt/__init__.py +0 -0
  109. {ltbams-1.0.12 → ltbams-1.0.14}/ams/opt/constraint.py +0 -0
  110. {ltbams-1.0.12 → ltbams-1.0.14}/ams/opt/expression.py +0 -0
  111. {ltbams-1.0.12 → ltbams-1.0.14}/ams/opt/objective.py +0 -0
  112. {ltbams-1.0.12 → ltbams-1.0.14}/ams/opt/omodel.py +0 -0
  113. {ltbams-1.0.12 → ltbams-1.0.14}/ams/opt/param.py +0 -0
  114. {ltbams-1.0.12 → ltbams-1.0.14}/ams/opt/var.py +0 -0
  115. {ltbams-1.0.12 → ltbams-1.0.14}/ams/routines/__init__.py +0 -0
  116. {ltbams-1.0.12 → ltbams-1.0.14}/ams/routines/acopf.py +0 -0
  117. {ltbams-1.0.12 → ltbams-1.0.14}/ams/routines/dcpf.py +0 -0
  118. {ltbams-1.0.12 → ltbams-1.0.14}/ams/routines/type.py +0 -0
  119. {ltbams-1.0.12 → ltbams-1.0.14}/ams/utils/__init__.py +0 -0
  120. {ltbams-1.0.12 → ltbams-1.0.14}/ams/utils/misc.py +0 -0
  121. {ltbams-1.0.12 → ltbams-1.0.14}/docs/Makefile +0 -0
  122. {ltbams-1.0.12 → ltbams-1.0.14}/docs/make.bat +0 -0
  123. {ltbams-1.0.12 → ltbams-1.0.14}/docs/source/_templates/autosummary/base.rst +0 -0
  124. {ltbams-1.0.12 → ltbams-1.0.14}/docs/source/_templates/autosummary/class.rst +0 -0
  125. {ltbams-1.0.12 → ltbams-1.0.14}/docs/source/_templates/autosummary/module.rst +0 -0
  126. {ltbams-1.0.12 → ltbams-1.0.14}/docs/source/_templates/autosummary/module_toctree.rst +0 -0
  127. {ltbams-1.0.12 → ltbams-1.0.14}/docs/source/api.rst +0 -0
  128. {ltbams-1.0.12 → ltbams-1.0.14}/docs/source/conf.py +0 -0
  129. {ltbams-1.0.12 → ltbams-1.0.14}/docs/source/examples/index.rst +0 -0
  130. {ltbams-1.0.12 → ltbams-1.0.14}/docs/source/genmodelref.py +0 -0
  131. {ltbams-1.0.12 → ltbams-1.0.14}/docs/source/getting_started/copyright.rst +0 -0
  132. {ltbams-1.0.12 → ltbams-1.0.14}/docs/source/getting_started/formats/index.rst +0 -0
  133. {ltbams-1.0.12 → ltbams-1.0.14}/docs/source/getting_started/formats/matpower.rst +0 -0
  134. {ltbams-1.0.12 → ltbams-1.0.14}/docs/source/getting_started/formats/psse.rst +0 -0
  135. {ltbams-1.0.12 → ltbams-1.0.14}/docs/source/getting_started/formats/pypower.rst +0 -0
  136. {ltbams-1.0.12 → ltbams-1.0.14}/docs/source/getting_started/formats/xlsx.png +0 -0
  137. {ltbams-1.0.12 → ltbams-1.0.14}/docs/source/getting_started/formats/xlsx.rst +0 -0
  138. {ltbams-1.0.12 → ltbams-1.0.14}/docs/source/getting_started/index.rst +0 -0
  139. {ltbams-1.0.12 → ltbams-1.0.14}/docs/source/getting_started/install.rst +0 -0
  140. {ltbams-1.0.12 → ltbams-1.0.14}/docs/source/getting_started/overview.rst +0 -0
  141. {ltbams-1.0.12 → ltbams-1.0.14}/docs/source/getting_started/testcase.rst +0 -0
  142. {ltbams-1.0.12 → ltbams-1.0.14}/docs/source/getting_started/verification.rst +0 -0
  143. {ltbams-1.0.12 → ltbams-1.0.14}/docs/source/images/curent.ico +0 -0
  144. {ltbams-1.0.12 → ltbams-1.0.14}/docs/source/images/dcopf_time.png +0 -0
  145. {ltbams-1.0.12 → ltbams-1.0.14}/docs/source/images/educ_pie.png +0 -0
  146. {ltbams-1.0.12 → ltbams-1.0.14}/docs/source/images/sponsors/CURENT_Logo_NameOnTrans.png +0 -0
  147. {ltbams-1.0.12 → ltbams-1.0.14}/docs/source/images/sponsors/CURENT_Logo_Transparent.png +0 -0
  148. {ltbams-1.0.12 → ltbams-1.0.14}/docs/source/images/sponsors/CURENT_Logo_Transparent_Name.png +0 -0
  149. {ltbams-1.0.12 → ltbams-1.0.14}/docs/source/images/sponsors/doe.png +0 -0
  150. {ltbams-1.0.12 → ltbams-1.0.14}/docs/source/modeling/example.rst +0 -0
  151. {ltbams-1.0.12 → ltbams-1.0.14}/docs/source/modeling/index.rst +0 -0
  152. {ltbams-1.0.12 → ltbams-1.0.14}/docs/source/modeling/model.rst +0 -0
  153. {ltbams-1.0.12 → ltbams-1.0.14}/docs/source/modeling/routine.rst +0 -0
  154. {ltbams-1.0.12 → ltbams-1.0.14}/docs/source/modeling/system.rst +0 -0
  155. {ltbams-1.0.12 → ltbams-1.0.14}/ltbams.egg-info/dependency_links.txt +0 -0
  156. {ltbams-1.0.12 → ltbams-1.0.14}/ltbams.egg-info/entry_points.txt +0 -0
  157. {ltbams-1.0.12 → ltbams-1.0.14}/setup.cfg +0 -0
  158. {ltbams-1.0.12 → ltbams-1.0.14}/tests/test_1st_system.py +0 -0
  159. {ltbams-1.0.12 → ltbams-1.0.14}/tests/test_addressing.py +0 -0
  160. {ltbams-1.0.12 → ltbams-1.0.14}/tests/test_case.py +0 -0
  161. {ltbams-1.0.12 → ltbams-1.0.14}/tests/test_cli.py +0 -0
  162. {ltbams-1.0.12 → ltbams-1.0.14}/tests/test_export_csv.py +0 -0
  163. {ltbams-1.0.12 → ltbams-1.0.14}/tests/test_group.py +0 -0
  164. {ltbams-1.0.12 → ltbams-1.0.14}/tests/test_interface.py +0 -0
  165. {ltbams-1.0.12 → ltbams-1.0.14}/tests/test_io.py +0 -0
  166. {ltbams-1.0.12 → ltbams-1.0.14}/tests/test_jumper.py +0 -0
  167. {ltbams-1.0.12 → ltbams-1.0.14}/tests/test_model.py +0 -0
  168. {ltbams-1.0.12 → ltbams-1.0.14}/tests/test_omodel.py +0 -0
  169. {ltbams-1.0.12 → ltbams-1.0.14}/tests/test_paths.py +0 -0
  170. {ltbams-1.0.12 → ltbams-1.0.14}/tests/test_report.py +0 -0
  171. {ltbams-1.0.12 → ltbams-1.0.14}/tests/test_repr.py +0 -0
  172. {ltbams-1.0.12 → ltbams-1.0.14}/tests/test_routine.py +0 -0
  173. {ltbams-1.0.12 → ltbams-1.0.14}/tests/test_rtn_acopf.py +0 -0
  174. {ltbams-1.0.12 → ltbams-1.0.14}/tests/test_rtn_dcopf.py +0 -0
  175. {ltbams-1.0.12 → ltbams-1.0.14}/tests/test_rtn_dcopf2.py +0 -0
  176. {ltbams-1.0.12 → ltbams-1.0.14}/tests/test_rtn_ed.py +0 -0
  177. {ltbams-1.0.12 → ltbams-1.0.14}/tests/test_rtn_opf.py +0 -0
  178. {ltbams-1.0.12 → ltbams-1.0.14}/tests/test_rtn_pflow.py +0 -0
  179. {ltbams-1.0.12 → ltbams-1.0.14}/tests/test_rtn_pypower.py +0 -0
  180. {ltbams-1.0.12 → ltbams-1.0.14}/tests/test_rtn_rted.py +0 -0
  181. {ltbams-1.0.12 → ltbams-1.0.14}/tests/test_rtn_uc.py +0 -0
  182. {ltbams-1.0.12 → ltbams-1.0.14}/tests/test_service.py +0 -0
  183. {ltbams-1.0.12 → ltbams-1.0.14}/versioneer.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ltbams
3
- Version: 1.0.12
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
  ![License: GPL-3.0](https://img.shields.io/badge/License-GPL--3.0-blue.svg)
56
59
  [![DOI:10.1109/TSTE.2025.3528027](https://zenodo.org/badge/DOI/10.1109/TSTE.2025.3528027.svg)](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 | ![Project Status: Active](https://www.repostatus.org/badges/latest/active.svg) | ![Repo Size](https://img.shields.io/github/repo-size/CURENT/ams) |
64
+ | Python | [![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/) |
63
65
  | Version | [![PyPI Version](https://img.shields.io/pypi/v/ltbams.svg)](https://pypi.org/project/ltbams/) | [![Anaconda-Server Badge](https://anaconda.org/conda-forge/ltbams/badges/version.svg)](https://anaconda.org/conda-forge/ltbams) |
64
66
  | Tag | [![GitHub Tag](https://img.shields.io/github/v/tag/CURENT/ams)](https://github.com/CURENT/ams/tags) | ![GitHub commits since latest release (branch)](https://img.shields.io/github/commits-since/curent/ams/latest/develop) |
65
67
  | Documentation | [![Read the Docs](https://img.shields.io/readthedocs/ams?label=stable)](https://ltb.readthedocs.io/projects/ams/en/stable/?badge=stable) | [![Read the Docs](https://img.shields.io/readthedocs/ams?label=develop)](https://ltb.readthedocs.io/projects/ams/en/develop/?badge=develop) |
66
68
  | Download | [![PyPI - Downloads](https://img.shields.io/pypi/dm/ltbams)](https://pypi.org/project/ltbams/) | [![Anaconda-Server Badge](https://anaconda.org/conda-forge/ltbams/badges/downloads.svg)](https://anaconda.org/conda-forge/ltbams) |
67
- | Code Quality | ![Codacy Badge](https://app.codacy.com/project/badge/Grade/69456da1b8634f2f984bd769e35f0050) | ![Codacy Badge](https://app.codacy.com/project/badge/Coverage/69456da1b8634f2f984bd769e35f0050) |
68
- | Code Cov | ![codecov](https://codecov.io/gh/CURENT/ams/graph/badge.svg?token=RZI5GLLBQH) | |
69
+ | Quality | ![Codacy Badge](https://app.codacy.com/project/badge/Grade/69456da1b8634f2f984bd769e35f0050) | [![codebeat badge](https://codebeat.co/badges/6c8a53d2-cffd-4787-8c49-d59742a95205)](https://codebeat.co/projects/github-com-curent-ams-master) |
70
+ | Coverage | ![Codacy Badge](https://app.codacy.com/project/badge/Coverage/69456da1b8634f2f984bd769e35f0050) | ![codecov](https://codecov.io/gh/CURENT/ams/graph/badge.svg?token=RZI5GLLBQH) |
69
71
  | Last Commit | ![GitHub last commit (master)](https://img.shields.io/github/last-commit/CURENT/ams/master?label=last%20commit%20to%20master) | ![GitHub last commit (develop)](https://img.shields.io/github/last-commit/CURENT/ams/develop?label=last%20commit%20to%20develop) |
70
- | CI | [![Compatibility](https://github.com/CURENT/ams/actions/workflows/compatibility.yml/badge.svg)](https://github.com/CURENT/ams/actions/workflows/compatibility.yml) | [![Build Status](https://dev.azure.com/curentltb/ams/_apis/build/status%2FCURENT.ams?branchName=scuc)](https://dev.azure.com/curentltb/ams/_build/latest?definitionId=2&branchName=scuc) |
71
- | CD | [![Publish](https://github.com/CURENT/ams/actions/workflows/publish-pypi.yml/badge.svg)](https://github.com/CURENT/ams/actions/workflows/publish-pypi.yml) | |
72
+ | CI | [![Compatibility](https://github.com/CURENT/ams/actions/workflows/compatibility.yml/badge.svg)](https://github.com/CURENT/ams/actions/workflows/compatibility.yml) | [![Build Status](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) |
73
+ | CD | [![Publish](https://github.com/CURENT/ams/actions/workflows/publish-pypi.yml/badge.svg)](https://github.com/CURENT/ams/actions/workflows/publish-pypi.yml) | [![Build Status](https://dev.azure.com/conda-forge/feedstock-builds/_apis/build/status/ltbams-feedstock?branchName=main)](https://dev.azure.com/conda-forge/feedstock-builds/_build/latest?definitionId=21708&branchName=main) |
72
74
  | Structure | [![Structure](https://img.shields.io/badge/code_base-visualize-blue)](https://mango-dune-07a8b7110.1.azurestaticapps.net/?repo=CURENT%2Fams) | [![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/CURENT/ams) |
73
75
  | Dependency | [![libraries](https://img.shields.io/librariesio/release/pypi/ltbams)](https://libraries.io/pypi/ltbams) | |
74
76
  | Try on Binder | [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/curent/ams/master) | |
75
77
 
76
- # Why AMS
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 and cite our [paper][paper]
153
+ - Check out and cite our [paper][paper]
152
154
 
153
- # Installation
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` is recommended to install via `conda` as sometimes ``pip`` struggles to set the correct path for compiled libraries, more detailes can be found in this closed issue [Bug with dependency kvxopt 1.3.2.0](https://github.com/CURENT/andes/issues/508)
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
- # Example Usage
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
- # Citing AMS
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-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.
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
- # Sponsors and Contributors
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
- # License
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,29 +1,30 @@
1
1
  # LTB AMS
2
2
 
3
+ <img src="docs/source/images/sponsors/CURENT_Logo_NameOnTrans.png" alt="CURENT ERC Logo" width="300" height="auto">
4
+
3
5
  Python Software for Power System Scheduling Modeling and Co-Simulation with Dynamics, serving as the market simulator for the [CURENT Largescale Testbed][LTB Repository].
4
6
 
5
7
  ![License: GPL-3.0](https://img.shields.io/badge/License-GPL--3.0-blue.svg)
6
8
  [![DOI:10.1109/TSTE.2025.3528027](https://zenodo.org/badge/DOI/10.1109/TSTE.2025.3528027.svg)](https://ieeexplore.ieee.org/document/10836855)
7
9
 
8
- <img src="docs/source/images/sponsors/CURENT_Logo_NameOnTrans.png" alt="CURENT ERC Logo" width="300" height="auto">
9
-
10
10
  | Badges | | |
11
11
  |---|---|---|
12
12
  | Repo | ![Project Status: Active](https://www.repostatus.org/badges/latest/active.svg) | ![Repo Size](https://img.shields.io/github/repo-size/CURENT/ams) |
13
+ | Python | [![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/) |
13
14
  | Version | [![PyPI Version](https://img.shields.io/pypi/v/ltbams.svg)](https://pypi.org/project/ltbams/) | [![Anaconda-Server Badge](https://anaconda.org/conda-forge/ltbams/badges/version.svg)](https://anaconda.org/conda-forge/ltbams) |
14
15
  | Tag | [![GitHub Tag](https://img.shields.io/github/v/tag/CURENT/ams)](https://github.com/CURENT/ams/tags) | ![GitHub commits since latest release (branch)](https://img.shields.io/github/commits-since/curent/ams/latest/develop) |
15
16
  | Documentation | [![Read the Docs](https://img.shields.io/readthedocs/ams?label=stable)](https://ltb.readthedocs.io/projects/ams/en/stable/?badge=stable) | [![Read the Docs](https://img.shields.io/readthedocs/ams?label=develop)](https://ltb.readthedocs.io/projects/ams/en/develop/?badge=develop) |
16
17
  | Download | [![PyPI - Downloads](https://img.shields.io/pypi/dm/ltbams)](https://pypi.org/project/ltbams/) | [![Anaconda-Server Badge](https://anaconda.org/conda-forge/ltbams/badges/downloads.svg)](https://anaconda.org/conda-forge/ltbams) |
17
- | Code Quality | ![Codacy Badge](https://app.codacy.com/project/badge/Grade/69456da1b8634f2f984bd769e35f0050) | ![Codacy Badge](https://app.codacy.com/project/badge/Coverage/69456da1b8634f2f984bd769e35f0050) |
18
- | Code Cov | ![codecov](https://codecov.io/gh/CURENT/ams/graph/badge.svg?token=RZI5GLLBQH) | |
18
+ | Quality | ![Codacy Badge](https://app.codacy.com/project/badge/Grade/69456da1b8634f2f984bd769e35f0050) | [![codebeat badge](https://codebeat.co/badges/6c8a53d2-cffd-4787-8c49-d59742a95205)](https://codebeat.co/projects/github-com-curent-ams-master) |
19
+ | Coverage | ![Codacy Badge](https://app.codacy.com/project/badge/Coverage/69456da1b8634f2f984bd769e35f0050) | ![codecov](https://codecov.io/gh/CURENT/ams/graph/badge.svg?token=RZI5GLLBQH) |
19
20
  | Last Commit | ![GitHub last commit (master)](https://img.shields.io/github/last-commit/CURENT/ams/master?label=last%20commit%20to%20master) | ![GitHub last commit (develop)](https://img.shields.io/github/last-commit/CURENT/ams/develop?label=last%20commit%20to%20develop) |
20
- | CI | [![Compatibility](https://github.com/CURENT/ams/actions/workflows/compatibility.yml/badge.svg)](https://github.com/CURENT/ams/actions/workflows/compatibility.yml) | [![Build Status](https://dev.azure.com/curentltb/ams/_apis/build/status%2FCURENT.ams?branchName=scuc)](https://dev.azure.com/curentltb/ams/_build/latest?definitionId=2&branchName=scuc) |
21
- | CD | [![Publish](https://github.com/CURENT/ams/actions/workflows/publish-pypi.yml/badge.svg)](https://github.com/CURENT/ams/actions/workflows/publish-pypi.yml) | |
21
+ | CI | [![Compatibility](https://github.com/CURENT/ams/actions/workflows/compatibility.yml/badge.svg)](https://github.com/CURENT/ams/actions/workflows/compatibility.yml) | [![Build Status](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) |
22
+ | CD | [![Publish](https://github.com/CURENT/ams/actions/workflows/publish-pypi.yml/badge.svg)](https://github.com/CURENT/ams/actions/workflows/publish-pypi.yml) | [![Build Status](https://dev.azure.com/conda-forge/feedstock-builds/_apis/build/status/ltbams-feedstock?branchName=main)](https://dev.azure.com/conda-forge/feedstock-builds/_build/latest?definitionId=21708&branchName=main) |
22
23
  | Structure | [![Structure](https://img.shields.io/badge/code_base-visualize-blue)](https://mango-dune-07a8b7110.1.azurestaticapps.net/?repo=CURENT%2Fams) | [![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/CURENT/ams) |
23
24
  | Dependency | [![libraries](https://img.shields.io/librariesio/release/pypi/ltbams)](https://libraries.io/pypi/ltbams) | |
24
25
  | Try on Binder | [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/curent/ams/master) | |
25
26
 
26
- # Why AMS
27
+ ## Why AMS
27
28
 
28
29
  AMS facilitates **Dynamics Incorporated Scheduling** and **Scheduling-Dynamics Co-Simulation**
29
30
  through an integrated interface with ANDES.
@@ -98,9 +99,9 @@ Use the following resources to get involved.
98
99
  - Read release notes highlighted [here][release notes]
99
100
  - Try in Jupyter Notebook on [Binder][Binder]
100
101
  - Check out the source code used for [benchmark][benchmark]
101
- - Check out and and cite our [paper][paper]
102
+ - Check out and cite our [paper][paper]
102
103
 
103
- # Installation
104
+ ## Installation
104
105
 
105
106
  AMS is released as ``ltbams`` on PyPI and conda-forge.
106
107
  Install from PyPI using pip:
@@ -139,11 +140,11 @@ pip install git+https://github.com/CURENT/ams.git
139
140
  - `cvxpy` is distributed with the open source solvers CLARABEL, OSQP, and SCS, but MIP-capable solvers need separate installation
140
141
  - `cvxpy` versions **below 1.5** are incompatible with `numpy` versions **2.0 and above**
141
142
  - 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`
142
- - `kvxopt` is recommended to install via `conda` as sometimes ``pip`` struggles to set the correct path for compiled libraries, more detailes can be found in this closed issue [Bug with dependency kvxopt 1.3.2.0](https://github.com/CURENT/andes/issues/508)
143
+ - 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)
143
144
  - Versions **1.0.0** and **1.0.1** are only available on PyPI
144
145
  - Version **0.9.9** has known issues and has been yanked from PyPI
145
146
 
146
- # Example Usage
147
+ ## Example Usage
147
148
 
148
149
  ```python
149
150
  import ams
@@ -164,12 +165,15 @@ sa
164
165
  >>> <andes.system.System at 0x14bd98190>
165
166
  ```
166
167
 
167
- # Citing AMS
168
+ Here, RTED stands for Real-Time Economic Dispatch.
169
+ 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).
170
+
171
+ ## Citing AMS
168
172
  If you use AMS for research or consulting, please cite the following paper in your publication that uses AMS:
169
173
 
170
- > 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.
174
+ > 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.
171
175
 
172
- # Sponsors and Contributors
176
+ ## Sponsors and Contributors
173
177
  AMS is the scheduling simulation engine for the CURENT Largescale Testbed (LTB).
174
178
  More information about CURENT LTB can be found at the [LTB Repository][LTB Repository].
175
179
 
@@ -180,16 +184,9 @@ This work was supported in part by the Advanced Grid Research and Development Pr
180
184
 
181
185
  See [GitHub contributors][GitHub contributors] for the contributor list.
182
186
 
183
- # License
187
+ ## License
184
188
  AMS is licensed under the [GPL v3 License](./LICENSE).
185
189
 
186
- # Related Projects
187
- - [Popular Open Source Libraries for Power System Analysis](https://github.com/ps-wiki/best-of-ps)
188
- - [G-PST Tools Portal](https://g-pst.github.io/tools/): An open tools portal with a classification approach
189
- - [Open Source Software (OSS) for Electricity Market Research, Teaching, and Training](https://www2.econ.iastate.edu/tesfatsi/ElectricOSS.htm)
190
-
191
- Some commercial solvers provide academic licenses, such as COPT, GUROBI, CPLEX, and MOSEK.
192
-
193
190
  * * *
194
191
 
195
192
  [GitHub releases]: https://github.com/CURENT/ams/releases
@@ -8,11 +8,11 @@ import json
8
8
 
9
9
  version_json = '''
10
10
  {
11
- "date": "2025-05-29T20:16:06-0400",
11
+ "date": "2025-08-31T23:37:40-0700",
12
12
  "dirty": false,
13
13
  "error": null,
14
- "full-revisionid": "2166f4368af3d382720af38408153a70502eb9f5",
15
- "version": "1.0.12"
14
+ "full-revisionid": "595ed3a3be7f707c7c4aa79ac73bffa58919dc81",
15
+ "version": "1.0.14"
16
16
  }
17
17
  ''' # END VERSION_JSON
18
18
 
@@ -23,18 +23,13 @@ command_aliases = {
23
23
 
24
24
  def create_parser():
25
25
  """
26
- Create a parser for the command-line interface.
26
+ Create a parser for the command-line interface,
27
+ revised from `andes.cli.create_parser`.
27
28
 
28
29
  Returns
29
30
  -------
30
31
  argparse.ArgumentParser
31
32
  Parser with all AMS options
32
-
33
- Notes
34
- -----
35
- Revised from the ANDES project (https://github.com/CURENT/andes).
36
- Original author: Hantao Cui
37
- License: GPL3
38
33
  """
39
34
 
40
35
  parser = argparse.ArgumentParser()
@@ -1,16 +1,20 @@
1
1
  import logging
2
2
 
3
- from andes.core.common import Config as AndesConfig
3
+ from andes.core.common import Config as adConfig
4
4
 
5
5
  logger = logging.getLogger(__name__)
6
6
 
7
7
 
8
- class Config(AndesConfig):
8
+ class Config(adConfig):
9
9
  """
10
10
  A class for storing configuration, can be used in system,
11
11
  model, routine, and other modules.
12
12
 
13
- Revised from `andes.core.common.Config`.
13
+ Revised from `andes.core.common.Config`, where update method
14
+ is modified to ensure values in the dictionary are set
15
+ in the configuration object.
16
+
17
+ .. versionadded:: 1.0.11
14
18
  """
15
19
 
16
20
  def __init__(self, name, dct=None, **kwargs):
@@ -13,7 +13,8 @@ logger = logging.getLogger(__name__)
13
13
 
14
14
  class Documenter:
15
15
  """
16
- Helper class for documenting models.
16
+ Helper class for documenting models, inspired by
17
+ `andes.core.documenter.Documenter`.
17
18
 
18
19
  Parameters
19
20
  ----------