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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (728) hide show
  1. ams/__init__.py +4 -11
  2. ams/_version.py +4 -4
  3. ams/cases/5bus/pjm5bus_demo.xlsx +0 -0
  4. ams/cases/5bus/pjm5bus_jumper.xlsx +0 -0
  5. ams/cases/5bus/pjm5bus_uced.json +1062 -0
  6. ams/cases/5bus/pjm5bus_uced.xlsx +0 -0
  7. ams/cases/5bus/pjm5bus_uced_esd1.xlsx +0 -0
  8. ams/cases/5bus/pjm5bus_uced_ev.xlsx +0 -0
  9. ams/cases/ieee123/ieee123.xlsx +0 -0
  10. ams/cases/ieee123/ieee123_regcv1.xlsx +0 -0
  11. ams/cases/ieee14/ieee14.json +1166 -0
  12. ams/cases/ieee14/ieee14.raw +92 -0
  13. ams/cases/ieee14/ieee14_conn.xlsx +0 -0
  14. ams/cases/ieee14/ieee14_uced.xlsx +0 -0
  15. ams/cases/ieee39/ieee39.xlsx +0 -0
  16. ams/cases/ieee39/ieee39_uced.xlsx +0 -0
  17. ams/cases/ieee39/ieee39_uced_esd1.xlsx +0 -0
  18. ams/cases/ieee39/ieee39_uced_pvd1.xlsx +0 -0
  19. ams/cases/ieee39/ieee39_uced_vis.xlsx +0 -0
  20. ams/cases/matpower/benchmark.json +1594 -0
  21. ams/cases/matpower/case118.m +787 -0
  22. ams/cases/matpower/case14.m +129 -0
  23. ams/cases/matpower/case300.m +1315 -0
  24. ams/cases/matpower/case39.m +205 -0
  25. ams/cases/matpower/case5.m +62 -0
  26. ams/cases/matpower/case_ACTIVSg2000.m +9460 -0
  27. ams/cases/npcc/npcc.m +644 -0
  28. ams/cases/npcc/npcc_uced.xlsx +0 -0
  29. ams/cases/pglib/pglib_opf_case39_epri__api.m +243 -0
  30. ams/cases/wecc/wecc.m +714 -0
  31. ams/cases/wecc/wecc_uced.xlsx +0 -0
  32. ams/cli.py +6 -0
  33. ams/core/__init__.py +2 -0
  34. ams/core/documenter.py +652 -0
  35. ams/core/matprocessor.py +782 -0
  36. ams/core/model.py +330 -0
  37. ams/core/param.py +322 -0
  38. ams/core/service.py +918 -0
  39. ams/core/symprocessor.py +224 -0
  40. ams/core/var.py +59 -0
  41. ams/extension/__init__.py +5 -0
  42. ams/extension/eva.py +401 -0
  43. ams/interface.py +1085 -0
  44. ams/io/__init__.py +133 -0
  45. ams/io/json.py +82 -0
  46. ams/io/matpower.py +406 -0
  47. ams/io/psse.py +6 -0
  48. ams/io/pypower.py +103 -0
  49. ams/io/xlsx.py +80 -0
  50. ams/main.py +83 -4
  51. ams/models/__init__.py +24 -0
  52. ams/models/area.py +40 -0
  53. ams/models/bus.py +52 -0
  54. ams/models/cost.py +169 -0
  55. ams/models/distributed/__init__.py +3 -0
  56. ams/models/distributed/esd1.py +71 -0
  57. ams/models/distributed/ev.py +60 -0
  58. ams/models/distributed/pvd1.py +67 -0
  59. ams/models/group.py +231 -0
  60. ams/models/info.py +26 -0
  61. ams/models/line.py +238 -0
  62. ams/models/renewable/__init__.py +5 -0
  63. ams/models/renewable/regc.py +119 -0
  64. ams/models/reserve.py +94 -0
  65. ams/models/shunt.py +14 -0
  66. ams/models/static/__init__.py +2 -0
  67. ams/models/static/gen.py +165 -0
  68. ams/models/static/pq.py +61 -0
  69. ams/models/timeslot.py +69 -0
  70. ams/models/zone.py +49 -0
  71. ams/opt/__init__.py +12 -0
  72. ams/opt/constraint.py +175 -0
  73. ams/opt/exprcalc.py +127 -0
  74. ams/opt/expression.py +188 -0
  75. ams/opt/objective.py +174 -0
  76. ams/opt/omodel.py +432 -0
  77. ams/opt/optzbase.py +192 -0
  78. ams/opt/param.py +156 -0
  79. ams/opt/var.py +233 -0
  80. ams/pypower/__init__.py +8 -0
  81. ams/pypower/_compat.py +9 -0
  82. ams/pypower/core/__init__.py +8 -0
  83. ams/pypower/core/pips.py +894 -0
  84. ams/pypower/core/ppoption.py +244 -0
  85. ams/pypower/core/ppver.py +18 -0
  86. ams/pypower/core/solver.py +2451 -0
  87. ams/pypower/eps.py +6 -0
  88. ams/pypower/idx.py +174 -0
  89. ams/pypower/io.py +604 -0
  90. ams/pypower/make/__init__.py +11 -0
  91. ams/pypower/make/matrices.py +665 -0
  92. ams/pypower/make/pdv.py +506 -0
  93. ams/pypower/routines/__init__.py +7 -0
  94. ams/pypower/routines/cpf.py +513 -0
  95. ams/pypower/routines/cpf_callbacks.py +114 -0
  96. ams/pypower/routines/opf.py +1803 -0
  97. ams/pypower/routines/opffcns.py +1946 -0
  98. ams/pypower/routines/pflow.py +852 -0
  99. ams/pypower/toggle.py +1098 -0
  100. ams/pypower/utils.py +293 -0
  101. ams/report.py +212 -50
  102. ams/routines/__init__.py +23 -0
  103. ams/routines/acopf.py +117 -0
  104. ams/routines/cpf.py +65 -0
  105. ams/routines/dcopf.py +241 -0
  106. ams/routines/dcpf.py +209 -0
  107. ams/routines/dcpf0.py +196 -0
  108. ams/routines/dopf.py +150 -0
  109. ams/routines/ed.py +312 -0
  110. ams/routines/pflow.py +255 -0
  111. ams/routines/pflow0.py +113 -0
  112. ams/routines/pflow1.py +156 -0
  113. ams/routines/routine.py +1033 -0
  114. ams/routines/rted.py +519 -0
  115. ams/routines/type.py +160 -0
  116. ams/routines/uc.py +376 -0
  117. ams/shared.py +34 -9
  118. ams/system.py +61 -22
  119. ams/utils/__init__.py +3 -0
  120. ams/utils/misc.py +77 -0
  121. ams/utils/paths.py +257 -0
  122. docs/Makefile +21 -0
  123. docs/build/doctrees/nbsphinx/_examples_demo_demo_AGC_20_1.png +0 -0
  124. docs/build/doctrees/nbsphinx/_examples_demo_demo_AGC_37_1.png +0 -0
  125. docs/build/doctrees/nbsphinx/_examples_demo_demo_AGC_39_1.png +0 -0
  126. docs/build/html/_images/_examples_demo_demo_AGC_20_1.png +0 -0
  127. docs/build/html/_images/_examples_demo_demo_AGC_37_1.png +0 -0
  128. docs/build/html/_images/_examples_demo_demo_AGC_39_1.png +0 -0
  129. docs/build/html/_images/xlsx.png +0 -0
  130. docs/build/html/_static/file.png +0 -0
  131. docs/build/html/_static/minus.png +0 -0
  132. docs/build/html/_static/plus.png +0 -0
  133. docs/make.bat +35 -0
  134. docs/source/_generated/_generated/ams.core.model.Model.alter.rst +6 -0
  135. docs/source/_generated/_generated/ams.core.model.Model.class_name.rst +6 -0
  136. docs/source/_generated/_generated/ams.core.model.Model.doc.rst +6 -0
  137. docs/source/_generated/_generated/ams.core.model.Model.get.rst +6 -0
  138. docs/source/_generated/_generated/ams.core.model.Model.get_idx.rst +6 -0
  139. docs/source/_generated/_generated/ams.core.model.Model.idx2uid.rst +6 -0
  140. docs/source/_generated/_generated/ams.core.model.Model.list2array.rst +6 -0
  141. docs/source/_generated/_generated/ams.core.model.Model.set.rst +6 -0
  142. docs/source/_generated/_generated/ams.core.model.Model.set_backref.rst +6 -0
  143. docs/source/_generated/_generated/ams.core.param.RParam.class_name.rst +6 -0
  144. docs/source/_generated/_generated/ams.core.param.RParam.dtype.rst +6 -0
  145. docs/source/_generated/_generated/ams.core.param.RParam.evaluate.rst +6 -0
  146. docs/source/_generated/_generated/ams.core.param.RParam.get_idx.rst +6 -0
  147. docs/source/_generated/_generated/ams.core.param.RParam.n.rst +6 -0
  148. docs/source/_generated/_generated/ams.core.param.RParam.parse.rst +6 -0
  149. docs/source/_generated/_generated/ams.core.param.RParam.shape.rst +6 -0
  150. docs/source/_generated/_generated/ams.core.param.RParam.size.rst +6 -0
  151. docs/source/_generated/_generated/ams.core.param.RParam.update.rst +6 -0
  152. docs/source/_generated/_generated/ams.core.param.RParam.v.rst +6 -0
  153. docs/source/_generated/_generated/ams.core.service.LoadScale.assign_memory.rst +6 -0
  154. docs/source/_generated/_generated/ams.core.service.LoadScale.class_name.rst +6 -0
  155. docs/source/_generated/_generated/ams.core.service.LoadScale.evaluate.rst +6 -0
  156. docs/source/_generated/_generated/ams.core.service.LoadScale.get_names.rst +6 -0
  157. docs/source/_generated/_generated/ams.core.service.LoadScale.n.rst +6 -0
  158. docs/source/_generated/_generated/ams.core.service.LoadScale.parse.rst +6 -0
  159. docs/source/_generated/_generated/ams.core.service.LoadScale.shape.rst +6 -0
  160. docs/source/_generated/_generated/ams.core.service.LoadScale.size.rst +6 -0
  161. docs/source/_generated/_generated/ams.core.service.LoadScale.update.rst +6 -0
  162. docs/source/_generated/_generated/ams.core.service.LoadScale.v.rst +6 -0
  163. docs/source/_generated/_generated/ams.core.service.MinDur.assign_memory.rst +6 -0
  164. docs/source/_generated/_generated/ams.core.service.MinDur.class_name.rst +6 -0
  165. docs/source/_generated/_generated/ams.core.service.MinDur.evaluate.rst +6 -0
  166. docs/source/_generated/_generated/ams.core.service.MinDur.get_names.rst +6 -0
  167. docs/source/_generated/_generated/ams.core.service.MinDur.n.rst +6 -0
  168. docs/source/_generated/_generated/ams.core.service.MinDur.parse.rst +6 -0
  169. docs/source/_generated/_generated/ams.core.service.MinDur.shape.rst +6 -0
  170. docs/source/_generated/_generated/ams.core.service.MinDur.size.rst +6 -0
  171. docs/source/_generated/_generated/ams.core.service.MinDur.update.rst +6 -0
  172. docs/source/_generated/_generated/ams.core.service.MinDur.v.rst +6 -0
  173. docs/source/_generated/_generated/ams.core.service.MinDur.v0.rst +6 -0
  174. docs/source/_generated/_generated/ams.core.service.MinDur.v1.rst +6 -0
  175. docs/source/_generated/_generated/ams.core.service.NumExpandDim.assign_memory.rst +6 -0
  176. docs/source/_generated/_generated/ams.core.service.NumExpandDim.class_name.rst +6 -0
  177. docs/source/_generated/_generated/ams.core.service.NumExpandDim.evaluate.rst +6 -0
  178. docs/source/_generated/_generated/ams.core.service.NumExpandDim.get_names.rst +6 -0
  179. docs/source/_generated/_generated/ams.core.service.NumExpandDim.n.rst +6 -0
  180. docs/source/_generated/_generated/ams.core.service.NumExpandDim.parse.rst +6 -0
  181. docs/source/_generated/_generated/ams.core.service.NumExpandDim.shape.rst +6 -0
  182. docs/source/_generated/_generated/ams.core.service.NumExpandDim.size.rst +6 -0
  183. docs/source/_generated/_generated/ams.core.service.NumExpandDim.update.rst +6 -0
  184. docs/source/_generated/_generated/ams.core.service.NumExpandDim.v.rst +6 -0
  185. docs/source/_generated/_generated/ams.core.service.NumExpandDim.v0.rst +6 -0
  186. docs/source/_generated/_generated/ams.core.service.NumExpandDim.v1.rst +6 -0
  187. docs/source/_generated/_generated/ams.core.service.NumHstack.assign_memory.rst +6 -0
  188. docs/source/_generated/_generated/ams.core.service.NumHstack.class_name.rst +6 -0
  189. docs/source/_generated/_generated/ams.core.service.NumHstack.evaluate.rst +6 -0
  190. docs/source/_generated/_generated/ams.core.service.NumHstack.get_names.rst +6 -0
  191. docs/source/_generated/_generated/ams.core.service.NumHstack.n.rst +6 -0
  192. docs/source/_generated/_generated/ams.core.service.NumHstack.parse.rst +6 -0
  193. docs/source/_generated/_generated/ams.core.service.NumHstack.shape.rst +6 -0
  194. docs/source/_generated/_generated/ams.core.service.NumHstack.size.rst +6 -0
  195. docs/source/_generated/_generated/ams.core.service.NumHstack.update.rst +6 -0
  196. docs/source/_generated/_generated/ams.core.service.NumHstack.v.rst +6 -0
  197. docs/source/_generated/_generated/ams.core.service.NumHstack.v0.rst +6 -0
  198. docs/source/_generated/_generated/ams.core.service.NumHstack.v1.rst +6 -0
  199. docs/source/_generated/_generated/ams.core.service.NumOp.assign_memory.rst +6 -0
  200. docs/source/_generated/_generated/ams.core.service.NumOp.class_name.rst +6 -0
  201. docs/source/_generated/_generated/ams.core.service.NumOp.evaluate.rst +6 -0
  202. docs/source/_generated/_generated/ams.core.service.NumOp.get_names.rst +6 -0
  203. docs/source/_generated/_generated/ams.core.service.NumOp.n.rst +6 -0
  204. docs/source/_generated/_generated/ams.core.service.NumOp.parse.rst +6 -0
  205. docs/source/_generated/_generated/ams.core.service.NumOp.shape.rst +6 -0
  206. docs/source/_generated/_generated/ams.core.service.NumOp.size.rst +6 -0
  207. docs/source/_generated/_generated/ams.core.service.NumOp.update.rst +6 -0
  208. docs/source/_generated/_generated/ams.core.service.NumOp.v.rst +6 -0
  209. docs/source/_generated/_generated/ams.core.service.NumOp.v0.rst +6 -0
  210. docs/source/_generated/_generated/ams.core.service.NumOp.v1.rst +6 -0
  211. docs/source/_generated/_generated/ams.core.service.NumOpDual.assign_memory.rst +6 -0
  212. docs/source/_generated/_generated/ams.core.service.NumOpDual.class_name.rst +6 -0
  213. docs/source/_generated/_generated/ams.core.service.NumOpDual.evaluate.rst +6 -0
  214. docs/source/_generated/_generated/ams.core.service.NumOpDual.get_names.rst +6 -0
  215. docs/source/_generated/_generated/ams.core.service.NumOpDual.n.rst +6 -0
  216. docs/source/_generated/_generated/ams.core.service.NumOpDual.parse.rst +6 -0
  217. docs/source/_generated/_generated/ams.core.service.NumOpDual.shape.rst +6 -0
  218. docs/source/_generated/_generated/ams.core.service.NumOpDual.size.rst +6 -0
  219. docs/source/_generated/_generated/ams.core.service.NumOpDual.update.rst +6 -0
  220. docs/source/_generated/_generated/ams.core.service.NumOpDual.v.rst +6 -0
  221. docs/source/_generated/_generated/ams.core.service.NumOpDual.v0.rst +6 -0
  222. docs/source/_generated/_generated/ams.core.service.NumOpDual.v1.rst +6 -0
  223. docs/source/_generated/_generated/ams.core.service.RBaseService.assign_memory.rst +6 -0
  224. docs/source/_generated/_generated/ams.core.service.RBaseService.class_name.rst +6 -0
  225. docs/source/_generated/_generated/ams.core.service.RBaseService.evaluate.rst +6 -0
  226. docs/source/_generated/_generated/ams.core.service.RBaseService.get_names.rst +6 -0
  227. docs/source/_generated/_generated/ams.core.service.RBaseService.n.rst +6 -0
  228. docs/source/_generated/_generated/ams.core.service.RBaseService.parse.rst +6 -0
  229. docs/source/_generated/_generated/ams.core.service.RBaseService.shape.rst +6 -0
  230. docs/source/_generated/_generated/ams.core.service.RBaseService.size.rst +6 -0
  231. docs/source/_generated/_generated/ams.core.service.RBaseService.update.rst +6 -0
  232. docs/source/_generated/_generated/ams.core.service.RBaseService.v.rst +6 -0
  233. docs/source/_generated/_generated/ams.core.service.ROperationService.assign_memory.rst +6 -0
  234. docs/source/_generated/_generated/ams.core.service.ROperationService.class_name.rst +6 -0
  235. docs/source/_generated/_generated/ams.core.service.ROperationService.evaluate.rst +6 -0
  236. docs/source/_generated/_generated/ams.core.service.ROperationService.get_names.rst +6 -0
  237. docs/source/_generated/_generated/ams.core.service.ROperationService.n.rst +6 -0
  238. docs/source/_generated/_generated/ams.core.service.ROperationService.parse.rst +6 -0
  239. docs/source/_generated/_generated/ams.core.service.ROperationService.shape.rst +6 -0
  240. docs/source/_generated/_generated/ams.core.service.ROperationService.size.rst +6 -0
  241. docs/source/_generated/_generated/ams.core.service.ROperationService.update.rst +6 -0
  242. docs/source/_generated/_generated/ams.core.service.ROperationService.v.rst +6 -0
  243. docs/source/_generated/_generated/ams.core.service.RampSub.assign_memory.rst +6 -0
  244. docs/source/_generated/_generated/ams.core.service.RampSub.class_name.rst +6 -0
  245. docs/source/_generated/_generated/ams.core.service.RampSub.evaluate.rst +6 -0
  246. docs/source/_generated/_generated/ams.core.service.RampSub.get_names.rst +6 -0
  247. docs/source/_generated/_generated/ams.core.service.RampSub.n.rst +6 -0
  248. docs/source/_generated/_generated/ams.core.service.RampSub.parse.rst +6 -0
  249. docs/source/_generated/_generated/ams.core.service.RampSub.shape.rst +6 -0
  250. docs/source/_generated/_generated/ams.core.service.RampSub.size.rst +6 -0
  251. docs/source/_generated/_generated/ams.core.service.RampSub.update.rst +6 -0
  252. docs/source/_generated/_generated/ams.core.service.RampSub.v.rst +6 -0
  253. docs/source/_generated/_generated/ams.core.service.RampSub.v0.rst +6 -0
  254. docs/source/_generated/_generated/ams.core.service.RampSub.v1.rst +6 -0
  255. docs/source/_generated/_generated/ams.core.service.ValueService.assign_memory.rst +6 -0
  256. docs/source/_generated/_generated/ams.core.service.ValueService.class_name.rst +6 -0
  257. docs/source/_generated/_generated/ams.core.service.ValueService.evaluate.rst +6 -0
  258. docs/source/_generated/_generated/ams.core.service.ValueService.get_names.rst +6 -0
  259. docs/source/_generated/_generated/ams.core.service.ValueService.n.rst +6 -0
  260. docs/source/_generated/_generated/ams.core.service.ValueService.parse.rst +6 -0
  261. docs/source/_generated/_generated/ams.core.service.ValueService.shape.rst +6 -0
  262. docs/source/_generated/_generated/ams.core.service.ValueService.size.rst +6 -0
  263. docs/source/_generated/_generated/ams.core.service.ValueService.update.rst +6 -0
  264. docs/source/_generated/_generated/ams.core.service.ValueService.v.rst +6 -0
  265. docs/source/_generated/_generated/ams.core.service.VarReduction.assign_memory.rst +6 -0
  266. docs/source/_generated/_generated/ams.core.service.VarReduction.class_name.rst +6 -0
  267. docs/source/_generated/_generated/ams.core.service.VarReduction.evaluate.rst +6 -0
  268. docs/source/_generated/_generated/ams.core.service.VarReduction.get_names.rst +6 -0
  269. docs/source/_generated/_generated/ams.core.service.VarReduction.n.rst +6 -0
  270. docs/source/_generated/_generated/ams.core.service.VarReduction.parse.rst +6 -0
  271. docs/source/_generated/_generated/ams.core.service.VarReduction.shape.rst +6 -0
  272. docs/source/_generated/_generated/ams.core.service.VarReduction.size.rst +6 -0
  273. docs/source/_generated/_generated/ams.core.service.VarReduction.update.rst +6 -0
  274. docs/source/_generated/_generated/ams.core.service.VarReduction.v.rst +6 -0
  275. docs/source/_generated/_generated/ams.core.service.VarReduction.v0.rst +6 -0
  276. docs/source/_generated/_generated/ams.core.service.VarReduction.v1.rst +6 -0
  277. docs/source/_generated/_generated/ams.core.service.VarSelect.assign_memory.rst +6 -0
  278. docs/source/_generated/_generated/ams.core.service.VarSelect.class_name.rst +6 -0
  279. docs/source/_generated/_generated/ams.core.service.VarSelect.evaluate.rst +6 -0
  280. docs/source/_generated/_generated/ams.core.service.VarSelect.get_names.rst +6 -0
  281. docs/source/_generated/_generated/ams.core.service.VarSelect.n.rst +6 -0
  282. docs/source/_generated/_generated/ams.core.service.VarSelect.parse.rst +6 -0
  283. docs/source/_generated/_generated/ams.core.service.VarSelect.shape.rst +6 -0
  284. docs/source/_generated/_generated/ams.core.service.VarSelect.size.rst +6 -0
  285. docs/source/_generated/_generated/ams.core.service.VarSelect.update.rst +6 -0
  286. docs/source/_generated/_generated/ams.core.service.VarSelect.v.rst +6 -0
  287. docs/source/_generated/_generated/ams.core.service.VarSelect.v0.rst +6 -0
  288. docs/source/_generated/_generated/ams.core.service.VarSelect.v1.rst +6 -0
  289. docs/source/_generated/_generated/ams.core.service.ZonalSum.assign_memory.rst +6 -0
  290. docs/source/_generated/_generated/ams.core.service.ZonalSum.class_name.rst +6 -0
  291. docs/source/_generated/_generated/ams.core.service.ZonalSum.evaluate.rst +6 -0
  292. docs/source/_generated/_generated/ams.core.service.ZonalSum.get_names.rst +6 -0
  293. docs/source/_generated/_generated/ams.core.service.ZonalSum.n.rst +6 -0
  294. docs/source/_generated/_generated/ams.core.service.ZonalSum.parse.rst +6 -0
  295. docs/source/_generated/_generated/ams.core.service.ZonalSum.shape.rst +6 -0
  296. docs/source/_generated/_generated/ams.core.service.ZonalSum.size.rst +6 -0
  297. docs/source/_generated/_generated/ams.core.service.ZonalSum.update.rst +6 -0
  298. docs/source/_generated/_generated/ams.core.service.ZonalSum.v.rst +6 -0
  299. docs/source/_generated/_generated/ams.core.service.ZonalSum.v0.rst +6 -0
  300. docs/source/_generated/_generated/ams.core.service.ZonalSum.v1.rst +6 -0
  301. docs/source/_generated/_generated/ams.interface.Dynamic.is_tds.rst +6 -0
  302. docs/source/_generated/_generated/ams.interface.Dynamic.link_andes.rst +6 -0
  303. docs/source/_generated/_generated/ams.interface.Dynamic.receive.rst +6 -0
  304. docs/source/_generated/_generated/ams.interface.Dynamic.send.rst +6 -0
  305. docs/source/_generated/_generated/ams.opt.constraint.Constraint.class_name.rst +6 -0
  306. docs/source/_generated/_generated/ams.opt.constraint.Constraint.e.rst +6 -0
  307. docs/source/_generated/_generated/ams.opt.constraint.Constraint.evaluate.rst +6 -0
  308. docs/source/_generated/_generated/ams.opt.constraint.Constraint.n.rst +6 -0
  309. docs/source/_generated/_generated/ams.opt.constraint.Constraint.parse.rst +6 -0
  310. docs/source/_generated/_generated/ams.opt.constraint.Constraint.shape.rst +6 -0
  311. docs/source/_generated/_generated/ams.opt.constraint.Constraint.size.rst +6 -0
  312. docs/source/_generated/_generated/ams.opt.constraint.Constraint.v.rst +6 -0
  313. docs/source/_generated/_generated/ams.opt.exprcalc.ExpressionCalc.class_name.rst +6 -0
  314. docs/source/_generated/_generated/ams.opt.exprcalc.ExpressionCalc.e.rst +6 -0
  315. docs/source/_generated/_generated/ams.opt.exprcalc.ExpressionCalc.evaluate.rst +6 -0
  316. docs/source/_generated/_generated/ams.opt.exprcalc.ExpressionCalc.get_idx.rst +6 -0
  317. docs/source/_generated/_generated/ams.opt.exprcalc.ExpressionCalc.n.rst +6 -0
  318. docs/source/_generated/_generated/ams.opt.exprcalc.ExpressionCalc.parse.rst +6 -0
  319. docs/source/_generated/_generated/ams.opt.exprcalc.ExpressionCalc.shape.rst +6 -0
  320. docs/source/_generated/_generated/ams.opt.exprcalc.ExpressionCalc.size.rst +6 -0
  321. docs/source/_generated/_generated/ams.opt.exprcalc.ExpressionCalc.v.rst +6 -0
  322. docs/source/_generated/_generated/ams.opt.expression.Expression.class_name.rst +6 -0
  323. docs/source/_generated/_generated/ams.opt.expression.Expression.e.rst +6 -0
  324. docs/source/_generated/_generated/ams.opt.expression.Expression.evaluate.rst +6 -0
  325. docs/source/_generated/_generated/ams.opt.expression.Expression.get_idx.rst +6 -0
  326. docs/source/_generated/_generated/ams.opt.expression.Expression.n.rst +6 -0
  327. docs/source/_generated/_generated/ams.opt.expression.Expression.parse.rst +6 -0
  328. docs/source/_generated/_generated/ams.opt.expression.Expression.shape.rst +6 -0
  329. docs/source/_generated/_generated/ams.opt.expression.Expression.size.rst +6 -0
  330. docs/source/_generated/_generated/ams.opt.expression.Expression.v.rst +6 -0
  331. docs/source/_generated/_generated/ams.opt.objective.Objective.class_name.rst +6 -0
  332. docs/source/_generated/_generated/ams.opt.objective.Objective.e.rst +6 -0
  333. docs/source/_generated/_generated/ams.opt.objective.Objective.evaluate.rst +6 -0
  334. docs/source/_generated/_generated/ams.opt.objective.Objective.n.rst +6 -0
  335. docs/source/_generated/_generated/ams.opt.objective.Objective.parse.rst +6 -0
  336. docs/source/_generated/_generated/ams.opt.objective.Objective.shape.rst +6 -0
  337. docs/source/_generated/_generated/ams.opt.objective.Objective.size.rst +6 -0
  338. docs/source/_generated/_generated/ams.opt.objective.Objective.v.rst +6 -0
  339. docs/source/_generated/_generated/ams.opt.omodel.OModel.class_name.rst +6 -0
  340. docs/source/_generated/_generated/ams.opt.omodel.OModel.evaluate.rst +6 -0
  341. docs/source/_generated/_generated/ams.opt.omodel.OModel.finalize.rst +6 -0
  342. docs/source/_generated/_generated/ams.opt.omodel.OModel.init.rst +6 -0
  343. docs/source/_generated/_generated/ams.opt.omodel.OModel.initialized.rst +6 -0
  344. docs/source/_generated/_generated/ams.opt.omodel.OModel.parse.rst +6 -0
  345. docs/source/_generated/_generated/ams.opt.omodel.OModel.update.rst +6 -0
  346. docs/source/_generated/_generated/ams.opt.omodel.OModelBase.class_name.rst +6 -0
  347. docs/source/_generated/_generated/ams.opt.omodel.OModelBase.evaluate.rst +6 -0
  348. docs/source/_generated/_generated/ams.opt.omodel.OModelBase.finalize.rst +6 -0
  349. docs/source/_generated/_generated/ams.opt.omodel.OModelBase.init.rst +6 -0
  350. docs/source/_generated/_generated/ams.opt.omodel.OModelBase.initialized.rst +6 -0
  351. docs/source/_generated/_generated/ams.opt.omodel.OModelBase.parse.rst +6 -0
  352. docs/source/_generated/_generated/ams.opt.omodel.OModelBase.update.rst +6 -0
  353. docs/source/_generated/_generated/ams.opt.optbase.OptzBase.class_name.rst +6 -0
  354. docs/source/_generated/_generated/ams.opt.optbase.OptzBase.evaluate.rst +6 -0
  355. docs/source/_generated/_generated/ams.opt.optbase.OptzBase.n.rst +6 -0
  356. docs/source/_generated/_generated/ams.opt.optbase.OptzBase.parse.rst +6 -0
  357. docs/source/_generated/_generated/ams.opt.optbase.OptzBase.shape.rst +6 -0
  358. docs/source/_generated/_generated/ams.opt.optbase.OptzBase.size.rst +6 -0
  359. docs/source/_generated/_generated/ams.opt.param.Param.class_name.rst +6 -0
  360. docs/source/_generated/_generated/ams.opt.param.Param.evaluate.rst +6 -0
  361. docs/source/_generated/_generated/ams.opt.param.Param.n.rst +6 -0
  362. docs/source/_generated/_generated/ams.opt.param.Param.parse.rst +6 -0
  363. docs/source/_generated/_generated/ams.opt.param.Param.shape.rst +6 -0
  364. docs/source/_generated/_generated/ams.opt.param.Param.size.rst +6 -0
  365. docs/source/_generated/_generated/ams.opt.param.Param.update.rst +6 -0
  366. docs/source/_generated/_generated/ams.opt.var.Var.class_name.rst +6 -0
  367. docs/source/_generated/_generated/ams.opt.var.Var.evaluate.rst +6 -0
  368. docs/source/_generated/_generated/ams.opt.var.Var.get_idx.rst +6 -0
  369. docs/source/_generated/_generated/ams.opt.var.Var.n.rst +6 -0
  370. docs/source/_generated/_generated/ams.opt.var.Var.parse.rst +6 -0
  371. docs/source/_generated/_generated/ams.opt.var.Var.shape.rst +6 -0
  372. docs/source/_generated/_generated/ams.opt.var.Var.size.rst +6 -0
  373. docs/source/_generated/_generated/ams.opt.var.Var.v.rst +6 -0
  374. docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.addConstrs.rst +6 -0
  375. docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.addRParam.rst +6 -0
  376. docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.addService.rst +6 -0
  377. docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.addVars.rst +6 -0
  378. docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.class_name.rst +6 -0
  379. docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.dc2ac.rst +6 -0
  380. docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.disable.rst +6 -0
  381. docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.doc.rst +6 -0
  382. docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.enable.rst +6 -0
  383. docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.export_csv.rst +6 -0
  384. docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.get.rst +6 -0
  385. docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.init.rst +6 -0
  386. docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.run.rst +6 -0
  387. docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.set.rst +6 -0
  388. docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.solve.rst +6 -0
  389. docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.summary.rst +6 -0
  390. docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.unpack.rst +6 -0
  391. docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.update.rst +6 -0
  392. docs/source/_generated/_generated/ams.routines.pflow.PFlow.addConstrs.rst +6 -0
  393. docs/source/_generated/_generated/ams.routines.pflow.PFlow.addRParam.rst +6 -0
  394. docs/source/_generated/_generated/ams.routines.pflow.PFlow.addService.rst +6 -0
  395. docs/source/_generated/_generated/ams.routines.pflow.PFlow.addVars.rst +6 -0
  396. docs/source/_generated/_generated/ams.routines.pflow.PFlow.class_name.rst +6 -0
  397. docs/source/_generated/_generated/ams.routines.pflow.PFlow.dc2ac.rst +6 -0
  398. docs/source/_generated/_generated/ams.routines.pflow.PFlow.disable.rst +6 -0
  399. docs/source/_generated/_generated/ams.routines.pflow.PFlow.doc.rst +6 -0
  400. docs/source/_generated/_generated/ams.routines.pflow.PFlow.enable.rst +6 -0
  401. docs/source/_generated/_generated/ams.routines.pflow.PFlow.export_csv.rst +6 -0
  402. docs/source/_generated/_generated/ams.routines.pflow.PFlow.get.rst +6 -0
  403. docs/source/_generated/_generated/ams.routines.pflow.PFlow.init.rst +6 -0
  404. docs/source/_generated/_generated/ams.routines.pflow.PFlow.run.rst +6 -0
  405. docs/source/_generated/_generated/ams.routines.pflow.PFlow.set.rst +6 -0
  406. docs/source/_generated/_generated/ams.routines.pflow.PFlow.solve.rst +6 -0
  407. docs/source/_generated/_generated/ams.routines.pflow.PFlow.summary.rst +6 -0
  408. docs/source/_generated/_generated/ams.routines.pflow.PFlow.unpack.rst +6 -0
  409. docs/source/_generated/_generated/ams.routines.pflow.PFlow.update.rst +6 -0
  410. docs/source/_generated/_generated/ams.routines.routine.RoutineBase.addConstrs.rst +6 -0
  411. docs/source/_generated/_generated/ams.routines.routine.RoutineBase.addRParam.rst +6 -0
  412. docs/source/_generated/_generated/ams.routines.routine.RoutineBase.addService.rst +6 -0
  413. docs/source/_generated/_generated/ams.routines.routine.RoutineBase.addVars.rst +6 -0
  414. docs/source/_generated/_generated/ams.routines.routine.RoutineBase.class_name.rst +6 -0
  415. docs/source/_generated/_generated/ams.routines.routine.RoutineBase.dc2ac.rst +6 -0
  416. docs/source/_generated/_generated/ams.routines.routine.RoutineBase.disable.rst +6 -0
  417. docs/source/_generated/_generated/ams.routines.routine.RoutineBase.doc.rst +6 -0
  418. docs/source/_generated/_generated/ams.routines.routine.RoutineBase.enable.rst +6 -0
  419. docs/source/_generated/_generated/ams.routines.routine.RoutineBase.export_csv.rst +6 -0
  420. docs/source/_generated/_generated/ams.routines.routine.RoutineBase.get.rst +6 -0
  421. docs/source/_generated/_generated/ams.routines.routine.RoutineBase.init.rst +6 -0
  422. docs/source/_generated/_generated/ams.routines.routine.RoutineBase.run.rst +6 -0
  423. docs/source/_generated/_generated/ams.routines.routine.RoutineBase.set.rst +6 -0
  424. docs/source/_generated/_generated/ams.routines.routine.RoutineBase.solve.rst +6 -0
  425. docs/source/_generated/_generated/ams.routines.routine.RoutineBase.summary.rst +6 -0
  426. docs/source/_generated/_generated/ams.routines.routine.RoutineBase.unpack.rst +6 -0
  427. docs/source/_generated/_generated/ams.routines.routine.RoutineBase.update.rst +6 -0
  428. docs/source/_generated/_generated/ams.system.System.add.rst +6 -0
  429. docs/source/_generated/_generated/ams.system.System.as_dict.rst +6 -0
  430. docs/source/_generated/_generated/ams.system.System.calc_pu_coeff.rst +6 -0
  431. docs/source/_generated/_generated/ams.system.System.call_models.rst +6 -0
  432. docs/source/_generated/_generated/ams.system.System.collect_config.rst +6 -0
  433. docs/source/_generated/_generated/ams.system.System.collect_ref.rst +6 -0
  434. docs/source/_generated/_generated/ams.system.System.connectivity.rst +6 -0
  435. docs/source/_generated/_generated/ams.system.System.e_clear.rst +6 -0
  436. docs/source/_generated/_generated/ams.system.System.f_update.rst +6 -0
  437. docs/source/_generated/_generated/ams.system.System.fg_to_dae.rst +6 -0
  438. docs/source/_generated/_generated/ams.system.System.find_devices.rst +6 -0
  439. docs/source/_generated/_generated/ams.system.System.find_models.rst +6 -0
  440. docs/source/_generated/_generated/ams.system.System.from_ipysheet.rst +6 -0
  441. docs/source/_generated/_generated/ams.system.System.g_islands.rst +6 -0
  442. docs/source/_generated/_generated/ams.system.System.g_update.rst +6 -0
  443. docs/source/_generated/_generated/ams.system.System.get_z.rst +6 -0
  444. docs/source/_generated/_generated/ams.system.System.import_groups.rst +6 -0
  445. docs/source/_generated/_generated/ams.system.System.import_models.rst +6 -0
  446. docs/source/_generated/_generated/ams.system.System.import_routines.rst +6 -0
  447. docs/source/_generated/_generated/ams.system.System.import_types.rst +6 -0
  448. docs/source/_generated/_generated/ams.system.System.init.rst +6 -0
  449. docs/source/_generated/_generated/ams.system.System.j_islands.rst +6 -0
  450. docs/source/_generated/_generated/ams.system.System.j_update.rst +6 -0
  451. docs/source/_generated/_generated/ams.system.System.l_update_eq.rst +6 -0
  452. docs/source/_generated/_generated/ams.system.System.l_update_var.rst +6 -0
  453. docs/source/_generated/_generated/ams.system.System.link_ext_param.rst +6 -0
  454. docs/source/_generated/_generated/ams.system.System.precompile.rst +6 -0
  455. docs/source/_generated/_generated/ams.system.System.prepare.rst +6 -0
  456. docs/source/_generated/_generated/ams.system.System.reload.rst +6 -0
  457. docs/source/_generated/_generated/ams.system.System.remove_pycapsule.rst +6 -0
  458. docs/source/_generated/_generated/ams.system.System.report.rst +6 -0
  459. docs/source/_generated/_generated/ams.system.System.reset.rst +6 -0
  460. docs/source/_generated/_generated/ams.system.System.s_update_post.rst +6 -0
  461. docs/source/_generated/_generated/ams.system.System.s_update_var.rst +6 -0
  462. docs/source/_generated/_generated/ams.system.System.save_config.rst +6 -0
  463. docs/source/_generated/_generated/ams.system.System.set_address.rst +6 -0
  464. docs/source/_generated/_generated/ams.system.System.set_config.rst +6 -0
  465. docs/source/_generated/_generated/ams.system.System.set_dae_names.rst +6 -0
  466. docs/source/_generated/_generated/ams.system.System.set_output_subidx.rst +6 -0
  467. docs/source/_generated/_generated/ams.system.System.set_var_arrays.rst +6 -0
  468. docs/source/_generated/_generated/ams.system.System.setup.rst +6 -0
  469. docs/source/_generated/_generated/ams.system.System.store_adder_setter.rst +6 -0
  470. docs/source/_generated/_generated/ams.system.System.store_existing.rst +6 -0
  471. docs/source/_generated/_generated/ams.system.System.store_no_check_init.rst +6 -0
  472. docs/source/_generated/_generated/ams.system.System.store_sparse_pattern.rst +6 -0
  473. docs/source/_generated/_generated/ams.system.System.store_switch_times.rst +6 -0
  474. docs/source/_generated/_generated/ams.system.System.summary.rst +6 -0
  475. docs/source/_generated/_generated/ams.system.System.supported_models.rst +6 -0
  476. docs/source/_generated/_generated/ams.system.System.supported_routines.rst +6 -0
  477. docs/source/_generated/_generated/ams.system.System.switch_action.rst +6 -0
  478. docs/source/_generated/_generated/ams.system.System.to_andes.rst +6 -0
  479. docs/source/_generated/_generated/ams.system.System.to_ipysheet.rst +6 -0
  480. docs/source/_generated/_generated/ams.system.System.undill.rst +6 -0
  481. docs/source/_generated/_generated/ams.system.System.vars_to_dae.rst +6 -0
  482. docs/source/_generated/_generated/ams.system.System.vars_to_models.rst +6 -0
  483. docs/source/_generated/_generated/ams.utils.paths.DisplayablePath.display_filename_prefix_last.rst +6 -0
  484. docs/source/_generated/_generated/ams.utils.paths.DisplayablePath.display_filename_prefix_middle.rst +6 -0
  485. docs/source/_generated/_generated/ams.utils.paths.DisplayablePath.display_parent_prefix_last.rst +6 -0
  486. docs/source/_generated/_generated/ams.utils.paths.DisplayablePath.display_parent_prefix_middle.rst +6 -0
  487. docs/source/_generated/_generated/ams.utils.paths.DisplayablePath.displayable.rst +6 -0
  488. docs/source/_generated/_generated/ams.utils.paths.DisplayablePath.displayname.rst +6 -0
  489. docs/source/_generated/_generated/ams.utils.paths.DisplayablePath.make_tree.rst +6 -0
  490. docs/source/_generated/ams.cli.create_parser.rst +6 -0
  491. docs/source/_generated/ams.cli.main.rst +6 -0
  492. docs/source/_generated/ams.cli.preamble.rst +6 -0
  493. docs/source/_generated/ams.cli.rst +32 -0
  494. docs/source/_generated/ams.core.model.Model.rst +56 -0
  495. docs/source/_generated/ams.core.model.rst +30 -0
  496. docs/source/_generated/ams.core.param.RParam.rst +49 -0
  497. docs/source/_generated/ams.core.param.rst +30 -0
  498. docs/source/_generated/ams.core.service.LoadScale.rst +51 -0
  499. docs/source/_generated/ams.core.service.MinDur.rst +53 -0
  500. docs/source/_generated/ams.core.service.NumExpandDim.rst +53 -0
  501. docs/source/_generated/ams.core.service.NumHstack.rst +53 -0
  502. docs/source/_generated/ams.core.service.NumOp.rst +53 -0
  503. docs/source/_generated/ams.core.service.NumOpDual.rst +53 -0
  504. docs/source/_generated/ams.core.service.RBaseService.rst +51 -0
  505. docs/source/_generated/ams.core.service.ROperationService.rst +51 -0
  506. docs/source/_generated/ams.core.service.RampSub.rst +53 -0
  507. docs/source/_generated/ams.core.service.ValueService.rst +51 -0
  508. docs/source/_generated/ams.core.service.VarReduction.rst +53 -0
  509. docs/source/_generated/ams.core.service.VarSelect.rst +53 -0
  510. docs/source/_generated/ams.core.service.ZonalSum.rst +53 -0
  511. docs/source/_generated/ams.core.service.rst +42 -0
  512. docs/source/_generated/ams.interface.Dynamic.rst +41 -0
  513. docs/source/_generated/ams.interface.build_group_table.rst +6 -0
  514. docs/source/_generated/ams.interface.make_link_table.rst +6 -0
  515. docs/source/_generated/ams.interface.parse_addfile.rst +6 -0
  516. docs/source/_generated/ams.interface.replace_dev.rst +6 -0
  517. docs/source/_generated/ams.interface.rst +43 -0
  518. docs/source/_generated/ams.interface.sync_adsys.rst +6 -0
  519. docs/source/_generated/ams.interface.to_andes.rst +6 -0
  520. docs/source/_generated/ams.interface.verify_pf.rst +6 -0
  521. docs/source/_generated/ams.io.guess.rst +6 -0
  522. docs/source/_generated/ams.io.json.rst +30 -0
  523. docs/source/_generated/ams.io.json.write.rst +6 -0
  524. docs/source/_generated/ams.io.matpower.mpc2system.rst +6 -0
  525. docs/source/_generated/ams.io.matpower.read.rst +6 -0
  526. docs/source/_generated/ams.io.matpower.rst +33 -0
  527. docs/source/_generated/ams.io.matpower.system2mpc.rst +6 -0
  528. docs/source/_generated/ams.io.matpower.testlines.rst +6 -0
  529. docs/source/_generated/ams.io.parse.rst +6 -0
  530. docs/source/_generated/ams.io.psse.rst +23 -0
  531. docs/source/_generated/ams.io.pypower.ppc2system.rst +6 -0
  532. docs/source/_generated/ams.io.pypower.py2ppc.rst +6 -0
  533. docs/source/_generated/ams.io.pypower.read.rst +6 -0
  534. docs/source/_generated/ams.io.pypower.rst +34 -0
  535. docs/source/_generated/ams.io.pypower.system2ppc.rst +6 -0
  536. docs/source/_generated/ams.io.pypower.testlines.rst +6 -0
  537. docs/source/_generated/ams.io.rst +45 -0
  538. docs/source/_generated/ams.io.xlsx.rst +30 -0
  539. docs/source/_generated/ams.io.xlsx.write.rst +6 -0
  540. docs/source/_generated/ams.main.config_logger.rst +6 -0
  541. docs/source/_generated/ams.main.demo.rst +6 -0
  542. docs/source/_generated/ams.main.doc.rst +6 -0
  543. docs/source/_generated/ams.main.edit_conf.rst +6 -0
  544. docs/source/_generated/ams.main.find_log_path.rst +6 -0
  545. docs/source/_generated/ams.main.load.rst +6 -0
  546. docs/source/_generated/ams.main.misc.rst +6 -0
  547. docs/source/_generated/ams.main.print_license.rst +6 -0
  548. docs/source/_generated/ams.main.remove_output.rst +6 -0
  549. docs/source/_generated/ams.main.rst +44 -0
  550. docs/source/_generated/ams.main.run.rst +6 -0
  551. docs/source/_generated/ams.main.run_case.rst +6 -0
  552. docs/source/_generated/ams.main.save_conf.rst +6 -0
  553. docs/source/_generated/ams.main.selftest.rst +6 -0
  554. docs/source/_generated/ams.main.set_logger_level.rst +6 -0
  555. docs/source/_generated/ams.main.versioninfo.rst +6 -0
  556. docs/source/_generated/ams.opt.constraint.Constraint.rst +43 -0
  557. docs/source/_generated/ams.opt.constraint.rst +30 -0
  558. docs/source/_generated/ams.opt.exprcalc.ExpressionCalc.rst +46 -0
  559. docs/source/_generated/ams.opt.exprcalc.rst +30 -0
  560. docs/source/_generated/ams.opt.expression.Expression.rst +46 -0
  561. docs/source/_generated/ams.opt.expression.rst +30 -0
  562. docs/source/_generated/ams.opt.objective.Objective.rst +43 -0
  563. docs/source/_generated/ams.opt.objective.rst +30 -0
  564. docs/source/_generated/ams.opt.omodel.OModel.rst +48 -0
  565. docs/source/_generated/ams.opt.omodel.OModelBase.rst +48 -0
  566. docs/source/_generated/ams.opt.omodel.rst +31 -0
  567. docs/source/_generated/ams.opt.optbase.OptzBase.rst +41 -0
  568. docs/source/_generated/ams.opt.optbase.ensure_mats_and_parsed.rst +6 -0
  569. docs/source/_generated/ams.opt.optbase.ensure_symbols.rst +6 -0
  570. docs/source/_generated/ams.opt.optbase.rst +38 -0
  571. docs/source/_generated/ams.opt.param.Param.rst +44 -0
  572. docs/source/_generated/ams.opt.param.rst +30 -0
  573. docs/source/_generated/ams.opt.rst +40 -0
  574. docs/source/_generated/ams.opt.var.Var.rst +45 -0
  575. docs/source/_generated/ams.opt.var.rst +30 -0
  576. docs/source/_generated/ams.routines.dcopf.DCOPF.rst +83 -0
  577. docs/source/_generated/ams.routines.dcopf.rst +30 -0
  578. docs/source/_generated/ams.routines.pflow.PFlow.rst +83 -0
  579. docs/source/_generated/ams.routines.pflow.rst +30 -0
  580. docs/source/_generated/ams.routines.routine.RoutineBase.rst +83 -0
  581. docs/source/_generated/ams.routines.routine.collect_data.rst +6 -0
  582. docs/source/_generated/ams.routines.routine.initialize_data_dict.rst +6 -0
  583. docs/source/_generated/ams.routines.routine.rst +38 -0
  584. docs/source/_generated/ams.system.System.rst +189 -0
  585. docs/source/_generated/ams.system.disable_method.rst +6 -0
  586. docs/source/_generated/ams.system.disable_methods.rst +6 -0
  587. docs/source/_generated/ams.system.example.rst +6 -0
  588. docs/source/_generated/ams.system.rst +39 -0
  589. docs/source/_generated/ams.utils.paths.DisplayablePath.rst +42 -0
  590. docs/source/_generated/ams.utils.paths.ams_root.rst +6 -0
  591. docs/source/_generated/ams.utils.paths.cases_root.rst +6 -0
  592. docs/source/_generated/ams.utils.paths.confirm_overwrite.rst +6 -0
  593. docs/source/_generated/ams.utils.paths.get_case.rst +6 -0
  594. docs/source/_generated/ams.utils.paths.get_config_path.rst +6 -0
  595. docs/source/_generated/ams.utils.paths.get_dot_andes_path.rst +6 -0
  596. docs/source/_generated/ams.utils.paths.get_log_dir.rst +6 -0
  597. docs/source/_generated/ams.utils.paths.get_pkl_path.rst +6 -0
  598. docs/source/_generated/ams.utils.paths.get_pycode_path.rst +6 -0
  599. docs/source/_generated/ams.utils.paths.list_cases.rst +6 -0
  600. docs/source/_generated/ams.utils.paths.rst +47 -0
  601. docs/source/_generated/ams.utils.paths.tests_root.rst +6 -0
  602. docs/source/_templates/autosummary/base.rst +5 -0
  603. docs/source/_templates/autosummary/class.rst +35 -0
  604. docs/source/_templates/autosummary/module.rst +65 -0
  605. docs/source/_templates/autosummary/module_toctree.rst +66 -0
  606. docs/source/api.rst +102 -0
  607. docs/source/conf.py +203 -0
  608. docs/source/examples/index.rst +34 -0
  609. docs/source/genmodelref.py +61 -0
  610. docs/source/genroutineref.py +47 -0
  611. docs/source/getting_started/copyright.rst +20 -0
  612. docs/source/getting_started/formats/index.rst +20 -0
  613. docs/source/getting_started/formats/matpower.rst +183 -0
  614. docs/source/getting_started/formats/psse.rst +46 -0
  615. docs/source/getting_started/formats/pypower.rst +223 -0
  616. docs/source/getting_started/formats/xlsx.png +0 -0
  617. docs/source/getting_started/formats/xlsx.rst +23 -0
  618. docs/source/getting_started/index.rst +76 -0
  619. docs/source/getting_started/install.rst +234 -0
  620. docs/source/getting_started/overview.rst +26 -0
  621. docs/source/getting_started/testcase.rst +45 -0
  622. docs/source/getting_started/verification.rst +13 -0
  623. docs/source/groupdoc/ACLine.rst +92 -0
  624. docs/source/groupdoc/ACShort.rst +51 -0
  625. docs/source/groupdoc/ACTopology.rst +66 -0
  626. docs/source/groupdoc/Collection.rst +84 -0
  627. docs/source/groupdoc/Cost.rst +135 -0
  628. docs/source/groupdoc/DG.rst +204 -0
  629. docs/source/groupdoc/Horizon.rst +97 -0
  630. docs/source/groupdoc/Information.rst +36 -0
  631. docs/source/groupdoc/RenGen.rst +63 -0
  632. docs/source/groupdoc/Reserve.rst +135 -0
  633. docs/source/groupdoc/StaticGen.rst +229 -0
  634. docs/source/groupdoc/StaticLoad.rst +53 -0
  635. docs/source/groupdoc/StaticShunt.rst +45 -0
  636. docs/source/groupdoc/Undefined.rst +63 -0
  637. docs/source/groupdoc/VSG.rst +125 -0
  638. docs/source/images/dcopf_time.png +0 -0
  639. docs/source/images/sponsors/CURENT_Logo_NameOnTrans.png +0 -0
  640. docs/source/images/sponsors/CURENT_Logo_Transparent.png +0 -0
  641. docs/source/images/sponsors/CURENT_Logo_Transparent_Name.png +0 -0
  642. docs/source/images/sponsors/doe.png +0 -0
  643. docs/source/index.rst +108 -0
  644. docs/source/modeling/_generated/_generated/ams.opt.Constraint.class_name.rst +6 -0
  645. docs/source/modeling/_generated/_generated/ams.opt.Constraint.e.rst +6 -0
  646. docs/source/modeling/_generated/_generated/ams.opt.Constraint.evaluate.rst +6 -0
  647. docs/source/modeling/_generated/_generated/ams.opt.Constraint.n.rst +6 -0
  648. docs/source/modeling/_generated/_generated/ams.opt.Constraint.parse.rst +6 -0
  649. docs/source/modeling/_generated/_generated/ams.opt.Constraint.shape.rst +6 -0
  650. docs/source/modeling/_generated/_generated/ams.opt.Constraint.size.rst +6 -0
  651. docs/source/modeling/_generated/_generated/ams.opt.Constraint.v.rst +6 -0
  652. docs/source/modeling/_generated/_generated/ams.opt.OModel.class_name.rst +6 -0
  653. docs/source/modeling/_generated/_generated/ams.opt.OModel.evaluate.rst +6 -0
  654. docs/source/modeling/_generated/_generated/ams.opt.OModel.finalize.rst +6 -0
  655. docs/source/modeling/_generated/_generated/ams.opt.OModel.init.rst +6 -0
  656. docs/source/modeling/_generated/_generated/ams.opt.OModel.initialized.rst +6 -0
  657. docs/source/modeling/_generated/_generated/ams.opt.OModel.parse.rst +6 -0
  658. docs/source/modeling/_generated/_generated/ams.opt.OModel.update.rst +6 -0
  659. docs/source/modeling/_generated/_generated/ams.opt.Objective.class_name.rst +6 -0
  660. docs/source/modeling/_generated/_generated/ams.opt.Objective.e.rst +6 -0
  661. docs/source/modeling/_generated/_generated/ams.opt.Objective.evaluate.rst +6 -0
  662. docs/source/modeling/_generated/_generated/ams.opt.Objective.n.rst +6 -0
  663. docs/source/modeling/_generated/_generated/ams.opt.Objective.parse.rst +6 -0
  664. docs/source/modeling/_generated/_generated/ams.opt.Objective.shape.rst +6 -0
  665. docs/source/modeling/_generated/_generated/ams.opt.Objective.size.rst +6 -0
  666. docs/source/modeling/_generated/_generated/ams.opt.Objective.v.rst +6 -0
  667. docs/source/modeling/_generated/_generated/ams.opt.Var.class_name.rst +6 -0
  668. docs/source/modeling/_generated/_generated/ams.opt.Var.evaluate.rst +6 -0
  669. docs/source/modeling/_generated/_generated/ams.opt.Var.get_idx.rst +6 -0
  670. docs/source/modeling/_generated/_generated/ams.opt.Var.n.rst +6 -0
  671. docs/source/modeling/_generated/_generated/ams.opt.Var.parse.rst +6 -0
  672. docs/source/modeling/_generated/_generated/ams.opt.Var.shape.rst +6 -0
  673. docs/source/modeling/_generated/_generated/ams.opt.Var.size.rst +6 -0
  674. docs/source/modeling/_generated/_generated/ams.opt.Var.v.rst +6 -0
  675. docs/source/modeling/_generated/ams.opt.Constraint.rst +43 -0
  676. docs/source/modeling/_generated/ams.opt.OModel.rst +48 -0
  677. docs/source/modeling/_generated/ams.opt.Objective.rst +43 -0
  678. docs/source/modeling/_generated/ams.opt.Var.rst +45 -0
  679. docs/source/modeling/example.rst +159 -0
  680. docs/source/modeling/index.rst +17 -0
  681. docs/source/modeling/model.rst +210 -0
  682. docs/source/modeling/routine.rst +122 -0
  683. docs/source/modeling/system.rst +51 -0
  684. docs/source/modelref.rst +66 -0
  685. docs/source/release-notes.rst +385 -0
  686. docs/source/routineref.rst +38 -0
  687. docs/source/typedoc/ACED.rst +91 -0
  688. docs/source/typedoc/DCED.rst +1869 -0
  689. docs/source/typedoc/DCUC.rst +899 -0
  690. docs/source/typedoc/DED.rst +390 -0
  691. docs/source/typedoc/PF.rst +376 -0
  692. docs/source/typedoc/UndefinedType.rst +8 -0
  693. icebar/ips/ips.py +668 -0
  694. ltbams-1.0.0.dist-info/METADATA +231 -0
  695. ltbams-1.0.0.dist-info/RECORD +725 -0
  696. {ltbams-0.9.9.dist-info → ltbams-1.0.0.dist-info}/WHEEL +1 -1
  697. ltbams-1.0.0.dist-info/top_level.txt +5 -0
  698. tests/__init__.py +0 -0
  699. tests/test_1st_system.py +33 -0
  700. tests/test_addressing.py +40 -0
  701. tests/test_andes_mats.py +61 -0
  702. tests/test_case.py +266 -0
  703. tests/test_cli.py +34 -0
  704. tests/test_export_csv.py +89 -0
  705. tests/test_group.py +83 -0
  706. tests/test_interface.py +216 -0
  707. tests/test_io.py +32 -0
  708. tests/test_jumper.py +27 -0
  709. tests/test_known_good.py +267 -0
  710. tests/test_matp.py +437 -0
  711. tests/test_model.py +54 -0
  712. tests/test_omodel.py +119 -0
  713. tests/test_paths.py +22 -0
  714. tests/test_report.py +245 -0
  715. tests/test_repr.py +21 -0
  716. tests/test_routine.py +178 -0
  717. tests/test_rtn_dcopf.py +101 -0
  718. tests/test_rtn_dcpf.py +77 -0
  719. tests/test_rtn_ed.py +275 -0
  720. tests/test_rtn_pflow.py +219 -0
  721. tests/test_rtn_rted.py +273 -0
  722. tests/test_rtn_uc.py +248 -0
  723. tests/test_service.py +73 -0
  724. ltbams-0.9.9.dist-info/LICENSE +0 -692
  725. ltbams-0.9.9.dist-info/METADATA +0 -859
  726. ltbams-0.9.9.dist-info/RECORD +0 -14
  727. ltbams-0.9.9.dist-info/top_level.txt +0 -1
  728. {ltbams-0.9.9.dist-info → ltbams-1.0.0.dist-info}/entry_points.txt +0 -0
