ltbams 1.0.7__tar.gz → 1.0.8__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.
- {ltbams-1.0.7/ltbams.egg-info → ltbams-1.0.8}/PKG-INFO +1 -1
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/_version.py +3 -3
- ltbams-1.0.8/ams/cases/hawaii40/Hawaii40.m +375 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/cases/matpower/case5.m +25 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/io/__init__.py +1 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/io/matpower.py +165 -7
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/io/psse.py +1 -1
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/models/group.py +76 -5
- ltbams-1.0.8/ams/models/line.py +77 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/models/static/gen.py +9 -1
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/routines/dcpf0.py +1 -1
- {ltbams-1.0.7 → ltbams-1.0.8}/docs/source/getting_started/copyright.rst +1 -1
- {ltbams-1.0.7 → ltbams-1.0.8}/docs/source/release-notes.rst +12 -0
- {ltbams-1.0.7 → ltbams-1.0.8/ltbams.egg-info}/PKG-INFO +1 -1
- {ltbams-1.0.7 → ltbams-1.0.8}/ltbams.egg-info/SOURCES.txt +1 -1
- {ltbams-1.0.7 → ltbams-1.0.8}/tests/test_io.py +15 -0
- ltbams-1.0.7/ams/models/line.py +0 -238
- ltbams-1.0.7/tests/test_andes_mats.py +0 -61
- {ltbams-1.0.7 → ltbams-1.0.8}/CONTRIBUTING.rst +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/LICENSE +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/MANIFEST.in +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/README.md +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/__init__.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/__main__.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/cases/5bus/pjm5bus_demo.xlsx +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/cases/5bus/pjm5bus_ev.xlsx +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/cases/5bus/pjm5bus_jumper.xlsx +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/cases/ieee123/ieee123.xlsx +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/cases/ieee123/ieee123_regcv1.xlsx +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/cases/ieee14/ieee14.json +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/cases/ieee14/ieee14.raw +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/cases/ieee14/ieee14_conn.xlsx +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/cases/ieee14/ieee14_uced.xlsx +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/cases/ieee39/ieee39.xlsx +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/cases/ieee39/ieee39_uced.xlsx +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/cases/ieee39/ieee39_uced_esd1.xlsx +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/cases/ieee39/ieee39_uced_pvd1.xlsx +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/cases/ieee39/ieee39_uced_vis.xlsx +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/cases/matpower/benchmark.json +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/cases/matpower/case118.m +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/cases/matpower/case14.m +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/cases/matpower/case300.m +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/cases/matpower/case39.m +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/cases/matpower/case_ACTIVSg2000.m +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/cases/npcc/npcc.m +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/cases/npcc/npcc_uced.xlsx +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/cases/pglib/pglib_opf_case39_epri__api.m +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/cases/wecc/wecc.m +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/cases/wecc/wecc_uced.xlsx +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/cli.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/core/__init__.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/core/documenter.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/core/matprocessor.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/core/model.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/core/param.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/core/service.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/core/symprocessor.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/core/var.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/extension/__init__.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/extension/eva.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/interface.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/io/json.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/io/pypower.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/io/xlsx.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/main.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/models/__init__.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/models/area.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/models/bus.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/models/cost.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/models/distributed/__init__.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/models/distributed/esd1.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/models/distributed/ev.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/models/distributed/pvd1.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/models/info.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/models/renewable/__init__.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/models/renewable/regc.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/models/reserve.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/models/shunt.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/models/static/__init__.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/models/static/pq.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/models/timeslot.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/models/zone.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/opt/__init__.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/opt/constraint.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/opt/exprcalc.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/opt/expression.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/opt/objective.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/opt/omodel.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/opt/optzbase.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/opt/param.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/opt/var.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/pypower/__init__.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/pypower/_compat.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/pypower/core/__init__.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/pypower/core/pips.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/pypower/core/ppoption.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/pypower/core/ppver.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/pypower/core/solver.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/pypower/eps.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/pypower/idx.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/pypower/io.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/pypower/make/__init__.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/pypower/make/matrices.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/pypower/make/pdv.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/pypower/routines/__init__.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/pypower/routines/cpf.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/pypower/routines/cpf_callbacks.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/pypower/routines/opf.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/pypower/routines/opffcns.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/pypower/routines/pflow.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/pypower/toggle.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/pypower/utils.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/report.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/routines/__init__.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/routines/acopf.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/routines/cpf.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/routines/dcopf.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/routines/dcopf2.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/routines/dcpf.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/routines/dopf.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/routines/ed.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/routines/pflow.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/routines/pflow0.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/routines/routine.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/routines/rted.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/routines/type.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/routines/uc.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/shared.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/system.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/utils/__init__.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/utils/misc.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ams/utils/paths.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/docs/Makefile +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/docs/make.bat +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/docs/source/_templates/autosummary/base.rst +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/docs/source/_templates/autosummary/class.rst +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/docs/source/_templates/autosummary/module.rst +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/docs/source/_templates/autosummary/module_toctree.rst +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/docs/source/api.rst +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/docs/source/conf.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/docs/source/examples/index.rst +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/docs/source/genmodelref.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/docs/source/genroutineref.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/docs/source/getting_started/formats/index.rst +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/docs/source/getting_started/formats/matpower.rst +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/docs/source/getting_started/formats/psse.rst +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/docs/source/getting_started/formats/pypower.rst +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/docs/source/getting_started/formats/xlsx.png +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/docs/source/getting_started/formats/xlsx.rst +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/docs/source/getting_started/index.rst +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/docs/source/getting_started/install.rst +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/docs/source/getting_started/overview.rst +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/docs/source/getting_started/testcase.rst +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/docs/source/getting_started/verification.rst +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/docs/source/images/curent.ico +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/docs/source/images/dcopf_time.png +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/docs/source/images/sponsors/CURENT_Logo_NameOnTrans.png +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/docs/source/images/sponsors/CURENT_Logo_Transparent.png +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/docs/source/images/sponsors/CURENT_Logo_Transparent_Name.png +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/docs/source/images/sponsors/doe.png +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/docs/source/index.rst +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/docs/source/modeling/example.rst +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/docs/source/modeling/index.rst +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/docs/source/modeling/model.rst +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/docs/source/modeling/routine.rst +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/docs/source/modeling/system.rst +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ltbams.egg-info/dependency_links.txt +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ltbams.egg-info/entry_points.txt +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ltbams.egg-info/requires.txt +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/ltbams.egg-info/top_level.txt +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/pyproject.toml +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/requirements-dev.txt +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/requirements.txt +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/setup.cfg +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/setup.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/tests/__init__.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/tests/test_1st_system.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/tests/test_addressing.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/tests/test_case.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/tests/test_cli.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/tests/test_export_csv.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/tests/test_group.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/tests/test_interface.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/tests/test_jumper.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/tests/test_known_good.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/tests/test_matp.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/tests/test_model.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/tests/test_omodel.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/tests/test_paths.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/tests/test_report.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/tests/test_repr.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/tests/test_routine.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/tests/test_rtn_dcopf.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/tests/test_rtn_dcopf2.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/tests/test_rtn_dcpf.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/tests/test_rtn_ed.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/tests/test_rtn_pflow.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/tests/test_rtn_rted.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/tests/test_rtn_uc.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/tests/test_service.py +0 -0
- {ltbams-1.0.7 → ltbams-1.0.8}/versioneer.py +0 -0
@@ -8,11 +8,11 @@ import json
|
|
8
8
|
|
9
9
|
version_json = '''
|
10
10
|
{
|
11
|
-
"date": "2025-04-
|
11
|
+
"date": "2025-04-20T09:18:49-0400",
|
12
12
|
"dirty": false,
|
13
13
|
"error": null,
|
14
|
-
"full-revisionid": "
|
15
|
-
"version": "1.0.
|
14
|
+
"full-revisionid": "4bda2874669399db2c37d0a4bf6ae10e324d96a7",
|
15
|
+
"version": "1.0.8"
|
16
16
|
}
|
17
17
|
''' # END VERSION_JSON
|
18
18
|
|
@@ -0,0 +1,375 @@
|
|
1
|
+
% Case saved by PowerWorld Simulator, version 23, build date August 27, 2023
|
2
|
+
function mpc = Hawaii40_20231026
|
3
|
+
mpc.version = '2';
|
4
|
+
mpc.baseMVA = 100.00;
|
5
|
+
|
6
|
+
%% bus data
|
7
|
+
mpc.bus = [
|
8
|
+
1 1 0.00 0.00 0.00 0.00 1 0.9935453 -1.119907 138.00 1 1.100 0.900 5.22 0.00 0 0
|
9
|
+
2 2 60.70 0.00 0.00 0.00 1 0.9912250 -3.927372 69.00 1 1.100 0.900 5.25 0.00 0 0
|
10
|
+
3 1 59.39 0.00 0.00 0.00 1 0.9845477 -4.731145 69.00 1 1.100 0.900 5.71 -0.03 0 0
|
11
|
+
4 1 22.47 0.00 0.00 0.00 1 0.9787999 -5.745870 69.00 1 1.100 0.900 5.42 -0.01 0 0
|
12
|
+
5 1 0.00 0.00 0.00 0.00 1 0.9889847 -2.069792 138.00 1 1.100 0.900 5.28 0.00 0 0
|
13
|
+
6 1 27.46 0.00 0.00 0.00 1 0.9812064 -5.528160 69.00 1 1.100 0.900 5.49 -0.00 0 0
|
14
|
+
7 1 37.01 0.00 0.00 0.00 1 0.9805826 -5.671337 69.00 1 1.100 0.900 5.48 -0.00 0 0
|
15
|
+
8 1 65.10 0.00 0.00 0.00 1 0.9786187 -5.702381 69.00 1 1.100 0.900 5.75 -0.03 0 0
|
16
|
+
9 1 0.00 0.00 0.00 0.00 1 0.9867678 -2.548359 138.00 1 1.100 0.900 5.31 -0.00 0 0
|
17
|
+
10 1 37.76 0.00 0.00 0.00 1 0.9809410 -5.651960 69.00 1 1.100 0.900 5.47 0.00 0 0
|
18
|
+
11 1 65.55 0.00 0.00 0.00 1 0.9749115 -6.522955 69.00 1 1.100 0.900 5.50 0.00 0 0
|
19
|
+
12 1 54.01 0.00 0.00 0.00 1 0.9773269 -6.198354 69.00 1 1.100 0.900 5.51 -0.00 0 0
|
20
|
+
13 1 59.24 0.00 0.00 0.00 1 0.9789530 -6.094816 69.00 1 1.100 0.900 5.49 -0.00 0 0
|
21
|
+
14 1 0.00 0.00 0.00 0.00 1 0.9837641 -3.136205 138.00 1 1.100 0.900 5.35 -0.00 0 0
|
22
|
+
15 1 60.90 0.00 0.00 0.00 1 0.9786311 -6.029763 69.00 1 1.100 0.900 5.51 0.01 0 0
|
23
|
+
16 1 23.83 0.00 0.00 32.00 1 0.9821866 -6.456032 69.00 1 1.100 0.900 5.56 -0.01 0 0
|
24
|
+
17 1 12.04 0.00 0.00 0.00 1 0.9754957 -6.981904 69.00 1 1.100 0.900 5.53 -0.01 0 0
|
25
|
+
18 1 36.32 0.00 0.00 0.00 1 0.9759604 -7.121150 69.00 1 1.100 0.900 5.55 -0.01 0 0
|
26
|
+
19 1 48.60 0.00 0.00 0.00 1 0.9913040 -3.514221 69.00 1 1.100 0.900 5.89 -0.04 0 0
|
27
|
+
20 1 64.95 0.00 0.00 0.00 1 0.9896603 -1.963951 69.00 1 1.100 0.900 7.07 -0.18 0 0
|
28
|
+
21 1 48.34 0.00 0.00 0.00 1 0.9799422 -5.268157 69.00 1 1.100 0.900 5.54 -0.01 0 0
|
29
|
+
22 1 0.00 0.00 0.00 0.00 1 0.9963974 -0.844548 138.00 1 1.100 0.900 5.19 0.00 0 0
|
30
|
+
23 3 86.75 0.00 0.00 0.00 1 1.0000000 -2.106015 69.00 1 1.100 0.900 5.10 0.00 0 0
|
31
|
+
24 1 46.58 0.00 0.00 0.00 1 0.9934020 -3.706851 69.00 1 1.100 0.900 4.59 -0.05 0 0
|
32
|
+
25 1 0.00 0.00 0.00 0.00 1 0.9966141 -0.528763 138.00 1 1.100 0.900 5.20 0.00 0 0
|
33
|
+
26 2 75.28 0.00 0.00 0.00 1 0.9951046 -3.596866 69.00 1 1.100 0.900 4.93 -0.02 0 0
|
34
|
+
27 2 3.95 0.00 0.00 0.00 1 1.0034164 1.362694 69.00 1 1.100 0.900 7.78 -0.10 0 0
|
35
|
+
28 2 8.82 0.00 0.00 0.00 1 1.0000000 0.234055 69.00 1 1.100 0.900 0.00 0.00 0 0
|
36
|
+
29 1 7.70 0.00 0.00 0.00 1 0.9953834 -0.097274 69.00 1 1.100 0.900 7.84 -0.12 0 0
|
37
|
+
30 1 49.03 0.00 0.00 0.00 1 0.9957983 -0.422344 69.00 1 1.100 0.900 8.14 -0.10 0 0
|
38
|
+
31 1 9.62 0.00 0.00 0.00 1 0.9952150 -2.101776 69.00 1 1.100 0.900 2.58 0.08 0 0
|
39
|
+
32 1 6.67 0.00 0.00 0.00 1 0.9912167 -1.321157 69.00 1 1.100 0.900 7.37 -0.16 0 0
|
40
|
+
33 2 58.22 0.00 0.00 0.00 1 0.9956520 -3.050368 69.00 1 1.100 0.900 4.14 -0.01 0 0
|
41
|
+
34 2 0.00 0.00 0.00 0.00 1 1.0000000 -2.084231 69.00 1 1.100 0.900 4.62 0.00 0 0
|
42
|
+
35 2 0.00 0.00 0.00 0.00 1 1.0000000 0.376390 138.00 1 1.100 0.900 5.20 0.00 0 0
|
43
|
+
36 2 0.00 0.00 0.00 0.00 1 0.9965724 -3.565242 69.00 1 1.100 0.900 4.59 -0.05 0 0
|
44
|
+
37 2 0.00 0.00 0.00 0.00 1 1.0000000 0.251430 138.00 1 1.100 0.900 5.20 0.00 0 0
|
45
|
+
];
|
46
|
+
|
47
|
+
%% generator data
|
48
|
+
mpc.gen = [
|
49
|
+
2 2.50 0.80 0.80 -0.50 1.0000 2.80 1 2.50 1.00 0.00 0.00 0.00 0.00 0.00 0.00 0 0 0 0 0.0000 0 0 0 0
|
50
|
+
2 2.50 0.80 0.80 -0.50 1.0000 2.80 1 2.50 1.00 0.00 0.00 0.00 0.00 0.00 0.00 0 0 0 0 0.0000 0 0 0 0
|
51
|
+
2 2.50 0.80 0.80 -0.50 1.0000 2.80 1 2.50 1.00 0.00 0.00 0.00 0.00 0.00 0.00 0 0 0 0 0.0000 0 0 0 0
|
52
|
+
2 2.50 0.80 0.80 -0.50 1.0000 2.80 1 2.50 1.00 0.00 0.00 0.00 0.00 0.00 0.00 0 0 0 0 0.0000 0 0 0 0
|
53
|
+
23 69.27 0.04 23.30 -14.00 1.0000 85.60 1 77.80 20.00 0.00 0.00 0.00 0.00 0.00 0.00 0 0 0 0 0.0000 0 0 0 0
|
54
|
+
23 39.13 0.04 13.80 -8.30 1.0000 50.50 1 45.90 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0 0 0 0 0.0000 0 0 0 0
|
55
|
+
23 69.27 0.04 23.30 -14.00 1.0000 85.60 1 77.80 20.00 0.00 0.00 0.00 0.00 0.00 0.00 0 0 0 0 0.0000 0 0 0 0
|
56
|
+
23 47.64 0.04 15.60 -9.40 1.0000 57.10 1 51.90 23.00 0.00 0.00 0.00 0.00 0.00 0.00 0 0 0 0 0.0000 0 0 0 0
|
57
|
+
23 47.11 0.04 15.50 -9.30 1.0000 57.00 1 51.80 20.00 0.00 0.00 0.00 0.00 0.00 0.00 0 0 0 0 0.0000 0 0 0 0
|
58
|
+
23 44.53 0.04 15.40 -9.20 1.0000 56.30 1 51.20 6.00 0.00 0.00 0.00 0.00 0.00 0.00 0 0 0 0 0.0000 0 0 0 0
|
59
|
+
23 44.53 0.04 15.40 -9.20 1.0000 56.30 1 51.20 6.00 0.00 0.00 0.00 0.00 0.00 0.00 0 0 0 0 0.0000 0 0 0 0
|
60
|
+
23 43.61 0.04 14.30 -8.60 1.0000 52.50 1 47.70 20.00 0.00 0.00 0.00 0.00 0.00 0.00 0 0 0 0 0.0000 0 0 0 0
|
61
|
+
23 43.19 0.04 14.20 -8.50 1.0000 51.90 1 47.20 20.00 0.00 0.00 0.00 0.00 0.00 0.00 0 0 0 0 0.0000 0 0 0 0
|
62
|
+
23 12.53 0.04 4.40 -2.60 1.0000 16.20 1 14.70 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0 0 0 0 0.0000 0 0 0 0
|
63
|
+
26 20.00 6.00 6.00 -3.60 1.0000 22.00 1 20.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0 0 0 0 0.0000 0 0 0 0
|
64
|
+
26 10.20 3.10 3.10 -1.90 1.0000 11.20 1 10.20 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0 0 0 0 0.0000 0 0 0 0
|
65
|
+
27 30.00 -5.40 9.00 -5.40 1.0000 33.00 1 30.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0 0 0 0 0.0000 0 0 0 0
|
66
|
+
27 27.60 -5.00 8.30 -5.00 1.0000 30.40 1 27.60 1.00 0.00 0.00 0.00 0.00 0.00 0.00 0 0 0 0 0.0000 0 0 0 0
|
67
|
+
28 46.30 -5.49 14.70 -8.80 1.0000 53.90 1 49.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0 0 0 0 0.0000 0 0 0 0
|
68
|
+
28 69.00 -5.49 20.70 -12.40 1.0000 75.90 1 69.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0 0 0 0 0.0000 0 0 0 0
|
69
|
+
33 27.60 8.30 8.30 -5.00 1.0000 30.40 1 27.60 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0 0 0 0 0.0000 0 0 0 0
|
70
|
+
34 7.22 -0.98 2.50 -1.50 1.0000 9.20 1 8.40 2.50 0.00 0.00 0.00 0.00 0.00 0.00 0 0 0 0 0.0000 0 0 0 0
|
71
|
+
34 6.04 -0.98 2.50 -1.50 1.0000 9.20 1 8.40 2.50 0.00 0.00 0.00 0.00 0.00 0.00 0 0 0 0 0.0000 0 0 0 0
|
72
|
+
34 6.04 -0.98 2.50 -1.50 1.0000 9.20 1 8.40 2.50 0.00 0.00 0.00 0.00 0.00 0.00 0 0 0 0 0.0000 0 0 0 0
|
73
|
+
34 6.04 -0.98 2.50 -1.50 1.0000 9.20 1 8.40 2.50 0.00 0.00 0.00 0.00 0.00 0.00 0 0 0 0 0.0000 0 0 0 0
|
74
|
+
34 6.01 -0.98 2.50 -1.50 1.0000 9.20 1 8.40 2.50 0.00 0.00 0.00 0.00 0.00 0.00 0 0 0 0 0.0000 0 0 0 0
|
75
|
+
34 7.22 -0.98 2.50 -1.50 1.0000 9.20 1 8.40 2.50 0.00 0.00 0.00 0.00 0.00 0.00 0 0 0 0 0.0000 0 0 0 0
|
76
|
+
35 58.00 0.05 17.40 -10.40 1.0000 63.80 1 58.00 5.00 0.00 0.00 0.00 0.00 0.00 0.00 0 0 0 0 0.0000 0 0 0 0
|
77
|
+
35 28.00 0.05 8.40 -5.00 1.0000 30.80 1 28.00 5.00 0.00 0.00 0.00 0.00 0.00 0.00 0 0 0 0 0.0000 0 0 0 0
|
78
|
+
35 0.00 0.00 54.00 -32.40 1.0000 198.00 0 180.00 63.00 0.00 0.00 0.00 0.00 0.00 0.00 0 0 0 0 0.0000 0 0 0 0
|
79
|
+
35 20.00 0.05 6.00 -3.60 1.0000 22.00 1 20.00 5.00 0.00 0.00 0.00 0.00 0.00 0.00 0 0 0 0 0.0000 0 0 0 0
|
80
|
+
35 67.00 0.05 25.50 -15.30 1.0000 93.50 1 85.00 40.00 0.00 0.00 0.00 0.00 0.00 0.00 0 0 0 0 0.0000 0 0 0 0
|
81
|
+
35 0.00 0.00 25.50 -15.30 1.0000 93.50 0 85.00 40.00 0.00 0.00 0.00 0.00 0.00 0.00 0 0 0 0 0.0000 0 0 0 0
|
82
|
+
35 50.00 0.05 15.00 -9.00 1.0000 55.00 1 50.00 10.00 0.00 0.00 0.00 0.00 0.00 0.00 0 0 0 0 0.0000 0 0 0 0
|
83
|
+
35 56.20 0.05 33.90 -20.30 1.0000 124.30 1 113.00 42.00 0.00 0.00 0.00 0.00 0.00 0.00 0 0 0 0 0.0000 0 0 0 0
|
84
|
+
36 2.00 1.00 1.00 -0.60 1.0000 3.50 1 3.20 2.00 0.00 0.00 0.00 0.00 0.00 0.00 0 0 0 0 0.0000 0 0 0 0
|
85
|
+
36 2.10 1.00 1.00 -0.60 1.0000 3.50 1 3.20 2.00 0.00 0.00 0.00 0.00 0.00 0.00 0 0 0 0 0.0000 0 0 0 0
|
86
|
+
36 2.00 1.00 1.00 -0.60 1.0000 3.50 1 3.20 2.00 0.00 0.00 0.00 0.00 0.00 0.00 0 0 0 0 0.0000 0 0 0 0
|
87
|
+
36 2.48 1.00 1.00 -0.60 1.0000 3.50 1 3.20 2.00 0.00 0.00 0.00 0.00 0.00 0.00 0 0 0 0 0.0000 0 0 0 0
|
88
|
+
37 0.00 0.00 38.60 -23.20 1.0000 141.60 0 128.70 45.00 0.00 0.00 0.00 0.00 0.00 0.00 0 0 0 0 0.0000 0 0 0 0
|
89
|
+
37 0.00 0.00 38.40 -23.00 1.0000 140.90 0 128.10 55.00 0.00 0.00 0.00 0.00 0.00 0.00 0 0 0 0 0.0000 0 0 0 0
|
90
|
+
37 58.32 5.63 26.20 -15.70 1.0000 95.90 1 87.20 20.00 0.00 0.00 0.00 0.00 0.00 0.00 0 0 0 0 0.0000 0 0 0 0
|
91
|
+
37 0.00 0.00 24.60 -14.80 1.0000 90.30 0 82.10 20.00 0.00 0.00 0.00 0.00 0.00 0.00 0 0 0 0 0.0000 0 0 0 0
|
92
|
+
37 68.48 5.63 23.40 -14.00 1.0000 85.90 1 78.10 30.00 0.00 0.00 0.00 0.00 0.00 0.00 0 0 0 0 0.0000 0 0 0 0
|
93
|
+
37 0.00 0.00 23.40 -14.00 1.0000 85.70 0 77.90 20.00 0.00 0.00 0.00 0.00 0.00 0.00 0 0 0 0 0.0000 0 0 0 0
|
94
|
+
];
|
95
|
+
|
96
|
+
%% generator cost data
|
97
|
+
mpc.gencost = [
|
98
|
+
2 0 0 4 0.0000 0.003 4.570 0.00
|
99
|
+
2 0 0 4 0.0000 0.002 4.570 0.00
|
100
|
+
2 0 0 4 0.0000 0.002 4.570 0.00
|
101
|
+
2 0 0 4 0.0000 0.002 4.570 0.00
|
102
|
+
2 0 0 4 0.0000 0.004 4.680 0.00
|
103
|
+
2 0 0 4 0.0000 0.000 0.000 0.00
|
104
|
+
2 0 0 4 0.0000 0.005 4.680 0.00
|
105
|
+
2 0 0 4 0.0000 0.004 4.640 0.00
|
106
|
+
2 0 0 4 0.0000 0.004 4.640 0.00
|
107
|
+
2 0 0 4 0.0000 0.003 4.640 0.00
|
108
|
+
2 0 0 4 0.0000 0.003 4.640 0.00
|
109
|
+
2 0 0 4 0.0000 0.003 4.640 0.00
|
110
|
+
2 0 0 4 0.0000 0.005 4.630 0.00
|
111
|
+
2 0 0 4 0.0000 0.000 0.000 0.00
|
112
|
+
2 0 0 4 0.0000 0.000 0.000 0.00
|
113
|
+
2 0 0 4 0.0000 0.000 0.000 0.00
|
114
|
+
2 0 0 4 0.0000 0.000 0.000 0.00
|
115
|
+
2 0 0 4 0.0000 0.000 0.000 0.00
|
116
|
+
2 0 0 4 0.0000 0.000 0.000 0.00
|
117
|
+
2 0 0 4 0.0000 0.000 0.000 0.00
|
118
|
+
2 0 0 4 0.0000 0.000 0.000 0.00
|
119
|
+
2 0 0 4 0.0000 0.003 4.580 0.00
|
120
|
+
2 0 0 4 0.0000 0.003 4.580 0.00
|
121
|
+
2 0 0 4 0.0000 0.004 4.580 0.00
|
122
|
+
2 0 0 4 0.0000 0.003 4.580 0.00
|
123
|
+
2 0 0 4 0.0000 0.004 4.580 0.00
|
124
|
+
2 0 0 4 0.0000 0.003 4.580 0.00
|
125
|
+
2 0 0 4 0.0000 0.004 4.650 0.00
|
126
|
+
2 0 0 4 0.0000 0.004 4.610 0.00
|
127
|
+
2 0 0 4 0.0000 0.007 4.810 0.00
|
128
|
+
2 0 0 4 0.0000 0.003 4.600 0.00
|
129
|
+
2 0 0 4 0.0000 0.004 4.690 0.00
|
130
|
+
2 0 0 4 0.0000 0.005 4.690 0.00
|
131
|
+
2 0 0 4 0.0000 0.004 4.640 0.00
|
132
|
+
2 0 0 4 0.0000 0.004 4.720 0.00
|
133
|
+
2 0 0 4 0.0000 0.003 4.580 0.00
|
134
|
+
2 0 0 4 0.0000 0.002 4.580 0.00
|
135
|
+
2 0 0 4 0.0000 0.003 4.580 0.00
|
136
|
+
2 0 0 4 0.0000 0.002 4.580 0.00
|
137
|
+
2 0 0 4 0.0000 0.006 4.740 0.00
|
138
|
+
2 0 0 4 0.0000 0.006 4.740 0.00
|
139
|
+
2 0 0 4 0.0000 0.005 4.690 0.00
|
140
|
+
2 0 0 4 0.0000 0.005 4.680 0.00
|
141
|
+
2 0 0 4 0.0000 0.004 4.680 0.00
|
142
|
+
2 0 0 4 0.0000 0.005 4.680 0.00
|
143
|
+
];
|
144
|
+
|
145
|
+
%% branch data
|
146
|
+
mpc.branch = [
|
147
|
+
1 2 0.004840 0.123766 0.00000 123.20 123.20 123.20 1.00000 0.000 1 0.00 0.00 39.02 1.29 -38.95 0.62 0 0 0 0
|
148
|
+
1 2 0.004840 0.123766 0.00000 123.20 123.20 123.20 1.00000 0.000 1 0.00 0.00 39.02 1.29 -38.95 0.62 0 0 0 0
|
149
|
+
1 2 0.004840 0.123766 0.00000 123.20 123.20 123.20 1.00000 0.000 1 0.00 0.00 39.02 1.29 -38.95 0.62 0 0 0 0
|
150
|
+
1 5 0.003400 0.020913 0.00846 232.80 232.80 232.80 0.00000 0.000 1 0.00 0.00 79.42 8.98 -79.20 -8.46 0 0 0 0
|
151
|
+
1 5 0.003400 0.020913 0.00846 232.80 232.80 232.80 0.00000 0.000 1 0.00 0.00 79.42 8.98 -79.20 -8.46 0 0 0 0
|
152
|
+
1 22 0.003740 0.024173 0.00605 177.80 177.80 177.80 0.00000 0.000 1 0.00 0.00 -20.99 -8.73 21.01 8.25 0 0 0 0
|
153
|
+
1 25 0.002890 0.015798 0.00771 217.00 217.00 217.00 0.00000 0.000 1 0.00 0.00 -65.93 -7.29 66.06 7.23 0 0 0 0
|
154
|
+
1 25 0.002890 0.015798 0.00771 217.00 217.00 217.00 0.00000 0.000 1 0.00 0.00 -65.93 -7.29 66.06 7.23 0 0 0 0
|
155
|
+
1 35 0.010800 0.041922 0.01284 281.60 281.60 281.60 0.00000 0.000 1 0.00 0.00 -61.53 0.73 61.95 -0.40 0 0 0 0
|
156
|
+
1 35 0.010800 0.041922 0.01284 281.60 281.60 281.60 0.00000 0.000 1 0.00 0.00 -61.53 0.73 61.95 -0.40 0 0 0 0
|
157
|
+
2 4 0.042960 0.079357 0.00257 66.80 66.80 66.80 0.00000 0.000 1 0.00 0.00 36.76 -3.89 -36.16 4.74 0 0 0 0
|
158
|
+
2 6 0.026890 0.058600 0.00312 82.00 82.00 82.00 0.00000 0.000 1 0.00 0.00 44.97 -3.19 -44.41 4.10 0 0 0 0
|
159
|
+
2 6 0.026890 0.058600 0.00312 82.00 82.00 82.00 0.00000 0.000 1 0.00 0.00 44.97 -3.19 -44.41 4.10 0 0 0 0
|
160
|
+
2 7 0.027540 0.075691 0.00377 77.80 77.80 77.80 0.00000 0.000 1 0.00 0.00 39.18 0.09 -38.75 0.73 0 0 0 0
|
161
|
+
2 21 0.036460 0.077337 0.00173 94.80 94.80 94.80 0.00000 0.000 1 0.00 0.00 29.76 0.69 -29.43 -0.16 0 0 0 0
|
162
|
+
2 23 0.032620 0.081030 0.00180 101.30 101.30 101.30 0.00000 0.000 1 0.00 0.00 -36.96 4.68 37.42 -3.71 0 0 0 0
|
163
|
+
2 23 0.032620 0.081030 0.00180 101.30 101.30 101.30 0.00000 0.000 1 0.00 0.00 -36.96 4.68 37.42 -3.71 0 0 0 0
|
164
|
+
2 23 0.032620 0.081030 0.00180 101.30 101.30 101.30 0.00000 0.000 1 0.00 0.00 -36.96 4.68 37.42 -3.71 0 0 0 0
|
165
|
+
2 26 0.030490 0.066116 0.00186 61.70 61.70 61.70 0.00000 0.000 1 0.00 0.00 -9.30 -1.59 9.33 1.47 0 0 0 0
|
166
|
+
2 26 0.030490 0.066116 0.00186 61.70 61.70 61.70 0.00000 0.000 1 0.00 0.00 -9.30 -1.59 9.33 1.47 0 0 0 0
|
167
|
+
3 6 0.014780 0.036690 0.00104 85.00 85.00 85.00 0.00000 0.000 1 0.00 0.00 34.71 -4.81 -34.52 5.18 0 0 0 0
|
168
|
+
3 6 0.014780 0.036690 0.00104 85.00 85.00 85.00 0.00000 0.000 1 0.00 0.00 34.71 -4.81 -34.52 5.18 0 0 0 0
|
169
|
+
3 16 0.023830 0.063585 0.00504 82.80 82.80 82.80 0.00000 0.000 1 0.00 0.00 41.57 -11.48 -41.11 12.21 0 0 0 0
|
170
|
+
3 19 0.013820 0.031229 0.00541 91.60 91.60 91.60 0.00000 0.000 1 0.00 0.00 -63.13 7.08 63.70 -6.30 0 0 0 0
|
171
|
+
3 19 0.013820 0.031229 0.00541 91.60 91.60 91.60 0.00000 0.000 1 0.00 0.00 -63.13 7.08 63.70 -6.30 0 0 0 0
|
172
|
+
3 19 0.013820 0.031229 0.00541 91.60 91.60 91.60 0.00000 0.000 1 0.00 0.00 -63.13 7.08 63.70 -6.30 0 0 0 0
|
173
|
+
3 21 0.024230 0.047508 0.00152 49.00 49.00 49.00 0.00000 0.000 1 0.00 0.00 19.00 -0.13 -18.91 0.16 0 0 0 0
|
174
|
+
4 13 0.012140 0.038486 0.00170 53.20 53.20 53.20 0.00000 0.000 1 0.00 0.00 13.69 -4.74 -13.67 4.66 0 0 0 0
|
175
|
+
5 6 0.004790 0.139559 0.00000 198.00 198.00 198.00 1.00000 0.000 1 0.00 0.00 42.13 5.33 -42.04 -2.76 0 0 0 0
|
176
|
+
5 9 0.002290 0.012058 0.00409 170.70 170.70 170.70 0.00000 0.000 1 0.00 0.00 68.63 5.23 -68.52 -5.05 0 0 0 0
|
177
|
+
5 14 0.005740 0.038815 0.00687 162.50 162.50 162.50 0.00000 0.000 1 0.00 0.00 47.64 6.35 -47.50 -6.10 0 0 0 0
|
178
|
+
7 6 0.004000 0.010000 0.00096 40.20 40.20 40.20 0.00000 0.000 1 0.00 0.00 -22.83 3.00 22.85 -3.03 0 0 0 0
|
179
|
+
7 6 0.004000 0.010000 0.00096 40.20 40.20 40.20 0.00000 0.000 1 0.00 0.00 -22.83 3.00 22.85 -3.03 0 0 0 0
|
180
|
+
7 6 0.004000 0.010000 0.00096 40.20 40.20 40.20 0.00000 0.000 1 0.00 0.00 -22.83 3.00 22.85 -3.03 0 0 0 0
|
181
|
+
6 11 0.019800 0.042395 0.00097 89.00 89.00 89.00 0.00000 0.000 1 0.00 0.00 37.88 -2.83 -37.58 3.37 0 0 0 0
|
182
|
+
6 12 0.013640 0.033191 0.00066 58.80 58.80 58.80 0.00000 0.000 1 0.00 0.00 33.01 -1.93 -32.86 2.25 0 0 0 0
|
183
|
+
6 12 0.013640 0.033191 0.00066 58.80 58.80 58.80 0.00000 0.000 1 0.00 0.00 33.01 -1.93 -32.86 2.25 0 0 0 0
|
184
|
+
7 10 0.004000 0.010000 0.00096 50.00 50.00 50.00 0.00000 0.000 1 0.00 0.00 -4.02 -1.95 4.02 1.86 0 0 0 0
|
185
|
+
7 13 0.009410 0.027706 0.00096 40.20 40.20 40.20 0.00000 0.000 1 0.00 0.00 24.74 -2.59 -24.68 2.67 0 0 0 0
|
186
|
+
7 13 0.009410 0.027706 0.00096 40.20 40.20 40.20 0.00000 0.000 1 0.00 0.00 24.74 -2.59 -24.68 2.67 0 0 0 0
|
187
|
+
7 13 0.009410 0.027706 0.00096 40.20 40.20 40.20 0.00000 0.000 1 0.00 0.00 24.74 -2.59 -24.68 2.67 0 0 0 0
|
188
|
+
8 15 0.031390 0.075848 0.00197 84.90 84.90 84.90 0.00000 0.000 1 0.00 0.00 6.16 -2.64 -6.15 2.49 0 0 0 0
|
189
|
+
8 19 0.036990 0.102463 0.00246 90.00 90.00 90.00 0.00000 0.000 1 0.00 0.00 -35.63 1.32 36.12 -0.20 0 0 0 0
|
190
|
+
8 19 0.036990 0.102463 0.00246 90.00 90.00 90.00 0.00000 0.000 1 0.00 0.00 -35.63 1.32 36.12 -0.20 0 0 0 0
|
191
|
+
9 10 0.004680 0.125654 0.00000 56.20 56.20 56.20 1.00000 0.000 1 0.00 0.00 41.86 4.15 -41.78 -1.86 0 0 0 0
|
192
|
+
9 14 0.009330 0.037848 0.01017 169.30 169.30 169.30 0.00000 0.000 1 0.00 0.00 26.66 0.90 -26.59 -1.61 0 0 0 0
|
193
|
+
11 13 0.018440 0.047771 0.00224 45.30 45.30 45.30 0.00000 0.000 1 0.00 0.00 -15.74 -2.22 15.79 2.13 0 0 0 0
|
194
|
+
11 15 0.023280 0.069221 0.00152 48.60 48.60 48.60 0.00000 0.000 1 0.00 0.00 -12.23 -1.15 12.26 1.11 0 0 0 0
|
195
|
+
12 15 0.015110 0.041464 0.00414 77.00 77.00 77.00 0.00000 0.000 1 0.00 0.00 -6.98 -0.72 6.99 0.34 0 0 0 0
|
196
|
+
12 17 0.022780 0.065341 0.00282 49.90 49.90 49.90 0.00000 0.000 1 0.00 0.00 18.68 -3.77 -18.60 3.75 0 0 0 0
|
197
|
+
13 16 0.013090 0.032547 0.00110 52.00 52.00 52.00 0.00000 0.000 1 0.00 0.00 12.68 -14.82 -12.63 14.84 0 0 0 0
|
198
|
+
14 15 0.003250 0.131522 0.00000 85.90 85.90 85.90 1.00000 0.000 1 0.00 0.00 37.05 3.86 -37.00 -1.97 0 0 0 0
|
199
|
+
14 15 0.003250 0.131522 0.00000 85.90 85.90 85.90 1.00000 0.000 1 0.00 0.00 37.05 3.86 -37.00 -1.97 0 0 0 0
|
200
|
+
16 18 0.015530 0.039228 0.00191 51.70 51.70 51.70 0.00000 0.000 1 0.00 0.00 29.91 3.82 -29.77 -3.63 0 0 0 0
|
201
|
+
17 18 0.009840 0.029754 0.00145 47.90 47.90 47.90 0.00000 0.000 1 0.00 0.00 6.56 -3.75 -6.55 3.63 0 0 0 0
|
202
|
+
19 23 0.012580 0.030449 0.00133 100.30 100.30 100.30 0.00000 0.000 1 0.00 0.00 -77.99 4.83 78.77 -3.07 0 0 0 0
|
203
|
+
19 23 0.012580 0.030449 0.00133 100.30 100.30 100.30 0.00000 0.000 1 0.00 0.00 -77.99 4.83 78.77 -3.07 0 0 0 0
|
204
|
+
19 23 0.012580 0.030449 0.00133 100.30 100.30 100.30 0.00000 0.000 1 0.00 0.00 -77.99 4.83 78.77 -3.07 0 0 0 0
|
205
|
+
19 23 0.012580 0.030449 0.00133 100.30 100.30 100.30 0.00000 0.000 1 0.00 0.00 -77.99 4.83 78.77 -3.07 0 0 0 0
|
206
|
+
20 23 0.042660 0.074844 0.00179 85.80 85.80 85.80 0.00000 0.000 1 0.00 0.00 -3.41 -11.81 3.47 11.75 0 0 0 0
|
207
|
+
20 30 0.027800 0.068487 0.00300 64.40 64.40 64.40 0.00000 0.000 1 0.00 0.00 -36.15 6.18 36.53 -5.53 0 0 0 0
|
208
|
+
20 32 0.014940 0.039916 0.00335 52.00 52.00 52.00 0.00000 0.000 1 0.00 0.00 -25.40 5.64 25.50 -5.69 0 0 0 0
|
209
|
+
22 23 0.004450 0.116580 0.00000 149.60 149.60 149.60 1.00000 0.000 1 0.00 0.00 18.68 -3.58 -18.66 4.01 0 0 0 0
|
210
|
+
22 23 0.004450 0.116580 0.00000 149.60 149.60 149.60 1.00000 0.000 1 0.00 0.00 18.68 -3.58 -18.66 4.01 0 0 0 0
|
211
|
+
22 23 0.004450 0.116580 0.00000 149.60 149.60 149.60 1.00000 0.000 1 0.00 0.00 18.68 -3.58 -18.66 4.01 0 0 0 0
|
212
|
+
22 25 0.002980 0.017679 0.00775 277.00 277.00 277.00 0.00000 0.000 1 0.00 0.00 -30.29 3.58 30.32 -4.19 0 0 0 0
|
213
|
+
22 37 0.006820 0.040841 0.01104 292.90 292.90 292.90 0.00000 0.000 1 0.00 0.00 -46.75 -1.08 46.90 0.88 0 0 0 0
|
214
|
+
23 34 0.030140 0.091720 0.00193 74.40 74.40 74.40 0.00000 0.000 1 0.00 0.00 -0.37 0.03 0.37 -0.22 0 0 0 0
|
215
|
+
23 34 0.030140 0.091720 0.00193 74.40 74.40 74.40 0.00000 0.000 1 0.00 0.00 -0.37 0.03 0.37 -0.22 0 0 0 0
|
216
|
+
24 26 0.016450 0.053480 0.00135 65.60 65.60 65.60 0.00000 0.000 1 0.00 0.00 -4.13 -1.96 4.13 1.83 0 0 0 0
|
217
|
+
24 26 0.016450 0.053480 0.00135 65.60 65.60 65.60 0.00000 0.000 1 0.00 0.00 -4.13 -1.96 4.13 1.83 0 0 0 0
|
218
|
+
24 33 0.016900 0.033191 0.01102 69.50 69.50 69.50 0.00000 0.000 1 0.00 0.00 -29.76 8.07 29.92 -8.84 0 0 0 0
|
219
|
+
24 36 0.018930 0.037551 0.00194 48.70 48.70 48.70 0.00000 0.000 1 0.00 0.00 -8.56 -4.16 8.58 4.00 0 0 0 0
|
220
|
+
25 26 0.005320 0.147265 0.00000 131.70 131.70 131.70 1.00000 0.000 1 0.00 0.00 36.07 0.68 -36.00 1.25 0 0 0 0
|
221
|
+
25 26 0.005320 0.147265 0.00000 131.70 131.70 131.70 1.00000 0.000 1 0.00 0.00 36.07 0.68 -36.00 1.25 0 0 0 0
|
222
|
+
25 35 0.004130 0.024420 0.00685 201.40 201.40 201.40 0.00000 0.000 1 0.00 0.00 -64.87 -2.68 65.04 3.03 0 0 0 0
|
223
|
+
25 35 0.004130 0.024420 0.00685 201.40 201.40 201.40 0.00000 0.000 1 0.00 0.00 -64.87 -2.68 65.04 3.03 0 0 0 0
|
224
|
+
25 37 0.004890 0.026145 0.00780 224.00 224.00 224.00 0.00000 0.000 1 0.00 0.00 -52.42 -3.14 52.55 3.08 0 0 0 0
|
225
|
+
25 37 0.004890 0.026145 0.00780 224.00 224.00 224.00 0.00000 0.000 1 0.00 0.00 -52.42 -3.14 52.55 3.08 0 0 0 0
|
226
|
+
27 29 0.023880 0.042832 0.00128 67.50 67.50 67.50 0.00000 0.000 1 0.00 0.00 53.65 -10.40 -52.94 11.54 0 0 0 0
|
227
|
+
28 30 0.011200 0.031396 0.00433 70.00 70.00 70.00 0.00000 0.000 1 0.00 0.00 36.53 0.34 -36.39 -0.35 0 0 0 0
|
228
|
+
28 30 0.011200 0.031396 0.00433 70.00 70.00 70.00 0.00000 0.000 1 0.00 0.00 36.53 0.34 -36.39 -0.35 0 0 0 0
|
229
|
+
28 31 0.051070 0.104683 0.01435 58.30 58.30 58.30 0.00000 0.000 1 0.00 0.00 33.41 -11.66 -32.78 11.52 0 0 0 0
|
230
|
+
29 30 0.014790 0.036656 0.00188 49.30 49.30 49.30 0.00000 0.000 1 0.00 0.00 12.82 -6.35 -12.79 6.24 0 0 0 0
|
231
|
+
29 32 0.023150 0.061347 0.00173 60.00 60.00 60.00 0.00000 0.000 1 0.00 0.00 32.42 -5.19 -32.17 5.69 0 0 0 0
|
232
|
+
31 33 0.026960 0.057612 0.00333 38.00 38.00 38.00 0.00000 0.000 1 0.00 0.00 23.16 -11.52 -22.98 11.58 0 0 0 0
|
233
|
+
33 34 0.035280 0.083927 0.00256 84.30 84.30 84.30 0.00000 0.000 1 0.00 0.00 -18.78 2.78 18.91 -2.73 0 0 0 0
|
234
|
+
33 34 0.035280 0.083927 0.00256 84.30 84.30 84.30 0.00000 0.000 1 0.00 0.00 -18.78 2.78 18.91 -2.73 0 0 0 0
|
235
|
+
35 37 0.001520 0.008374 0.00809 297.60 297.60 297.60 0.00000 0.000 1 0.00 0.00 25.22 -4.95 -25.21 4.20 0 0 0 0
|
236
|
+
];
|
237
|
+
|
238
|
+
%% bus names
|
239
|
+
mpc.bus_name = {
|
240
|
+
'ALOHA138';
|
241
|
+
'ALOHA69';
|
242
|
+
'FLOWER69';
|
243
|
+
'WAVE69';
|
244
|
+
'HONOLULU138';
|
245
|
+
'HONOLULU69';
|
246
|
+
'SURF69';
|
247
|
+
'KANEOHE69';
|
248
|
+
'TURTLE138';
|
249
|
+
'TURTLE69';
|
250
|
+
'MAHALO69';
|
251
|
+
'LYCHEE69';
|
252
|
+
'COCONUT69';
|
253
|
+
'KAILUA138';
|
254
|
+
'KAILUA69';
|
255
|
+
'PALM69';
|
256
|
+
'WAIMANALO69';
|
257
|
+
'VOLCANO69';
|
258
|
+
'PEARL CITY69';
|
259
|
+
'MILILANI69';
|
260
|
+
'AIEA69';
|
261
|
+
'WAIPAHU138';
|
262
|
+
'WAIPAHU69';
|
263
|
+
'KAPOLEI69';
|
264
|
+
'EWA BEACH138';
|
265
|
+
'EWA BEACH69';
|
266
|
+
'KAHUKU69';
|
267
|
+
'HALEIWA69';
|
268
|
+
'LAIE69';
|
269
|
+
'WAHIAWA69';
|
270
|
+
'WAIALUA69';
|
271
|
+
'HAUULA69';
|
272
|
+
'WAIANAE69';
|
273
|
+
'SCHOFIELD69';
|
274
|
+
'KALAELOA138';
|
275
|
+
'COGEN69';
|
276
|
+
'KAHE138';
|
277
|
+
};
|
278
|
+
|
279
|
+
%% Generator Unit Types
|
280
|
+
mpc.gentype = {
|
281
|
+
'UN';
|
282
|
+
'UN';
|
283
|
+
'UN';
|
284
|
+
'UN';
|
285
|
+
'UN';
|
286
|
+
'UN';
|
287
|
+
'UN';
|
288
|
+
'UN';
|
289
|
+
'UN';
|
290
|
+
'UN';
|
291
|
+
'UN';
|
292
|
+
'UN';
|
293
|
+
'UN';
|
294
|
+
'UN';
|
295
|
+
'UN';
|
296
|
+
'UN';
|
297
|
+
'UN';
|
298
|
+
'UN';
|
299
|
+
'UN';
|
300
|
+
'UN';
|
301
|
+
'UN';
|
302
|
+
'UN';
|
303
|
+
'UN';
|
304
|
+
'UN';
|
305
|
+
'UN';
|
306
|
+
'UN';
|
307
|
+
'UN';
|
308
|
+
'UN';
|
309
|
+
'UN';
|
310
|
+
'UN';
|
311
|
+
'UN';
|
312
|
+
'UN';
|
313
|
+
'UN';
|
314
|
+
'UN';
|
315
|
+
'UN';
|
316
|
+
'UN';
|
317
|
+
'UN';
|
318
|
+
'UN';
|
319
|
+
'UN';
|
320
|
+
'UN';
|
321
|
+
'UN';
|
322
|
+
'UN';
|
323
|
+
'UN';
|
324
|
+
'UN';
|
325
|
+
'UN';
|
326
|
+
};
|
327
|
+
|
328
|
+
%% Generator Fuel Types
|
329
|
+
mpc.genfuel = {
|
330
|
+
'wood';
|
331
|
+
'wood';
|
332
|
+
'wood';
|
333
|
+
'wood';
|
334
|
+
'dfo';
|
335
|
+
'solar';
|
336
|
+
'dfo';
|
337
|
+
'dfo';
|
338
|
+
'dfo';
|
339
|
+
'dfo';
|
340
|
+
'dfo';
|
341
|
+
'dfo';
|
342
|
+
'dfo';
|
343
|
+
'solar';
|
344
|
+
'solar';
|
345
|
+
'solar';
|
346
|
+
'wind';
|
347
|
+
'wind';
|
348
|
+
'solar';
|
349
|
+
'wind';
|
350
|
+
'solar';
|
351
|
+
'wood';
|
352
|
+
'wood';
|
353
|
+
'wood';
|
354
|
+
'wood';
|
355
|
+
'wood';
|
356
|
+
'wood';
|
357
|
+
'wood';
|
358
|
+
'wood';
|
359
|
+
'coal';
|
360
|
+
'dfo';
|
361
|
+
'dfo';
|
362
|
+
'dfo';
|
363
|
+
'dfo';
|
364
|
+
'dfo';
|
365
|
+
'dfo';
|
366
|
+
'dfo';
|
367
|
+
'dfo';
|
368
|
+
'dfo';
|
369
|
+
'dfo';
|
370
|
+
'dfo';
|
371
|
+
'dfo';
|
372
|
+
'dfo';
|
373
|
+
'dfo';
|
374
|
+
'dfo';
|
375
|
+
};
|
@@ -8,6 +8,7 @@ function mpc = case5
|
|
8
8
|
|
9
9
|
% Created by Rui Bo in 2006, modified in 2010, 2014.
|
10
10
|
% Distributed with permission.
|
11
|
+
% Make up two sections gentype, genfuel, and bus_name for testing purposes.
|
11
12
|
|
12
13
|
% MATPOWER
|
13
14
|
|
@@ -60,3 +61,27 @@ mpc.gencost = [
|
|
60
61
|
2 0 0 2 40 0;
|
61
62
|
2 0 0 2 10 0;
|
62
63
|
];
|
64
|
+
|
65
|
+
mpc.gentype = {
|
66
|
+
'ST';
|
67
|
+
'ST';
|
68
|
+
'ST';
|
69
|
+
'ST';
|
70
|
+
'ST';
|
71
|
+
};
|
72
|
+
|
73
|
+
mpc.genfuel = {
|
74
|
+
'coal';
|
75
|
+
'coal';
|
76
|
+
'coal';
|
77
|
+
'coal';
|
78
|
+
'coal';
|
79
|
+
};
|
80
|
+
|
81
|
+
mpc.bus_name = {
|
82
|
+
'A';
|
83
|
+
'B';
|
84
|
+
'C';
|
85
|
+
'D';
|
86
|
+
'E';
|
87
|
+
};
|
@@ -2,9 +2,10 @@
|
|
2
2
|
MATPOWER parser.
|
3
3
|
"""
|
4
4
|
import logging
|
5
|
+
import re
|
5
6
|
import numpy as np
|
6
7
|
|
7
|
-
from andes.io
|
8
|
+
from andes.io import read_file_like
|
8
9
|
from andes.shared import deg2rad, rad2deg
|
9
10
|
|
10
11
|
logger = logging.getLogger(__name__)
|
@@ -29,6 +30,151 @@ def read(system, file):
|
|
29
30
|
return mpc2system(mpc, system)
|
30
31
|
|
31
32
|
|
33
|
+
def m2mpc(infile: str) -> dict:
|
34
|
+
"""
|
35
|
+
Parse a MATPOWER file and return a dictionary containing the parsed data.
|
36
|
+
|
37
|
+
This function processes MATPOWER case files and extracts relevant fields
|
38
|
+
into a structured dictionary. It is revised from ``andes.io.matpower.m2mpc``.
|
39
|
+
|
40
|
+
Supported fields include:
|
41
|
+
- `baseMVA`: The system base power in MVA.
|
42
|
+
- `bus`: Bus data, including voltage, load, and generation information.
|
43
|
+
- `bus_name`: Names of the buses (if available).
|
44
|
+
- `gen`: Generator data, including power limits and voltage setpoints.
|
45
|
+
- `branch`: Branch data, including line impedances and ratings.
|
46
|
+
- `gencost`: Generator cost data (parsed but not used in this implementation).
|
47
|
+
- `areas`: Area data (parsed but not used in this implementation).
|
48
|
+
- `gentype`: Generator type information (if available).
|
49
|
+
- `genfuel`: Generator fuel type information (if available).
|
50
|
+
|
51
|
+
Parameters
|
52
|
+
----------
|
53
|
+
infile : str
|
54
|
+
Path to the MATPOWER file to be parsed.
|
55
|
+
|
56
|
+
Returns
|
57
|
+
-------
|
58
|
+
dict
|
59
|
+
A dictionary containing the parsed MATPOWER data, where keys correspond
|
60
|
+
to MATPOWER struct names and values are numpy arrays or lists.
|
61
|
+
"""
|
62
|
+
|
63
|
+
func = re.compile(r'function\s')
|
64
|
+
mva = re.compile(r'\s*mpc.baseMVA\s*=\s*')
|
65
|
+
bus = re.compile(r'\s*mpc.bus\s*=\s*\[?')
|
66
|
+
gen = re.compile(r'\s*mpc.gen\s*=\s*\[')
|
67
|
+
branch = re.compile(r'\s*mpc.branch\s*=\s*\[')
|
68
|
+
area = re.compile(r'\s*mpc.areas\s*=\s*\[')
|
69
|
+
gencost = re.compile(r'\s*mpc.gencost\s*=\s*\[')
|
70
|
+
bus_name = re.compile(r'\s*mpc.bus_name\s*=\s*{')
|
71
|
+
gentype = re.compile(r'\s*mpc.gentype\s*=\s*{')
|
72
|
+
genfuel = re.compile(r'\s*mpc.genfuel\s*=\s*{')
|
73
|
+
end = re.compile(r'\s*[\];}]')
|
74
|
+
has_digit = re.compile(r'.*\d+\s*]?;?')
|
75
|
+
|
76
|
+
field = None
|
77
|
+
info = True
|
78
|
+
|
79
|
+
mpc = {
|
80
|
+
'version': 2, # not in use
|
81
|
+
'baseMVA': 100,
|
82
|
+
'bus': [],
|
83
|
+
'gen': [],
|
84
|
+
'branch': [],
|
85
|
+
'area': [],
|
86
|
+
'gencost': [],
|
87
|
+
'bus_name': [],
|
88
|
+
'gentype': [],
|
89
|
+
'genfuel': [],
|
90
|
+
}
|
91
|
+
|
92
|
+
input_list = read_file_like(infile)
|
93
|
+
|
94
|
+
for line in input_list:
|
95
|
+
line = line.strip().rstrip(';')
|
96
|
+
if not line:
|
97
|
+
continue
|
98
|
+
elif func.search(line): # skip function declaration
|
99
|
+
continue
|
100
|
+
elif len(line.split('%')[0]) == 0:
|
101
|
+
if info is True:
|
102
|
+
logger.info(line[1:])
|
103
|
+
info = False
|
104
|
+
else:
|
105
|
+
continue
|
106
|
+
elif mva.search(line):
|
107
|
+
mpc["baseMVA"] = float(line.split('=')[1])
|
108
|
+
|
109
|
+
if not field:
|
110
|
+
if bus.search(line):
|
111
|
+
field = 'bus'
|
112
|
+
elif gen.search(line):
|
113
|
+
field = 'gen'
|
114
|
+
elif branch.search(line):
|
115
|
+
field = 'branch'
|
116
|
+
elif area.search(line):
|
117
|
+
field = 'area'
|
118
|
+
elif gencost.search(line):
|
119
|
+
field = 'gencost'
|
120
|
+
elif bus_name.search(line):
|
121
|
+
field = 'bus_name'
|
122
|
+
elif gentype.search(line):
|
123
|
+
field = 'gentype'
|
124
|
+
elif genfuel.search(line):
|
125
|
+
field = 'genfuel'
|
126
|
+
else:
|
127
|
+
continue
|
128
|
+
elif end.search(line):
|
129
|
+
field = None
|
130
|
+
continue
|
131
|
+
|
132
|
+
# parse mpc sections
|
133
|
+
if field:
|
134
|
+
if line.find('=') >= 0:
|
135
|
+
line = line.split('=')[1]
|
136
|
+
if line.find('[') >= 0:
|
137
|
+
line = re.sub(r'\[', '', line)
|
138
|
+
elif line.find('{') >= 0:
|
139
|
+
line = re.sub(r'{', '', line)
|
140
|
+
|
141
|
+
if field in ['bus_name', 'gentype', 'genfuel']:
|
142
|
+
# Handle string-based fields
|
143
|
+
line = line.split(';')
|
144
|
+
data = [i.strip('\'').strip() for i in line if i.strip()]
|
145
|
+
mpc[field].extend(data)
|
146
|
+
else:
|
147
|
+
if not has_digit.search(line):
|
148
|
+
continue
|
149
|
+
line = line.split('%')[0].strip()
|
150
|
+
line = line.split(';')
|
151
|
+
for item in line:
|
152
|
+
if not has_digit.search(item):
|
153
|
+
continue
|
154
|
+
try:
|
155
|
+
data = np.array([float(val) for val in item.split()])
|
156
|
+
except Exception as e:
|
157
|
+
logger.error('Error parsing "%s"', infile)
|
158
|
+
raise e
|
159
|
+
mpc[field].append(data)
|
160
|
+
|
161
|
+
# convert mpc to np array
|
162
|
+
mpc_array = dict()
|
163
|
+
for key, val in mpc.items():
|
164
|
+
if isinstance(val, (float, int)):
|
165
|
+
mpc_array[key] = val
|
166
|
+
elif isinstance(val, list):
|
167
|
+
if len(val) == 0:
|
168
|
+
continue
|
169
|
+
if key in ['bus_name', 'gentype', 'genfuel']:
|
170
|
+
mpc_array[key] = np.array(val, dtype=object)
|
171
|
+
else:
|
172
|
+
mpc_array[key] = np.array(val)
|
173
|
+
else:
|
174
|
+
raise NotImplementedError("Unknown type for mpc, ", type(val))
|
175
|
+
return mpc_array
|
176
|
+
|
177
|
+
|
32
178
|
def mpc2system(mpc: dict, system) -> bool:
|
33
179
|
"""
|
34
180
|
Load an mpc dict into an empty AMS system.
|
@@ -97,7 +243,20 @@ def mpc2system(mpc: dict, system) -> bool:
|
|
97
243
|
mpc_gen[:, 19] = system.PV.Rq.default * base_mva / 60
|
98
244
|
else:
|
99
245
|
mpc_gen = mpc['gen']
|
100
|
-
|
246
|
+
|
247
|
+
# Ensure 'gentype' and 'genfuel' keys exist in mpc, with default values if missing
|
248
|
+
gentype = mpc.get('gentype', [''] * mpc_gen.shape[0])
|
249
|
+
genfuel = mpc.get('genfuel', [''] * mpc_gen.shape[0])
|
250
|
+
|
251
|
+
# Validate lengths of 'gentype' and 'genfuel' against the number of generators
|
252
|
+
if len(gentype) != mpc_gen.shape[0]:
|
253
|
+
raise ValueError(
|
254
|
+
f"'gentype' length ({len(gentype)}) does not match the number of generators ({mpc_gen.shape[0]})")
|
255
|
+
if len(genfuel) != mpc_gen.shape[0]:
|
256
|
+
raise ValueError(
|
257
|
+
f"'genfuel' length ({len(genfuel)}) does not match the number of generators ({mpc_gen.shape[0]})")
|
258
|
+
|
259
|
+
for data, gt, gf in zip(mpc_gen, gentype, genfuel):
|
101
260
|
# bus pg qg qmax qmin vg mbase status pmax pmin
|
102
261
|
# 0 1 2 3 4 5 6 7 8 9
|
103
262
|
# pc1 pc2 qc1min qc1max qc2min qc2max ramp_agc ramp_10
|
@@ -142,7 +301,7 @@ def mpc2system(mpc: dict, system) -> bool:
|
|
142
301
|
Qc2min=qc2min, Qc2max=qc2max,
|
143
302
|
Ragc=ramp_agc, R10=ramp_10,
|
144
303
|
R30=ramp_30, Rq=ramp_q,
|
145
|
-
apf=apf)
|
304
|
+
apf=apf, gentype=gt, genfuel=gf)
|
146
305
|
else:
|
147
306
|
system.add('PV', idx=gen_idx, bus=bus_idx, busr=bus_idx,
|
148
307
|
name=None,
|
@@ -155,7 +314,7 @@ def mpc2system(mpc: dict, system) -> bool:
|
|
155
314
|
Qc2min=qc2min, Qc2max=qc2max,
|
156
315
|
Ragc=ramp_agc, R10=ramp_10,
|
157
316
|
R30=ramp_30, Rq=ramp_q,
|
158
|
-
apf=apf)
|
317
|
+
apf=apf, gentype=gt, genfuel=gf)
|
159
318
|
|
160
319
|
for data in mpc['branch']:
|
161
320
|
# fbus tbus r x b rateA rateB rateC ratio angle
|
@@ -204,9 +363,8 @@ def mpc2system(mpc: dict, system) -> bool:
|
|
204
363
|
gen_idx = np.arange(mpc['gen'].shape[0]) + 1
|
205
364
|
mpc_cost = mpc['gencost']
|
206
365
|
if mpc_cost[0, 0] == 1:
|
207
|
-
logger.warning("Type 1 gencost detected
|
208
|
-
"
|
209
|
-
"Default type 2 cost parameters will be used as a fallback."
|
366
|
+
logger.warning("Type 1 gencost detected, which is not supported in AMS.\n"
|
367
|
+
"Default type 2 cost parameters will be used as a fallback.\n"
|
210
368
|
"It is recommended to manually convert the gencost data to type 2.")
|
211
369
|
mpc_cost = np.repeat(np.array([[2, 0, 0, 3, 0, 0, 0]]),
|
212
370
|
mpc_cost.shape[0], axis=0)
|