.. _DCED: ================================================================================ DCED ================================================================================ Type for DC-based economic dispatch. Common Parameters: c2, c1, c0, pmax, pmin, pd, ptdf, rate_a Common Vars: pg Common Constraints: pb, lub, llb Available routines: DCOPF_, DCOPF2_, ED_, EDDG_, EDES_, RTED_, RTEDDG_, RTEDES_, RTEDVIS_ .. _DCOPF: -------------------------------------------------------------------------------- DCOPF -------------------------------------------------------------------------------- DC optimal power flow (DCOPF). Notes ----- 1. The nodal price is calculated as ``pi`` in ``pic``. 2. Devices online status of ``StaticGen``, ``StaticLoad``, and ``Shunt`` are considered in the connectivity matrices ``Cft``, ``Cg``, ``Cl``, and ``Csh``. References ---------- 1. R. D. Zimmerman, C. E. Murillo-Sanchez, and R. J. Thomas, “MATPOWER: Steady-State Operations, Planning, and Analysis Tools for Power Systems Research and Education,” IEEE Trans. Power Syst., vol. 26, no. 1, pp. 12-19, Feb. 2011 Objective ---------------------------------- +------+----------------------------------------------------------------------+ | Unit | Expression | +======+======================================================================+ | *$* | :math:`min. \sum(c_{2} p_g^{2})+ \sum(c_{1} p_g)+ \sum(u_{g} c_{0})` | +------+----------------------------------------------------------------------+ Expressions ---------------------------------- +--------+----------------+------------------------------------------------------+--------+-----------+ | Name | Description | Expression | Unit | Source | +========+================+======================================================+========+===========+ | plf | Line flow | :math:`B_{f} \theta_{bus} + P_{f}^{inj}` | *p.u.* | Line | +--------+----------------+------------------------------------------------------+--------+-----------+ | pmaxe | Effective pmax | :math:`c_{trl,n,e} p_{g, 0} + c_{trl, e} p_{g, max}` | *p.u.* | StaticGen | +--------+----------------+------------------------------------------------------+--------+-----------+ | pmine | Effective pmin | :math:`c_{trl,n,e} p_{g, 0} + c_{trl, e} p_{g, min}` | *p.u.* | StaticGen | +--------+----------------+------------------------------------------------------+--------+-----------+ Constraints ---------------------------------- +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | Name | Description | Expression | +========+===================================+============================================================================================+ | pb | power balance | :math:`B_{bus} \theta_{bus} + P_{bus}^{inj} + C_{l} p_{d} + C_{sh} g_{sh} - C_{g} p_g = 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | sbus | align slack bus angle | :math:`c_{sb} \theta_{bus} = 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | pglb | pg min | :math:`-p_g + p_{g, min, e} \leq 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | pgub | pg max | :math:`p_g - p_{g, max, e} \leq 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | plflb | line flow lower bound | :math:`-p_{lf} - u_{l} R_{ATEA} \leq 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | plfub | line flow upper bound | :math:`p_{lf} - u_{l} R_{ATEA} \leq 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | alflb | line angle difference lower bound | :math:`-C_{ft}^T \theta_{bus} + \theta_{bus, min} \leq 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | alfub | line angle difference upper bound | :math:`C_{ft}^T \theta_{bus} - \theta_{bus, max} \leq 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ Vars ---------------------------------- +-------+----------------------+------------------------------------+--------+-------------+------------+ | Name | Symbol | Description | Unit | Source | Properties | +=======+======================+====================================+========+=============+============+ | pg | :math:`p_g` | Gen active power | *p.u.* | StaticGen.p | | +-------+----------------------+------------------------------------+--------+-------------+------------+ | vBus | :math:`v_{Bus}` | Bus voltage magnitude, placeholder | *p.u.* | Bus.v | | +-------+----------------------+------------------------------------+--------+-------------+------------+ | aBus | :math:`\theta_{bus}` | Bus voltage angle | *rad* | Bus.a | | +-------+----------------------+------------------------------------+--------+-------------+------------+ ExpressionCalcs ---------------------------------- +------+-------------------+------------------+----------+--------+ | Name | Description | Expression | Unit | Source | +======+===================+==================+==========+========+ | pi | LMP, dual of | :math:`\phi[pb]` | *$/p.u.* | Bus | +------+-------------------+------------------+----------+--------+ Services --------- +---------+---------------------+---------------------------------+-----------+ | Name | Symbol | Description | Type | +=========+=====================+=================================+===========+ | csb | :math:`c_{sb}` | select slack bus | VarSelect | +---------+---------------------+---------------------------------+-----------+ | ctrle | :math:`c_{trl, e}` | Effective Gen controllability | NumOpDual | +---------+---------------------+---------------------------------+-----------+ | nctrl | :math:`c_{trl,n}` | Effective Gen uncontrollability | NumOp | +---------+---------------------+---------------------------------+-----------+ | nctrle | :math:`c_{trl,n,e}` | Effective Gen uncontrollability | NumOpDual | +---------+---------------------+---------------------------------+-----------+ Parameters ---------------------------------- +----------+---------------------------+-------------------------------------+--------------+----------------------+ | Name | Symbol | Description | Unit | Source | +==========+===========================+=====================================+==============+======================+ | ug | :math:`u_{g}` | Gen connection status | | StaticGen.u | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | pg0 | :math:`p_{g, 0}` | Gen initial active power | *p.u.* | StaticGen.p0 | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | gsh | :math:`g_{sh}` | shunt conductance | | Shunt.g | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | buss | :math:`B_{us,s}` | Bus slack | | Slack.bus | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | pd | :math:`p_{d}` | active demand | *p.u.* | StaticLoad.p0 | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | Cg | :math:`C_{g}` | Gen connection matrix | | MatProcessor.Cg | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | Cl | :math:`C_{l}` | Load connection matrix | | MatProcessor.Cl | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | CftT | :math:`C_{ft}^T` | Transpose of line connection matrix | | MatProcessor.CftT | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | Csh | :math:`C_{sh}` | Shunt connection matrix | | MatProcessor.Csh | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | Bbus | :math:`B_{bus}` | Bus admittance matrix | | MatProcessor.Bbus | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | Bf | :math:`B_{f}` | Bf matrix | | MatProcessor.Bf | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | Pbusinj | :math:`P_{bus}^{inj}` | Bus power injection vector | | MatProcessor.Pbusinj | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | Pfinj | :math:`P_{f}^{inj}` | Line power injection vector | | MatProcessor.Pfinj | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | c2 | :math:`c_{2}` | Gen cost coefficient 2 | *$/(p.u.^2)* | GCost.c2 | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | c1 | :math:`c_{1}` | Gen cost coefficient 1 | *$/(p.u.)* | GCost.c1 | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | c0 | :math:`c_{0}` | Gen cost coefficient 0 | *$* | GCost.c0 | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | ctrl | :math:`c_{trl}` | Gen controllability | | StaticGen.ctrl | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | pmax | :math:`p_{g, max}` | Gen maximum active power | *p.u.* | StaticGen.pmax | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | pmin | :math:`p_{g, min}` | Gen minimum active power | *p.u.* | StaticGen.pmin | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | ul | :math:`u_{l}` | Line connection status | | Line.u | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | rate_a | :math:`R_{ATEA}` | long-term flow limit | *p.u.* | Line.rate_a | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | amax | :math:`\theta_{bus, max}` | max line angle difference | | Line.amax | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | amin | :math:`\theta_{bus, min}` | min line angle difference | | Line.amin | +----------+---------------------------+-------------------------------------+--------------+----------------------+ .. _DCOPF2: -------------------------------------------------------------------------------- DCOPF2 -------------------------------------------------------------------------------- DC optimal power flow (DCOPF) using PTDF. For large cases, it is recommended to build the PTDF first, especially when incremental build is necessary. Notes ----- 1. This routine requires PTDF matrix. 2. Nodal price ``pi`` is calculated with three parts. 3. Bus angle ``aBus`` is calculated after solving the problem. Objective ---------------------------------- +------+----------------------------------------------------------------------+ | Unit | Expression | +======+======================================================================+ | *$* | :math:`min. \sum(c_{2} p_g^{2})+ \sum(c_{1} p_g)+ \sum(u_{g} c_{0})` | +------+----------------------------------------------------------------------+ Expressions ---------------------------------- +--------+----------------+-----------------------------------------------------------------------------+--------+-----------+ | Name | Description | Expression | Unit | Source | +========+================+=============================================================================+========+===========+ | plf | Line flow | :math:`P_{TDF} (C_{g} p_g - C_{l} p_{d} - C_{sh} g_{sh} - P_{bus}^{inj})` | *p.u.* | Line | +--------+----------------+-----------------------------------------------------------------------------+--------+-----------+ | pmaxe | Effective pmax | :math:`c_{trl,n,e} p_{g, 0} + c_{trl, e} p_{g, max}` | *p.u.* | StaticGen | +--------+----------------+-----------------------------------------------------------------------------+--------+-----------+ | pmine | Effective pmin | :math:`c_{trl,n,e} p_{g, 0} + c_{trl, e} p_{g, min}` | *p.u.* | StaticGen | +--------+----------------+-----------------------------------------------------------------------------+--------+-----------+ Constraints ---------------------------------- +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | Name | Description | Expression | +========+===================================+============================================================================================+ | pb | power balance | :math:`B_{bus} \theta_{bus} + P_{bus}^{inj} + C_{l} p_{d} + C_{sh} g_{sh} - C_{g} p_g = 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | sbus | align slack bus angle | :math:`c_{sb} \theta_{bus} = 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | pglb | pg min | :math:`-p_g + p_{g, min, e} \leq 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | pgub | pg max | :math:`p_g - p_{g, max, e} \leq 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | plflb | line flow lower bound | :math:`-p_{lf} - u_{l} R_{ATEA} \leq 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | plfub | line flow upper bound | :math:`p_{lf} - u_{l} R_{ATEA} \leq 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | alflb | line angle difference lower bound | :math:`-C_{ft}^T \theta_{bus} + \theta_{bus, min} \leq 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | alfub | line angle difference upper bound | :math:`C_{ft}^T \theta_{bus} - \theta_{bus, max} \leq 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ Vars ---------------------------------- +-------+----------------------+------------------------------------+--------+-------------+------------+ | Name | Symbol | Description | Unit | Source | Properties | +=======+======================+====================================+========+=============+============+ | pg | :math:`p_g` | Gen active power | *p.u.* | StaticGen.p | | +-------+----------------------+------------------------------------+--------+-------------+------------+ | vBus | :math:`v_{Bus}` | Bus voltage magnitude, placeholder | *p.u.* | Bus.v | | +-------+----------------------+------------------------------------+--------+-------------+------------+ | aBus | :math:`\theta_{bus}` | Bus voltage angle | *rad* | Bus.a | | +-------+----------------------+------------------------------------+--------+-------------+------------+ ExpressionCalcs ---------------------------------- +-------+-----------------------------------+-------------------------------------------------------+----------+--------+ | Name | Description | Expression | Unit | Source | +=======+===================================+=======================================================+==========+========+ | pi | LMP, dual of | :math:`\phi[pb] + C_{ft} (\phi[plfub] - \phi[plflb])` | *$/p.u.* | Bus | +-------+-----------------------------------+-------------------------------------------------------+----------+--------+ | pilb | Congestion price, dual of | :math:`\phi[plflb]` | | Line | +-------+-----------------------------------+-------------------------------------------------------+----------+--------+ | piub | Congestion price, dual of | :math:`\phi[plfub]` | | Line | +-------+-----------------------------------+-------------------------------------------------------+----------+--------+ | pib | Energy price, dual of | :math:`\phi[pb]` | | Bus | +-------+-----------------------------------+-------------------------------------------------------+----------+--------+ Services --------- +---------+---------------------+-----------------------------------+-----------+ | Name | Symbol | Description | Type | +=========+=====================+===================================+===========+ | csb | :math:`c_{sb}` | select slack bus | VarSelect | +---------+---------------------+-----------------------------------+-----------+ | ctrle | :math:`c_{trl, e}` | Effective Gen controllability | NumOpDual | +---------+---------------------+-----------------------------------+-----------+ | nctrl | :math:`c_{trl,n}` | Effective Gen uncontrollability | NumOp | +---------+---------------------+-----------------------------------+-----------+ | nctrle | :math:`c_{trl,n,e}` | Effective Gen uncontrollability | NumOpDual | +---------+---------------------+-----------------------------------+-----------+ | ued | :math:`u_{e,d}` | Effective load connection status | NumOp | +---------+---------------------+-----------------------------------+-----------+ | uesh | :math:`u_{e,sh}` | Effective shunt connection status | NumOp | +---------+---------------------+-----------------------------------+-----------+ Parameters ---------------------------------- +----------+---------------------------+-------------------------------------+--------------+----------------------+ | Name | Symbol | Description | Unit | Source | +==========+===========================+=====================================+==============+======================+ | ug | :math:`u_{g}` | Gen connection status | | StaticGen.u | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | pg0 | :math:`p_{g, 0}` | Gen initial active power | *p.u.* | StaticGen.p0 | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | gsh | :math:`g_{sh}` | shunt conductance | | Shunt.g | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | buss | :math:`B_{us,s}` | Bus slack | | Slack.bus | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | pd | :math:`p_{d}` | active demand | *p.u.* | StaticLoad.p0 | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | Cg | :math:`C_{g}` | Gen connection matrix | | MatProcessor.Cg | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | Cl | :math:`C_{l}` | Load connection matrix | | MatProcessor.Cl | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | CftT | :math:`C_{ft}^T` | Transpose of line connection matrix | | MatProcessor.CftT | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | Csh | :math:`C_{sh}` | Shunt connection matrix | | MatProcessor.Csh | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | Bbus | :math:`B_{bus}` | Bus admittance matrix | | MatProcessor.Bbus | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | Bf | :math:`B_{f}` | Bf matrix | | MatProcessor.Bf | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | Pbusinj | :math:`P_{bus}^{inj}` | Bus power injection vector | | MatProcessor.Pbusinj | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | Pfinj | :math:`P_{f}^{inj}` | Line power injection vector | | MatProcessor.Pfinj | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | c2 | :math:`c_{2}` | Gen cost coefficient 2 | *$/(p.u.^2)* | GCost.c2 | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | c1 | :math:`c_{1}` | Gen cost coefficient 1 | *$/(p.u.)* | GCost.c1 | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | c0 | :math:`c_{0}` | Gen cost coefficient 0 | *$* | GCost.c0 | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | ctrl | :math:`c_{trl}` | Gen controllability | | StaticGen.ctrl | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | pmax | :math:`p_{g, max}` | Gen maximum active power | *p.u.* | StaticGen.pmax | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | pmin | :math:`p_{g, min}` | Gen minimum active power | *p.u.* | StaticGen.pmin | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | ul | :math:`u_{l}` | Line connection status | | Line.u | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | rate_a | :math:`R_{ATEA}` | long-term flow limit | *p.u.* | Line.rate_a | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | amax | :math:`\theta_{bus, max}` | max line angle difference | | Line.amax | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | amin | :math:`\theta_{bus, min}` | min line angle difference | | Line.amin | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | PTDF | :math:`P_{TDF}` | PTDF | | MatProcessor.PTDF | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | Cft | :math:`C_{ft}` | Line connection matrix | | MatProcessor.Cft | +----------+---------------------------+-------------------------------------+--------------+----------------------+ .. _ED: -------------------------------------------------------------------------------- ED -------------------------------------------------------------------------------- DC-based multi-period economic dispatch (ED). Dispatch interval ``config.t`` ($T_{cfg}$) is introduced, 1 [Hour] by default. ED extends DCOPF as follows: - Vars ``pg``, ``pru``, ``prd`` are extended to 2D - 2D Vars ``rgu`` and ``rgd`` are introduced - Param ``ug`` is sourced from ``EDTSlot.ug`` as generator commitment Notes ----- 1. Formulations has been adjusted with interval ``config.t`` 2. The tie-line flow is not implemented in this model. 3. ``EDTSlot.ug`` is used instead of ``StaticGen.u`` for generator commitment. 4. Following reserves are balanced for each "Area": RegUp reserve ``rbu``, RegDn reserve ``rbd``, and Spinning reserve ``rsr``. Objective ---------------------------------- +------+----------------------------------------------------------------------------------------------------------------------------+ | Unit | Expression | +======+============================================================================================================================+ | *$* | :math:`min. \sum(T_{cfg}^{2} c_{2} p_g^{2})+ T_{cfg} \sum(c_{1} p_g + c_{sr} p_{r,s})+ \sum(u_{g} c_{0} 1_{tl})` | +------+----------------------------------------------------------------------------------------------------------------------------+ Expressions ---------------------------------- +--------+----------------+--------------------------------------------------------------------+--------+-----------+ | Name | Description | Expression | Unit | Source | +========+================+====================================================================+========+===========+ | plf | 2D Line flow | :math:`B_{f} \theta_{bus} + P_{f}^{inj} 1_{tl}` | *p.u.* | Line | +--------+----------------+--------------------------------------------------------------------+--------+-----------+ | pmaxe | Effective pmax | :math:`c_{trl,n,e} p_{g, 0} 1_{tl} + c_{trl, e} 1_{tl} p_{g, max}` | *p.u.* | StaticGen | +--------+----------------+--------------------------------------------------------------------+--------+-----------+ | pmine | Effective pmin | :math:`c_{trl,n,e} p_{g, 0} 1_{tl} + c_{trl, e} 1_{tl} p_{g, min}` | *p.u.* | StaticGen | +--------+----------------+--------------------------------------------------------------------+--------+-----------+ Constraints ---------------------------------- +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------+ | Name | Description | Expression | +========+===================================+============================================================================================================+ | pb | power balance | :math:`B_{bus} \theta_{bus} + P_{bus}^{inj} 1_{tl} + C_{l} p_{d,s} + C_{sh} g_{sh} 1_{tl} - C_{g} p_g = 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------+ | sbus | align slack bus angle | :math:`c_{sb} \theta_{bus} = 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------+ | pglb | pg min | :math:`-p_g + p_{g, min, e} \leq 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------+ | pgub | pg max | :math:`p_g - p_{g, max, e} \leq 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------+ | plflb | line flow lower bound | :math:`-B_{f} \theta_{bus} - P_{f}^{inj} 1_{tl} - u_{l} R_{ATEA} 1_{tl} \leq 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------+ | plfub | line flow upper bound | :math:`B_{f} \theta_{bus} + P_{f}^{inj} 1_{tl} - u_{l} R_{ATEA} 1_{tl} \leq 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------+ | alflb | line angle difference lower bound | :math:`-C_{ft}^T \theta_{bus} + \theta_{bus, min} 1_{tl} \leq 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------+ | alfub | line angle difference upper bound | :math:`C_{ft}^T \theta_{bus} - \theta_{bus, max} 1_{tl} \leq 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------+ | rbu | RegUp reserve balance | :math:`S_{g} u_{g} p_{r,u} - d_{u, d} 1_{tl} = 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------+ | rbd | RegDn reserve balance | :math:`S_{g} u_{g} p_{r,d} - d_{d, d} 1_{tl} = 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------+ | rru | RegUp reserve source | :math:`p_g + p_{r,u} - u_{g} p_{g, max} 1_{tl} \leq 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------+ | rrd | RegDn reserve source | :math:`-p_g + p_{r,d} + u_{g} p_{g, min} 1_{tl} \leq 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------+ | rgu | Gen ramping up | :math:`p_g M_{r} - T_{cfg} R_{30,R} \leq 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------+ | rgd | Gen ramping down | :math:`-p_g M_{r} - T_{cfg} R_{30,R} \leq 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------+ | prsb | spinning reserve balance | :math:`u_{g} p_{g, max} 1_{tl} - p_g - p_{r,s} = 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------+ | rsr | spinning reserve requirement | :math:`-S_{g} p_{r,s} + d_{s,r,z} \leq 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------+ | rgu0 | Initial gen ramping up | :math:`u_{g}[: 0], p_g[:, 0] - p_{g, 0}[:, 0] - R_{30} \leq 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------+ | rgd0 | Initial gen ramping down | :math:`u_{g}[: 0], -p_g[:, 0] + p_{g, 0}[:, 0] - R_{30} \leq 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------+ Vars ---------------------------------- +-------+----------------------+------------------+--------+-------------+------------+ | Name | Symbol | Description | Unit | Source | Properties | +=======+======================+==================+========+=============+============+ | pg | :math:`p_g` | 2D Gen power | *p.u.* | StaticGen.p | | +-------+----------------------+------------------+--------+-------------+------------+ | vBus | :math:`v_{Bus}` | 2D Bus voltage | *p.u.* | Bus.v | | +-------+----------------------+------------------+--------+-------------+------------+ | aBus | :math:`\theta_{bus}` | 2D Bus angle | *rad* | Bus.a | | +-------+----------------------+------------------+--------+-------------+------------+ | pru | :math:`p_{r,u}` | 2D RegUp power | *p.u.* | StaticGen | nonneg | +-------+----------------------+------------------+--------+-------------+------------+ | prd | :math:`p_{r,d}` | 2D RegDn power | *p.u.* | StaticGen | nonneg | +-------+----------------------+------------------+--------+-------------+------------+ | prs | :math:`p_{r,s}` | spinning reserve | *p.u.* | StaticGen | nonneg | +-------+----------------------+------------------+--------+-------------+------------+ ExpressionCalcs ---------------------------------- +------+-------------------+------------------+----------+--------+ | Name | Description | Expression | Unit | Source | +======+===================+==================+==========+========+ | pi | LMP, dual of | :math:`\phi[pb]` | *$/p.u.* | Bus | +------+-------------------+------------------+----------+--------+ Services --------- +---------+-----------------------+--------------------------------------------------+-----------+ | Name | Symbol | Description | Type | +=========+=======================+==================================================+===========+ | csb | :math:`c_{sb}` | select slack bus | VarSelect | +---------+-----------------------+--------------------------------------------------+-----------+ | ctrle | :math:`c_{trl, e}` | Effective Gen controllability | NumOpDual | +---------+-----------------------+--------------------------------------------------+-----------+ | nctrl | :math:`c_{trl,n}` | Effective Gen uncontrollability | NumOp | +---------+-----------------------+--------------------------------------------------+-----------+ | nctrle | :math:`c_{trl,n,e}` | Effective Gen uncontrollability | NumOpDual | +---------+-----------------------+--------------------------------------------------+-----------+ | gs | :math:`S_{g}` | Sum Gen vars vector in shape of area | ZonalSum | +---------+-----------------------+--------------------------------------------------+-----------+ | ds | :math:`S_{d}` | Sum pd vector in shape of area | ZonalSum | +---------+-----------------------+--------------------------------------------------+-----------+ | pdz | :math:`p_{d,z}` | zonal total load | NumOpDual | +---------+-----------------------+--------------------------------------------------+-----------+ | dud | :math:`d_{u, d}` | zonal RegUp reserve requirement | NumOpDual | +---------+-----------------------+--------------------------------------------------+-----------+ | ddd | :math:`d_{d, d}` | zonal RegDn reserve requirement | NumOpDual | +---------+-----------------------+--------------------------------------------------+-----------+ | tlv | :math:`1_{tl}` | time length vector | NumOp | +---------+-----------------------+--------------------------------------------------+-----------+ | pds | :math:`p_{d,s}` | Scaled load | LoadScale | +---------+-----------------------+--------------------------------------------------+-----------+ | Mr | :math:`M_{r}` | Subtraction matrix for ramping | RampSub | +---------+-----------------------+--------------------------------------------------+-----------+ | RR30 | :math:`R_{30,R}` | Repeated ramp rate | NumHstack | +---------+-----------------------+--------------------------------------------------+-----------+ | dsrpz | :math:`d_{s,r, p, z}` | zonal spinning reserve requirement in percentage | NumOpDual | +---------+-----------------------+--------------------------------------------------+-----------+ | dsr | :math:`d_{s,r,z}` | zonal spinning reserve requirement | NumOpDual | +---------+-----------------------+--------------------------------------------------+-----------+ | ugt | :math:`u_{g}` | input ug transpose | NumOp | +---------+-----------------------+--------------------------------------------------+-----------+ Parameters ---------------------------------- +-----------+---------------------------+--------------------------------------------+--------------+----------------------+ | Name | Symbol | Description | Unit | Source | +===========+===========================+============================================+==============+======================+ | ug | :math:`u_{g}` | unit commitment decisions | | EDTSlot.ug | +-----------+---------------------------+--------------------------------------------+--------------+----------------------+ | pg0 | :math:`p_{g, 0}` | Gen initial active power | *p.u.* | StaticGen.p0 | +-----------+---------------------------+--------------------------------------------+--------------+----------------------+ | gsh | :math:`g_{sh}` | shunt conductance | | Shunt.g | +-----------+---------------------------+--------------------------------------------+--------------+----------------------+ | buss | :math:`B_{us,s}` | Bus slack | | Slack.bus | +-----------+---------------------------+--------------------------------------------+--------------+----------------------+ | pd | :math:`p_{d}` | active demand | *p.u.* | StaticLoad.p0 | +-----------+---------------------------+--------------------------------------------+--------------+----------------------+ | Cg | :math:`C_{g}` | Gen connection matrix | | MatProcessor.Cg | +-----------+---------------------------+--------------------------------------------+--------------+----------------------+ | Cl | :math:`C_{l}` | Load connection matrix | | MatProcessor.Cl | +-----------+---------------------------+--------------------------------------------+--------------+----------------------+ | CftT | :math:`C_{ft}^T` | Transpose of line connection matrix | | MatProcessor.CftT | +-----------+---------------------------+--------------------------------------------+--------------+----------------------+ | Csh | :math:`C_{sh}` | Shunt connection matrix | | MatProcessor.Csh | +-----------+---------------------------+--------------------------------------------+--------------+----------------------+ | Bbus | :math:`B_{bus}` | Bus admittance matrix | | MatProcessor.Bbus | +-----------+---------------------------+--------------------------------------------+--------------+----------------------+ | Bf | :math:`B_{f}` | Bf matrix | | MatProcessor.Bf | +-----------+---------------------------+--------------------------------------------+--------------+----------------------+ | Pbusinj | :math:`P_{bus}^{inj}` | Bus power injection vector | | MatProcessor.Pbusinj | +-----------+---------------------------+--------------------------------------------+--------------+----------------------+ | Pfinj | :math:`P_{f}^{inj}` | Line power injection vector | | MatProcessor.Pfinj | +-----------+---------------------------+--------------------------------------------+--------------+----------------------+ | c2 | :math:`c_{2}` | Gen cost coefficient 2 | *$/(p.u.^2)* | GCost.c2 | +-----------+---------------------------+--------------------------------------------+--------------+----------------------+ | c1 | :math:`c_{1}` | Gen cost coefficient 1 | *$/(p.u.)* | GCost.c1 | +-----------+---------------------------+--------------------------------------------+--------------+----------------------+ | c0 | :math:`c_{0}` | Gen cost coefficient 0 | *$* | GCost.c0 | +-----------+---------------------------+--------------------------------------------+--------------+----------------------+ | ctrl | :math:`c_{trl}` | Gen controllability | | StaticGen.ctrl | +-----------+---------------------------+--------------------------------------------+--------------+----------------------+ | pmax | :math:`p_{g, max}` | Gen maximum active power | *p.u.* | StaticGen.pmax | +-----------+---------------------------+--------------------------------------------+--------------+----------------------+ | pmin | :math:`p_{g, min}` | Gen minimum active power | *p.u.* | StaticGen.pmin | +-----------+---------------------------+--------------------------------------------+--------------+----------------------+ | ul | :math:`u_{l}` | Line connection status | | Line.u | +-----------+---------------------------+--------------------------------------------+--------------+----------------------+ | rate_a | :math:`R_{ATEA}` | long-term flow limit | *p.u.* | Line.rate_a | +-----------+---------------------------+--------------------------------------------+--------------+----------------------+ | amax | :math:`\theta_{bus, max}` | max line angle difference | | Line.amax | +-----------+---------------------------+--------------------------------------------+--------------+----------------------+ | amin | :math:`\theta_{bus, min}` | min line angle difference | | Line.amin | +-----------+---------------------------+--------------------------------------------+--------------+----------------------+ | zg | :math:`z_{one,g}` | Gen area | | StaticGen.area | +-----------+---------------------------+--------------------------------------------+--------------+----------------------+ | zd | :math:`z_{one,d}` | Load area | | StaticLoad.area | +-----------+---------------------------+--------------------------------------------+--------------+----------------------+ | R10 | :math:`R_{10}` | 10-min ramp rate | *p.u./h* | StaticGen.R10 | +-----------+---------------------------+--------------------------------------------+--------------+----------------------+ | cru | :math:`c_{r,u}` | RegUp reserve coefficient | *$/(p.u.)* | SFRCost.cru | +-----------+---------------------------+--------------------------------------------+--------------+----------------------+ | crd | :math:`c_{r,d}` | RegDown reserve coefficient | *$/(p.u.)* | SFRCost.crd | +-----------+---------------------------+--------------------------------------------+--------------+----------------------+ | du | :math:`d_{u}` | RegUp reserve requirement in percentage | *%* | SFR.du | +-----------+---------------------------+--------------------------------------------+--------------+----------------------+ | dd | :math:`d_{d}` | RegDown reserve requirement in percentage | *%* | SFR.dd | +-----------+---------------------------+--------------------------------------------+--------------+----------------------+ | sd | :math:`s_{d}` | zonal load factor for ED | | EDTSlot.sd | +-----------+---------------------------+--------------------------------------------+--------------+----------------------+ | timeslot | :math:`t_{s,idx}` | Time slot for multi-period ED | | EDTSlot.idx | +-----------+---------------------------+--------------------------------------------+--------------+----------------------+ | R30 | :math:`R_{30}` | 30-min ramp rate | *p.u./h* | StaticGen.R30 | +-----------+---------------------------+--------------------------------------------+--------------+----------------------+ | dsr | :math:`d_{sr}` | spinning reserve requirement in percentage | *%* | SR.demand | +-----------+---------------------------+--------------------------------------------+--------------+----------------------+ | csr | :math:`c_{sr}` | cost for spinning reserve | *$/(p.u.*h)* | SRCost.csr | +-----------+---------------------------+--------------------------------------------+--------------+----------------------+ Config Fields in [ED] +--------+-----------------+-------+------------------------+-----------------+ | Option | Symbol | Value | Info | Accepted values | +========+=================+=======+========================+=================+ | t | :math:`T_{cfg}` | 1 | time interval in hours | | +--------+-----------------+-------+------------------------+-----------------+ .. _EDDG: -------------------------------------------------------------------------------- EDDG -------------------------------------------------------------------------------- ED with distributed generation :ref:`DG`. Note that EDDG only inlcudes DG output power. If ESD1 is included, EDES should be used instead, otherwise there is no SOC. Objective ---------------------------------- +------+----------------------------------------------------------------------------------------------------------------------------+ | Unit | Expression | +======+============================================================================================================================+ | *$* | :math:`min. \sum(T_{cfg}^{2} c_{2} p_g^{2})+ T_{cfg} \sum(c_{1} p_g + c_{sr} p_{r,s})+ \sum(u_{g} c_{0} 1_{tl})` | +------+----------------------------------------------------------------------------------------------------------------------------+ Expressions ---------------------------------- +--------+----------------+--------------------------------------------------------------------+--------+-----------+ | Name | Description | Expression | Unit | Source | +========+================+====================================================================+========+===========+ | plf | 2D Line flow | :math:`B_{f} \theta_{bus} + P_{f}^{inj} 1_{tl}` | *p.u.* | Line | +--------+----------------+--------------------------------------------------------------------+--------+-----------+ | pmaxe | Effective pmax | :math:`c_{trl,n,e} p_{g, 0} 1_{tl} + c_{trl, e} 1_{tl} p_{g, max}` | *p.u.* | StaticGen | +--------+----------------+--------------------------------------------------------------------+--------+-----------+ | pmine | Effective pmin | :math:`c_{trl,n,e} p_{g, 0} 1_{tl} + c_{trl, e} 1_{tl} p_{g, min}` | *p.u.* | StaticGen | +--------+----------------+--------------------------------------------------------------------+--------+-----------+ Constraints ---------------------------------- +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------+ | Name | Description | Expression | +========+===================================+============================================================================================================+ | pb | power balance | :math:`B_{bus} \theta_{bus} + P_{bus}^{inj} 1_{tl} + C_{l} p_{d,s} + C_{sh} g_{sh} 1_{tl} - C_{g} p_g = 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------+ | sbus | align slack bus angle | :math:`c_{sb} \theta_{bus} = 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------+ | pglb | pg min | :math:`-p_g + p_{g, min, e} \leq 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------+ | pgub | pg max | :math:`p_g - p_{g, max, e} \leq 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------+ | plflb | line flow lower bound | :math:`-B_{f} \theta_{bus} - P_{f}^{inj} 1_{tl} - u_{l} R_{ATEA} 1_{tl} \leq 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------+ | plfub | line flow upper bound | :math:`B_{f} \theta_{bus} + P_{f}^{inj} 1_{tl} - u_{l} R_{ATEA} 1_{tl} \leq 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------+ | alflb | line angle difference lower bound | :math:`-C_{ft}^T \theta_{bus} + \theta_{bus, min} 1_{tl} \leq 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------+ | alfub | line angle difference upper bound | :math:`C_{ft}^T \theta_{bus} - \theta_{bus, max} 1_{tl} \leq 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------+ | rbu | RegUp reserve balance | :math:`S_{g} u_{g} p_{r,u} - d_{u, d} 1_{tl} = 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------+ | rbd | RegDn reserve balance | :math:`S_{g} u_{g} p_{r,d} - d_{d, d} 1_{tl} = 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------+ | rru | RegUp reserve source | :math:`p_g + p_{r,u} - u_{g} p_{g, max} 1_{tl} \leq 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------+ | rrd | RegDn reserve source | :math:`-p_g + p_{r,d} + u_{g} p_{g, min} 1_{tl} \leq 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------+ | rgu | Gen ramping up | :math:`p_g M_{r} - T_{cfg} R_{30,R} \leq 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------+ | rgd | Gen ramping down | :math:`-p_g M_{r} - T_{cfg} R_{30,R} \leq 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------+ | prsb | spinning reserve balance | :math:`u_{g} p_{g, max} 1_{tl} - p_g - p_{r,s} = 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------+ | rsr | spinning reserve requirement | :math:`-S_{g} p_{r,s} + d_{s,r,z} \leq 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------+ | rgu0 | Initial gen ramping up | :math:`u_{g}[: 0], p_g[:, 0] - p_{g, 0}[:, 0] - R_{30} \leq 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------+ | rgd0 | Initial gen ramping down | :math:`u_{g}[: 0], -p_g[:, 0] + p_{g, 0}[:, 0] - R_{30} \leq 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------+ | cdgb | Select DG power from pg | :math:`C_{DG} p_g - p_{g,DG} = 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------+ Vars ---------------------------------- +-------+----------------------+------------------+--------+-------------+------------+ | Name | Symbol | Description | Unit | Source | Properties | +=======+======================+==================+========+=============+============+ | pg | :math:`p_g` | 2D Gen power | *p.u.* | StaticGen.p | | +-------+----------------------+------------------+--------+-------------+------------+ | vBus | :math:`v_{Bus}` | 2D Bus voltage | *p.u.* | Bus.v | | +-------+----------------------+------------------+--------+-------------+------------+ | aBus | :math:`\theta_{bus}` | 2D Bus angle | *rad* | Bus.a | | +-------+----------------------+------------------+--------+-------------+------------+ | pru | :math:`p_{r,u}` | 2D RegUp power | *p.u.* | StaticGen | nonneg | +-------+----------------------+------------------+--------+-------------+------------+ | prd | :math:`p_{r,d}` | 2D RegDn power | *p.u.* | StaticGen | nonneg | +-------+----------------------+------------------+--------+-------------+------------+ | prs | :math:`p_{r,s}` | spinning reserve | *p.u.* | StaticGen | nonneg | +-------+----------------------+------------------+--------+-------------+------------+ | pgdg | :math:`p_{g,DG}` | DG output power | *p.u.* | DG | | +-------+----------------------+------------------+--------+-------------+------------+ ExpressionCalcs ---------------------------------- +------+-------------------+------------------+----------+--------+ | Name | Description | Expression | Unit | Source | +======+===================+==================+==========+========+ | pi | LMP, dual of | :math:`\phi[pb]` | *$/p.u.* | Bus | +------+-------------------+------------------+----------+--------+ Services --------- +---------+-----------------------+--------------------------------------------------+-----------+ | Name | Symbol | Description | Type | +=========+=======================+==================================================+===========+ | csb | :math:`c_{sb}` | select slack bus | VarSelect | +---------+-----------------------+--------------------------------------------------+-----------+ | ctrle | :math:`c_{trl, e}` | Effective Gen controllability | NumOpDual | +---------+-----------------------+--------------------------------------------------+-----------+ | nctrl | :math:`c_{trl,n}` | Effective Gen uncontrollability | NumOp | +---------+-----------------------+--------------------------------------------------+-----------+ | nctrle | :math:`c_{trl,n,e}` | Effective Gen uncontrollability | NumOpDual | +---------+-----------------------+--------------------------------------------------+-----------+ | gs | :math:`S_{g}` | Sum Gen vars vector in shape of area | ZonalSum | +---------+-----------------------+--------------------------------------------------+-----------+ | ds | :math:`S_{d}` | Sum pd vector in shape of area | ZonalSum | +---------+-----------------------+--------------------------------------------------+-----------+ | pdz | :math:`p_{d,z}` | zonal total load | NumOpDual | +---------+-----------------------+--------------------------------------------------+-----------+ | dud | :math:`d_{u, d}` | zonal RegUp reserve requirement | NumOpDual | +---------+-----------------------+--------------------------------------------------+-----------+ | ddd | :math:`d_{d, d}` | zonal RegDn reserve requirement | NumOpDual | +---------+-----------------------+--------------------------------------------------+-----------+ | tlv | :math:`1_{tl}` | time length vector | NumOp | +---------+-----------------------+--------------------------------------------------+-----------+ | pds | :math:`p_{d,s}` | Scaled load | LoadScale | +---------+-----------------------+--------------------------------------------------+-----------+ | Mr | :math:`M_{r}` | Subtraction matrix for ramping | RampSub | +---------+-----------------------+--------------------------------------------------+-----------+ | RR30 | :math:`R_{30,R}` | Repeated ramp rate | NumHstack | +---------+-----------------------+--------------------------------------------------+-----------+ | dsrpz | :math:`d_{s,r, p, z}` | zonal spinning reserve requirement in percentage | NumOpDual | +---------+-----------------------+--------------------------------------------------+-----------+ | dsr | :math:`d_{s,r,z}` | zonal spinning reserve requirement | NumOpDual | +---------+-----------------------+--------------------------------------------------+-----------+ | ugt | :math:`u_{g}` | input ug transpose | NumOp | +---------+-----------------------+--------------------------------------------------+-----------+ | cd | :math:`C_{DG}` | Select DG power from pg | VarSelect | +---------+-----------------------+--------------------------------------------------+-----------+ Parameters ---------------------------------- +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | Name | Symbol | Description | Unit | Source | +===========+===========================+===================================================+==============+======================+ | ug | :math:`u_{g}` | unit commitment decisions | | EDTSlot.ug | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | pg0 | :math:`p_{g, 0}` | Gen initial active power | *p.u.* | StaticGen.p0 | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | gsh | :math:`g_{sh}` | shunt conductance | | Shunt.g | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | buss | :math:`B_{us,s}` | Bus slack | | Slack.bus | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | pd | :math:`p_{d}` | active demand | *p.u.* | StaticLoad.p0 | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | Cg | :math:`C_{g}` | Gen connection matrix | | MatProcessor.Cg | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | Cl | :math:`C_{l}` | Load connection matrix | | MatProcessor.Cl | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | CftT | :math:`C_{ft}^T` | Transpose of line connection matrix | | MatProcessor.CftT | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | Csh | :math:`C_{sh}` | Shunt connection matrix | | MatProcessor.Csh | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | Bbus | :math:`B_{bus}` | Bus admittance matrix | | MatProcessor.Bbus | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | Bf | :math:`B_{f}` | Bf matrix | | MatProcessor.Bf | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | Pbusinj | :math:`P_{bus}^{inj}` | Bus power injection vector | | MatProcessor.Pbusinj | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | Pfinj | :math:`P_{f}^{inj}` | Line power injection vector | | MatProcessor.Pfinj | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | c2 | :math:`c_{2}` | Gen cost coefficient 2 | *$/(p.u.^2)* | GCost.c2 | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | c1 | :math:`c_{1}` | Gen cost coefficient 1 | *$/(p.u.)* | GCost.c1 | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | c0 | :math:`c_{0}` | Gen cost coefficient 0 | *$* | GCost.c0 | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | ctrl | :math:`c_{trl}` | Gen controllability | | StaticGen.ctrl | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | pmax | :math:`p_{g, max}` | Gen maximum active power | *p.u.* | StaticGen.pmax | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | pmin | :math:`p_{g, min}` | Gen minimum active power | *p.u.* | StaticGen.pmin | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | ul | :math:`u_{l}` | Line connection status | | Line.u | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | rate_a | :math:`R_{ATEA}` | long-term flow limit | *p.u.* | Line.rate_a | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | amax | :math:`\theta_{bus, max}` | max line angle difference | | Line.amax | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | amin | :math:`\theta_{bus, min}` | min line angle difference | | Line.amin | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | zg | :math:`z_{one,g}` | Gen area | | StaticGen.area | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | zd | :math:`z_{one,d}` | Load area | | StaticLoad.area | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | R10 | :math:`R_{10}` | 10-min ramp rate | *p.u./h* | StaticGen.R10 | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | cru | :math:`c_{r,u}` | RegUp reserve coefficient | *$/(p.u.)* | SFRCost.cru | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | crd | :math:`c_{r,d}` | RegDown reserve coefficient | *$/(p.u.)* | SFRCost.crd | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | du | :math:`d_{u}` | RegUp reserve requirement in percentage | *%* | SFR.du | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | dd | :math:`d_{d}` | RegDown reserve requirement in percentage | *%* | SFR.dd | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | sd | :math:`s_{d}` | zonal load factor for ED | | EDTSlot.sd | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | timeslot | :math:`t_{s,idx}` | Time slot for multi-period ED | | EDTSlot.idx | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | R30 | :math:`R_{30}` | 30-min ramp rate | *p.u./h* | StaticGen.R30 | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | dsr | :math:`d_{sr}` | spinning reserve requirement in percentage | *%* | SR.demand | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | csr | :math:`c_{sr}` | cost for spinning reserve | *$/(p.u.*h)* | SRCost.csr | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | gendg | :math:`g_{DG}` | gen of DG | | DG.gen | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | gammapd | :math:`\gamma_{p,DG}` | Ratio of DG.pge w.r.t to that of static generator | | DG.gammap | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ Config Fields in [EDDG] +--------+-----------------+-------+------------------------+-----------------+ | Option | Symbol | Value | Info | Accepted values | +========+=================+=======+========================+=================+ | t | :math:`T_{cfg}` | 1 | time interval in hours | | +--------+-----------------+-------+------------------------+-----------------+ .. _EDES: -------------------------------------------------------------------------------- EDES -------------------------------------------------------------------------------- ED with energy storage :ref:`ESD1`. The bilinear term in the formulation is linearized with big-M method. Objective ---------------------------------- +------+----------------------------------------------------------------------------------------------------------------------------+ | Unit | Expression | +======+============================================================================================================================+ | *$* | :math:`min. \sum(T_{cfg}^{2} c_{2} p_g^{2})+ T_{cfg} \sum(c_{1} p_g + c_{sr} p_{r,s})+ \sum(u_{g} c_{0} 1_{tl})` | +------+----------------------------------------------------------------------------------------------------------------------------+ Expressions ---------------------------------- +--------+----------------+--------------------------------------------------------------------+--------+-----------+ | Name | Description | Expression | Unit | Source | +========+================+====================================================================+========+===========+ | plf | 2D Line flow | :math:`B_{f} \theta_{bus} + P_{f}^{inj} 1_{tl}` | *p.u.* | Line | +--------+----------------+--------------------------------------------------------------------+--------+-----------+ | pmaxe | Effective pmax | :math:`c_{trl,n,e} p_{g, 0} 1_{tl} + c_{trl, e} 1_{tl} p_{g, max}` | *p.u.* | StaticGen | +--------+----------------+--------------------------------------------------------------------+--------+-----------+ | pmine | Effective pmin | :math:`c_{trl,n,e} p_{g, 0} 1_{tl} + c_{trl, e} 1_{tl} p_{g, min}` | *p.u.* | StaticGen | +--------+----------------+--------------------------------------------------------------------+--------+-----------+ Constraints ---------------------------------- +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | Name | Description | Expression | +========+===================================+========================================================================================================================+ | pb | power balance | :math:`B_{bus} \theta_{bus} + P_{bus}^{inj} 1_{tl} + C_{l} p_{d,s} + C_{sh} g_{sh} 1_{tl} - C_{g} p_g = 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | sbus | align slack bus angle | :math:`c_{sb} \theta_{bus} = 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | pglb | pg min | :math:`-p_g + p_{g, min, e} \leq 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | pgub | pg max | :math:`p_g - p_{g, max, e} \leq 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | plflb | line flow lower bound | :math:`-B_{f} \theta_{bus} - P_{f}^{inj} 1_{tl} - u_{l} R_{ATEA} 1_{tl} \leq 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | plfub | line flow upper bound | :math:`B_{f} \theta_{bus} + P_{f}^{inj} 1_{tl} - u_{l} R_{ATEA} 1_{tl} \leq 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | alflb | line angle difference lower bound | :math:`-C_{ft}^T \theta_{bus} + \theta_{bus, min} 1_{tl} \leq 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | alfub | line angle difference upper bound | :math:`C_{ft}^T \theta_{bus} - \theta_{bus, max} 1_{tl} \leq 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | rbu | RegUp reserve balance | :math:`S_{g} u_{g} p_{r,u} - d_{u, d} 1_{tl} = 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | rbd | RegDn reserve balance | :math:`S_{g} u_{g} p_{r,d} - d_{d, d} 1_{tl} = 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | rru | RegUp reserve source | :math:`p_g + p_{r,u} - u_{g} p_{g, max} 1_{tl} \leq 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | rrd | RegDn reserve source | :math:`-p_g + p_{r,d} + u_{g} p_{g, min} 1_{tl} \leq 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | rgu | Gen ramping up | :math:`p_g M_{r} - T_{cfg} R_{30,R} \leq 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | rgd | Gen ramping down | :math:`-p_g M_{r} - T_{cfg} R_{30,R} \leq 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | prsb | spinning reserve balance | :math:`u_{g} p_{g, max} 1_{tl} - p_g - p_{r,s} = 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | rsr | spinning reserve requirement | :math:`-S_{g} p_{r,s} + d_{s,r,z} \leq 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | rgu0 | Initial gen ramping up | :math:`u_{g}[: 0], p_g[:, 0] - p_{g, 0}[:, 0] - R_{30} \leq 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | rgd0 | Initial gen ramping down | :math:`u_{g}[: 0], -p_g[:, 0] + p_{g, 0}[:, 0] - R_{30} \leq 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | cdgb | Select DG power from pg | :math:`C_{DG} p_g - p_{g,DG} = 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | SOClb | SOC lower bound | :math:`-SOC + SOC_{min} \leq 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | SOCub | SOC upper bound | :math:`SOC - SOC_{max} \leq 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | cescb | Select pce from DG | :math:`C_{ESD} p_{g,DG} - p_{c,ESD} = 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | cesdb | Select pde from DG | :math:`C_{ESD} p_{g,DG} - p_{d,ESD} = 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | cdb | Charging decision bound | :math:`u_{c,ESD} + u_{d,ESD} - 1 = 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | zce1 | zce bound 1 | :math:`-z_{c,ESD} + p_{c,ESD} \leq 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | zce2 | zce bound 2 | :math:`z_{c,ESD} - p_{c,ESD} - M_{big} (1-u_{c,ESD}) \leq 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | zce3 | zce bound 3 | :math:`z_{c,ESD} - M_{big} u_{c,ESD} \leq 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | zde1 | zde bound 1 | :math:`-z_{d,ESD} + p_{d,ESD} \leq 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | zde2 | zde bound 2 | :math:`z_{d,ESD} - p_{d,ESD} - M_{big} (1-u_{d,ESD}) \leq 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | zde3 | zde bound 3 | :math:`z_{d,ESD} - M_{big} u_{d,ESD} \leq 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | SOCb | ESD1 SOC balance | :math:`E_{n,R} SOC M_{r,ES} - T_{cfg} \eta_{c,R} z_{c,ESD}[:, 1:] + T_{cfg} R_{\eta_d,R} z_{d,ESD}[:, 1:] = 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | SOCb0 | ESD1 SOC initial balance | :math:`E_n SOC[:, 0] - SOC_{init} - T_{cfg} \eta_c z_{c,ESD}[:, 0] + T_{cfg} \frac{1}{\eta_d} z_{d,ESD}[:, 0] = 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | SOCr | SOC requirement | :math:`SOC[:, -1] - SOC_{init} = 0` | +--------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ Vars ---------------------------------- +-------+----------------------+----------------------------------------------------------------+--------+-------------+------------+ | Name | Symbol | Description | Unit | Source | Properties | +=======+======================+================================================================+========+=============+============+ | pg | :math:`p_g` | 2D Gen power | *p.u.* | StaticGen.p | | +-------+----------------------+----------------------------------------------------------------+--------+-------------+------------+ | vBus | :math:`v_{Bus}` | 2D Bus voltage | *p.u.* | Bus.v | | +-------+----------------------+----------------------------------------------------------------+--------+-------------+------------+ | aBus | :math:`\theta_{bus}` | 2D Bus angle | *rad* | Bus.a | | +-------+----------------------+----------------------------------------------------------------+--------+-------------+------------+ | pru | :math:`p_{r,u}` | 2D RegUp power | *p.u.* | StaticGen | nonneg | +-------+----------------------+----------------------------------------------------------------+--------+-------------+------------+ | prd | :math:`p_{r,d}` | 2D RegDn power | *p.u.* | StaticGen | nonneg | +-------+----------------------+----------------------------------------------------------------+--------+-------------+------------+ | prs | :math:`p_{r,s}` | spinning reserve | *p.u.* | StaticGen | nonneg | +-------+----------------------+----------------------------------------------------------------+--------+-------------+------------+ | pgdg | :math:`p_{g,DG}` | DG output power | *p.u.* | DG | | +-------+----------------------+----------------------------------------------------------------+--------+-------------+------------+ | SOC | :math:`SOC` | ESD1 State of Charge | *%* | ESD1 | pos | +-------+----------------------+----------------------------------------------------------------+--------+-------------+------------+ | pce | :math:`p_{c,ESD}` | ESD1 charging power | *p.u.* | ESD1 | nonneg | +-------+----------------------+----------------------------------------------------------------+--------+-------------+------------+ | pde | :math:`p_{d,ESD}` | ESD1 discharging power | *p.u.* | ESD1 | nonneg | +-------+----------------------+----------------------------------------------------------------+--------+-------------+------------+ | uce | :math:`u_{c,ESD}` | ESD1 charging decision | | ESD1 | boolean | +-------+----------------------+----------------------------------------------------------------+--------+-------------+------------+ | ude | :math:`u_{d,ESD}` | ESD1 discharging decision | | ESD1 | boolean | +-------+----------------------+----------------------------------------------------------------+--------+-------------+------------+ | zce | :math:`z_{c,ESD}` | Aux var for charging, :math:`z_{c,ESD}=u_{c,ESD}*p_{c,ESD}` | | ESD1 | nonneg | +-------+----------------------+----------------------------------------------------------------+--------+-------------+------------+ | zde | :math:`z_{d,ESD}` | Aux var for discharging, :math:`z_{d,ESD}=u_{d,ESD}*p_{d,ESD}` | | ESD1 | nonneg | +-------+----------------------+----------------------------------------------------------------+--------+-------------+------------+ ExpressionCalcs ---------------------------------- +------+-------------------+------------------+----------+--------+ | Name | Description | Expression | Unit | Source | +======+===================+==================+==========+========+ | pi | LMP, dual of | :math:`\phi[pb]` | *$/p.u.* | Bus | +------+-------------------+------------------+----------+--------+ Services --------- +---------+--------------------------+--------------------------------------------------+-----------+ | Name | Symbol | Description | Type | +=========+==========================+==================================================+===========+ | csb | :math:`c_{sb}` | select slack bus | VarSelect | +---------+--------------------------+--------------------------------------------------+-----------+ | ctrle | :math:`c_{trl, e}` | Effective Gen controllability | NumOpDual | +---------+--------------------------+--------------------------------------------------+-----------+ | nctrl | :math:`c_{trl,n}` | Effective Gen uncontrollability | NumOp | +---------+--------------------------+--------------------------------------------------+-----------+ | nctrle | :math:`c_{trl,n,e}` | Effective Gen uncontrollability | NumOpDual | +---------+--------------------------+--------------------------------------------------+-----------+ | gs | :math:`S_{g}` | Sum Gen vars vector in shape of area | ZonalSum | +---------+--------------------------+--------------------------------------------------+-----------+ | ds | :math:`S_{d}` | Sum pd vector in shape of area | ZonalSum | +---------+--------------------------+--------------------------------------------------+-----------+ | pdz | :math:`p_{d,z}` | zonal total load | NumOpDual | +---------+--------------------------+--------------------------------------------------+-----------+ | dud | :math:`d_{u, d}` | zonal RegUp reserve requirement | NumOpDual | +---------+--------------------------+--------------------------------------------------+-----------+ | ddd | :math:`d_{d, d}` | zonal RegDn reserve requirement | NumOpDual | +---------+--------------------------+--------------------------------------------------+-----------+ | tlv | :math:`1_{tl}` | time length vector | NumOp | +---------+--------------------------+--------------------------------------------------+-----------+ | pds | :math:`p_{d,s}` | Scaled load | LoadScale | +---------+--------------------------+--------------------------------------------------+-----------+ | Mr | :math:`M_{r}` | Subtraction matrix for ramping | RampSub | +---------+--------------------------+--------------------------------------------------+-----------+ | RR30 | :math:`R_{30,R}` | Repeated ramp rate | NumHstack | +---------+--------------------------+--------------------------------------------------+-----------+ | dsrpz | :math:`d_{s,r, p, z}` | zonal spinning reserve requirement in percentage | NumOpDual | +---------+--------------------------+--------------------------------------------------+-----------+ | dsr | :math:`d_{s,r,z}` | zonal spinning reserve requirement | NumOpDual | +---------+--------------------------+--------------------------------------------------+-----------+ | ugt | :math:`u_{g}` | input ug transpose | NumOp | +---------+--------------------------+--------------------------------------------------+-----------+ | cd | :math:`C_{DG}` | Select DG power from pg | VarSelect | +---------+--------------------------+--------------------------------------------------+-----------+ | REtaD | :math:`\frac{1}{\eta_d}` | | NumOp | +---------+--------------------------+--------------------------------------------------+-----------+ | Mb | :math:`M_{big}` | 10 times of max of pmax as big M | NumOp | +---------+--------------------------+--------------------------------------------------+-----------+ | ces | :math:`C_{ESD}` | Select ESD power from DG | VarSelect | +---------+--------------------------+--------------------------------------------------+-----------+ | Mre | :math:`M_{r,ES}` | Subtraction matrix for SOC | RampSub | +---------+--------------------------+--------------------------------------------------+-----------+ | EnR | :math:`E_{n,R}` | Repeated En as 2D matrix, (ng, ng-1) | NumHstack | +---------+--------------------------+--------------------------------------------------+-----------+ | EtaCR | :math:`\eta_{c,R}` | Repeated Etac as 2D matrix, (ng, ng-1) | NumHstack | +---------+--------------------------+--------------------------------------------------+-----------+ | REtaDR | :math:`R_{\eta_d,R}` | Repeated REtaD as 2D matrix, (ng, ng-1) | NumHstack | +---------+--------------------------+--------------------------------------------------+-----------+ Parameters ---------------------------------- +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | Name | Symbol | Description | Unit | Source | +===========+===========================+===================================================+==============+======================+ | ug | :math:`u_{g}` | unit commitment decisions | | EDTSlot.ug | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | pg0 | :math:`p_{g, 0}` | Gen initial active power | *p.u.* | StaticGen.p0 | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | gsh | :math:`g_{sh}` | shunt conductance | | Shunt.g | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | buss | :math:`B_{us,s}` | Bus slack | | Slack.bus | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | pd | :math:`p_{d}` | active demand | *p.u.* | StaticLoad.p0 | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | Cg | :math:`C_{g}` | Gen connection matrix | | MatProcessor.Cg | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | Cl | :math:`C_{l}` | Load connection matrix | | MatProcessor.Cl | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | CftT | :math:`C_{ft}^T` | Transpose of line connection matrix | | MatProcessor.CftT | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | Csh | :math:`C_{sh}` | Shunt connection matrix | | MatProcessor.Csh | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | Bbus | :math:`B_{bus}` | Bus admittance matrix | | MatProcessor.Bbus | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | Bf | :math:`B_{f}` | Bf matrix | | MatProcessor.Bf | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | Pbusinj | :math:`P_{bus}^{inj}` | Bus power injection vector | | MatProcessor.Pbusinj | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | Pfinj | :math:`P_{f}^{inj}` | Line power injection vector | | MatProcessor.Pfinj | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | c2 | :math:`c_{2}` | Gen cost coefficient 2 | *$/(p.u.^2)* | GCost.c2 | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | c1 | :math:`c_{1}` | Gen cost coefficient 1 | *$/(p.u.)* | GCost.c1 | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | c0 | :math:`c_{0}` | Gen cost coefficient 0 | *$* | GCost.c0 | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | ctrl | :math:`c_{trl}` | Gen controllability | | StaticGen.ctrl | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | pmax | :math:`p_{g, max}` | Gen maximum active power | *p.u.* | StaticGen.pmax | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | pmin | :math:`p_{g, min}` | Gen minimum active power | *p.u.* | StaticGen.pmin | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | ul | :math:`u_{l}` | Line connection status | | Line.u | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | rate_a | :math:`R_{ATEA}` | long-term flow limit | *p.u.* | Line.rate_a | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | amax | :math:`\theta_{bus, max}` | max line angle difference | | Line.amax | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | amin | :math:`\theta_{bus, min}` | min line angle difference | | Line.amin | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | zg | :math:`z_{one,g}` | Gen area | | StaticGen.area | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | zd | :math:`z_{one,d}` | Load area | | StaticLoad.area | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | R10 | :math:`R_{10}` | 10-min ramp rate | *p.u./h* | StaticGen.R10 | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | cru | :math:`c_{r,u}` | RegUp reserve coefficient | *$/(p.u.)* | SFRCost.cru | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | crd | :math:`c_{r,d}` | RegDown reserve coefficient | *$/(p.u.)* | SFRCost.crd | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | du | :math:`d_{u}` | RegUp reserve requirement in percentage | *%* | SFR.du | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | dd | :math:`d_{d}` | RegDown reserve requirement in percentage | *%* | SFR.dd | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | sd | :math:`s_{d}` | zonal load factor for ED | | EDTSlot.sd | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | timeslot | :math:`t_{s,idx}` | Time slot for multi-period ED | | EDTSlot.idx | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | R30 | :math:`R_{30}` | 30-min ramp rate | *p.u./h* | StaticGen.R30 | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | dsr | :math:`d_{sr}` | spinning reserve requirement in percentage | *%* | SR.demand | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | csr | :math:`c_{sr}` | cost for spinning reserve | *$/(p.u.*h)* | SRCost.csr | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | gendg | :math:`g_{DG}` | gen of DG | | DG.gen | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | gammapd | :math:`\gamma_{p,DG}` | Ratio of DG.pge w.r.t to that of static generator | | DG.gammap | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | En | :math:`E_n` | Rated energy capacity | *MWh* | ESD1.En | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | SOCmax | :math:`SOC_{max}` | Maximum allowed value for SOC in limiter | *%* | ESD1.SOCmax | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | SOCmin | :math:`SOC_{min}` | Minimum required value for SOC in limiter | *%* | ESD1.SOCmin | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | SOCinit | :math:`SOC_{init}` | Initial SOC | *%* | ESD1.SOCinit | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | EtaC | :math:`\eta_c` | Efficiency during charging | *%* | ESD1.EtaC | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | EtaD | :math:`\eta_d` | Efficiency during discharging | *%* | ESD1.EtaD | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | genesd | :math:`g_{ESD}` | gen of ESD1 | | ESD1.idx | +-----------+---------------------------+---------------------------------------------------+--------------+----------------------+ Config Fields in [EDES] +--------+-----------------+-------+------------------------+-----------------+ | Option | Symbol | Value | Info | Accepted values | +========+=================+=======+========================+=================+ | t | :math:`T_{cfg}` | 1 | time interval in hours | | +--------+-----------------+-------+------------------------+-----------------+ .. _RTED: -------------------------------------------------------------------------------- RTED -------------------------------------------------------------------------------- DC-based real-time economic dispatch (RTED). RTED extends DCOPF with: - 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 related constraints are ommited in this formulation. 3. The power balance is solved for the entire system. 4. The SFR is solved for each area. Objective ---------------------------------- +------+-------------------------------------------------------------------------------------------------------------------------------------------+ | Unit | Expression | +======+===========================================================================================================================================+ | *$* | :math:`min. T_{cfg}^{2} \sum(c_{2} p_g^{2}) + \sum(u_{g} c_{0})+ T_{cfg} \sum(c_{1} p_g + c_{r,u} p_{r,u} + c_{r,d} p_{r,d})` | +------+-------------------------------------------------------------------------------------------------------------------------------------------+ Expressions ---------------------------------- +--------+----------------+------------------------------------------------------+--------+-----------+ | Name | Description | Expression | Unit | Source | +========+================+======================================================+========+===========+ | plf | Line flow | :math:`B_{f} \theta_{bus} + P_{f}^{inj}` | *p.u.* | Line | +--------+----------------+------------------------------------------------------+--------+-----------+ | pmaxe | Effective pmax | :math:`c_{trl,n,e} p_{g, 0} + c_{trl, e} p_{g, max}` | *p.u.* | StaticGen | +--------+----------------+------------------------------------------------------+--------+-----------+ | pmine | Effective pmin | :math:`c_{trl,n,e} p_{g, 0} + c_{trl, e} p_{g, min}` | *p.u.* | StaticGen | +--------+----------------+------------------------------------------------------+--------+-----------+ Constraints ---------------------------------- +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | Name | Description | Expression | +========+===================================+============================================================================================+ | pb | power balance | :math:`B_{bus} \theta_{bus} + P_{bus}^{inj} + C_{l} p_{d} + C_{sh} g_{sh} - C_{g} p_g = 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | sbus | align slack bus angle | :math:`c_{sb} \theta_{bus} = 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | pglb | pg min | :math:`-p_g + p_{g, min, e} \leq 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | pgub | pg max | :math:`p_g - p_{g, max, e} \leq 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | plflb | line flow lower bound | :math:`-p_{lf} - u_{l} R_{ATEA} \leq 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | plfub | line flow upper bound | :math:`p_{lf} - u_{l} R_{ATEA} \leq 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | alflb | line angle difference lower bound | :math:`-C_{ft}^T \theta_{bus} + \theta_{bus, min} \leq 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | alfub | line angle difference upper bound | :math:`C_{ft}^T \theta_{bus} - \theta_{bus, max} \leq 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | rbu | RegUp reserve balance | :math:`S_{g} u_{g} p_{r,u} - d_{u, d} = 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | rbd | RegDn reserve balance | :math:`S_{g} u_{g} p_{r,d} - d_{d, d} = 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | rru | RegUp reserve source | :math:`u_{g} (p_g + p_{r,u}) - u_{g} p_{g, max, e} \leq 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | rrd | RegDn reserve source | :math:`u_{g} (-p_g + p_{r,d}) + u_{g} p_{g, min, e} \leq 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | rgu | Gen ramping up | :math:`u_{g} (p_g-p_{g, 0}-R_{10}) \leq 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | rgd | Gen ramping down | :math:`u_{g} (-p_g+p_{g, 0}-R_{10}) \leq 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ Vars ---------------------------------- +-------+----------------------+------------------------------------+--------+-------------+------------+ | Name | Symbol | Description | Unit | Source | Properties | +=======+======================+====================================+========+=============+============+ | pg | :math:`p_g` | Gen active power | *p.u.* | StaticGen.p | | +-------+----------------------+------------------------------------+--------+-------------+------------+ | vBus | :math:`v_{Bus}` | Bus voltage magnitude, placeholder | *p.u.* | Bus.v | | +-------+----------------------+------------------------------------+--------+-------------+------------+ | aBus | :math:`\theta_{bus}` | Bus voltage angle | *rad* | Bus.a | | +-------+----------------------+------------------------------------+--------+-------------+------------+ | pru | :math:`p_{r,u}` | RegUp reserve | *p.u.* | StaticGen | nonneg | +-------+----------------------+------------------------------------+--------+-------------+------------+ | prd | :math:`p_{r,d}` | RegDn reserve | *p.u.* | StaticGen | nonneg | +-------+----------------------+------------------------------------+--------+-------------+------------+ ExpressionCalcs ---------------------------------- +------+-------------------+------------------+----------+--------+ | Name | Description | Expression | Unit | Source | +======+===================+==================+==========+========+ | pi | LMP, dual of | :math:`\phi[pb]` | *$/p.u.* | Bus | +------+-------------------+------------------+----------+--------+ Services --------- +---------+---------------------+--------------------------------------+-----------+ | Name | Symbol | Description | Type | +=========+=====================+======================================+===========+ | csb | :math:`c_{sb}` | select slack bus | VarSelect | +---------+---------------------+--------------------------------------+-----------+ | ctrle | :math:`c_{trl, e}` | Effective Gen controllability | NumOpDual | +---------+---------------------+--------------------------------------+-----------+ | nctrl | :math:`c_{trl,n}` | Effective Gen uncontrollability | NumOp | +---------+---------------------+--------------------------------------+-----------+ | nctrle | :math:`c_{trl,n,e}` | Effective Gen uncontrollability | NumOpDual | +---------+---------------------+--------------------------------------+-----------+ | gs | :math:`S_{g}` | Sum Gen vars vector in shape of area | ZonalSum | +---------+---------------------+--------------------------------------+-----------+ | ds | :math:`S_{d}` | Sum pd vector in shape of area | ZonalSum | +---------+---------------------+--------------------------------------+-----------+ | pdz | :math:`p_{d,z}` | zonal total load | NumOpDual | +---------+---------------------+--------------------------------------+-----------+ | dud | :math:`d_{u, d}` | zonal RegUp reserve requirement | NumOpDual | +---------+---------------------+--------------------------------------+-----------+ | ddd | :math:`d_{d, d}` | zonal RegDn reserve requirement | NumOpDual | +---------+---------------------+--------------------------------------+-----------+ Parameters ---------------------------------- +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | Name | Symbol | Description | Unit | Source | +==========+===========================+===========================================+==============+======================+ | ug | :math:`u_{g}` | Gen connection status | | StaticGen.u | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | pg0 | :math:`p_{g, 0}` | Gen initial active power | *p.u.* | StaticGen.p0 | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | gsh | :math:`g_{sh}` | shunt conductance | | Shunt.g | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | buss | :math:`B_{us,s}` | Bus slack | | Slack.bus | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | pd | :math:`p_{d}` | active demand | *p.u.* | StaticLoad.p0 | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | Cg | :math:`C_{g}` | Gen connection matrix | | MatProcessor.Cg | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | Cl | :math:`C_{l}` | Load connection matrix | | MatProcessor.Cl | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | CftT | :math:`C_{ft}^T` | Transpose of line connection matrix | | MatProcessor.CftT | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | Csh | :math:`C_{sh}` | Shunt connection matrix | | MatProcessor.Csh | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | Bbus | :math:`B_{bus}` | Bus admittance matrix | | MatProcessor.Bbus | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | Bf | :math:`B_{f}` | Bf matrix | | MatProcessor.Bf | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | Pbusinj | :math:`P_{bus}^{inj}` | Bus power injection vector | | MatProcessor.Pbusinj | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | Pfinj | :math:`P_{f}^{inj}` | Line power injection vector | | MatProcessor.Pfinj | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | c2 | :math:`c_{2}` | Gen cost coefficient 2 | *$/(p.u.^2)* | GCost.c2 | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | c1 | :math:`c_{1}` | Gen cost coefficient 1 | *$/(p.u.)* | GCost.c1 | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | c0 | :math:`c_{0}` | Gen cost coefficient 0 | *$* | GCost.c0 | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | ctrl | :math:`c_{trl}` | Gen controllability | | StaticGen.ctrl | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | pmax | :math:`p_{g, max}` | Gen maximum active power | *p.u.* | StaticGen.pmax | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | pmin | :math:`p_{g, min}` | Gen minimum active power | *p.u.* | StaticGen.pmin | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | ul | :math:`u_{l}` | Line connection status | | Line.u | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | rate_a | :math:`R_{ATEA}` | long-term flow limit | *p.u.* | Line.rate_a | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | amax | :math:`\theta_{bus, max}` | max line angle difference | | Line.amax | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | amin | :math:`\theta_{bus, min}` | min line angle difference | | Line.amin | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | zg | :math:`z_{one,g}` | Gen area | | StaticGen.area | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | zd | :math:`z_{one,d}` | Load area | | StaticLoad.area | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | R10 | :math:`R_{10}` | 10-min ramp rate | *p.u./h* | StaticGen.R10 | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | cru | :math:`c_{r,u}` | RegUp reserve coefficient | *$/(p.u.)* | SFRCost.cru | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | crd | :math:`c_{r,d}` | RegDown reserve coefficient | *$/(p.u.)* | SFRCost.crd | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | du | :math:`d_{u}` | RegUp reserve requirement in percentage | *%* | SFR.du | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | dd | :math:`d_{d}` | RegDown reserve requirement in percentage | *%* | SFR.dd | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ Config Fields in [RTED] +--------+-----------------+-------+------------------------+-----------------+ | Option | Symbol | Value | Info | Accepted values | +========+=================+=======+========================+=================+ | t | :math:`T_{cfg}` | 0.083 | time interval in hours | | +--------+-----------------+-------+------------------------+-----------------+ .. _RTEDDG: -------------------------------------------------------------------------------- RTEDDG -------------------------------------------------------------------------------- RTED with distributed generator :ref:`DG`. Note that RTEDDG only inlcudes DG output power. If ESD1 is included, RTEDES should be used instead, otherwise there is no SOC. Objective ---------------------------------- +------+-------------------------------------------------------------------------------------------------------------------------------------------+ | Unit | Expression | +======+===========================================================================================================================================+ | *$* | :math:`min. T_{cfg}^{2} \sum(c_{2} p_g^{2}) + \sum(u_{g} c_{0})+ T_{cfg} \sum(c_{1} p_g + c_{r,u} p_{r,u} + c_{r,d} p_{r,d})` | +------+-------------------------------------------------------------------------------------------------------------------------------------------+ Expressions ---------------------------------- +--------+----------------+------------------------------------------------------+--------+-----------+ | Name | Description | Expression | Unit | Source | +========+================+======================================================+========+===========+ | plf | Line flow | :math:`B_{f} \theta_{bus} + P_{f}^{inj}` | *p.u.* | Line | +--------+----------------+------------------------------------------------------+--------+-----------+ | pmaxe | Effective pmax | :math:`c_{trl,n,e} p_{g, 0} + c_{trl, e} p_{g, max}` | *p.u.* | StaticGen | +--------+----------------+------------------------------------------------------+--------+-----------+ | pmine | Effective pmin | :math:`c_{trl,n,e} p_{g, 0} + c_{trl, e} p_{g, min}` | *p.u.* | StaticGen | +--------+----------------+------------------------------------------------------+--------+-----------+ Constraints ---------------------------------- +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | Name | Description | Expression | +========+===================================+============================================================================================+ | pb | power balance | :math:`B_{bus} \theta_{bus} + P_{bus}^{inj} + C_{l} p_{d} + C_{sh} g_{sh} - C_{g} p_g = 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | sbus | align slack bus angle | :math:`c_{sb} \theta_{bus} = 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | pglb | pg min | :math:`-p_g + p_{g, min, e} \leq 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | pgub | pg max | :math:`p_g - p_{g, max, e} \leq 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | plflb | line flow lower bound | :math:`-p_{lf} - u_{l} R_{ATEA} \leq 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | plfub | line flow upper bound | :math:`p_{lf} - u_{l} R_{ATEA} \leq 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | alflb | line angle difference lower bound | :math:`-C_{ft}^T \theta_{bus} + \theta_{bus, min} \leq 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | alfub | line angle difference upper bound | :math:`C_{ft}^T \theta_{bus} - \theta_{bus, max} \leq 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | rbu | RegUp reserve balance | :math:`S_{g} u_{g} p_{r,u} - d_{u, d} = 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | rbd | RegDn reserve balance | :math:`S_{g} u_{g} p_{r,d} - d_{d, d} = 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | rru | RegUp reserve source | :math:`u_{g} (p_g + p_{r,u}) - u_{g} p_{g, max, e} \leq 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | rrd | RegDn reserve source | :math:`u_{g} (-p_g + p_{r,d}) + u_{g} p_{g, min, e} \leq 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | rgu | Gen ramping up | :math:`u_{g} (p_g-p_{g, 0}-R_{10}) \leq 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | rgd | Gen ramping down | :math:`u_{g} (-p_g+p_{g, 0}-R_{10}) \leq 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | cdgb | Select DG power from pg | :math:`C_{DG} p_g - p_{g,DG} = 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ Vars ---------------------------------- +-------+----------------------+------------------------------------+--------+-------------+------------+ | Name | Symbol | Description | Unit | Source | Properties | +=======+======================+====================================+========+=============+============+ | pg | :math:`p_g` | Gen active power | *p.u.* | StaticGen.p | | +-------+----------------------+------------------------------------+--------+-------------+------------+ | vBus | :math:`v_{Bus}` | Bus voltage magnitude, placeholder | *p.u.* | Bus.v | | +-------+----------------------+------------------------------------+--------+-------------+------------+ | aBus | :math:`\theta_{bus}` | Bus voltage angle | *rad* | Bus.a | | +-------+----------------------+------------------------------------+--------+-------------+------------+ | pru | :math:`p_{r,u}` | RegUp reserve | *p.u.* | StaticGen | nonneg | +-------+----------------------+------------------------------------+--------+-------------+------------+ | prd | :math:`p_{r,d}` | RegDn reserve | *p.u.* | StaticGen | nonneg | +-------+----------------------+------------------------------------+--------+-------------+------------+ | pgdg | :math:`p_{g,DG}` | DG output power | *p.u.* | DG | | +-------+----------------------+------------------------------------+--------+-------------+------------+ ExpressionCalcs ---------------------------------- +------+-------------------+------------------+----------+--------+ | Name | Description | Expression | Unit | Source | +======+===================+==================+==========+========+ | pi | LMP, dual of | :math:`\phi[pb]` | *$/p.u.* | Bus | +------+-------------------+------------------+----------+--------+ Services --------- +---------+---------------------+--------------------------------------+-----------+ | Name | Symbol | Description | Type | +=========+=====================+======================================+===========+ | csb | :math:`c_{sb}` | select slack bus | VarSelect | +---------+---------------------+--------------------------------------+-----------+ | ctrle | :math:`c_{trl, e}` | Effective Gen controllability | NumOpDual | +---------+---------------------+--------------------------------------+-----------+ | nctrl | :math:`c_{trl,n}` | Effective Gen uncontrollability | NumOp | +---------+---------------------+--------------------------------------+-----------+ | nctrle | :math:`c_{trl,n,e}` | Effective Gen uncontrollability | NumOpDual | +---------+---------------------+--------------------------------------+-----------+ | gs | :math:`S_{g}` | Sum Gen vars vector in shape of area | ZonalSum | +---------+---------------------+--------------------------------------+-----------+ | ds | :math:`S_{d}` | Sum pd vector in shape of area | ZonalSum | +---------+---------------------+--------------------------------------+-----------+ | pdz | :math:`p_{d,z}` | zonal total load | NumOpDual | +---------+---------------------+--------------------------------------+-----------+ | dud | :math:`d_{u, d}` | zonal RegUp reserve requirement | NumOpDual | +---------+---------------------+--------------------------------------+-----------+ | ddd | :math:`d_{d, d}` | zonal RegDn reserve requirement | NumOpDual | +---------+---------------------+--------------------------------------+-----------+ | cd | :math:`C_{DG}` | Select DG power from pg | VarSelect | +---------+---------------------+--------------------------------------+-----------+ Parameters ---------------------------------- +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | Name | Symbol | Description | Unit | Source | +==========+===========================+===================================================+==============+======================+ | ug | :math:`u_{g}` | Gen connection status | | StaticGen.u | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | pg0 | :math:`p_{g, 0}` | Gen initial active power | *p.u.* | StaticGen.p0 | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | gsh | :math:`g_{sh}` | shunt conductance | | Shunt.g | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | buss | :math:`B_{us,s}` | Bus slack | | Slack.bus | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | pd | :math:`p_{d}` | active demand | *p.u.* | StaticLoad.p0 | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | Cg | :math:`C_{g}` | Gen connection matrix | | MatProcessor.Cg | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | Cl | :math:`C_{l}` | Load connection matrix | | MatProcessor.Cl | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | CftT | :math:`C_{ft}^T` | Transpose of line connection matrix | | MatProcessor.CftT | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | Csh | :math:`C_{sh}` | Shunt connection matrix | | MatProcessor.Csh | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | Bbus | :math:`B_{bus}` | Bus admittance matrix | | MatProcessor.Bbus | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | Bf | :math:`B_{f}` | Bf matrix | | MatProcessor.Bf | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | Pbusinj | :math:`P_{bus}^{inj}` | Bus power injection vector | | MatProcessor.Pbusinj | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | Pfinj | :math:`P_{f}^{inj}` | Line power injection vector | | MatProcessor.Pfinj | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | c2 | :math:`c_{2}` | Gen cost coefficient 2 | *$/(p.u.^2)* | GCost.c2 | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | c1 | :math:`c_{1}` | Gen cost coefficient 1 | *$/(p.u.)* | GCost.c1 | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | c0 | :math:`c_{0}` | Gen cost coefficient 0 | *$* | GCost.c0 | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | ctrl | :math:`c_{trl}` | Gen controllability | | StaticGen.ctrl | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | pmax | :math:`p_{g, max}` | Gen maximum active power | *p.u.* | StaticGen.pmax | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | pmin | :math:`p_{g, min}` | Gen minimum active power | *p.u.* | StaticGen.pmin | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | ul | :math:`u_{l}` | Line connection status | | Line.u | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | rate_a | :math:`R_{ATEA}` | long-term flow limit | *p.u.* | Line.rate_a | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | amax | :math:`\theta_{bus, max}` | max line angle difference | | Line.amax | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | amin | :math:`\theta_{bus, min}` | min line angle difference | | Line.amin | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | zg | :math:`z_{one,g}` | Gen area | | StaticGen.area | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | zd | :math:`z_{one,d}` | Load area | | StaticLoad.area | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | R10 | :math:`R_{10}` | 10-min ramp rate | *p.u./h* | StaticGen.R10 | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | cru | :math:`c_{r,u}` | RegUp reserve coefficient | *$/(p.u.)* | SFRCost.cru | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | crd | :math:`c_{r,d}` | RegDown reserve coefficient | *$/(p.u.)* | SFRCost.crd | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | du | :math:`d_{u}` | RegUp reserve requirement in percentage | *%* | SFR.du | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | dd | :math:`d_{d}` | RegDown reserve requirement in percentage | *%* | SFR.dd | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | gendg | :math:`g_{DG}` | gen of DG | | DG.gen | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | gammapd | :math:`\gamma_{p,DG}` | Ratio of DG.pge w.r.t to that of static generator | | DG.gammap | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ Config Fields in [RTEDDG] +--------+-----------------+-------+------------------------+-----------------+ | Option | Symbol | Value | Info | Accepted values | +========+=================+=======+========================+=================+ | t | :math:`T_{cfg}` | 0.083 | time interval in hours | | +--------+-----------------+-------+------------------------+-----------------+ .. _RTEDES: -------------------------------------------------------------------------------- RTEDES -------------------------------------------------------------------------------- RTED with energy storage :ref:`ESD1`. The bilinear term in the formulation is linearized with big-M method. Objective ---------------------------------- +------+-------------------------------------------------------------------------------------------------------------------------------------------+ | Unit | Expression | +======+===========================================================================================================================================+ | *$* | :math:`min. T_{cfg}^{2} \sum(c_{2} p_g^{2}) + \sum(u_{g} c_{0})+ T_{cfg} \sum(c_{1} p_g + c_{r,u} p_{r,u} + c_{r,d} p_{r,d})` | +------+-------------------------------------------------------------------------------------------------------------------------------------------+ Expressions ---------------------------------- +--------+----------------+------------------------------------------------------+--------+-----------+ | Name | Description | Expression | Unit | Source | +========+================+======================================================+========+===========+ | plf | Line flow | :math:`B_{f} \theta_{bus} + P_{f}^{inj}` | *p.u.* | Line | +--------+----------------+------------------------------------------------------+--------+-----------+ | pmaxe | Effective pmax | :math:`c_{trl,n,e} p_{g, 0} + c_{trl, e} p_{g, max}` | *p.u.* | StaticGen | +--------+----------------+------------------------------------------------------+--------+-----------+ | pmine | Effective pmin | :math:`c_{trl,n,e} p_{g, 0} + c_{trl, e} p_{g, min}` | *p.u.* | StaticGen | +--------+----------------+------------------------------------------------------+--------+-----------+ Constraints ---------------------------------- +--------+-----------------------------------+-------------------------------------------------------------------------------------------------------+ | Name | Description | Expression | +========+===================================+=======================================================================================================+ | pb | power balance | :math:`B_{bus} \theta_{bus} + P_{bus}^{inj} + C_{l} p_{d} + C_{sh} g_{sh} - C_{g} p_g = 0` | +--------+-----------------------------------+-------------------------------------------------------------------------------------------------------+ | sbus | align slack bus angle | :math:`c_{sb} \theta_{bus} = 0` | +--------+-----------------------------------+-------------------------------------------------------------------------------------------------------+ | pglb | pg min | :math:`-p_g + p_{g, min, e} \leq 0` | +--------+-----------------------------------+-------------------------------------------------------------------------------------------------------+ | pgub | pg max | :math:`p_g - p_{g, max, e} \leq 0` | +--------+-----------------------------------+-------------------------------------------------------------------------------------------------------+ | plflb | line flow lower bound | :math:`-p_{lf} - u_{l} R_{ATEA} \leq 0` | +--------+-----------------------------------+-------------------------------------------------------------------------------------------------------+ | plfub | line flow upper bound | :math:`p_{lf} - u_{l} R_{ATEA} \leq 0` | +--------+-----------------------------------+-------------------------------------------------------------------------------------------------------+ | alflb | line angle difference lower bound | :math:`-C_{ft}^T \theta_{bus} + \theta_{bus, min} \leq 0` | +--------+-----------------------------------+-------------------------------------------------------------------------------------------------------+ | alfub | line angle difference upper bound | :math:`C_{ft}^T \theta_{bus} - \theta_{bus, max} \leq 0` | +--------+-----------------------------------+-------------------------------------------------------------------------------------------------------+ | rbu | RegUp reserve balance | :math:`S_{g} u_{g} p_{r,u} - d_{u, d} = 0` | +--------+-----------------------------------+-------------------------------------------------------------------------------------------------------+ | rbd | RegDn reserve balance | :math:`S_{g} u_{g} p_{r,d} - d_{d, d} = 0` | +--------+-----------------------------------+-------------------------------------------------------------------------------------------------------+ | rru | RegUp reserve source | :math:`u_{g} (p_g + p_{r,u}) - u_{g} p_{g, max, e} \leq 0` | +--------+-----------------------------------+-------------------------------------------------------------------------------------------------------+ | rrd | RegDn reserve source | :math:`u_{g} (-p_g + p_{r,d}) + u_{g} p_{g, min, e} \leq 0` | +--------+-----------------------------------+-------------------------------------------------------------------------------------------------------+ | rgu | Gen ramping up | :math:`u_{g} (p_g-p_{g, 0}-R_{10}) \leq 0` | +--------+-----------------------------------+-------------------------------------------------------------------------------------------------------+ | rgd | Gen ramping down | :math:`u_{g} (-p_g+p_{g, 0}-R_{10}) \leq 0` | +--------+-----------------------------------+-------------------------------------------------------------------------------------------------------+ | cdgb | Select DG power from pg | :math:`C_{DG} p_g - p_{g,DG} = 0` | +--------+-----------------------------------+-------------------------------------------------------------------------------------------------------+ | SOClb | SOC lower bound | :math:`-SOC + SOC_{min} \leq 0` | +--------+-----------------------------------+-------------------------------------------------------------------------------------------------------+ | SOCub | SOC upper bound | :math:`SOC - SOC_{max} \leq 0` | +--------+-----------------------------------+-------------------------------------------------------------------------------------------------------+ | cescb | Select pce from DG | :math:`C_{ESD} p_{g,DG} - p_{c,ESD} = 0` | +--------+-----------------------------------+-------------------------------------------------------------------------------------------------------+ | cesdb | Select pde from DG | :math:`C_{ESD} p_{g,DG} - p_{d,ESD} = 0` | +--------+-----------------------------------+-------------------------------------------------------------------------------------------------------+ | cdb | Charging decision bound | :math:`u_{c,ESD} + u_{d,ESD} - 1 = 0` | +--------+-----------------------------------+-------------------------------------------------------------------------------------------------------+ | zce1 | zce bound 1 | :math:`-z_{c,ESD} + p_{c,ESD} \leq 0` | +--------+-----------------------------------+-------------------------------------------------------------------------------------------------------+ | zce2 | zce bound 2 | :math:`z_{c,ESD} - p_{c,ESD} - M_{big} (1-u_{c,ESD}) \leq 0` | +--------+-----------------------------------+-------------------------------------------------------------------------------------------------------+ | zce3 | zce bound 3 | :math:`z_{c,ESD} - M_{big} u_{c,ESD} \leq 0` | +--------+-----------------------------------+-------------------------------------------------------------------------------------------------------+ | zde1 | zde bound 1 | :math:`-z_{d,ESD} + p_{d,ESD} \leq 0` | +--------+-----------------------------------+-------------------------------------------------------------------------------------------------------+ | zde2 | zde bound 2 | :math:`z_{d,ESD} - p_{d,ESD} - M_{big} (1-u_{d,ESD}) \leq 0` | +--------+-----------------------------------+-------------------------------------------------------------------------------------------------------+ | zde3 | zde bound 3 | :math:`z_{d,ESD} - M_{big} u_{d,ESD} \leq 0` | +--------+-----------------------------------+-------------------------------------------------------------------------------------------------------+ | SOCb | ESD1 SOC balance | :math:`E_n (SOC - SOC_{init}) - T_{cfg} \eta_c z_{c,ESD}+ T_{cfg} \frac{1}{\eta_d} z_{d,ESD} = 0` | +--------+-----------------------------------+-------------------------------------------------------------------------------------------------------+ Vars ---------------------------------- +-------+----------------------+----------------------------------------------------------------+--------+-------------+------------+ | Name | Symbol | Description | Unit | Source | Properties | +=======+======================+================================================================+========+=============+============+ | pg | :math:`p_g` | Gen active power | *p.u.* | StaticGen.p | | +-------+----------------------+----------------------------------------------------------------+--------+-------------+------------+ | vBus | :math:`v_{Bus}` | Bus voltage magnitude, placeholder | *p.u.* | Bus.v | | +-------+----------------------+----------------------------------------------------------------+--------+-------------+------------+ | aBus | :math:`\theta_{bus}` | Bus voltage angle | *rad* | Bus.a | | +-------+----------------------+----------------------------------------------------------------+--------+-------------+------------+ | pru | :math:`p_{r,u}` | RegUp reserve | *p.u.* | StaticGen | nonneg | +-------+----------------------+----------------------------------------------------------------+--------+-------------+------------+ | prd | :math:`p_{r,d}` | RegDn reserve | *p.u.* | StaticGen | nonneg | +-------+----------------------+----------------------------------------------------------------+--------+-------------+------------+ | pgdg | :math:`p_{g,DG}` | DG output power | *p.u.* | DG | | +-------+----------------------+----------------------------------------------------------------+--------+-------------+------------+ | SOC | :math:`SOC` | ESD1 State of Charge | *%* | ESD1 | pos | +-------+----------------------+----------------------------------------------------------------+--------+-------------+------------+ | pce | :math:`p_{c,ESD}` | ESD1 charging power | *p.u.* | ESD1 | nonneg | +-------+----------------------+----------------------------------------------------------------+--------+-------------+------------+ | pde | :math:`p_{d,ESD}` | ESD1 discharging power | *p.u.* | ESD1 | nonneg | +-------+----------------------+----------------------------------------------------------------+--------+-------------+------------+ | uce | :math:`u_{c,ESD}` | ESD1 charging decision | | ESD1 | boolean | +-------+----------------------+----------------------------------------------------------------+--------+-------------+------------+ | ude | :math:`u_{d,ESD}` | ESD1 discharging decision | | ESD1 | boolean | +-------+----------------------+----------------------------------------------------------------+--------+-------------+------------+ | zce | :math:`z_{c,ESD}` | Aux var for charging, :math:`z_{c,ESD}=u_{c,ESD}*p_{c,ESD}` | | ESD1 | nonneg | +-------+----------------------+----------------------------------------------------------------+--------+-------------+------------+ | zde | :math:`z_{d,ESD}` | Aux var for discharging, :math:`z_{d,ESD}=u_{d,ESD}*p_{d,ESD}` | | ESD1 | nonneg | +-------+----------------------+----------------------------------------------------------------+--------+-------------+------------+ ExpressionCalcs ---------------------------------- +------+-------------------+------------------+----------+--------+ | Name | Description | Expression | Unit | Source | +======+===================+==================+==========+========+ | pi | LMP, dual of | :math:`\phi[pb]` | *$/p.u.* | Bus | +------+-------------------+------------------+----------+--------+ Services --------- +---------+--------------------------+--------------------------------------+-----------+ | Name | Symbol | Description | Type | +=========+==========================+======================================+===========+ | csb | :math:`c_{sb}` | select slack bus | VarSelect | +---------+--------------------------+--------------------------------------+-----------+ | ctrle | :math:`c_{trl, e}` | Effective Gen controllability | NumOpDual | +---------+--------------------------+--------------------------------------+-----------+ | nctrl | :math:`c_{trl,n}` | Effective Gen uncontrollability | NumOp | +---------+--------------------------+--------------------------------------+-----------+ | nctrle | :math:`c_{trl,n,e}` | Effective Gen uncontrollability | NumOpDual | +---------+--------------------------+--------------------------------------+-----------+ | gs | :math:`S_{g}` | Sum Gen vars vector in shape of area | ZonalSum | +---------+--------------------------+--------------------------------------+-----------+ | ds | :math:`S_{d}` | Sum pd vector in shape of area | ZonalSum | +---------+--------------------------+--------------------------------------+-----------+ | pdz | :math:`p_{d,z}` | zonal total load | NumOpDual | +---------+--------------------------+--------------------------------------+-----------+ | dud | :math:`d_{u, d}` | zonal RegUp reserve requirement | NumOpDual | +---------+--------------------------+--------------------------------------+-----------+ | ddd | :math:`d_{d, d}` | zonal RegDn reserve requirement | NumOpDual | +---------+--------------------------+--------------------------------------+-----------+ | cd | :math:`C_{DG}` | Select DG power from pg | VarSelect | +---------+--------------------------+--------------------------------------+-----------+ | REtaD | :math:`\frac{1}{\eta_d}` | | NumOp | +---------+--------------------------+--------------------------------------+-----------+ | Mb | :math:`M_{big}` | 10 times of max of pmax as big M | NumOp | +---------+--------------------------+--------------------------------------+-----------+ | ces | :math:`C_{ESD}` | Select ESD power from DG | VarSelect | +---------+--------------------------+--------------------------------------+-----------+ Parameters ---------------------------------- +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | Name | Symbol | Description | Unit | Source | +==========+===========================+===================================================+==============+======================+ | ug | :math:`u_{g}` | Gen connection status | | StaticGen.u | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | pg0 | :math:`p_{g, 0}` | Gen initial active power | *p.u.* | StaticGen.p0 | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | gsh | :math:`g_{sh}` | shunt conductance | | Shunt.g | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | buss | :math:`B_{us,s}` | Bus slack | | Slack.bus | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | pd | :math:`p_{d}` | active demand | *p.u.* | StaticLoad.p0 | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | Cg | :math:`C_{g}` | Gen connection matrix | | MatProcessor.Cg | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | Cl | :math:`C_{l}` | Load connection matrix | | MatProcessor.Cl | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | CftT | :math:`C_{ft}^T` | Transpose of line connection matrix | | MatProcessor.CftT | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | Csh | :math:`C_{sh}` | Shunt connection matrix | | MatProcessor.Csh | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | Bbus | :math:`B_{bus}` | Bus admittance matrix | | MatProcessor.Bbus | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | Bf | :math:`B_{f}` | Bf matrix | | MatProcessor.Bf | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | Pbusinj | :math:`P_{bus}^{inj}` | Bus power injection vector | | MatProcessor.Pbusinj | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | Pfinj | :math:`P_{f}^{inj}` | Line power injection vector | | MatProcessor.Pfinj | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | c2 | :math:`c_{2}` | Gen cost coefficient 2 | *$/(p.u.^2)* | GCost.c2 | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | c1 | :math:`c_{1}` | Gen cost coefficient 1 | *$/(p.u.)* | GCost.c1 | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | c0 | :math:`c_{0}` | Gen cost coefficient 0 | *$* | GCost.c0 | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | ctrl | :math:`c_{trl}` | Gen controllability | | StaticGen.ctrl | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | pmax | :math:`p_{g, max}` | Gen maximum active power | *p.u.* | StaticGen.pmax | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | pmin | :math:`p_{g, min}` | Gen minimum active power | *p.u.* | StaticGen.pmin | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | ul | :math:`u_{l}` | Line connection status | | Line.u | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | rate_a | :math:`R_{ATEA}` | long-term flow limit | *p.u.* | Line.rate_a | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | amax | :math:`\theta_{bus, max}` | max line angle difference | | Line.amax | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | amin | :math:`\theta_{bus, min}` | min line angle difference | | Line.amin | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | zg | :math:`z_{one,g}` | Gen area | | StaticGen.area | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | zd | :math:`z_{one,d}` | Load area | | StaticLoad.area | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | R10 | :math:`R_{10}` | 10-min ramp rate | *p.u./h* | StaticGen.R10 | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | cru | :math:`c_{r,u}` | RegUp reserve coefficient | *$/(p.u.)* | SFRCost.cru | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | crd | :math:`c_{r,d}` | RegDown reserve coefficient | *$/(p.u.)* | SFRCost.crd | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | du | :math:`d_{u}` | RegUp reserve requirement in percentage | *%* | SFR.du | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | dd | :math:`d_{d}` | RegDown reserve requirement in percentage | *%* | SFR.dd | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | gendg | :math:`g_{DG}` | gen of DG | | DG.gen | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | gammapd | :math:`\gamma_{p,DG}` | Ratio of DG.pge w.r.t to that of static generator | | DG.gammap | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | En | :math:`E_n` | Rated energy capacity | *MWh* | ESD1.En | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | SOCmax | :math:`SOC_{max}` | Maximum allowed value for SOC in limiter | *%* | ESD1.SOCmax | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | SOCmin | :math:`SOC_{min}` | Minimum required value for SOC in limiter | *%* | ESD1.SOCmin | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | SOCinit | :math:`SOC_{init}` | Initial SOC | *%* | ESD1.SOCinit | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | EtaC | :math:`\eta_c` | Efficiency during charging | *%* | ESD1.EtaC | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | EtaD | :math:`\eta_d` | Efficiency during discharging | *%* | ESD1.EtaD | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ | genesd | :math:`g_{ESD}` | gen of ESD1 | | ESD1.idx | +----------+---------------------------+---------------------------------------------------+--------------+----------------------+ Config Fields in [RTEDES] +--------+-----------------+-------+------------------------+-----------------+ | Option | Symbol | Value | Info | Accepted values | +========+=================+=======+========================+=================+ | t | :math:`T_{cfg}` | 0.083 | time interval in hours | | +--------+-----------------+-------+------------------------+-----------------+ .. _RTEDVIS: -------------------------------------------------------------------------------- RTEDVIS -------------------------------------------------------------------------------- RTED with virtual inertia scheduling. This class implements real-time economic dispatch with virtual inertia scheduling. Please ensure that the parameters `dvm` and `dvd` are set according to the system base. References ----------------- 1. B. She, F. Li, H. Cui, J. Wang, Q. Zhang and R. Bo, "Virtual Inertia Scheduling (VIS) for Real-Time Economic Dispatch of IBR-Penetrated Power Systems," in IEEE Transactions on Sustainable Energy, vol. 15, no. 2, pp. 938-951, April 2024, doi: 10.1109/TSTE.2023.3319307. Objective ---------------------------------- +------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Unit | Expression | +======+==================================================================================================================================================================================+ | *$* | :math:`min. T_{cfg}^{2} \sum(c_{2} p_g^{2}) + \sum(u_{g} c_{0})+ T_{cfg} \sum(c_{1} p_g + c_{r,u} p_{r,u} + c_{r,d} p_{r,d})+ T_{cfg} \sum(c_{m} M + c_{d} D)` | +------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ Expressions ---------------------------------- +--------+----------------+------------------------------------------------------+--------+-----------+ | Name | Description | Expression | Unit | Source | +========+================+======================================================+========+===========+ | plf | Line flow | :math:`B_{f} \theta_{bus} + P_{f}^{inj}` | *p.u.* | Line | +--------+----------------+------------------------------------------------------+--------+-----------+ | pmaxe | Effective pmax | :math:`c_{trl,n,e} p_{g, 0} + c_{trl, e} p_{g, max}` | *p.u.* | StaticGen | +--------+----------------+------------------------------------------------------+--------+-----------+ | pmine | Effective pmin | :math:`c_{trl,n,e} p_{g, 0} + c_{trl, e} p_{g, min}` | *p.u.* | StaticGen | +--------+----------------+------------------------------------------------------+--------+-----------+ Constraints ---------------------------------- +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | Name | Description | Expression | +========+===================================+============================================================================================+ | pb | power balance | :math:`B_{bus} \theta_{bus} + P_{bus}^{inj} + C_{l} p_{d} + C_{sh} g_{sh} - C_{g} p_g = 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | sbus | align slack bus angle | :math:`c_{sb} \theta_{bus} = 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | pglb | pg min | :math:`-p_g + p_{g, min, e} \leq 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | pgub | pg max | :math:`p_g - p_{g, max, e} \leq 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | plflb | line flow lower bound | :math:`-p_{lf} - u_{l} R_{ATEA} \leq 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | plfub | line flow upper bound | :math:`p_{lf} - u_{l} R_{ATEA} \leq 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | alflb | line angle difference lower bound | :math:`-C_{ft}^T \theta_{bus} + \theta_{bus, min} \leq 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | alfub | line angle difference upper bound | :math:`C_{ft}^T \theta_{bus} - \theta_{bus, max} \leq 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | rbu | RegUp reserve balance | :math:`S_{g} u_{g} p_{r,u} - d_{u, d} = 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | rbd | RegDn reserve balance | :math:`S_{g} u_{g} p_{r,d} - d_{d, d} = 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | rru | RegUp reserve source | :math:`u_{g} (p_g + p_{r,u}) - u_{g} p_{g, max, e} \leq 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | rrd | RegDn reserve source | :math:`u_{g} (-p_g + p_{r,d}) + u_{g} p_{g, min, e} \leq 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | rgu | Gen ramping up | :math:`u_{g} (p_g-p_{g, 0}-R_{10}) \leq 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | rgd | Gen ramping down | :math:`u_{g} (-p_g+p_{g, 0}-R_{10}) \leq 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | Mub | M upper bound | :math:`M - M_{max} \leq 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | Dub | D upper bound | :math:`D - D_{max} \leq 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | Mreq | Emulated inertia requirement | :math:`-S_{g} M + d_{v,m} = 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | Dreq | Emulated damping requirement | :math:`-S_{g} D + d_{v,d} = 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ Vars ---------------------------------- +-------+----------------------+---------------------------------------+--------+-------------+------------+ | Name | Symbol | Description | Unit | Source | Properties | +=======+======================+=======================================+========+=============+============+ | pg | :math:`p_g` | Gen active power | *p.u.* | StaticGen.p | | +-------+----------------------+---------------------------------------+--------+-------------+------------+ | vBus | :math:`v_{Bus}` | Bus voltage magnitude, placeholder | *p.u.* | Bus.v | | +-------+----------------------+---------------------------------------+--------+-------------+------------+ | aBus | :math:`\theta_{bus}` | Bus voltage angle | *rad* | Bus.a | | +-------+----------------------+---------------------------------------+--------+-------------+------------+ | pru | :math:`p_{r,u}` | RegUp reserve | *p.u.* | StaticGen | nonneg | +-------+----------------------+---------------------------------------+--------+-------------+------------+ | prd | :math:`p_{r,d}` | RegDn reserve | *p.u.* | StaticGen | nonneg | +-------+----------------------+---------------------------------------+--------+-------------+------------+ | M | :math:`M` | Emulated startup time constant (M=2H) | *s* | VSG.M | nonneg | +-------+----------------------+---------------------------------------+--------+-------------+------------+ | D | :math:`D` | Emulated damping coefficient | *p.u.* | VSG.D | nonneg | +-------+----------------------+---------------------------------------+--------+-------------+------------+ ExpressionCalcs ---------------------------------- +------+-------------------+------------------+----------+--------+ | Name | Description | Expression | Unit | Source | +======+===================+==================+==========+========+ | pi | LMP, dual of | :math:`\phi[pb]` | *$/p.u.* | Bus | +------+-------------------+------------------+----------+--------+ Services --------- +---------+---------------------+--------------------------------------+-----------+ | Name | Symbol | Description | Type | +=========+=====================+======================================+===========+ | csb | :math:`c_{sb}` | select slack bus | VarSelect | +---------+---------------------+--------------------------------------+-----------+ | ctrle | :math:`c_{trl, e}` | Effective Gen controllability | NumOpDual | +---------+---------------------+--------------------------------------+-----------+ | nctrl | :math:`c_{trl,n}` | Effective Gen uncontrollability | NumOp | +---------+---------------------+--------------------------------------+-----------+ | nctrle | :math:`c_{trl,n,e}` | Effective Gen uncontrollability | NumOpDual | +---------+---------------------+--------------------------------------+-----------+ | gs | :math:`S_{g}` | Sum Gen vars vector in shape of area | ZonalSum | +---------+---------------------+--------------------------------------+-----------+ | ds | :math:`S_{d}` | Sum pd vector in shape of area | ZonalSum | +---------+---------------------+--------------------------------------+-----------+ | pdz | :math:`p_{d,z}` | zonal total load | NumOpDual | +---------+---------------------+--------------------------------------+-----------+ | dud | :math:`d_{u, d}` | zonal RegUp reserve requirement | NumOpDual | +---------+---------------------+--------------------------------------+-----------+ | ddd | :math:`d_{d, d}` | zonal RegDn reserve requirement | NumOpDual | +---------+---------------------+--------------------------------------+-----------+ | gvsg | :math:`S_{g}` | Sum VSG vars vector in shape of area | ZonalSum | +---------+---------------------+--------------------------------------+-----------+ Parameters ---------------------------------- +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | Name | Symbol | Description | Unit | Source | +==========+===========================+===========================================+==============+======================+ | ug | :math:`u_{g}` | Gen connection status | | StaticGen.u | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | pg0 | :math:`p_{g, 0}` | Gen initial active power | *p.u.* | StaticGen.p0 | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | gsh | :math:`g_{sh}` | shunt conductance | | Shunt.g | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | buss | :math:`B_{us,s}` | Bus slack | | Slack.bus | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | pd | :math:`p_{d}` | active demand | *p.u.* | StaticLoad.p0 | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | Cg | :math:`C_{g}` | Gen connection matrix | | MatProcessor.Cg | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | Cl | :math:`C_{l}` | Load connection matrix | | MatProcessor.Cl | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | CftT | :math:`C_{ft}^T` | Transpose of line connection matrix | | MatProcessor.CftT | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | Csh | :math:`C_{sh}` | Shunt connection matrix | | MatProcessor.Csh | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | Bbus | :math:`B_{bus}` | Bus admittance matrix | | MatProcessor.Bbus | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | Bf | :math:`B_{f}` | Bf matrix | | MatProcessor.Bf | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | Pbusinj | :math:`P_{bus}^{inj}` | Bus power injection vector | | MatProcessor.Pbusinj | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | Pfinj | :math:`P_{f}^{inj}` | Line power injection vector | | MatProcessor.Pfinj | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | c2 | :math:`c_{2}` | Gen cost coefficient 2 | *$/(p.u.^2)* | GCost.c2 | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | c1 | :math:`c_{1}` | Gen cost coefficient 1 | *$/(p.u.)* | GCost.c1 | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | c0 | :math:`c_{0}` | Gen cost coefficient 0 | *$* | GCost.c0 | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | ctrl | :math:`c_{trl}` | Gen controllability | | StaticGen.ctrl | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | pmax | :math:`p_{g, max}` | Gen maximum active power | *p.u.* | StaticGen.pmax | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | pmin | :math:`p_{g, min}` | Gen minimum active power | *p.u.* | StaticGen.pmin | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | ul | :math:`u_{l}` | Line connection status | | Line.u | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | rate_a | :math:`R_{ATEA}` | long-term flow limit | *p.u.* | Line.rate_a | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | amax | :math:`\theta_{bus, max}` | max line angle difference | | Line.amax | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | amin | :math:`\theta_{bus, min}` | min line angle difference | | Line.amin | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | zg | :math:`z_{one,g}` | Gen area | | StaticGen.area | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | zd | :math:`z_{one,d}` | Load area | | StaticLoad.area | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | R10 | :math:`R_{10}` | 10-min ramp rate | *p.u./h* | StaticGen.R10 | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | cru | :math:`c_{r,u}` | RegUp reserve coefficient | *$/(p.u.)* | SFRCost.cru | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | crd | :math:`c_{r,d}` | RegDown reserve coefficient | *$/(p.u.)* | SFRCost.crd | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | du | :math:`d_{u}` | RegUp reserve requirement in percentage | *%* | SFR.du | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | dd | :math:`d_{d}` | RegDown reserve requirement in percentage | *%* | SFR.dd | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | cm | :math:`c_{m}` | Virtual inertia cost | *$/s* | VSGCost.cm | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | cd | :math:`c_{d}` | Virtual damping cost | *$/(p.u.)* | VSGCost.cd | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | zvsg | :math:`z_{one,vsg}` | VSG zone | | VSG.zone | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | Mmax | :math:`M_{max}` | Maximum inertia emulation | *s* | VSG.Mmax | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | Dmax | :math:`D_{max}` | Maximum damping emulation | *p.u.* | VSG.Dmax | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | dvm | :math:`d_{v,m}` | Emulated inertia requirement | *s* | VSGR.dvm | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ | dvd | :math:`d_{v,d}` | Emulated damping requirement | *p.u.* | VSGR.dvd | +----------+---------------------------+-------------------------------------------+--------------+----------------------+ Config Fields in [RTEDVIS] +--------+-----------------+-------+------------------------+-----------------+ | Option | Symbol | Value | Info | Accepted values | +========+=================+=======+========================+=================+ | t | :math:`T_{cfg}` | 0.083 | time interval in hours | | +--------+-----------------+-------+------------------------+-----------------+