Inspecting Models#
We first import the ams library and configure the logger level.
import ams
import datetime
print("Last run time:", datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
print(f'ams:{ams.__version__}')
Last run time: 2024-01-29 20:44:50
ams:0.8.1.post37.dev0+gf76a132
ams.config_logger(stream_level=20)
Load an example case.
sp = ams.load(ams.get_case('5bus/pjm5bus_uced.xlsx'),
setup=True,
no_output=True,)
Parsing input file "/Users/jinningwang/Documents/work/ams/ams/cases/5bus/pjm5bus_uced.xlsx"...
Input file parsed in 0.1210 seconds.
Zero line rates detacted in rate_a, rate_b, rate_c, adjusted to 999.
If expect a line outage, please set 'u' to 0.
System set up in 0.0020 seconds.
List all models and routines#
print(sp.supported_models())
Supported Groups and Models
Group | Models
-------------+-------------------------------
ACLine | Line
ACTopology | Bus
Collection | Area, Region
Cost | GCost, SFRCost, VSGCost, DCost
DG | PVD1, ESD1
Horizon | TimeSlot, EDTSlot, UCTSlot
Information | Summary
RenGen | REGCA1
Reserve | SFR, SR, NSR, VSGR
StaticGen | PV, Slack
StaticLoad | PQ
StaticShunt | Shunt
Undefined | SRCost, NSRCost
VSG | REGCV1, REGCV2
Similarly, all supported routiens can be listed.
print(sp.supported_routines())
Supported Types and Routines
Type | Routines
------+-----------------------------------------------------
ACED | ACOPF
DCED | DCOPF, ED, EDDG, EDES, RTED, RTEDDG, RTEDES, RTEDVIS
DCUC | UC, UCDG, UCES
DED | DOPF, DOPFVIS
PF | DCPF, PFlow, CPF
Check routine documentation#
To check the documentation for the routine model, use its doc() method.
print(sp.RTED.doc())
Routine <RTED> in Type <DCED>
DC-based real-time economic dispatch (RTED).
RTED extends DCOPF with:
- Mapping dicts to interface with ANDES
- Function ``dc2ac`` to do the AC conversion
- Vars for SFR reserve: ``pru`` and ``prd``
- Param for linear SFR cost: ``cru`` and ``crd``
- Param for SFR requirement: ``du`` and ``dd``
- Param for ramping: start point ``pg0`` and ramping limit ``R10``
- Param ``pg0``, which can be retrieved from dynamic simulation results.
The function ``dc2ac`` sets the ``vBus`` value from solved ACOPF.
Without this conversion, dynamic simulation might fail due to the gap between
DC-based dispatch results and AC-based dynamic initialization.
Notes
-----
1. Formulations has been adjusted with interval ``config.t``, 5/60 [Hour] by default.
2. The tie-line flow has not been implemented in formulations.
Objective
Name | Unit | Description
-----+------+----------------------------------
obj | $ | total generation and reserve cost
Constraints
Name | Description
-------+----------------------------------
pglb | pg min
pgub | pg max
pb | power balance
plflb | line flow lower bound
plfub | line flow upper bound
alflb | line angle difference lower bound
alfub | line angle difference upper bound
rbu | RegUp reserve balance
rbd | RegDn reserve balance
rru | RegUp reserve source
rrd | RegDn reserve source
rgu | Gen ramping up
rgd | Gen ramping down
Vars
Name | Description | Unit | Properties
------+-------------------+------+-----------
pg | Gen active power | p.u. |
aBus | Bus voltage angle | rad |
plf | Line flow | p.u. |
pru | RegUp reserve | p.u. | nonneg
prd | RegDn reserve | p.u. | nonneg
Services
Name | Description | Type
--------+--------------------------------------+----------
ctrle | Effective Gen controllability | NumOpDual
nctrl | Effective Gen uncontrollability | NumOp
nctrle | Effective Gen uncontrollability | NumOpDual
amax | max line angle difference | NumOp
gs | Sum Gen vars vector in shape of zone | ZonalSum
ds | Sum pd vector in shape of zone | ZonalSum
pdz | zonal total load | NumOpDual
dud | zonal RegUp reserve requirement | NumOpDual
ddd | zonal RegDn reserve requirement | NumOpDual
Parameters
Name | Description | Unit
---------+-------------------------------------------+-----------
c2 | Gen cost coefficient 2 | $/(p.u.^2)
c1 | Gen cost coefficient 1 | $/(p.u.)
c0 | Gen cost coefficient 0 | $
ug | Gen connection status |
ctrl | Gen controllability |
pmax | Gen maximum active power | p.u.
pmin | Gen minimum active power | p.u.
p0 | Gen initial active power | p.u.
pd | active demand | p.u.
rate_a | long-term flow limit | MVA
gsh | shunt conductance |
Cg | Gen connection matrix |
Cl | Load connection matrix |
CftT | Transpose of line connection matrix |
Csh | Shunt connection matrix |
Bbus | Bus admittance matrix |
Bf | Bf matrix |
Pbusinj | Bus power injection vector |
Pfinj | Line power injection vector |
zg | Gen zone |
zd | Load zone |
R10 | 10-min ramp rate | p.u./h
cru | RegUp reserve coefficient | $/(p.u.)
crd | RegDown reserve coefficient | $/(p.u.)
du | RegUp reserve requirement in percentage | %
dd | RegDown reserve requirement in percentage | %
Data Check#
The summary() method gives a brief summary of the system and routiens that passed the data check.
sp.summary()
-> Systen size:
Base: 100 MVA; Frequency: 60 Hz
5 Buses; 7 Lines; 4 Static Generators
Active load: 10.00 p.u.; Reactive load: 3.29 p.u.
-> Data check results:
ACED: ACOPF
DCED: DCOPF, ED, RTED
DCUC: UC
DED: DOPF
PF: DCPF, PFlow, CPF