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.
- ams/__init__.py +4 -11
- ams/_version.py +4 -4
- ams/cases/5bus/pjm5bus_demo.xlsx +0 -0
- ams/cases/5bus/pjm5bus_jumper.xlsx +0 -0
- ams/cases/5bus/pjm5bus_uced.json +1062 -0
- ams/cases/5bus/pjm5bus_uced.xlsx +0 -0
- ams/cases/5bus/pjm5bus_uced_esd1.xlsx +0 -0
- ams/cases/5bus/pjm5bus_uced_ev.xlsx +0 -0
- ams/cases/ieee123/ieee123.xlsx +0 -0
- ams/cases/ieee123/ieee123_regcv1.xlsx +0 -0
- ams/cases/ieee14/ieee14.json +1166 -0
- ams/cases/ieee14/ieee14.raw +92 -0
- ams/cases/ieee14/ieee14_conn.xlsx +0 -0
- ams/cases/ieee14/ieee14_uced.xlsx +0 -0
- ams/cases/ieee39/ieee39.xlsx +0 -0
- ams/cases/ieee39/ieee39_uced.xlsx +0 -0
- ams/cases/ieee39/ieee39_uced_esd1.xlsx +0 -0
- ams/cases/ieee39/ieee39_uced_pvd1.xlsx +0 -0
- ams/cases/ieee39/ieee39_uced_vis.xlsx +0 -0
- ams/cases/matpower/benchmark.json +1594 -0
- ams/cases/matpower/case118.m +787 -0
- ams/cases/matpower/case14.m +129 -0
- ams/cases/matpower/case300.m +1315 -0
- ams/cases/matpower/case39.m +205 -0
- ams/cases/matpower/case5.m +62 -0
- ams/cases/matpower/case_ACTIVSg2000.m +9460 -0
- ams/cases/npcc/npcc.m +644 -0
- ams/cases/npcc/npcc_uced.xlsx +0 -0
- ams/cases/pglib/pglib_opf_case39_epri__api.m +243 -0
- ams/cases/wecc/wecc.m +714 -0
- ams/cases/wecc/wecc_uced.xlsx +0 -0
- ams/cli.py +6 -0
- ams/core/__init__.py +2 -0
- ams/core/documenter.py +652 -0
- ams/core/matprocessor.py +782 -0
- ams/core/model.py +330 -0
- ams/core/param.py +322 -0
- ams/core/service.py +918 -0
- ams/core/symprocessor.py +224 -0
- ams/core/var.py +59 -0
- ams/extension/__init__.py +5 -0
- ams/extension/eva.py +401 -0
- ams/interface.py +1085 -0
- ams/io/__init__.py +133 -0
- ams/io/json.py +82 -0
- ams/io/matpower.py +406 -0
- ams/io/psse.py +6 -0
- ams/io/pypower.py +103 -0
- ams/io/xlsx.py +80 -0
- ams/main.py +83 -4
- ams/models/__init__.py +24 -0
- ams/models/area.py +40 -0
- ams/models/bus.py +52 -0
- ams/models/cost.py +169 -0
- ams/models/distributed/__init__.py +3 -0
- ams/models/distributed/esd1.py +71 -0
- ams/models/distributed/ev.py +60 -0
- ams/models/distributed/pvd1.py +67 -0
- ams/models/group.py +231 -0
- ams/models/info.py +26 -0
- ams/models/line.py +238 -0
- ams/models/renewable/__init__.py +5 -0
- ams/models/renewable/regc.py +119 -0
- ams/models/reserve.py +94 -0
- ams/models/shunt.py +14 -0
- ams/models/static/__init__.py +2 -0
- ams/models/static/gen.py +165 -0
- ams/models/static/pq.py +61 -0
- ams/models/timeslot.py +69 -0
- ams/models/zone.py +49 -0
- ams/opt/__init__.py +12 -0
- ams/opt/constraint.py +175 -0
- ams/opt/exprcalc.py +127 -0
- ams/opt/expression.py +188 -0
- ams/opt/objective.py +174 -0
- ams/opt/omodel.py +432 -0
- ams/opt/optzbase.py +192 -0
- ams/opt/param.py +156 -0
- ams/opt/var.py +233 -0
- ams/pypower/__init__.py +8 -0
- ams/pypower/_compat.py +9 -0
- ams/pypower/core/__init__.py +8 -0
- ams/pypower/core/pips.py +894 -0
- ams/pypower/core/ppoption.py +244 -0
- ams/pypower/core/ppver.py +18 -0
- ams/pypower/core/solver.py +2451 -0
- ams/pypower/eps.py +6 -0
- ams/pypower/idx.py +174 -0
- ams/pypower/io.py +604 -0
- ams/pypower/make/__init__.py +11 -0
- ams/pypower/make/matrices.py +665 -0
- ams/pypower/make/pdv.py +506 -0
- ams/pypower/routines/__init__.py +7 -0
- ams/pypower/routines/cpf.py +513 -0
- ams/pypower/routines/cpf_callbacks.py +114 -0
- ams/pypower/routines/opf.py +1803 -0
- ams/pypower/routines/opffcns.py +1946 -0
- ams/pypower/routines/pflow.py +852 -0
- ams/pypower/toggle.py +1098 -0
- ams/pypower/utils.py +293 -0
- ams/report.py +212 -50
- ams/routines/__init__.py +23 -0
- ams/routines/acopf.py +117 -0
- ams/routines/cpf.py +65 -0
- ams/routines/dcopf.py +241 -0
- ams/routines/dcpf.py +209 -0
- ams/routines/dcpf0.py +196 -0
- ams/routines/dopf.py +150 -0
- ams/routines/ed.py +312 -0
- ams/routines/pflow.py +255 -0
- ams/routines/pflow0.py +113 -0
- ams/routines/pflow1.py +156 -0
- ams/routines/routine.py +1033 -0
- ams/routines/rted.py +519 -0
- ams/routines/type.py +160 -0
- ams/routines/uc.py +376 -0
- ams/shared.py +34 -9
- ams/system.py +61 -22
- ams/utils/__init__.py +3 -0
- ams/utils/misc.py +77 -0
- ams/utils/paths.py +257 -0
- docs/Makefile +21 -0
- docs/build/doctrees/nbsphinx/_examples_demo_demo_AGC_20_1.png +0 -0
- docs/build/doctrees/nbsphinx/_examples_demo_demo_AGC_37_1.png +0 -0
- docs/build/doctrees/nbsphinx/_examples_demo_demo_AGC_39_1.png +0 -0
- docs/build/html/_images/_examples_demo_demo_AGC_20_1.png +0 -0
- docs/build/html/_images/_examples_demo_demo_AGC_37_1.png +0 -0
- docs/build/html/_images/_examples_demo_demo_AGC_39_1.png +0 -0
- docs/build/html/_images/xlsx.png +0 -0
- docs/build/html/_static/file.png +0 -0
- docs/build/html/_static/minus.png +0 -0
- docs/build/html/_static/plus.png +0 -0
- docs/make.bat +35 -0
- docs/source/_generated/_generated/ams.core.model.Model.alter.rst +6 -0
- docs/source/_generated/_generated/ams.core.model.Model.class_name.rst +6 -0
- docs/source/_generated/_generated/ams.core.model.Model.doc.rst +6 -0
- docs/source/_generated/_generated/ams.core.model.Model.get.rst +6 -0
- docs/source/_generated/_generated/ams.core.model.Model.get_idx.rst +6 -0
- docs/source/_generated/_generated/ams.core.model.Model.idx2uid.rst +6 -0
- docs/source/_generated/_generated/ams.core.model.Model.list2array.rst +6 -0
- docs/source/_generated/_generated/ams.core.model.Model.set.rst +6 -0
- docs/source/_generated/_generated/ams.core.model.Model.set_backref.rst +6 -0
- docs/source/_generated/_generated/ams.core.param.RParam.class_name.rst +6 -0
- docs/source/_generated/_generated/ams.core.param.RParam.dtype.rst +6 -0
- docs/source/_generated/_generated/ams.core.param.RParam.evaluate.rst +6 -0
- docs/source/_generated/_generated/ams.core.param.RParam.get_idx.rst +6 -0
- docs/source/_generated/_generated/ams.core.param.RParam.n.rst +6 -0
- docs/source/_generated/_generated/ams.core.param.RParam.parse.rst +6 -0
- docs/source/_generated/_generated/ams.core.param.RParam.shape.rst +6 -0
- docs/source/_generated/_generated/ams.core.param.RParam.size.rst +6 -0
- docs/source/_generated/_generated/ams.core.param.RParam.update.rst +6 -0
- docs/source/_generated/_generated/ams.core.param.RParam.v.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.LoadScale.assign_memory.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.LoadScale.class_name.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.LoadScale.evaluate.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.LoadScale.get_names.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.LoadScale.n.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.LoadScale.parse.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.LoadScale.shape.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.LoadScale.size.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.LoadScale.update.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.LoadScale.v.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.MinDur.assign_memory.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.MinDur.class_name.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.MinDur.evaluate.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.MinDur.get_names.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.MinDur.n.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.MinDur.parse.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.MinDur.shape.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.MinDur.size.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.MinDur.update.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.MinDur.v.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.MinDur.v0.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.MinDur.v1.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumExpandDim.assign_memory.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumExpandDim.class_name.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumExpandDim.evaluate.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumExpandDim.get_names.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumExpandDim.n.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumExpandDim.parse.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumExpandDim.shape.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumExpandDim.size.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumExpandDim.update.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumExpandDim.v.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumExpandDim.v0.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumExpandDim.v1.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumHstack.assign_memory.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumHstack.class_name.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumHstack.evaluate.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumHstack.get_names.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumHstack.n.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumHstack.parse.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumHstack.shape.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumHstack.size.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumHstack.update.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumHstack.v.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumHstack.v0.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumHstack.v1.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumOp.assign_memory.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumOp.class_name.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumOp.evaluate.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumOp.get_names.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumOp.n.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumOp.parse.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumOp.shape.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumOp.size.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumOp.update.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumOp.v.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumOp.v0.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumOp.v1.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumOpDual.assign_memory.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumOpDual.class_name.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumOpDual.evaluate.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumOpDual.get_names.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumOpDual.n.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumOpDual.parse.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumOpDual.shape.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumOpDual.size.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumOpDual.update.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumOpDual.v.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumOpDual.v0.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumOpDual.v1.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.RBaseService.assign_memory.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.RBaseService.class_name.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.RBaseService.evaluate.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.RBaseService.get_names.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.RBaseService.n.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.RBaseService.parse.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.RBaseService.shape.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.RBaseService.size.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.RBaseService.update.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.RBaseService.v.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ROperationService.assign_memory.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ROperationService.class_name.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ROperationService.evaluate.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ROperationService.get_names.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ROperationService.n.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ROperationService.parse.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ROperationService.shape.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ROperationService.size.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ROperationService.update.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ROperationService.v.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.RampSub.assign_memory.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.RampSub.class_name.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.RampSub.evaluate.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.RampSub.get_names.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.RampSub.n.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.RampSub.parse.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.RampSub.shape.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.RampSub.size.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.RampSub.update.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.RampSub.v.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.RampSub.v0.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.RampSub.v1.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ValueService.assign_memory.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ValueService.class_name.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ValueService.evaluate.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ValueService.get_names.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ValueService.n.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ValueService.parse.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ValueService.shape.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ValueService.size.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ValueService.update.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ValueService.v.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.VarReduction.assign_memory.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.VarReduction.class_name.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.VarReduction.evaluate.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.VarReduction.get_names.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.VarReduction.n.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.VarReduction.parse.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.VarReduction.shape.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.VarReduction.size.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.VarReduction.update.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.VarReduction.v.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.VarReduction.v0.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.VarReduction.v1.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.VarSelect.assign_memory.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.VarSelect.class_name.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.VarSelect.evaluate.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.VarSelect.get_names.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.VarSelect.n.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.VarSelect.parse.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.VarSelect.shape.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.VarSelect.size.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.VarSelect.update.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.VarSelect.v.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.VarSelect.v0.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.VarSelect.v1.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ZonalSum.assign_memory.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ZonalSum.class_name.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ZonalSum.evaluate.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ZonalSum.get_names.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ZonalSum.n.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ZonalSum.parse.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ZonalSum.shape.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ZonalSum.size.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ZonalSum.update.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ZonalSum.v.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ZonalSum.v0.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ZonalSum.v1.rst +6 -0
- docs/source/_generated/_generated/ams.interface.Dynamic.is_tds.rst +6 -0
- docs/source/_generated/_generated/ams.interface.Dynamic.link_andes.rst +6 -0
- docs/source/_generated/_generated/ams.interface.Dynamic.receive.rst +6 -0
- docs/source/_generated/_generated/ams.interface.Dynamic.send.rst +6 -0
- docs/source/_generated/_generated/ams.opt.constraint.Constraint.class_name.rst +6 -0
- docs/source/_generated/_generated/ams.opt.constraint.Constraint.e.rst +6 -0
- docs/source/_generated/_generated/ams.opt.constraint.Constraint.evaluate.rst +6 -0
- docs/source/_generated/_generated/ams.opt.constraint.Constraint.n.rst +6 -0
- docs/source/_generated/_generated/ams.opt.constraint.Constraint.parse.rst +6 -0
- docs/source/_generated/_generated/ams.opt.constraint.Constraint.shape.rst +6 -0
- docs/source/_generated/_generated/ams.opt.constraint.Constraint.size.rst +6 -0
- docs/source/_generated/_generated/ams.opt.constraint.Constraint.v.rst +6 -0
- docs/source/_generated/_generated/ams.opt.exprcalc.ExpressionCalc.class_name.rst +6 -0
- docs/source/_generated/_generated/ams.opt.exprcalc.ExpressionCalc.e.rst +6 -0
- docs/source/_generated/_generated/ams.opt.exprcalc.ExpressionCalc.evaluate.rst +6 -0
- docs/source/_generated/_generated/ams.opt.exprcalc.ExpressionCalc.get_idx.rst +6 -0
- docs/source/_generated/_generated/ams.opt.exprcalc.ExpressionCalc.n.rst +6 -0
- docs/source/_generated/_generated/ams.opt.exprcalc.ExpressionCalc.parse.rst +6 -0
- docs/source/_generated/_generated/ams.opt.exprcalc.ExpressionCalc.shape.rst +6 -0
- docs/source/_generated/_generated/ams.opt.exprcalc.ExpressionCalc.size.rst +6 -0
- docs/source/_generated/_generated/ams.opt.exprcalc.ExpressionCalc.v.rst +6 -0
- docs/source/_generated/_generated/ams.opt.expression.Expression.class_name.rst +6 -0
- docs/source/_generated/_generated/ams.opt.expression.Expression.e.rst +6 -0
- docs/source/_generated/_generated/ams.opt.expression.Expression.evaluate.rst +6 -0
- docs/source/_generated/_generated/ams.opt.expression.Expression.get_idx.rst +6 -0
- docs/source/_generated/_generated/ams.opt.expression.Expression.n.rst +6 -0
- docs/source/_generated/_generated/ams.opt.expression.Expression.parse.rst +6 -0
- docs/source/_generated/_generated/ams.opt.expression.Expression.shape.rst +6 -0
- docs/source/_generated/_generated/ams.opt.expression.Expression.size.rst +6 -0
- docs/source/_generated/_generated/ams.opt.expression.Expression.v.rst +6 -0
- docs/source/_generated/_generated/ams.opt.objective.Objective.class_name.rst +6 -0
- docs/source/_generated/_generated/ams.opt.objective.Objective.e.rst +6 -0
- docs/source/_generated/_generated/ams.opt.objective.Objective.evaluate.rst +6 -0
- docs/source/_generated/_generated/ams.opt.objective.Objective.n.rst +6 -0
- docs/source/_generated/_generated/ams.opt.objective.Objective.parse.rst +6 -0
- docs/source/_generated/_generated/ams.opt.objective.Objective.shape.rst +6 -0
- docs/source/_generated/_generated/ams.opt.objective.Objective.size.rst +6 -0
- docs/source/_generated/_generated/ams.opt.objective.Objective.v.rst +6 -0
- docs/source/_generated/_generated/ams.opt.omodel.OModel.class_name.rst +6 -0
- docs/source/_generated/_generated/ams.opt.omodel.OModel.evaluate.rst +6 -0
- docs/source/_generated/_generated/ams.opt.omodel.OModel.finalize.rst +6 -0
- docs/source/_generated/_generated/ams.opt.omodel.OModel.init.rst +6 -0
- docs/source/_generated/_generated/ams.opt.omodel.OModel.initialized.rst +6 -0
- docs/source/_generated/_generated/ams.opt.omodel.OModel.parse.rst +6 -0
- docs/source/_generated/_generated/ams.opt.omodel.OModel.update.rst +6 -0
- docs/source/_generated/_generated/ams.opt.omodel.OModelBase.class_name.rst +6 -0
- docs/source/_generated/_generated/ams.opt.omodel.OModelBase.evaluate.rst +6 -0
- docs/source/_generated/_generated/ams.opt.omodel.OModelBase.finalize.rst +6 -0
- docs/source/_generated/_generated/ams.opt.omodel.OModelBase.init.rst +6 -0
- docs/source/_generated/_generated/ams.opt.omodel.OModelBase.initialized.rst +6 -0
- docs/source/_generated/_generated/ams.opt.omodel.OModelBase.parse.rst +6 -0
- docs/source/_generated/_generated/ams.opt.omodel.OModelBase.update.rst +6 -0
- docs/source/_generated/_generated/ams.opt.optbase.OptzBase.class_name.rst +6 -0
- docs/source/_generated/_generated/ams.opt.optbase.OptzBase.evaluate.rst +6 -0
- docs/source/_generated/_generated/ams.opt.optbase.OptzBase.n.rst +6 -0
- docs/source/_generated/_generated/ams.opt.optbase.OptzBase.parse.rst +6 -0
- docs/source/_generated/_generated/ams.opt.optbase.OptzBase.shape.rst +6 -0
- docs/source/_generated/_generated/ams.opt.optbase.OptzBase.size.rst +6 -0
- docs/source/_generated/_generated/ams.opt.param.Param.class_name.rst +6 -0
- docs/source/_generated/_generated/ams.opt.param.Param.evaluate.rst +6 -0
- docs/source/_generated/_generated/ams.opt.param.Param.n.rst +6 -0
- docs/source/_generated/_generated/ams.opt.param.Param.parse.rst +6 -0
- docs/source/_generated/_generated/ams.opt.param.Param.shape.rst +6 -0
- docs/source/_generated/_generated/ams.opt.param.Param.size.rst +6 -0
- docs/source/_generated/_generated/ams.opt.param.Param.update.rst +6 -0
- docs/source/_generated/_generated/ams.opt.var.Var.class_name.rst +6 -0
- docs/source/_generated/_generated/ams.opt.var.Var.evaluate.rst +6 -0
- docs/source/_generated/_generated/ams.opt.var.Var.get_idx.rst +6 -0
- docs/source/_generated/_generated/ams.opt.var.Var.n.rst +6 -0
- docs/source/_generated/_generated/ams.opt.var.Var.parse.rst +6 -0
- docs/source/_generated/_generated/ams.opt.var.Var.shape.rst +6 -0
- docs/source/_generated/_generated/ams.opt.var.Var.size.rst +6 -0
- docs/source/_generated/_generated/ams.opt.var.Var.v.rst +6 -0
- docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.addConstrs.rst +6 -0
- docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.addRParam.rst +6 -0
- docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.addService.rst +6 -0
- docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.addVars.rst +6 -0
- docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.class_name.rst +6 -0
- docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.dc2ac.rst +6 -0
- docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.disable.rst +6 -0
- docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.doc.rst +6 -0
- docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.enable.rst +6 -0
- docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.export_csv.rst +6 -0
- docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.get.rst +6 -0
- docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.init.rst +6 -0
- docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.run.rst +6 -0
- docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.set.rst +6 -0
- docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.solve.rst +6 -0
- docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.summary.rst +6 -0
- docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.unpack.rst +6 -0
- docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.update.rst +6 -0
- docs/source/_generated/_generated/ams.routines.pflow.PFlow.addConstrs.rst +6 -0
- docs/source/_generated/_generated/ams.routines.pflow.PFlow.addRParam.rst +6 -0
- docs/source/_generated/_generated/ams.routines.pflow.PFlow.addService.rst +6 -0
- docs/source/_generated/_generated/ams.routines.pflow.PFlow.addVars.rst +6 -0
- docs/source/_generated/_generated/ams.routines.pflow.PFlow.class_name.rst +6 -0
- docs/source/_generated/_generated/ams.routines.pflow.PFlow.dc2ac.rst +6 -0
- docs/source/_generated/_generated/ams.routines.pflow.PFlow.disable.rst +6 -0
- docs/source/_generated/_generated/ams.routines.pflow.PFlow.doc.rst +6 -0
- docs/source/_generated/_generated/ams.routines.pflow.PFlow.enable.rst +6 -0
- docs/source/_generated/_generated/ams.routines.pflow.PFlow.export_csv.rst +6 -0
- docs/source/_generated/_generated/ams.routines.pflow.PFlow.get.rst +6 -0
- docs/source/_generated/_generated/ams.routines.pflow.PFlow.init.rst +6 -0
- docs/source/_generated/_generated/ams.routines.pflow.PFlow.run.rst +6 -0
- docs/source/_generated/_generated/ams.routines.pflow.PFlow.set.rst +6 -0
- docs/source/_generated/_generated/ams.routines.pflow.PFlow.solve.rst +6 -0
- docs/source/_generated/_generated/ams.routines.pflow.PFlow.summary.rst +6 -0
- docs/source/_generated/_generated/ams.routines.pflow.PFlow.unpack.rst +6 -0
- docs/source/_generated/_generated/ams.routines.pflow.PFlow.update.rst +6 -0
- docs/source/_generated/_generated/ams.routines.routine.RoutineBase.addConstrs.rst +6 -0
- docs/source/_generated/_generated/ams.routines.routine.RoutineBase.addRParam.rst +6 -0
- docs/source/_generated/_generated/ams.routines.routine.RoutineBase.addService.rst +6 -0
- docs/source/_generated/_generated/ams.routines.routine.RoutineBase.addVars.rst +6 -0
- docs/source/_generated/_generated/ams.routines.routine.RoutineBase.class_name.rst +6 -0
- docs/source/_generated/_generated/ams.routines.routine.RoutineBase.dc2ac.rst +6 -0
- docs/source/_generated/_generated/ams.routines.routine.RoutineBase.disable.rst +6 -0
- docs/source/_generated/_generated/ams.routines.routine.RoutineBase.doc.rst +6 -0
- docs/source/_generated/_generated/ams.routines.routine.RoutineBase.enable.rst +6 -0
- docs/source/_generated/_generated/ams.routines.routine.RoutineBase.export_csv.rst +6 -0
- docs/source/_generated/_generated/ams.routines.routine.RoutineBase.get.rst +6 -0
- docs/source/_generated/_generated/ams.routines.routine.RoutineBase.init.rst +6 -0
- docs/source/_generated/_generated/ams.routines.routine.RoutineBase.run.rst +6 -0
- docs/source/_generated/_generated/ams.routines.routine.RoutineBase.set.rst +6 -0
- docs/source/_generated/_generated/ams.routines.routine.RoutineBase.solve.rst +6 -0
- docs/source/_generated/_generated/ams.routines.routine.RoutineBase.summary.rst +6 -0
- docs/source/_generated/_generated/ams.routines.routine.RoutineBase.unpack.rst +6 -0
- docs/source/_generated/_generated/ams.routines.routine.RoutineBase.update.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.add.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.as_dict.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.calc_pu_coeff.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.call_models.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.collect_config.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.collect_ref.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.connectivity.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.e_clear.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.f_update.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.fg_to_dae.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.find_devices.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.find_models.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.from_ipysheet.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.g_islands.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.g_update.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.get_z.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.import_groups.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.import_models.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.import_routines.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.import_types.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.init.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.j_islands.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.j_update.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.l_update_eq.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.l_update_var.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.link_ext_param.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.precompile.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.prepare.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.reload.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.remove_pycapsule.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.report.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.reset.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.s_update_post.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.s_update_var.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.save_config.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.set_address.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.set_config.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.set_dae_names.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.set_output_subidx.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.set_var_arrays.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.setup.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.store_adder_setter.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.store_existing.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.store_no_check_init.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.store_sparse_pattern.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.store_switch_times.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.summary.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.supported_models.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.supported_routines.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.switch_action.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.to_andes.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.to_ipysheet.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.undill.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.vars_to_dae.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.vars_to_models.rst +6 -0
- docs/source/_generated/_generated/ams.utils.paths.DisplayablePath.display_filename_prefix_last.rst +6 -0
- docs/source/_generated/_generated/ams.utils.paths.DisplayablePath.display_filename_prefix_middle.rst +6 -0
- docs/source/_generated/_generated/ams.utils.paths.DisplayablePath.display_parent_prefix_last.rst +6 -0
- docs/source/_generated/_generated/ams.utils.paths.DisplayablePath.display_parent_prefix_middle.rst +6 -0
- docs/source/_generated/_generated/ams.utils.paths.DisplayablePath.displayable.rst +6 -0
- docs/source/_generated/_generated/ams.utils.paths.DisplayablePath.displayname.rst +6 -0
- docs/source/_generated/_generated/ams.utils.paths.DisplayablePath.make_tree.rst +6 -0
- docs/source/_generated/ams.cli.create_parser.rst +6 -0
- docs/source/_generated/ams.cli.main.rst +6 -0
- docs/source/_generated/ams.cli.preamble.rst +6 -0
- docs/source/_generated/ams.cli.rst +32 -0
- docs/source/_generated/ams.core.model.Model.rst +56 -0
- docs/source/_generated/ams.core.model.rst +30 -0
- docs/source/_generated/ams.core.param.RParam.rst +49 -0
- docs/source/_generated/ams.core.param.rst +30 -0
- docs/source/_generated/ams.core.service.LoadScale.rst +51 -0
- docs/source/_generated/ams.core.service.MinDur.rst +53 -0
- docs/source/_generated/ams.core.service.NumExpandDim.rst +53 -0
- docs/source/_generated/ams.core.service.NumHstack.rst +53 -0
- docs/source/_generated/ams.core.service.NumOp.rst +53 -0
- docs/source/_generated/ams.core.service.NumOpDual.rst +53 -0
- docs/source/_generated/ams.core.service.RBaseService.rst +51 -0
- docs/source/_generated/ams.core.service.ROperationService.rst +51 -0
- docs/source/_generated/ams.core.service.RampSub.rst +53 -0
- docs/source/_generated/ams.core.service.ValueService.rst +51 -0
- docs/source/_generated/ams.core.service.VarReduction.rst +53 -0
- docs/source/_generated/ams.core.service.VarSelect.rst +53 -0
- docs/source/_generated/ams.core.service.ZonalSum.rst +53 -0
- docs/source/_generated/ams.core.service.rst +42 -0
- docs/source/_generated/ams.interface.Dynamic.rst +41 -0
- docs/source/_generated/ams.interface.build_group_table.rst +6 -0
- docs/source/_generated/ams.interface.make_link_table.rst +6 -0
- docs/source/_generated/ams.interface.parse_addfile.rst +6 -0
- docs/source/_generated/ams.interface.replace_dev.rst +6 -0
- docs/source/_generated/ams.interface.rst +43 -0
- docs/source/_generated/ams.interface.sync_adsys.rst +6 -0
- docs/source/_generated/ams.interface.to_andes.rst +6 -0
- docs/source/_generated/ams.interface.verify_pf.rst +6 -0
- docs/source/_generated/ams.io.guess.rst +6 -0
- docs/source/_generated/ams.io.json.rst +30 -0
- docs/source/_generated/ams.io.json.write.rst +6 -0
- docs/source/_generated/ams.io.matpower.mpc2system.rst +6 -0
- docs/source/_generated/ams.io.matpower.read.rst +6 -0
- docs/source/_generated/ams.io.matpower.rst +33 -0
- docs/source/_generated/ams.io.matpower.system2mpc.rst +6 -0
- docs/source/_generated/ams.io.matpower.testlines.rst +6 -0
- docs/source/_generated/ams.io.parse.rst +6 -0
- docs/source/_generated/ams.io.psse.rst +23 -0
- docs/source/_generated/ams.io.pypower.ppc2system.rst +6 -0
- docs/source/_generated/ams.io.pypower.py2ppc.rst +6 -0
- docs/source/_generated/ams.io.pypower.read.rst +6 -0
- docs/source/_generated/ams.io.pypower.rst +34 -0
- docs/source/_generated/ams.io.pypower.system2ppc.rst +6 -0
- docs/source/_generated/ams.io.pypower.testlines.rst +6 -0
- docs/source/_generated/ams.io.rst +45 -0
- docs/source/_generated/ams.io.xlsx.rst +30 -0
- docs/source/_generated/ams.io.xlsx.write.rst +6 -0
- docs/source/_generated/ams.main.config_logger.rst +6 -0
- docs/source/_generated/ams.main.demo.rst +6 -0
- docs/source/_generated/ams.main.doc.rst +6 -0
- docs/source/_generated/ams.main.edit_conf.rst +6 -0
- docs/source/_generated/ams.main.find_log_path.rst +6 -0
- docs/source/_generated/ams.main.load.rst +6 -0
- docs/source/_generated/ams.main.misc.rst +6 -0
- docs/source/_generated/ams.main.print_license.rst +6 -0
- docs/source/_generated/ams.main.remove_output.rst +6 -0
- docs/source/_generated/ams.main.rst +44 -0
- docs/source/_generated/ams.main.run.rst +6 -0
- docs/source/_generated/ams.main.run_case.rst +6 -0
- docs/source/_generated/ams.main.save_conf.rst +6 -0
- docs/source/_generated/ams.main.selftest.rst +6 -0
- docs/source/_generated/ams.main.set_logger_level.rst +6 -0
- docs/source/_generated/ams.main.versioninfo.rst +6 -0
- docs/source/_generated/ams.opt.constraint.Constraint.rst +43 -0
- docs/source/_generated/ams.opt.constraint.rst +30 -0
- docs/source/_generated/ams.opt.exprcalc.ExpressionCalc.rst +46 -0
- docs/source/_generated/ams.opt.exprcalc.rst +30 -0
- docs/source/_generated/ams.opt.expression.Expression.rst +46 -0
- docs/source/_generated/ams.opt.expression.rst +30 -0
- docs/source/_generated/ams.opt.objective.Objective.rst +43 -0
- docs/source/_generated/ams.opt.objective.rst +30 -0
- docs/source/_generated/ams.opt.omodel.OModel.rst +48 -0
- docs/source/_generated/ams.opt.omodel.OModelBase.rst +48 -0
- docs/source/_generated/ams.opt.omodel.rst +31 -0
- docs/source/_generated/ams.opt.optbase.OptzBase.rst +41 -0
- docs/source/_generated/ams.opt.optbase.ensure_mats_and_parsed.rst +6 -0
- docs/source/_generated/ams.opt.optbase.ensure_symbols.rst +6 -0
- docs/source/_generated/ams.opt.optbase.rst +38 -0
- docs/source/_generated/ams.opt.param.Param.rst +44 -0
- docs/source/_generated/ams.opt.param.rst +30 -0
- docs/source/_generated/ams.opt.rst +40 -0
- docs/source/_generated/ams.opt.var.Var.rst +45 -0
- docs/source/_generated/ams.opt.var.rst +30 -0
- docs/source/_generated/ams.routines.dcopf.DCOPF.rst +83 -0
- docs/source/_generated/ams.routines.dcopf.rst +30 -0
- docs/source/_generated/ams.routines.pflow.PFlow.rst +83 -0
- docs/source/_generated/ams.routines.pflow.rst +30 -0
- docs/source/_generated/ams.routines.routine.RoutineBase.rst +83 -0
- docs/source/_generated/ams.routines.routine.collect_data.rst +6 -0
- docs/source/_generated/ams.routines.routine.initialize_data_dict.rst +6 -0
- docs/source/_generated/ams.routines.routine.rst +38 -0
- docs/source/_generated/ams.system.System.rst +189 -0
- docs/source/_generated/ams.system.disable_method.rst +6 -0
- docs/source/_generated/ams.system.disable_methods.rst +6 -0
- docs/source/_generated/ams.system.example.rst +6 -0
- docs/source/_generated/ams.system.rst +39 -0
- docs/source/_generated/ams.utils.paths.DisplayablePath.rst +42 -0
- docs/source/_generated/ams.utils.paths.ams_root.rst +6 -0
- docs/source/_generated/ams.utils.paths.cases_root.rst +6 -0
- docs/source/_generated/ams.utils.paths.confirm_overwrite.rst +6 -0
- docs/source/_generated/ams.utils.paths.get_case.rst +6 -0
- docs/source/_generated/ams.utils.paths.get_config_path.rst +6 -0
- docs/source/_generated/ams.utils.paths.get_dot_andes_path.rst +6 -0
- docs/source/_generated/ams.utils.paths.get_log_dir.rst +6 -0
- docs/source/_generated/ams.utils.paths.get_pkl_path.rst +6 -0
- docs/source/_generated/ams.utils.paths.get_pycode_path.rst +6 -0
- docs/source/_generated/ams.utils.paths.list_cases.rst +6 -0
- docs/source/_generated/ams.utils.paths.rst +47 -0
- docs/source/_generated/ams.utils.paths.tests_root.rst +6 -0
- docs/source/_templates/autosummary/base.rst +5 -0
- docs/source/_templates/autosummary/class.rst +35 -0
- docs/source/_templates/autosummary/module.rst +65 -0
- docs/source/_templates/autosummary/module_toctree.rst +66 -0
- docs/source/api.rst +102 -0
- docs/source/conf.py +203 -0
- docs/source/examples/index.rst +34 -0
- docs/source/genmodelref.py +61 -0
- docs/source/genroutineref.py +47 -0
- docs/source/getting_started/copyright.rst +20 -0
- docs/source/getting_started/formats/index.rst +20 -0
- docs/source/getting_started/formats/matpower.rst +183 -0
- docs/source/getting_started/formats/psse.rst +46 -0
- docs/source/getting_started/formats/pypower.rst +223 -0
- docs/source/getting_started/formats/xlsx.png +0 -0
- docs/source/getting_started/formats/xlsx.rst +23 -0
- docs/source/getting_started/index.rst +76 -0
- docs/source/getting_started/install.rst +234 -0
- docs/source/getting_started/overview.rst +26 -0
- docs/source/getting_started/testcase.rst +45 -0
- docs/source/getting_started/verification.rst +13 -0
- docs/source/groupdoc/ACLine.rst +92 -0
- docs/source/groupdoc/ACShort.rst +51 -0
- docs/source/groupdoc/ACTopology.rst +66 -0
- docs/source/groupdoc/Collection.rst +84 -0
- docs/source/groupdoc/Cost.rst +135 -0
- docs/source/groupdoc/DG.rst +204 -0
- docs/source/groupdoc/Horizon.rst +97 -0
- docs/source/groupdoc/Information.rst +36 -0
- docs/source/groupdoc/RenGen.rst +63 -0
- docs/source/groupdoc/Reserve.rst +135 -0
- docs/source/groupdoc/StaticGen.rst +229 -0
- docs/source/groupdoc/StaticLoad.rst +53 -0
- docs/source/groupdoc/StaticShunt.rst +45 -0
- docs/source/groupdoc/Undefined.rst +63 -0
- docs/source/groupdoc/VSG.rst +125 -0
- docs/source/images/dcopf_time.png +0 -0
- docs/source/images/sponsors/CURENT_Logo_NameOnTrans.png +0 -0
- docs/source/images/sponsors/CURENT_Logo_Transparent.png +0 -0
- docs/source/images/sponsors/CURENT_Logo_Transparent_Name.png +0 -0
- docs/source/images/sponsors/doe.png +0 -0
- docs/source/index.rst +108 -0
- docs/source/modeling/_generated/_generated/ams.opt.Constraint.class_name.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.Constraint.e.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.Constraint.evaluate.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.Constraint.n.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.Constraint.parse.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.Constraint.shape.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.Constraint.size.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.Constraint.v.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.OModel.class_name.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.OModel.evaluate.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.OModel.finalize.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.OModel.init.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.OModel.initialized.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.OModel.parse.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.OModel.update.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.Objective.class_name.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.Objective.e.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.Objective.evaluate.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.Objective.n.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.Objective.parse.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.Objective.shape.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.Objective.size.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.Objective.v.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.Var.class_name.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.Var.evaluate.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.Var.get_idx.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.Var.n.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.Var.parse.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.Var.shape.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.Var.size.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.Var.v.rst +6 -0
- docs/source/modeling/_generated/ams.opt.Constraint.rst +43 -0
- docs/source/modeling/_generated/ams.opt.OModel.rst +48 -0
- docs/source/modeling/_generated/ams.opt.Objective.rst +43 -0
- docs/source/modeling/_generated/ams.opt.Var.rst +45 -0
- docs/source/modeling/example.rst +159 -0
- docs/source/modeling/index.rst +17 -0
- docs/source/modeling/model.rst +210 -0
- docs/source/modeling/routine.rst +122 -0
- docs/source/modeling/system.rst +51 -0
- docs/source/modelref.rst +66 -0
- docs/source/release-notes.rst +385 -0
- docs/source/routineref.rst +38 -0
- docs/source/typedoc/ACED.rst +91 -0
- docs/source/typedoc/DCED.rst +1869 -0
- docs/source/typedoc/DCUC.rst +899 -0
- docs/source/typedoc/DED.rst +390 -0
- docs/source/typedoc/PF.rst +376 -0
- docs/source/typedoc/UndefinedType.rst +8 -0
- icebar/ips/ips.py +668 -0
- ltbams-1.0.0.dist-info/METADATA +231 -0
- ltbams-1.0.0.dist-info/RECORD +725 -0
- {ltbams-0.9.9.dist-info → ltbams-1.0.0.dist-info}/WHEEL +1 -1
- ltbams-1.0.0.dist-info/top_level.txt +5 -0
- tests/__init__.py +0 -0
- tests/test_1st_system.py +33 -0
- tests/test_addressing.py +40 -0
- tests/test_andes_mats.py +61 -0
- tests/test_case.py +266 -0
- tests/test_cli.py +34 -0
- tests/test_export_csv.py +89 -0
- tests/test_group.py +83 -0
- tests/test_interface.py +216 -0
- tests/test_io.py +32 -0
- tests/test_jumper.py +27 -0
- tests/test_known_good.py +267 -0
- tests/test_matp.py +437 -0
- tests/test_model.py +54 -0
- tests/test_omodel.py +119 -0
- tests/test_paths.py +22 -0
- tests/test_report.py +245 -0
- tests/test_repr.py +21 -0
- tests/test_routine.py +178 -0
- tests/test_rtn_dcopf.py +101 -0
- tests/test_rtn_dcpf.py +77 -0
- tests/test_rtn_ed.py +275 -0
- tests/test_rtn_pflow.py +219 -0
- tests/test_rtn_rted.py +273 -0
- tests/test_rtn_uc.py +248 -0
- tests/test_service.py +73 -0
- ltbams-0.9.9.dist-info/LICENSE +0 -692
- ltbams-0.9.9.dist-info/METADATA +0 -859
- ltbams-0.9.9.dist-info/RECORD +0 -14
- ltbams-0.9.9.dist-info/top_level.txt +0 -1
- {ltbams-0.9.9.dist-info → ltbams-1.0.0.dist-info}/entry_points.txt +0 -0
ams/io/pypower.py
ADDED
@@ -0,0 +1,103 @@
|
|
1
|
+
"""
|
2
|
+
PYPOWER reader for AMS.
|
3
|
+
"""
|
4
|
+
import logging
|
5
|
+
|
6
|
+
import numpy as np
|
7
|
+
|
8
|
+
from ams.io.matpower import mpc2system, system2mpc
|
9
|
+
|
10
|
+
logger = logging.getLogger(__name__)
|
11
|
+
|
12
|
+
|
13
|
+
def testlines(infile):
|
14
|
+
"""
|
15
|
+
Test if this file is in the PYPOWER format.
|
16
|
+
|
17
|
+
NOT YET IMPLEMENTED.
|
18
|
+
"""
|
19
|
+
return True
|
20
|
+
|
21
|
+
|
22
|
+
def read(system, file):
|
23
|
+
"""
|
24
|
+
Read a PYPOWER case file into ppc and return an AMS system by calling ``ppc2system``.
|
25
|
+
|
26
|
+
Parameters
|
27
|
+
----------
|
28
|
+
system : ams.system
|
29
|
+
Empty AMS system to load data into.
|
30
|
+
file : str
|
31
|
+
The path to the PYPOWER file.
|
32
|
+
|
33
|
+
Returns
|
34
|
+
-------
|
35
|
+
system : ams.system.System
|
36
|
+
The AMS system that loaded the data.
|
37
|
+
"""
|
38
|
+
ppc = py2ppc(file)
|
39
|
+
return ppc2system(ppc, system)
|
40
|
+
|
41
|
+
|
42
|
+
def py2ppc(infile: str) -> dict:
|
43
|
+
"""
|
44
|
+
Parse PYPOWER file and return a dictionary with the data.
|
45
|
+
|
46
|
+
Parameters
|
47
|
+
----------
|
48
|
+
infile : str
|
49
|
+
The path to the PYPOWER file.
|
50
|
+
|
51
|
+
Returns
|
52
|
+
-------
|
53
|
+
ppc : dict
|
54
|
+
The PYPOWER case dict.
|
55
|
+
"""
|
56
|
+
exec(open(f"{infile}").read())
|
57
|
+
for name, value in locals().items():
|
58
|
+
# Check if the variable name starts with "case"
|
59
|
+
if name.startswith("case"):
|
60
|
+
ppc = value()
|
61
|
+
return ppc
|
62
|
+
|
63
|
+
|
64
|
+
def ppc2system(ppc: dict, system) -> bool:
|
65
|
+
"""
|
66
|
+
Alias for ``mpc2system``. Refer to :py:mod:`ams.io.matpower.mpc2system` for more details.
|
67
|
+
|
68
|
+
Load an PYPOWER case dict into an empth AMS system.
|
69
|
+
|
70
|
+
Parameters
|
71
|
+
----------
|
72
|
+
ppc : dict
|
73
|
+
The PYPOWER case dict.
|
74
|
+
system : ams.system
|
75
|
+
Empty AMS system to load data into.
|
76
|
+
|
77
|
+
Returns
|
78
|
+
-------
|
79
|
+
bool
|
80
|
+
True if successful; False otherwise.
|
81
|
+
"""
|
82
|
+
return mpc2system(ppc, system)
|
83
|
+
|
84
|
+
|
85
|
+
def system2ppc(system) -> dict:
|
86
|
+
"""
|
87
|
+
Alias for ``system2mpc``. Refer to :py:mod:`ams.io.matpower.system2mpc` for more details.
|
88
|
+
|
89
|
+
Convert data from an AMS system to an mpc dict.
|
90
|
+
|
91
|
+
In the ``gen`` section, slack generators preceeds PV generators.
|
92
|
+
"""
|
93
|
+
mpc = system2mpc(system)
|
94
|
+
np.set_printoptions(suppress=True)
|
95
|
+
# Map the original bus indices to consecutive values
|
96
|
+
# Adjust discontinuous bus indices
|
97
|
+
BUS_I = mpc['bus'][:, 0].astype(int)
|
98
|
+
bus_map = {busi0: i for i, busi0 in enumerate(BUS_I)}
|
99
|
+
mpc['bus'][:, 0] = np.array([bus_map[busi0] for busi0 in BUS_I])
|
100
|
+
mpc['gen'][:, 0] = np.array([bus_map[busi0] for busi0 in mpc['gen'][:, 0].astype(int)])
|
101
|
+
mpc['branch'][:, 0] = np.array([bus_map[busi0] for busi0 in mpc['branch'][:, 0].astype(int)])
|
102
|
+
mpc['branch'][:, 1] = np.array([bus_map[busi0] for busi0 in mpc['branch'][:, 1].astype(int)])
|
103
|
+
return mpc
|
ams/io/xlsx.py
ADDED
@@ -0,0 +1,80 @@
|
|
1
|
+
"""
|
2
|
+
Excel reader and writer for AMS.
|
3
|
+
|
4
|
+
This module leverages the existing parser and writer in andes.io.xlsx.
|
5
|
+
"""
|
6
|
+
import logging
|
7
|
+
|
8
|
+
from andes.io.xlsx import (read, testlines, confirm_overwrite, _add_book) # NOQA
|
9
|
+
|
10
|
+
from ams.shared import pd, empty_adsys, ad_models
|
11
|
+
|
12
|
+
|
13
|
+
logger = logging.getLogger(__name__)
|
14
|
+
|
15
|
+
|
16
|
+
def write(system, outfile,
|
17
|
+
skip_empty=True, overwrite=None, add_book=None,
|
18
|
+
to_andes=False,
|
19
|
+
):
|
20
|
+
"""
|
21
|
+
Write loaded AMS system data into an xlsx file
|
22
|
+
|
23
|
+
Revised function ``andes.io.xlsx.write`` to skip non-andes models.
|
24
|
+
|
25
|
+
Parameters
|
26
|
+
----------
|
27
|
+
system : System
|
28
|
+
A loaded system with parameters
|
29
|
+
outfile : str
|
30
|
+
Path to the output file
|
31
|
+
skip_empty : bool
|
32
|
+
Skip output of empty models (n = 0)
|
33
|
+
overwrite : bool, optional
|
34
|
+
None to prompt for overwrite selection; True to overwrite; False to not overwrite
|
35
|
+
add_book : str, optional
|
36
|
+
An optional model to be added to the output spreadsheet
|
37
|
+
to_andes : bool, optional
|
38
|
+
Write to an ANDES system, where non-ANDES models are skipped
|
39
|
+
|
40
|
+
Returns
|
41
|
+
-------
|
42
|
+
bool
|
43
|
+
True if file written; False otherwise
|
44
|
+
"""
|
45
|
+
if not confirm_overwrite(outfile, overwrite=overwrite):
|
46
|
+
return False
|
47
|
+
|
48
|
+
writer = pd.ExcelWriter(outfile, engine='xlsxwriter')
|
49
|
+
writer = _write_system(system, writer, skip_empty, to_andes=to_andes)
|
50
|
+
writer = _add_book(system, writer, add_book)
|
51
|
+
|
52
|
+
writer.close()
|
53
|
+
|
54
|
+
logger.info('xlsx file written to "%s"', outfile)
|
55
|
+
return True
|
56
|
+
|
57
|
+
|
58
|
+
def _write_system(system, writer, skip_empty, to_andes=False):
|
59
|
+
"""
|
60
|
+
Write the system to pandas ExcelWriter
|
61
|
+
|
62
|
+
Rewrite function ``andes.io.xlsx._write_system`` to skip non-andes sheets.
|
63
|
+
"""
|
64
|
+
for name, instance in system.models.items():
|
65
|
+
if skip_empty and instance.n == 0:
|
66
|
+
continue
|
67
|
+
instance.cache.refresh("df_in")
|
68
|
+
if to_andes:
|
69
|
+
if name not in ad_models:
|
70
|
+
continue
|
71
|
+
# NOTE: ommit parameters that are not in ANDES
|
72
|
+
skip_params = []
|
73
|
+
ams_params = list(instance.params.keys())
|
74
|
+
andes_params = list(empty_adsys.models[name].params.keys())
|
75
|
+
skip_params = list(set(ams_params) - set(andes_params))
|
76
|
+
df = instance.cache.df_in.drop(skip_params, axis=1, errors='ignore')
|
77
|
+
else:
|
78
|
+
df = instance.cache.df_in
|
79
|
+
df.to_excel(writer, sheet_name=name, freeze_panes=(1, 0))
|
80
|
+
return writer
|
ams/main.py
CHANGED
@@ -18,6 +18,7 @@ import textwrap
|
|
18
18
|
from ._version import get_versions
|
19
19
|
|
20
20
|
from andes.main import _find_cases
|
21
|
+
from andes.main import config_logger as ad_config_logger
|
21
22
|
from andes.shared import Pool, Process, coloredlogs, unittest, NCPUS_PHYSICAL
|
22
23
|
from andes.utils.misc import elapsed, is_interactive
|
23
24
|
|
@@ -60,10 +61,18 @@ def config_logger(stream_level=logging.INFO, *,
|
|
60
61
|
`StreamHandler` verbosity level.
|
61
62
|
file_level : {10, 20, 30, 40, 50}, optional
|
62
63
|
`FileHandler` verbosity level.
|
64
|
+
|
63
65
|
Returns
|
64
66
|
-------
|
65
67
|
None
|
68
|
+
|
69
|
+
Notes
|
70
|
+
-----
|
71
|
+
Copied from the ANDES project (https://github.com/CURENT/andes).
|
72
|
+
Original author: Hantao Cui
|
73
|
+
License: GPL3
|
66
74
|
"""
|
75
|
+
ad_config_logger(stream_level)
|
67
76
|
lg = logging.getLogger('ams')
|
68
77
|
lg.setLevel(logging.DEBUG)
|
69
78
|
|
@@ -105,7 +114,6 @@ def config_logger(stream_level=logging.INFO, *,
|
|
105
114
|
coloredlogs.install(logger=lg, level=stream_level, fmt=sh_formatter_str)
|
106
115
|
|
107
116
|
|
108
|
-
# TODO: check ``load`` later on to see if some of them can be removed
|
109
117
|
def load(case, setup=True,
|
110
118
|
use_input_path=True,
|
111
119
|
**kwargs):
|
@@ -131,6 +139,12 @@ def load(case, setup=True,
|
|
131
139
|
If one need to add devices in addition to these from the case
|
132
140
|
file, do ``setup=False`` and call ``System.add()`` to add devices.
|
133
141
|
When done, manually invoke ``setup()`` to set up the system.
|
142
|
+
|
143
|
+
Notes
|
144
|
+
-----
|
145
|
+
Revised from the ANDES project (https://github.com/CURENT/andes).
|
146
|
+
Original author: Hantao Cui
|
147
|
+
License: GPL3
|
134
148
|
"""
|
135
149
|
if use_input_path:
|
136
150
|
input_path = kwargs.get('input_path', '')
|
@@ -180,6 +194,12 @@ def run_case(case, *, routine='pflow', profile=False,
|
|
180
194
|
add_book : str, optional
|
181
195
|
Name of the device to be added to an excel case
|
182
196
|
as a new sheet.
|
197
|
+
|
198
|
+
Notes
|
199
|
+
-----
|
200
|
+
Revised from the ANDES project (https://github.com/CURENT/andes).
|
201
|
+
Original author: Hantao Cui
|
202
|
+
License: GPL3
|
183
203
|
"""
|
184
204
|
|
185
205
|
pr = cProfile.Profile()
|
@@ -249,6 +269,12 @@ def _run_mp_proc(cases, ncpu=NCPUS_PHYSICAL, **kwargs):
|
|
249
269
|
Run multiprocessing with `Process`.
|
250
270
|
|
251
271
|
Return values from `run_case` are not preserved. Always return `True` when done.
|
272
|
+
|
273
|
+
Notes
|
274
|
+
-----
|
275
|
+
Copied from the ANDES project (https://github.com/CURENT/andes).
|
276
|
+
Original author: Hantao Cui
|
277
|
+
License: GPL3
|
252
278
|
"""
|
253
279
|
|
254
280
|
# start processes
|
@@ -283,6 +309,12 @@ def _run_mp_pool(cases, ncpu=NCPUS_PHYSICAL, verbose=logging.INFO, **kwargs):
|
|
283
309
|
Verbosity level during multiprocessing
|
284
310
|
verbose : 10, 20, 30, 40, 50
|
285
311
|
Verbosity level outside multiprocessing
|
312
|
+
|
313
|
+
Notes
|
314
|
+
-----
|
315
|
+
Copied from the ANDES project (https://github.com/CURENT/andes).
|
316
|
+
Original author: Hantao Cui
|
317
|
+
License: GPL3
|
286
318
|
"""
|
287
319
|
|
288
320
|
pool = Pool(ncpu)
|
@@ -337,6 +369,11 @@ def run(filename, input_path='', verbose=20, mp_verbose=30,
|
|
337
369
|
System or exit_code
|
338
370
|
An instance of system (if `cli == False`) or an exit code otherwise..
|
339
371
|
|
372
|
+
Notes
|
373
|
+
-----
|
374
|
+
Copied from the ANDES project (https://github.com/CURENT/andes).
|
375
|
+
Original author: Hantao Cui
|
376
|
+
License: GPL3
|
340
377
|
"""
|
341
378
|
|
342
379
|
if is_interactive() and len(logger.handlers) == 0:
|
@@ -459,6 +496,12 @@ def misc(edit_config='', save_config='', show_license=False, clean=True, recursi
|
|
459
496
|
overwrite=None, version=False, **kwargs):
|
460
497
|
"""
|
461
498
|
Miscellaneous commands.
|
499
|
+
|
500
|
+
Notes
|
501
|
+
-----
|
502
|
+
Copied from the ANDES project (https://github.com/CURENT/andes).
|
503
|
+
Original author: Hantao Cui
|
504
|
+
License: GPL3
|
462
505
|
"""
|
463
506
|
|
464
507
|
if edit_conf(edit_config):
|
@@ -487,6 +530,12 @@ def misc(edit_config='', save_config='', show_license=False, clean=True, recursi
|
|
487
530
|
def doc(attribute=None, list_supported=False, config=False, **kwargs):
|
488
531
|
"""
|
489
532
|
Quick documentation from command-line.
|
533
|
+
|
534
|
+
Notes
|
535
|
+
-----
|
536
|
+
Revised from the ANDES project (https://github.com/CURENT/andes).
|
537
|
+
Original author: Hantao Cui
|
538
|
+
License: GPL3
|
490
539
|
"""
|
491
540
|
system = System()
|
492
541
|
if attribute is not None:
|
@@ -512,19 +561,25 @@ def demo(**kwargs):
|
|
512
561
|
def versioninfo():
|
513
562
|
"""
|
514
563
|
Print version info for AMS and dependencies.
|
564
|
+
|
565
|
+
Notes
|
566
|
+
-----
|
567
|
+
Revised from the ANDES project (https://github.com/CURENT/andes).
|
568
|
+
Original author: Hantao Cui
|
569
|
+
License: GPL3
|
515
570
|
"""
|
516
571
|
|
517
572
|
import numpy as np
|
518
573
|
import cvxpy
|
519
574
|
import andes
|
520
|
-
from ams.shared import
|
575
|
+
from ams.shared import installed_solvers
|
521
576
|
|
522
577
|
versions = {'Python': platform.python_version(),
|
523
578
|
'ams': get_versions()['version'],
|
524
579
|
'andes': andes.__version__,
|
525
580
|
'numpy': np.__version__,
|
526
581
|
'cvxpy': cvxpy.__version__,
|
527
|
-
'solvers': ', '.join(
|
582
|
+
'solvers': ', '.join(installed_solvers),
|
528
583
|
}
|
529
584
|
maxwidth = max([len(k) for k in versions.keys()])
|
530
585
|
|
@@ -574,6 +629,12 @@ def edit_conf(edit_config: Optional[Union[str, bool]] = ''):
|
|
574
629
|
-------
|
575
630
|
bool
|
576
631
|
``True`` is a config file is found and an editor is opened. ``False`` if ``edit_config`` is False.
|
632
|
+
|
633
|
+
Notes
|
634
|
+
-----
|
635
|
+
Copied from the ANDES project (https://github.com/CURENT/andes).
|
636
|
+
Original author: Hantao Cui
|
637
|
+
License: GPL3
|
577
638
|
"""
|
578
639
|
ret = False
|
579
640
|
|
@@ -627,6 +688,12 @@ def save_conf(config_path=None, overwrite=None, **kwargs):
|
|
627
688
|
-------
|
628
689
|
bool
|
629
690
|
``True`` is the save action is run. ``False`` otherwise.
|
691
|
+
|
692
|
+
Notes
|
693
|
+
-----
|
694
|
+
Copied from the ANDES project (https://github.com/CURENT/andes).
|
695
|
+
Original author: Hantao Cui
|
696
|
+
License: GPL3
|
630
697
|
"""
|
631
698
|
ret = False
|
632
699
|
|
@@ -644,7 +711,7 @@ def save_conf(config_path=None, overwrite=None, **kwargs):
|
|
644
711
|
return ret
|
645
712
|
|
646
713
|
|
647
|
-
# TODO:
|
714
|
+
# TODO: change to AMS output types
|
648
715
|
def remove_output(recursive=False):
|
649
716
|
"""
|
650
717
|
Remove the outputs generated by AMS, including power flow reports
|
@@ -661,6 +728,12 @@ def remove_output(recursive=False):
|
|
661
728
|
bool
|
662
729
|
``True`` is the function body executes with success. ``False``
|
663
730
|
otherwise.
|
731
|
+
|
732
|
+
Notes
|
733
|
+
-----
|
734
|
+
Copied from the ANDES project (https://github.com/CURENT/andes).
|
735
|
+
Original author: Hantao Cui
|
736
|
+
License: GPL3
|
664
737
|
"""
|
665
738
|
found = False
|
666
739
|
cwd = os.getcwd()
|
@@ -690,6 +763,12 @@ def remove_output(recursive=False):
|
|
690
763
|
def selftest(quick=False, extra=False, **kwargs):
|
691
764
|
"""
|
692
765
|
Run unit tests.
|
766
|
+
|
767
|
+
Notes
|
768
|
+
-----
|
769
|
+
Copied from the ANDES project (https://github.com/CURENT/andes).
|
770
|
+
Original author: Hantao Cui
|
771
|
+
License: GPL3
|
693
772
|
"""
|
694
773
|
|
695
774
|
# map verbosity level from logging to unittest
|
ams/models/__init__.py
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
"""
|
2
|
+
The package for models used in scheduling modeling.
|
3
|
+
|
4
|
+
The file_classes includes the list of file classes and their corresponding classes.
|
5
|
+
"""
|
6
|
+
|
7
|
+
|
8
|
+
ams_file_classes = list([
|
9
|
+
('info', ['Summary']),
|
10
|
+
('bus', ['Bus']),
|
11
|
+
('static', ['PQ', 'Slack', 'PV']),
|
12
|
+
('shunt', ['Shunt']),
|
13
|
+
('line', ['Line', 'Jumper']),
|
14
|
+
('distributed', ['PVD1', 'ESD1', 'EV1', 'EV2']),
|
15
|
+
('renewable', ['REGCA1', 'REGCV1', 'REGCV2']),
|
16
|
+
('area', ['Area']),
|
17
|
+
('zone', ['Zone']),
|
18
|
+
('reserve', ['SFR', 'SR', 'NSR', 'VSGR']),
|
19
|
+
('cost', ['GCost', 'SFRCost', 'SRCost', 'NSRCost', 'VSGCost']),
|
20
|
+
('cost', ['DCost']),
|
21
|
+
('timeslot', ['TimeSlot', 'EDTSlot', 'UCTSlot']),
|
22
|
+
])
|
23
|
+
|
24
|
+
file_classes = ams_file_classes
|
ams/models/area.py
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
import logging
|
2
|
+
|
3
|
+
from andes.models.area import AreaData
|
4
|
+
from andes.utils.tab import Tab
|
5
|
+
from andes.core.service import BackRef
|
6
|
+
|
7
|
+
from ams.core.model import Model
|
8
|
+
|
9
|
+
logger = logging.getLogger(__name__)
|
10
|
+
|
11
|
+
|
12
|
+
class Area(AreaData, Model):
|
13
|
+
"""
|
14
|
+
Area model.
|
15
|
+
"""
|
16
|
+
def __init__(self, system, config):
|
17
|
+
AreaData.__init__(self)
|
18
|
+
Model.__init__(self, system, config)
|
19
|
+
|
20
|
+
self.group = 'Collection'
|
21
|
+
|
22
|
+
self.Bus = BackRef()
|
23
|
+
self.ACTopology = BackRef()
|
24
|
+
|
25
|
+
def bus_table(self):
|
26
|
+
"""
|
27
|
+
Return a formatted table with area idx and bus idx correspondence
|
28
|
+
|
29
|
+
Returns
|
30
|
+
-------
|
31
|
+
str
|
32
|
+
Formatted table
|
33
|
+
|
34
|
+
"""
|
35
|
+
if self.n:
|
36
|
+
header = ['Area ID', 'Bus ID']
|
37
|
+
rows = [(i, j) for i, j in zip(self.idx.v, self.Bus.v)]
|
38
|
+
return Tab(header=header, data=rows).draw()
|
39
|
+
else:
|
40
|
+
return ''
|
ams/models/bus.py
ADDED
@@ -0,0 +1,52 @@
|
|
1
|
+
import logging
|
2
|
+
|
3
|
+
import numpy as np
|
4
|
+
|
5
|
+
from andes.core.param import NumParam
|
6
|
+
from andes.models.bus import BusData
|
7
|
+
|
8
|
+
from ams.core.var import Algeb
|
9
|
+
from ams.core.model import Model
|
10
|
+
|
11
|
+
logger = logging.getLogger(__name__)
|
12
|
+
|
13
|
+
|
14
|
+
class Bus(BusData, Model):
|
15
|
+
"""
|
16
|
+
AC Bus model.
|
17
|
+
"""
|
18
|
+
|
19
|
+
def __init__(self, system, config):
|
20
|
+
BusData.__init__(self)
|
21
|
+
Model.__init__(self, system, config)
|
22
|
+
|
23
|
+
self.group = 'ACTopology'
|
24
|
+
# NOTE: in ANDES, self.zone is defined to trace a non-existing model "Zone"
|
25
|
+
# in AMS, model "Zone" is developed,
|
26
|
+
# so we need to change the model name of IdxParam self.zone
|
27
|
+
self.zone.model = 'Zone'
|
28
|
+
|
29
|
+
self.type = NumParam(name='type',
|
30
|
+
info='bus type, 1=PQ, 2=PV, 3=ref, 4=isolated (place holder)',
|
31
|
+
default=1,
|
32
|
+
vtype=int,
|
33
|
+
)
|
34
|
+
|
35
|
+
self.a = Algeb(name='a',
|
36
|
+
tex_name=r'\theta',
|
37
|
+
info='voltage angle',
|
38
|
+
unit='rad',
|
39
|
+
)
|
40
|
+
self.v = Algeb(name='v',
|
41
|
+
tex_name='V',
|
42
|
+
info='voltage magnitude',
|
43
|
+
unit='p.u.',
|
44
|
+
)
|
45
|
+
|
46
|
+
# island information
|
47
|
+
self.n_islanded_buses = 0
|
48
|
+
self.island_sets = list()
|
49
|
+
self.islanded_buses = list() # list of lists containing bus uid of islands
|
50
|
+
self.islands = list() # same as the above
|
51
|
+
self.islanded_a = np.array([])
|
52
|
+
self.islanded_v = np.array([])
|
ams/models/cost.py
ADDED
@@ -0,0 +1,169 @@
|
|
1
|
+
"""
|
2
|
+
Cost model.
|
3
|
+
"""
|
4
|
+
|
5
|
+
from andes.core import (ModelData, IdxParam, NumParam)
|
6
|
+
|
7
|
+
from ams.core.model import Model
|
8
|
+
|
9
|
+
|
10
|
+
class GCostData(ModelData):
|
11
|
+
def __init__(self):
|
12
|
+
super().__init__()
|
13
|
+
self.gen = IdxParam(info="static generator index",
|
14
|
+
model='StaticGen',
|
15
|
+
mandatory=True,
|
16
|
+
)
|
17
|
+
self.type = NumParam(default=2,
|
18
|
+
info='Cost model type. 1 for piecewise linear, 2 for polynomial',
|
19
|
+
power=False,
|
20
|
+
tex_name=r't_{ype}',
|
21
|
+
vrange=(1, 2),
|
22
|
+
)
|
23
|
+
self.csu = NumParam(default=0,
|
24
|
+
info='startup cost in US dollars',
|
25
|
+
power=False,
|
26
|
+
tex_name=r'c_{su}',
|
27
|
+
unit='$',
|
28
|
+
)
|
29
|
+
self.csd = NumParam(default=0,
|
30
|
+
info='shutdown cost in US dollars',
|
31
|
+
power=False,
|
32
|
+
tex_name=r'c_{sd}',
|
33
|
+
unit='$',
|
34
|
+
)
|
35
|
+
self.c2 = NumParam(default=0,
|
36
|
+
info='coefficient 2',
|
37
|
+
power=False,
|
38
|
+
tex_name=r'c_{2}',
|
39
|
+
unit=r'$/(p.u.*h)^2',
|
40
|
+
)
|
41
|
+
self.c1 = NumParam(default=0,
|
42
|
+
info='coefficient 1',
|
43
|
+
power=False,
|
44
|
+
tex_name=r'c_{1}',
|
45
|
+
unit=r'$/p.u.*h',
|
46
|
+
)
|
47
|
+
self.c0 = NumParam(default=0,
|
48
|
+
info='coefficient 0',
|
49
|
+
power=False,
|
50
|
+
tex_name=r'c_{0}',
|
51
|
+
unit=r'$',
|
52
|
+
)
|
53
|
+
|
54
|
+
|
55
|
+
# TODO: double check the picewise linear part documentation
|
56
|
+
class GCost(GCostData, Model):
|
57
|
+
"""
|
58
|
+
Generator cost model, similar to MATPOWER ``gencost`` format.
|
59
|
+
|
60
|
+
``type`` is the cost model type. 1 for piecewise linear, 2 for polynomial.
|
61
|
+
|
62
|
+
In piecewise linear cost model, cost function f(p) is defined by a set of points:
|
63
|
+
(p0, c0), (p1, c1), (p2, c2), where p0 < p1 < p2.
|
64
|
+
|
65
|
+
In quadratic cost model, cost function f(p) is defined by a set of coefficients:
|
66
|
+
f(p) = c2 * p^2 + c1 * p + c0.
|
67
|
+
"""
|
68
|
+
|
69
|
+
def __init__(self, system, config):
|
70
|
+
GCostData.__init__(self)
|
71
|
+
Model.__init__(self, system, config)
|
72
|
+
self.group = 'Cost'
|
73
|
+
|
74
|
+
|
75
|
+
class SFRCost(ModelData, Model):
|
76
|
+
"""
|
77
|
+
Linear SFR cost model.
|
78
|
+
"""
|
79
|
+
|
80
|
+
def __init__(self, system, config):
|
81
|
+
ModelData.__init__(self)
|
82
|
+
Model.__init__(self, system, config)
|
83
|
+
self.group = 'Cost'
|
84
|
+
self.gen = IdxParam(info="static generator index",
|
85
|
+
model='StaticGen',
|
86
|
+
mandatory=True,)
|
87
|
+
self.cru = NumParam(default=0,
|
88
|
+
tex_name=r'c_{r}', unit=r'$/(p.u.*h)',
|
89
|
+
info='cost for RegUp reserve',)
|
90
|
+
self.crd = NumParam(default=0,
|
91
|
+
tex_name=r'c_{r}', unit=r'$/(p.u.*h)',
|
92
|
+
info='cost for RegDn reserve',)
|
93
|
+
|
94
|
+
|
95
|
+
class SRCost(ModelData, Model):
|
96
|
+
"""
|
97
|
+
Linear spinning reserve cost model.
|
98
|
+
"""
|
99
|
+
|
100
|
+
def __init__(self, system, config):
|
101
|
+
ModelData.__init__(self)
|
102
|
+
Model.__init__(self, system, config)
|
103
|
+
self.gen = IdxParam(info="static generator index",
|
104
|
+
model='StaticGen',
|
105
|
+
mandatory=True,)
|
106
|
+
self.csr = NumParam(default=0,
|
107
|
+
tex_name=r'c_{sr}', unit=r'$/(p.u.*h)',
|
108
|
+
info='cost for spinning reserve',)
|
109
|
+
|
110
|
+
|
111
|
+
class NSRCost(ModelData, Model):
|
112
|
+
"""
|
113
|
+
Linear non-spinning reserve cost model.
|
114
|
+
"""
|
115
|
+
|
116
|
+
def __init__(self, system, config):
|
117
|
+
ModelData.__init__(self)
|
118
|
+
Model.__init__(self, system, config)
|
119
|
+
self.gen = IdxParam(info="static generator index",
|
120
|
+
model='StaticGen',
|
121
|
+
mandatory=True,)
|
122
|
+
self.cnsr = NumParam(default=0,
|
123
|
+
tex_name=r'c_{nsr}', unit=r'$/(p.u.*h)',
|
124
|
+
info='cost for non-spinning reserve',)
|
125
|
+
|
126
|
+
|
127
|
+
class DCost(ModelData, Model):
|
128
|
+
"""
|
129
|
+
Linear cost model for dispatchable loads.
|
130
|
+
"""
|
131
|
+
def __init__(self, system, config):
|
132
|
+
ModelData.__init__(self)
|
133
|
+
Model.__init__(self, system, config)
|
134
|
+
self.group = 'Cost'
|
135
|
+
self.pq = IdxParam(info="static load index",
|
136
|
+
mandatory=True,)
|
137
|
+
self.cdp = NumParam(default=999,
|
138
|
+
tex_name=r'c_{d,p}', unit=r'$/(p.u.*h)',
|
139
|
+
info='cost for unserve load penalty',)
|
140
|
+
|
141
|
+
|
142
|
+
class VSGCostData(ModelData):
|
143
|
+
def __init__(self):
|
144
|
+
super().__init__()
|
145
|
+
self.reg = IdxParam(info="Renewable generator idx",
|
146
|
+
model='RenGen',
|
147
|
+
mandatory=True,
|
148
|
+
)
|
149
|
+
self.cm = NumParam(default=0,
|
150
|
+
info='cost for emulated inertia (M)',
|
151
|
+
tex_name=r'c_{r}',
|
152
|
+
unit=r'$/s',
|
153
|
+
)
|
154
|
+
self.cd = NumParam(default=0,
|
155
|
+
info='cost for emulated damping (D)',
|
156
|
+
tex_name=r'c_{r}',
|
157
|
+
unit=r'$/p.u.',
|
158
|
+
)
|
159
|
+
|
160
|
+
|
161
|
+
class VSGCost(VSGCostData, Model):
|
162
|
+
"""
|
163
|
+
Linear cost model for VSG emulated inertia (M) and damping (D).
|
164
|
+
"""
|
165
|
+
|
166
|
+
def __init__(self, system, config):
|
167
|
+
VSGCostData.__init__(self)
|
168
|
+
Model.__init__(self, system, config)
|
169
|
+
self.group = 'Cost'
|