ams/core/model.py ADDED
@@ -0,0 +1,330 @@
1
+ """
2
+ Module for Model class.
3
+ """
4
+
5
+ import logging
6
+ from collections import OrderedDict
7
+ from typing import Iterable
8
+
9
+ import numpy as np
10
+ from andes.core.common import Config
11
+ from andes.core.param import ExtParam
12
+ from andes.core.service import BaseService, BackRef
13
+ from andes.utils.func import list_flatten
14
+
15
+ from ams.core.documenter import Documenter
16
+ from ams.core.var import Algeb
17
+
18
+ from ams.utils.misc import deprec_get_idx
19
+
20
+ logger = logging.getLogger(__name__)
21
+
22
+
23
+ class Model:
24
+ """
25
+ Base class for power system scheduling models.
26
+
27
+ This class is revised from ``andes.core.model.Model``.
28
+ """
29
+
30
+ def __init__(self, system=None, config=None):
31
+
32
+ # --- Model ---
33
+ self.system = system
34
+ self.group = 'Undefined'
35
+
36
+ self.algebs = OrderedDict() # internal algebraic variables
37
+ self.vars_decl_order = OrderedDict() # variable in the order of declaration
38
+
39
+ self.params_ext = OrderedDict() # external parameters
40
+
41
+ self.services = OrderedDict() # service/temporary variables
42
+ self.services_ref = OrderedDict() # BackRefs
43
+ self.services_sum = OrderedDict() # VarSums
44
+
45
+ self.config = Config(name=self.class_name) # `config` that can be exported
46
+ if config is not None:
47
+ self.config.load(config)
48
+
49
+ # basic configs
50
+ self.config.add(OrderedDict((('allow_adjust', 1),
51
+ ('adjust_lower', 0),
52
+ ('adjust_upper', 1),
53
+ )))
54
+ self.docum = Documenter(self)
55
+
56
+ def _all_vars(self):
57
+ """
58
+ An OrderedDict of States, ExtStates, Algebs, ExtAlgebs
59
+ """
60
+ return OrderedDict(list(self.algebs.items()))
61
+
62
+ def _check_attribute(self, key, value):
63
+ """
64
+ Check the attribute pair for valid names while instantiating the class.
65
+
66
+ This function assigns `owner` to the model itself, assigns the name and tex_name.
67
+ """
68
+ if isinstance(value, (Algeb, BaseService)):
69
+ if not value.owner:
70
+ value.owner = self
71
+ if not value.name:
72
+ value.name = key
73
+ if not value.tex_name:
74
+ value.tex_name = key
75
+ if key in self.__dict__:
76
+ logger.warning(f"{self.class_name}: redefinition of member <{key}>. Likely a modeling error.")
77
+
78
+ def __setattr__(self, key, value):
79
+ """
80
+ Overload the setattr function to register attributes.
81
+
82
+ Parameters
83
+ ----------
84
+ key : str
85
+ name of the attribute
86
+ value : [Algeb]
87
+ value of the attribute
88
+ """
89
+ self._check_attribute(key, value)
90
+ self._register_attribute(key, value)
91
+
92
+ super(Model, self).__setattr__(key, value)
93
+
94
+ def _register_attribute(self, key, value):
95
+ """
96
+ Register a pair of attributes to the model instance.
97
+
98
+ Called within ``__setattr__``, this is where the magic happens.
99
+ Subclass attributes are automatically registered based on the variable type.
100
+ Block attributes will be exported and registered recursively.
101
+ """
102
+ if isinstance(value, Algeb):
103
+ self.algebs[key] = value
104
+ elif isinstance(value, ExtParam):
105
+ self.params_ext[key] = value
106
+ elif isinstance(value, BackRef):
107
+ self.services_ref[key] = value
108
+ self.services[key] = value
109
+
110
+ @property
111
+ def class_name(self):
112
+ """
113
+ Return the class name
114
+ """
115
+ return self.__class__.__name__
116
+
117
+ def list2array(self):
118
+ """
119
+ Convert all the value attributes ``v`` to NumPy arrays.
120
+
121
+ Value attribute arrays should remain in the same address afterwards.
122
+ Namely, all assignments to value array should be operated in place (e.g., with [:]).
123
+ """
124
+
125
+ for instance in self.num_params.values():
126
+ instance.to_array()
127
+
128
+ def set_backref(self, name, from_idx, to_idx):
129
+ """
130
+ Helper function for setting idx-es to ``BackRef``.
131
+ """
132
+
133
+ if name not in self.services_ref:
134
+ return
135
+
136
+ uid = self.idx2uid(to_idx)
137
+ self.services_ref[name].v[uid].append(from_idx)
138
+
139
+ def get(self, src: str, idx, attr: str = 'v', allow_none=False, default=0.0):
140
+ """
141
+ Get the value of an attribute of a model property.
142
+
143
+ The return value is ``self.<src>.<attr>[idx]``
144
+
145
+ Parameters
146
+ ----------
147
+ src : str
148
+ Name of the model property
149
+ idx : str, int, float, array-like
150
+ Indices of the devices
151
+ attr : str, optional, default='v'
152
+ The attribute of the property to get.
153
+ ``v`` for values, ``a`` for address, and ``e`` for equation value.
154
+ allow_none : bool
155
+ True to allow None values in the indexer
156
+ default : float
157
+ If `allow_none` is true, the default value to use for None indexer.
158
+
159
+ Returns
160
+ -------
161
+ array-like
162
+ ``self.<src>.<attr>[idx]``
163
+
164
+ """
165
+ uid = self.idx2uid(idx)
166
+ if isinstance(self.__dict__[src].__dict__[attr], list):
167
+ if isinstance(uid, Iterable):
168
+ if not allow_none and (uid is None or None in uid):
169
+ raise KeyError('None not allowed in uid/idx. Enable through '
170
+ '`allow_none` and provide a `default` if needed.')
171
+ return [self.__dict__[src].__dict__[attr][i] if i is not None else default
172
+ for i in uid]
173
+ # FIXME: this seems to be an unexpected case originted from ANDES
174
+ if isinstance(uid, Iterable):
175
+ if None in uid:
176
+ return [self.__dict__[src].__dict__[attr][i] if i is not None else default
177
+ for i in uid]
178
+ return self.__dict__[src].__dict__[attr][uid]
179
+
180
+ def set(self, src, idx, attr, value):
181
+ """
182
+ Set the value of an attribute of a model property.
183
+
184
+ Performs ``self.<src>.<attr>[idx] = value``. This method will not modify
185
+ the input values from the case file that have not been converted to the
186
+ system base. As a result, changes applied by this method will not affect
187
+ the dumped case file.
188
+
189
+ To alter parameters and reflect it in the case file, use :meth:`alter`
190
+ instead.
191
+
192
+ Parameters
193
+ ----------
194
+ src : str
195
+ Name of the model property
196
+ idx : str, int, float, array-like
197
+ Indices of the devices
198
+ attr : str, optional, default='v'
199
+ The internal attribute of the property to get.
200
+ ``v`` for values, ``a`` for address, and ``e`` for equation value.
201
+ value : array-like
202
+ New values to be set
203
+
204
+ Returns
205
+ -------
206
+ bool
207
+ True when successful.
208
+ """
209
+ uid = self.idx2uid(idx)
210
+ self.__dict__[src].__dict__[attr][uid] = value
211
+ return True
212
+
213
+ def alter(self, src, idx, value, attr='v'):
214
+ """
215
+ Alter values of input parameters or constant service.
216
+
217
+ If the method operates on an input parameter, the new data should be in
218
+ the same base as that in the input file. This function will convert
219
+ ``value`` to per unit in the system base whenever necessary.
220
+
221
+ The values for storing the input data, i.e., the parameter's ``vin``
222
+ field, will be overwritten. As a result, altered values will be
223
+ reflected in the dumped case file.
224
+
225
+ Parameters
226
+ ----------
227
+ src : str
228
+ The parameter name to alter
229
+ idx : str, float, int
230
+ The device to alter
231
+ value : float
232
+ The desired value
233
+ attr : str
234
+ The attribute to alter, default is 'v'.
235
+
236
+ Notes
237
+ -----
238
+ New in version 0.9.14: Added the signature `attr` to alter specific attributes.
239
+ This feature is useful when you need to manipulate parameter values in the system
240
+ base and ensure that these changes are reflected in the dumped case file.
241
+ """
242
+
243
+ instance = self.__dict__[src]
244
+
245
+ if hasattr(instance, 'vin') and (instance.vin is not None):
246
+ uid = self.idx2uid(idx)
247
+ if attr == 'vin':
248
+ self.set(src, idx, 'vin', value / instance.pu_coeff[uid])
249
+ self.set(src, idx, 'v', value=value)
250
+ else:
251
+ self.set(src, idx, 'vin', value)
252
+ self.set(src, idx, 'v', value * instance.pu_coeff[uid])
253
+ elif not hasattr(instance, 'vin') and attr == 'vin':
254
+ logger.warning(f"{self.class_name}.{src} has no `vin` attribute, changing `v`.")
255
+ self.set(src, idx, 'v', value)
256
+ else:
257
+ self.set(src, idx, attr=attr, value=value)
258
+
259
+ def idx2uid(self, idx):
260
+ """
261
+ Convert idx to the 0-indexed unique index.
262
+
263
+ Parameters
264
+ ----------
265
+ idx : array-like, numbers, or str
266
+ idx of devices
267
+
268
+ Returns
269
+ -------
270
+ list
271
+ A list containing the unique indices of the devices
272
+ """
273
+ if idx is None:
274
+ logger.debug("idx2uid returned None for idx None")
275
+ return None
276
+ if isinstance(idx, (float, int, str, np.integer, np.floating)):
277
+ return self._one_idx2uid(idx)
278
+ elif isinstance(idx, Iterable):
279
+ if len(idx) > 0 and isinstance(idx[0], (list, np.ndarray)):
280
+ idx = list_flatten(idx)
281
+ return [self._one_idx2uid(i) if i is not None else None
282
+ for i in idx]
283
+ else:
284
+ raise NotImplementedError(f'Unknown idx type {type(idx)}')
285
+
286
+ def _one_idx2uid(self, idx):
287
+ """
288
+ Helper function for checking if an idx exists and
289
+ converting it to uid.
290
+ """
291
+
292
+ if idx not in self.uid:
293
+ raise KeyError("<%s>: device not exist with idx=%s." %
294
+ (self.class_name, idx))
295
+
296
+ return self.uid[idx]
297
+
298
+ def doc(self, max_width=78, export='plain'):
299
+ """
300
+ Retrieve model documentation as a string.
301
+ """
302
+ return self.docum.get(max_width=max_width, export=export)
303
+
304
+ @deprec_get_idx
305
+ def get_idx(self):
306
+ """
307
+ Return the index of the model instance.
308
+ Equivalent to ``self.idx.v``, develoepd for consistency with group method
309
+ ``get_idx``.
310
+ """
311
+ return self.idx.v
312
+
313
+ def get_all_idxes(self):
314
+ """
315
+ Return all the indexes of this model.
316
+
317
+ .. note::
318
+ New in version 1.0.0. Add to follow the group method ``get_all_idxes``.
319
+
320
+ Returns
321
+ -------
322
+ list
323
+ A list of indexes.
324
+ """
325
+ return self.idx.v
326
+
327
+ def __repr__(self):
328
+ dev_text = 'device' if self.n == 1 else 'devices'
329
+
330
+ return f'{self.class_name} ({self.n} {dev_text}) at {hex(id(self))}'
ams/core/param.py ADDED
@@ -0,0 +1,322 @@
1
+ """
2
+ Base class for parameters.
3
+ """
4
+
5
+
6
+ import logging
7
+
8
+ from typing import Optional, Iterable
9
+
10
+ import numpy as np
11
+ from scipy.sparse import issparse
12
+
13
+ from ams.opt import Param
14
+
15
+ from ams.utils.misc import deprec_get_idx
16
+
17
+ logger = logging.getLogger(__name__)
18
+
19
+
20
+ class RParam(Param):
21
+ """
22
+ Class for parameters used in a routine.
23
+ This class is developed to simplify the routine definition.
24
+
25
+ `RParm` is further used to define `Parameter` in the optimization model.
26
+
27
+ `no_parse` is used to skip parsing the `RParam` in optimization
28
+ model.
29
+ It means that the `RParam` will not be added to the optimization model.
30
+ This is useful when the RParam contains non-numeric values,
31
+ or it is not necessary to be added to the optimization model.
32
+
33
+ Parameters
34
+ ----------
35
+ name : str, optional
36
+ Name of this parameter. If not provided, `name` will be set
37
+ to the attribute name.
38
+ tex_name : str, optional
39
+ LaTeX-formatted parameter name. If not provided, `tex_name`
40
+ will be assigned the same as `name`.
41
+ info : str, optional
42
+ A description of this parameter
43
+ src : str, optional
44
+ Source name of the parameter.
45
+ unit : str, optional
46
+ Unit of the parameter.
47
+ model : str, optional
48
+ Name of the owner model or group.
49
+ v : np.ndarray, optional
50
+ External value of the parameter.
51
+ indexer : str, optional
52
+ Indexer of the parameter.
53
+ imodel : str, optional
54
+ Name of the owner model or group of the indexer.
55
+ no_parse: bool, optional
56
+ True to skip parsing the parameter.
57
+ nonneg: bool, optional
58
+ True to set the parameter as non-negative.
59
+ nonpos: bool, optional
60
+ True to set the parameter as non-positive.
61
+ cplx: bool, optional
62
+ True to set the parameter as complex.
63
+ imag: bool, optional
64
+ True to set the parameter as imaginary.
65
+ symmetric: bool, optional
66
+ True to set the parameter as symmetric.
67
+ diag: bool, optional
68
+ True to set the parameter as diagonal.
69
+ hermitian: bool, optional
70
+ True to set the parameter as hermitian.
71
+ boolean: bool, optional
72
+ True to set the parameter as boolean.
73
+ integer: bool, optional
74
+ True to set the parameter as integer.
75
+ pos: bool, optional
76
+ True to set the parameter as positive.
77
+ neg: bool, optional
78
+ True to set the parameter as negative.
79
+ sparse: bool, optional
80
+ True to set the parameter as sparse.
81
+
82
+ Examples
83
+ --------
84
+ Example 1: Define a routine parameter from a source model or group.
85
+
86
+ In this example, we define the parameter `cru` from the source model
87
+ `SFRCost` with the parameter `cru`.
88
+
89
+ >>> self.cru = RParam(info='RegUp reserve coefficient',
90
+ >>> tex_name=r'c_{r,u}',
91
+ >>> unit=r'$/(p.u.)',
92
+ >>> name='cru',
93
+ >>> src='cru',
94
+ >>> model='SFRCost'
95
+ >>> )
96
+
97
+ Example 2: Define a routine parameter with a user-defined value.
98
+
99
+ In this example, we define the parameter with a user-defined value.
100
+ TODO: Add example
101
+ """
102
+
103
+ def __init__(self,
104
+ name: Optional[str] = None,
105
+ tex_name: Optional[str] = None,
106
+ info: Optional[str] = None,
107
+ src: Optional[str] = None,
108
+ unit: Optional[str] = None,
109
+ model: Optional[str] = None,
110
+ v: Optional[np.ndarray] = None,
111
+ indexer: Optional[str] = None,
112
+ imodel: Optional[str] = None,
113
+ expand_dims: Optional[int] = None,
114
+ no_parse: Optional[bool] = False,
115
+ nonneg: Optional[bool] = False,
116
+ nonpos: Optional[bool] = False,
117
+ cplx: Optional[bool] = False,
118
+ imag: Optional[bool] = False,
119
+ symmetric: Optional[bool] = False,
120
+ diag: Optional[bool] = False,
121
+ hermitian: Optional[bool] = False,
122
+ boolean: Optional[bool] = False,
123
+ integer: Optional[bool] = False,
124
+ pos: Optional[bool] = False,
125
+ neg: Optional[bool] = False,
126
+ sparse: Optional[list] = None,
127
+ ):
128
+ Param.__init__(self, nonneg=nonneg, nonpos=nonpos,
129
+ cplx=cplx, imag=imag, symmetric=symmetric,
130
+ diag=diag, hermitian=hermitian, boolean=boolean,
131
+ integer=integer, pos=pos, neg=neg, sparse=sparse)
132
+ self.name = name
133
+ self.tex_name = tex_name if (tex_name is not None) else name
134
+ self.info = info
135
+ self.src = name if (src is None) else src
136
+ self.unit = unit
137
+ self.is_group = False
138
+ self.model = model # name of a group or model
139
+ self.indexer = indexer # name of the indexer
140
+ self.imodel = imodel # name of a group or model of the indexer
141
+ self.expand_dims = expand_dims
142
+ self.no_parse = no_parse
143
+ self.owner = None # instance of the owner model or group
144
+ self.is_ext = False # indicate if the value is set externally
145
+ self._v = None # external value
146
+ if v is not None:
147
+ self._v = v
148
+ self.is_ext = True
149
+
150
+ # FIXME: might need a better organization
151
+ @property
152
+ def v(self):
153
+ """
154
+ The value of the parameter.
155
+
156
+ Notes
157
+ -----
158
+ - This property is a wrapper for the ``get`` method of the owner class.
159
+ - The value will sort by the indexer if indexed, used for optmization modeling.
160
+ """
161
+ out = None
162
+ if self.sparse and self.expand_dims is not None:
163
+ msg = 'Sparse matrix does not support expand_dims.'
164
+ raise NotImplementedError(msg)
165
+ if self.indexer is None:
166
+ if self.is_ext:
167
+ if issparse(self._v):
168
+ out = self._v.toarray()
169
+ else:
170
+ out = self._v
171
+ elif self.is_group:
172
+ out = self.owner.get(src=self.src, attr='v',
173
+ idx=self.owner.get_all_idxes())
174
+ else:
175
+ src_param = getattr(self.owner, self.src)
176
+ out = getattr(src_param, 'v')
177
+ else:
178
+ try:
179
+ imodel = getattr(self.rtn.system, self.imodel)
180
+ except AttributeError:
181
+ msg = f'Indexer source model <{self.imodel}> not found, '
182
+ msg += 'likely a modeling error.'
183
+ raise AttributeError(msg)
184
+ try:
185
+ sorted_idx = self.owner.find_idx(keys=self.indexer, values=imodel.get_all_idxes())
186
+ except AttributeError:
187
+ sorted_idx = self.owner.idx.v
188
+ except Exception as e:
189
+ raise e
190
+ model = getattr(self.rtn.system, self.model)
191
+ out = model.get(src=self.src, attr='v', idx=sorted_idx)
192
+ if self.expand_dims is not None:
193
+ out = np.expand_dims(out, axis=self.expand_dims)
194
+ return out
195
+
196
+ @property
197
+ def shape(self):
198
+ """
199
+ Return the shape of the parameter.
200
+ """
201
+ if self.is_ext:
202
+ return np.shape(self._v)
203
+ elif self.no_parse:
204
+ return None
205
+ else:
206
+ return np.shape(self.v)
207
+
208
+ @property
209
+ def dtype(self):
210
+ """
211
+ Return the data type of the parameter value.
212
+ """
213
+ if isinstance(self.v, (str, bytes)):
214
+ return str
215
+ elif isinstance(self.v, Iterable):
216
+ return type(self.v[0])
217
+ else:
218
+ return type(self.v)
219
+
220
+ @property
221
+ def n(self):
222
+ """
223
+ Return the szie of the parameter.
224
+ """
225
+ if self.is_ext:
226
+ return self._v.shape[0]
227
+ else:
228
+ return self.owner.n
229
+
230
+ @property
231
+ def class_name(self):
232
+ """
233
+ Return the class name
234
+ """
235
+ return self.__class__.__name__
236
+
237
+ def __repr__(self):
238
+ owner = self.owner.__class__.__name__ if self.owner is not None else self.rtn.__class__.__name__
239
+ postfix = '' if self.src is None else f'.{self.src}'
240
+ return f'{self.__class__.__name__}: {owner}' + postfix
241
+
242
+ @deprec_get_idx
243
+ def get_idx(self):
244
+ """
245
+ Get the index of the parameter.
246
+
247
+ Returns
248
+ -------
249
+ idx : list
250
+ Index of the parameter.
251
+
252
+ Notes
253
+ -----
254
+ - The value will sort by the indexer if indexed.
255
+ """
256
+ if self.indexer is None:
257
+ if self.is_group:
258
+ return self.owner.get_all_idxes()
259
+ elif self.owner is None:
260
+ logger.info(f'Param <{self.name}> has no owner.')
261
+ return None
262
+ elif hasattr(self.owner, 'idx'):
263
+ return self.owner.idx.v
264
+ else:
265
+ logger.info(f'Param <{self.name}> owner <{self.owner.class_name}> has no idx.')
266
+ return None
267
+ else:
268
+ try:
269
+ imodel = getattr(self.rtn.system, self.imodel)
270
+ except AttributeError:
271
+ msg = f'Indexer source model <{self.imodel}> not found, '
272
+ msg += 'likely a modeling error.'
273
+ raise AttributeError(msg)
274
+ try:
275
+ sorted_idx = self.owner.find_idx(keys=self.indexer, values=imodel.get_all_idxes())
276
+ except AttributeError:
277
+ msg = f'Indexer <{self.indexer}> not found in <{self.imodel}>, '
278
+ msg += 'likely a modeling error.'
279
+ raise AttributeError(msg)
280
+ return sorted_idx
281
+
282
+ def get_all_idxes(self):
283
+ """
284
+ Get all the indexes of the parameter.
285
+
286
+ .. note::
287
+ New in version 1.0.0.
288
+
289
+ Returns
290
+ -------
291
+ idx : list
292
+ Index of the parameter.
293
+
294
+ Notes
295
+ -----
296
+ - The value will sort by the indexer if indexed.
297
+ """
298
+ if self.indexer is None:
299
+ if self.is_group:
300
+ return self.owner.get_all_idxes()
301
+ elif self.owner is None:
302
+ logger.info(f'Param <{self.name}> has no owner.')
303
+ return None
304
+ elif hasattr(self.owner, 'idx'):
305
+ return self.owner.idx.v
306
+ else:
307
+ logger.info(f'Param <{self.name}> owner <{self.owner.class_name}> has no idx.')
308
+ return None
309
+ else:
310
+ try:
311
+ imodel = getattr(self.rtn.system, self.imodel)
312
+ except AttributeError:
313
+ msg = f'Indexer source model <{self.imodel}> not found, '
314
+ msg += 'likely a modeling error.'
315
+ raise AttributeError(msg)
316
+ try:
317
+ sorted_idx = self.owner.find_idx(keys=self.indexer, values=imodel.get_all_idxes())
318
+ except AttributeError:
319
+ msg = f'Indexer <{self.indexer}> not found in <{self.imodel}>, '
320
+ msg += 'likely a modeling error.'
321
+ raise AttributeError(msg)
322
+ return sorted_idx