.. _DCUC: ================================================================================ DCUC ================================================================================ Type for DC-based unit commitment. Available routines: UC_, UCDG_, UCES_ .. _UC: -------------------------------------------------------------------------------- UC -------------------------------------------------------------------------------- DC-based unit commitment (UC): The bilinear term in the formulation is linearized with big-M method. Non-negative var `pdu` is introduced as unserved load with its penalty `cdp`. Constraints include power balance, ramping, spinning reserve, non-spinning reserve, minimum ON/OFF duration. The cost inludes generation cost, startup cost, shutdown cost, spinning reserve cost, non-spinning reserve cost, and unserved load penalty. Method ``_initial_guess`` is used to make initial guess for commitment decision if all generators are online at initial. It is a simple heuristic method, which may not be optimal. Notes ----- 1. Formulations has been adjusted with interval ``config.t`` 3. The tie-line flow has not been implemented in formulations. References ---------- 1. Huang, Y., Pardalos, P. M., & Zheng, Q. P. (2017). Electrical power unit commitment: deterministic and two-stage stochastic programming models and algorithms. Springer. 2. D. A. Tejada-Arango, S. Lumbreras, P. Sánchez-Martín and A. Ramos, "Which Unit-Commitment Formulation is Best? A Comparison Framework," in IEEE Transactions on Power Systems, vol. 35, no. 4, pp. 2926-2936, July 2020, doi: 10.1109/TPWRS.2019.2962024. Objective ---------------------------------- +------+-------------+------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Name | Description | Unit | Expression | +======+=============+======+===========================================================================================================================================================================================================================================+ | obj | total cost | *$* | :math:`min. \sum(c_{2} (T_{cfg} z_{u_{g}})^{2} + c_{1} (T_{cfg} z_{u_{g}}))+ \sum(u_{g} c_{0} 1_{tl}) + \sum(c_{su} v_{g,d} + c_{sd} w_{g,d}) + \sum(c_{sr} p_{r,s}) + \sum(c_{nsr} p_{r, ns}) + \sum(c_{d,p} p_{d,u})` | +------+-------------+------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ Constraints ---------------------------------- +---------+-----------------------------------+----------------------------------------------------------------------------------------------------------------------+ | Name | Description | Expression | +=========+===================================+======================================================================================================================+ | pglb | pg min | :math:`-p_g + c_{trl,n} p_{g, 0} u_{g,d}+ c_{trl} p_{g, min} u_{g,d} <= 0` | +---------+-----------------------------------+----------------------------------------------------------------------------------------------------------------------+ | pgub | pg max | :math:`p_g - c_{trl,n} p_{g, 0} u_{g,d}- c_{trl} p_{g, max} u_{g,d} <= 0` | +---------+-----------------------------------+----------------------------------------------------------------------------------------------------------------------+ | pb | power balance | :math:`B_{bus} \theta_{bus} + P_{bus}^{inj} 1_{tl} + C_{l} (p_{d,s}-p_{d,u}) + C_{sh} g_{sh} 1_{tl} - C_{g} p_g = 0` | +---------+-----------------------------------+----------------------------------------------------------------------------------------------------------------------+ | plflb | line flow lower bound | :math:`-B_{f} \theta_{bus} - P_{f}^{inj} - R_{ATEA} 1_{tl} <= 0` | +---------+-----------------------------------+----------------------------------------------------------------------------------------------------------------------+ | plfub | line flow upper bound | :math:`B_{f} \theta_{bus} + P_{f}^{inj} - R_{ATEA} 1_{tl} <= 0` | +---------+-----------------------------------+----------------------------------------------------------------------------------------------------------------------+ | alflb | line angle difference lower bound | :math:`-C_{ft}^T \theta_{bus} - \theta_{max} 1_{tl} <= 0` | +---------+-----------------------------------+----------------------------------------------------------------------------------------------------------------------+ | alfub | line angle difference upper bound | :math:`C_{ft}^T \theta_{bus} - \theta_{max} 1_{tl} <= 0` | +---------+-----------------------------------+----------------------------------------------------------------------------------------------------------------------+ | prsb | spinning reserve balance | :math:`u_{g,d} p_{g, max} 1_{tl} - z_{u_{g}} - p_{r,s} = 0` | +---------+-----------------------------------+----------------------------------------------------------------------------------------------------------------------+ | rsr | spinning reserve requirement | :math:`-S_{g} p_{r,s} + d_{s,r,z} <= 0` | +---------+-----------------------------------+----------------------------------------------------------------------------------------------------------------------+ | prnsb | non-spinning reserve balance | :math:`1-u_{g,d} p_{g, max} 1_{tl} - p_{r, ns} = 0` | +---------+-----------------------------------+----------------------------------------------------------------------------------------------------------------------+ | rnsr | non-spinning reserve requirement | :math:`-S_{g} p_{r, ns} + d_{nsr} <= 0` | +---------+-----------------------------------+----------------------------------------------------------------------------------------------------------------------+ | actv | startup action | :math:`u_{g,d} M_{r} - v_{g,d}[:, 1:] = 0` | +---------+-----------------------------------+----------------------------------------------------------------------------------------------------------------------+ | actv0 | initial startup action | :math:`u_{g,d}[:, 0] - u_{g}[:, 0] - v_{g,d}[:, 0] = 0` | +---------+-----------------------------------+----------------------------------------------------------------------------------------------------------------------+ | actw | shutdown action | :math:`-u_{g,d} M_{r} - w_{g,d}[:, 1:] = 0` | +---------+-----------------------------------+----------------------------------------------------------------------------------------------------------------------+ | actw0 | initial shutdown action | :math:`-u_{g,d}[:, 0] + u_{g}[:, 0] - w_{g,d}[:, 0] = 0` | +---------+-----------------------------------+----------------------------------------------------------------------------------------------------------------------+ | zuglb | zug lower bound | :math:`- z_{u_{g}} + p_g <= 0` | +---------+-----------------------------------+----------------------------------------------------------------------------------------------------------------------+ | zugub | zug upper bound | :math:`z_{u_{g}} - p_g - M_{zug} (1 - u_{g,d}) <= 0` | +---------+-----------------------------------+----------------------------------------------------------------------------------------------------------------------+ | zugub2 | zug upper bound | :math:`z_{u_{g}} - M_{zug} u_{g,d} <= 0` | +---------+-----------------------------------+----------------------------------------------------------------------------------------------------------------------+ | don | minimum online duration | :math:`T_{on} v_{g,d} - u_{g,d} <= 0` | +---------+-----------------------------------+----------------------------------------------------------------------------------------------------------------------+ | doff | minimum offline duration | :math:`T_{off} w_{g,d} - (1 - u_{g,d}) <= 0` | +---------+-----------------------------------+----------------------------------------------------------------------------------------------------------------------+ | pdumax | unserved demand upper bound | :math:`p_{d,u} - p_{d,s}^{+} c_{trl,d} 1_{tl} <= 0` | +---------+-----------------------------------+----------------------------------------------------------------------------------------------------------------------+ Vars ---------------------------------- +-------+----------------------+-----------------------------------------+--------+-------------+------------+ | Name | Symbol | Description | Unit | Source | Properties | +=======+======================+=========================================+========+=============+============+ | pg | :math:`p_g` | 2D Gen power | *p.u.* | StaticGen.p | | +-------+----------------------+-----------------------------------------+--------+-------------+------------+ | aBus | :math:`\theta_{bus}` | 2D Bus angle | *rad* | Bus.a | | +-------+----------------------+-----------------------------------------+--------+-------------+------------+ | plf | :math:`p_{lf}` | 2D Line flow | *p.u.* | | | +-------+----------------------+-----------------------------------------+--------+-------------+------------+ | prs | :math:`p_{r,s}` | 2D Spinning reserve | *p.u.* | | nonneg | +-------+----------------------+-----------------------------------------+--------+-------------+------------+ | prns | :math:`p_{r, ns}` | 2D Non-spinning reserve | | | nonneg | +-------+----------------------+-----------------------------------------+--------+-------------+------------+ | ugd | :math:`u_{g,d}` | commitment decision | | StaticGen.u | boolean | +-------+----------------------+-----------------------------------------+--------+-------------+------------+ | vgd | :math:`v_{g,d}` | startup action | | StaticGen.u | boolean | +-------+----------------------+-----------------------------------------+--------+-------------+------------+ | wgd | :math:`w_{g,d}` | shutdown action | | StaticGen.u | boolean | +-------+----------------------+-----------------------------------------+--------+-------------+------------+ | zug | :math:`z_{ug}` | Aux var, :math:`z_{ug} = u_{g,d} * p_g` | | | pos | +-------+----------------------+-----------------------------------------+--------+-------------+------------+ | pdu | :math:`p_{d,u}` | unserved demand | *p.u.* | | nonneg | +-------+----------------------+-----------------------------------------+--------+-------------+------------+ Services --------- +---------+-----------------------+------------------------------------------------------+-----------+ | Name | Symbol | Description | Type | +=========+=======================+======================================================+===========+ | ctrle | :math:`c_{trl, e}` | Reshaped controllability | NumOpDual | +---------+-----------------------+------------------------------------------------------+-----------+ | nctrl | :math:`c_{trl,n}` | Effective Gen uncontrollability | NumOp | +---------+-----------------------+------------------------------------------------------+-----------+ | nctrle | :math:`c_{trl,n,e}` | Reshaped non-controllability | NumOpDual | +---------+-----------------------+------------------------------------------------------+-----------+ | amax | :math:`\theta_{max}` | max line angle difference | NumOp | +---------+-----------------------+------------------------------------------------------+-----------+ | gs | :math:`S_{g}` | Sum Gen vars vector in shape of zone | ZonalSum | +---------+-----------------------+------------------------------------------------------+-----------+ | ds | :math:`S_{d}` | Sum pd vector in shape of zone | ZonalSum | +---------+-----------------------+------------------------------------------------------+-----------+ | pdz | :math:`p_{d,z}` | zonal total load | 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 | +---------+-----------------------+------------------------------------------------------+-----------+ | dnsrpz | :math:`d_{nsr, p, z}` | zonal non-spinning reserve requirement in percentage | NumOpDual | +---------+-----------------------+------------------------------------------------------+-----------+ | dnsr | :math:`d_{nsr}` | zonal non-spinning reserve requirement | NumOpDual | +---------+-----------------------+------------------------------------------------------+-----------+ | Mzug | :math:`M_{zug}` | 10 times of max of pmax as big M for zug | NumOp | +---------+-----------------------+------------------------------------------------------+-----------+ | Con | :math:`T_{on}` | minimum ON coefficient | MinDur | +---------+-----------------------+------------------------------------------------------+-----------+ | Coff | :math:`T_{off}` | minimum OFF coefficient | MinDur | +---------+-----------------------+------------------------------------------------------+-----------+ | pdsp | :math:`p_{d,s}^{+}` | positive demand | NumOp | +---------+-----------------------+------------------------------------------------------+-----------+ Parameters ---------------------------------- +-----------+-----------------------+------------------------------------------------+--------------+----------------------+ | Name | Symbol | Description | Unit | Source | +===========+=======================+================================================+==============+======================+ | 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 | +-----------+-----------------------+------------------------------------------------+--------------+----------------------+ | ug | :math:`u_{g}` | Gen connection status | | StaticGen.u | +-----------+-----------------------+------------------------------------------------+--------------+----------------------+ | 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 | +-----------+-----------------------+------------------------------------------------+--------------+----------------------+ | p0 | :math:`p_{g, 0}` | Gen initial active power | *p.u.* | StaticGen.pg0 | +-----------+-----------------------+------------------------------------------------+--------------+----------------------+ | pd | :math:`p_{d}` | active demand | *p.u.* | StaticLoad.p0 | +-----------+-----------------------+------------------------------------------------+--------------+----------------------+ | rate_a | :math:`R_{ATEA}` | long-term flow limit | *MVA* | Line.rate_a | +-----------+-----------------------+------------------------------------------------+--------------+----------------------+ | gsh | :math:`g_{sh}` | shunt conductance | | Shunt.g | +-----------+-----------------------+------------------------------------------------+--------------+----------------------+ | 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 | +-----------+-----------------------+------------------------------------------------+--------------+----------------------+ | zg | :math:`z_{one,g}` | Gen zone | | StaticGen.zone | +-----------+-----------------------+------------------------------------------------+--------------+----------------------+ | zd | :math:`z_{one,d}` | Load zone | | StaticLoad.zone | +-----------+-----------------------+------------------------------------------------+--------------+----------------------+ | R10 | :math:`R_{10}` | 10-min ramp rate | *p.u./h* | StaticGen.R10 | +-----------+-----------------------+------------------------------------------------+--------------+----------------------+ | sd | :math:`s_{d}` | zonal load factor for UC | | UCTSlot.sd | +-----------+-----------------------+------------------------------------------------+--------------+----------------------+ | timeslot | :math:`t_{s,idx}` | Time slot for multi-period UC | | UCTSlot.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 | +-----------+-----------------------+------------------------------------------------+--------------+----------------------+ | cnsr | :math:`c_{nsr}` | cost for non-spinning reserve | *$/(p.u.*h)* | NSRCost.cnsr | +-----------+-----------------------+------------------------------------------------+--------------+----------------------+ | dnsr | :math:`d_{nsr}` | non-spinning reserve requirement in percentage | *%* | NSR.demand | +-----------+-----------------------+------------------------------------------------+--------------+----------------------+ | csu | :math:`c_{su}` | startup cost | *$* | GCost.csu | +-----------+-----------------------+------------------------------------------------+--------------+----------------------+ | csd | :math:`c_{sd}` | shutdown cost | *$* | GCost.csd | +-----------+-----------------------+------------------------------------------------+--------------+----------------------+ | cdp | :math:`c_{d,p}` | penalty for unserved load | *$/(p.u.*h)* | DCost.cdp | +-----------+-----------------------+------------------------------------------------+--------------+----------------------+ | dctrl | :math:`c_{trl,d}` | load controllability | | StaticLoad.ctrl | +-----------+-----------------------+------------------------------------------------+--------------+----------------------+ | td1 | :math:`t_{d1}` | minimum ON duration | *h* | StaticGen.td1 | +-----------+-----------------------+------------------------------------------------+--------------+----------------------+ | td2 | :math:`t_{d2}` | minimum OFF duration | *h* | StaticGen.td2 | +-----------+-----------------------+------------------------------------------------+--------------+----------------------+ .. _UCDG: -------------------------------------------------------------------------------- UCDG -------------------------------------------------------------------------------- UC with distributed generation :ref:`DG`. Note that UCDG only inlcudes DG output power. If ESD1 is included, UCES should be used instead, otherwise there is no SOC. Objective ---------------------------------- +------+-------------+------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Name | Description | Unit | Expression | +======+=============+======+===========================================================================================================================================================================================================================================+ | obj | total cost | *$* | :math:`min. \sum(c_{2} (T_{cfg} z_{u_{g}})^{2} + c_{1} (T_{cfg} z_{u_{g}}))+ \sum(u_{g} c_{0} 1_{tl}) + \sum(c_{su} v_{g,d} + c_{sd} w_{g,d}) + \sum(c_{sr} p_{r,s}) + \sum(c_{nsr} p_{r, ns}) + \sum(c_{d,p} p_{d,u})` | +------+-------------+------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ Constraints ---------------------------------- +---------+-----------------------------------+----------------------------------------------------------------------------------------------------------------------+ | Name | Description | Expression | +=========+===================================+======================================================================================================================+ | pglb | pg min | :math:`-p_g + c_{trl,n} p_{g, 0} u_{g,d}+ c_{trl} p_{g, min} u_{g,d} <= 0` | +---------+-----------------------------------+----------------------------------------------------------------------------------------------------------------------+ | pgub | pg max | :math:`p_g - c_{trl,n} p_{g, 0} u_{g,d}- c_{trl} p_{g, max} u_{g,d} <= 0` | +---------+-----------------------------------+----------------------------------------------------------------------------------------------------------------------+ | pb | power balance | :math:`B_{bus} \theta_{bus} + P_{bus}^{inj} 1_{tl} + C_{l} (p_{d,s}-p_{d,u}) + C_{sh} g_{sh} 1_{tl} - C_{g} p_g = 0` | +---------+-----------------------------------+----------------------------------------------------------------------------------------------------------------------+ | plflb | line flow lower bound | :math:`-B_{f} \theta_{bus} - P_{f}^{inj} - R_{ATEA} 1_{tl} <= 0` | +---------+-----------------------------------+----------------------------------------------------------------------------------------------------------------------+ | plfub | line flow upper bound | :math:`B_{f} \theta_{bus} + P_{f}^{inj} - R_{ATEA} 1_{tl} <= 0` | +---------+-----------------------------------+----------------------------------------------------------------------------------------------------------------------+ | alflb | line angle difference lower bound | :math:`-C_{ft}^T \theta_{bus} - \theta_{max} 1_{tl} <= 0` | +---------+-----------------------------------+----------------------------------------------------------------------------------------------------------------------+ | alfub | line angle difference upper bound | :math:`C_{ft}^T \theta_{bus} - \theta_{max} 1_{tl} <= 0` | +---------+-----------------------------------+----------------------------------------------------------------------------------------------------------------------+ | prsb | spinning reserve balance | :math:`u_{g,d} p_{g, max} 1_{tl} - z_{u_{g}} - p_{r,s} = 0` | +---------+-----------------------------------+----------------------------------------------------------------------------------------------------------------------+ | rsr | spinning reserve requirement | :math:`-S_{g} p_{r,s} + d_{s,r,z} <= 0` | +---------+-----------------------------------+----------------------------------------------------------------------------------------------------------------------+ | prnsb | non-spinning reserve balance | :math:`1-u_{g,d} p_{g, max} 1_{tl} - p_{r, ns} = 0` | +---------+-----------------------------------+----------------------------------------------------------------------------------------------------------------------+ | rnsr | non-spinning reserve requirement | :math:`-S_{g} p_{r, ns} + d_{nsr} <= 0` | +---------+-----------------------------------+----------------------------------------------------------------------------------------------------------------------+ | actv | startup action | :math:`u_{g,d} M_{r} - v_{g,d}[:, 1:] = 0` | +---------+-----------------------------------+----------------------------------------------------------------------------------------------------------------------+ | actv0 | initial startup action | :math:`u_{g,d}[:, 0] - u_{g}[:, 0] - v_{g,d}[:, 0] = 0` | +---------+-----------------------------------+----------------------------------------------------------------------------------------------------------------------+ | actw | shutdown action | :math:`-u_{g,d} M_{r} - w_{g,d}[:, 1:] = 0` | +---------+-----------------------------------+----------------------------------------------------------------------------------------------------------------------+ | actw0 | initial shutdown action | :math:`-u_{g,d}[:, 0] + u_{g}[:, 0] - w_{g,d}[:, 0] = 0` | +---------+-----------------------------------+----------------------------------------------------------------------------------------------------------------------+ | zuglb | zug lower bound | :math:`- z_{u_{g}} + p_g <= 0` | +---------+-----------------------------------+----------------------------------------------------------------------------------------------------------------------+ | zugub | zug upper bound | :math:`z_{u_{g}} - p_g - M_{zug} (1 - u_{g,d}) <= 0` | +---------+-----------------------------------+----------------------------------------------------------------------------------------------------------------------+ | zugub2 | zug upper bound | :math:`z_{u_{g}} - M_{zug} u_{g,d} <= 0` | +---------+-----------------------------------+----------------------------------------------------------------------------------------------------------------------+ | don | minimum online duration | :math:`T_{on} v_{g,d} - u_{g,d} <= 0` | +---------+-----------------------------------+----------------------------------------------------------------------------------------------------------------------+ | doff | minimum offline duration | :math:`T_{off} w_{g,d} - (1 - u_{g,d}) <= 0` | +---------+-----------------------------------+----------------------------------------------------------------------------------------------------------------------+ | pdumax | unserved demand upper bound | :math:`p_{d,u} - p_{d,s}^{+} c_{trl,d} 1_{tl} <= 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 | | +-------+----------------------+-----------------------------------------+--------+-------------+------------+ | aBus | :math:`\theta_{bus}` | 2D Bus angle | *rad* | Bus.a | | +-------+----------------------+-----------------------------------------+--------+-------------+------------+ | plf | :math:`p_{lf}` | 2D Line flow | *p.u.* | | | +-------+----------------------+-----------------------------------------+--------+-------------+------------+ | prs | :math:`p_{r,s}` | 2D Spinning reserve | *p.u.* | | nonneg | +-------+----------------------+-----------------------------------------+--------+-------------+------------+ | prns | :math:`p_{r, ns}` | 2D Non-spinning reserve | | | nonneg | +-------+----------------------+-----------------------------------------+--------+-------------+------------+ | ugd | :math:`u_{g,d}` | commitment decision | | StaticGen.u | boolean | +-------+----------------------+-----------------------------------------+--------+-------------+------------+ | vgd | :math:`v_{g,d}` | startup action | | StaticGen.u | boolean | +-------+----------------------+-----------------------------------------+--------+-------------+------------+ | wgd | :math:`w_{g,d}` | shutdown action | | StaticGen.u | boolean | +-------+----------------------+-----------------------------------------+--------+-------------+------------+ | zug | :math:`z_{ug}` | Aux var, :math:`z_{ug} = u_{g,d} * p_g` | | | pos | +-------+----------------------+-----------------------------------------+--------+-------------+------------+ | pdu | :math:`p_{d,u}` | unserved demand | *p.u.* | | nonneg | +-------+----------------------+-----------------------------------------+--------+-------------+------------+ | pgdg | :math:`p_{g,DG}` | DG output power | *p.u.* | | | +-------+----------------------+-----------------------------------------+--------+-------------+------------+ Services --------- +---------+-----------------------+------------------------------------------------------+-----------+ | Name | Symbol | Description | Type | +=========+=======================+======================================================+===========+ | ctrle | :math:`c_{trl, e}` | Reshaped controllability | NumOpDual | +---------+-----------------------+------------------------------------------------------+-----------+ | nctrl | :math:`c_{trl,n}` | Effective Gen uncontrollability | NumOp | +---------+-----------------------+------------------------------------------------------+-----------+ | nctrle | :math:`c_{trl,n,e}` | Reshaped non-controllability | NumOpDual | +---------+-----------------------+------------------------------------------------------+-----------+ | amax | :math:`\theta_{max}` | max line angle difference | NumOp | +---------+-----------------------+------------------------------------------------------+-----------+ | gs | :math:`S_{g}` | Sum Gen vars vector in shape of zone | ZonalSum | +---------+-----------------------+------------------------------------------------------+-----------+ | ds | :math:`S_{d}` | Sum pd vector in shape of zone | ZonalSum | +---------+-----------------------+------------------------------------------------------+-----------+ | pdz | :math:`p_{d,z}` | zonal total load | 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 | +---------+-----------------------+------------------------------------------------------+-----------+ | dnsrpz | :math:`d_{nsr, p, z}` | zonal non-spinning reserve requirement in percentage | NumOpDual | +---------+-----------------------+------------------------------------------------------+-----------+ | dnsr | :math:`d_{nsr}` | zonal non-spinning reserve requirement | NumOpDual | +---------+-----------------------+------------------------------------------------------+-----------+ | Mzug | :math:`M_{zug}` | 10 times of max of pmax as big M for zug | NumOp | +---------+-----------------------+------------------------------------------------------+-----------+ | Con | :math:`T_{on}` | minimum ON coefficient | MinDur | +---------+-----------------------+------------------------------------------------------+-----------+ | Coff | :math:`T_{off}` | minimum OFF coefficient | MinDur | +---------+-----------------------+------------------------------------------------------+-----------+ | pdsp | :math:`p_{d,s}^{+}` | positive demand | NumOp | +---------+-----------------------+------------------------------------------------------+-----------+ | cd | :math:`C_{DG}` | Select DG power from pg | VarSelect | +---------+-----------------------+------------------------------------------------------+-----------+ Parameters ---------------------------------- +-----------+-----------------------+--------------------------------------------------------+--------------+----------------------+ | Name | Symbol | Description | Unit | Source | +===========+=======================+========================================================+==============+======================+ | 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 | +-----------+-----------------------+--------------------------------------------------------+--------------+----------------------+ | ug | :math:`u_{g}` | Gen connection status | | StaticGen.u | +-----------+-----------------------+--------------------------------------------------------+--------------+----------------------+ | 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 | +-----------+-----------------------+--------------------------------------------------------+--------------+----------------------+ | p0 | :math:`p_{g, 0}` | Gen initial active power | *p.u.* | StaticGen.pg0 | +-----------+-----------------------+--------------------------------------------------------+--------------+----------------------+ | pd | :math:`p_{d}` | active demand | *p.u.* | StaticLoad.p0 | +-----------+-----------------------+--------------------------------------------------------+--------------+----------------------+ | rate_a | :math:`R_{ATEA}` | long-term flow limit | *MVA* | Line.rate_a | +-----------+-----------------------+--------------------------------------------------------+--------------+----------------------+ | gsh | :math:`g_{sh}` | shunt conductance | | Shunt.g | +-----------+-----------------------+--------------------------------------------------------+--------------+----------------------+ | 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 | +-----------+-----------------------+--------------------------------------------------------+--------------+----------------------+ | zg | :math:`z_{one,g}` | Gen zone | | StaticGen.zone | +-----------+-----------------------+--------------------------------------------------------+--------------+----------------------+ | zd | :math:`z_{one,d}` | Load zone | | StaticLoad.zone | +-----------+-----------------------+--------------------------------------------------------+--------------+----------------------+ | R10 | :math:`R_{10}` | 10-min ramp rate | *p.u./h* | StaticGen.R10 | +-----------+-----------------------+--------------------------------------------------------+--------------+----------------------+ | sd | :math:`s_{d}` | zonal load factor for UC | | UCTSlot.sd | +-----------+-----------------------+--------------------------------------------------------+--------------+----------------------+ | timeslot | :math:`t_{s,idx}` | Time slot for multi-period UC | | UCTSlot.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 | +-----------+-----------------------+--------------------------------------------------------+--------------+----------------------+ | cnsr | :math:`c_{nsr}` | cost for non-spinning reserve | *$/(p.u.*h)* | NSRCost.cnsr | +-----------+-----------------------+--------------------------------------------------------+--------------+----------------------+ | dnsr | :math:`d_{nsr}` | non-spinning reserve requirement in percentage | *%* | NSR.demand | +-----------+-----------------------+--------------------------------------------------------+--------------+----------------------+ | csu | :math:`c_{su}` | startup cost | *$* | GCost.csu | +-----------+-----------------------+--------------------------------------------------------+--------------+----------------------+ | csd | :math:`c_{sd}` | shutdown cost | *$* | GCost.csd | +-----------+-----------------------+--------------------------------------------------------+--------------+----------------------+ | cdp | :math:`c_{d,p}` | penalty for unserved load | *$/(p.u.*h)* | DCost.cdp | +-----------+-----------------------+--------------------------------------------------------+--------------+----------------------+ | dctrl | :math:`c_{trl,d}` | load controllability | | StaticLoad.ctrl | +-----------+-----------------------+--------------------------------------------------------+--------------+----------------------+ | td1 | :math:`t_{d1}` | minimum ON duration | *h* | StaticGen.td1 | +-----------+-----------------------+--------------------------------------------------------+--------------+----------------------+ | td2 | :math:`t_{d2}` | minimum OFF duration | *h* | StaticGen.td2 | +-----------+-----------------------+--------------------------------------------------------+--------------+----------------------+ | 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 | +-----------+-----------------------+--------------------------------------------------------+--------------+----------------------+ .. _UCES: -------------------------------------------------------------------------------- UCES -------------------------------------------------------------------------------- UC with energy storage :ref:`ESD1`. Objective ---------------------------------- +------+-------------+------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Name | Description | Unit | Expression | +======+=============+======+===========================================================================================================================================================================================================================================+ | obj | total cost | *$* | :math:`min. \sum(c_{2} (T_{cfg} z_{u_{g}})^{2} + c_{1} (T_{cfg} z_{u_{g}}))+ \sum(u_{g} c_{0} 1_{tl}) + \sum(c_{su} v_{g,d} + c_{sd} w_{g,d}) + \sum(c_{sr} p_{r,s}) + \sum(c_{nsr} p_{r, ns}) + \sum(c_{d,p} p_{d,u})` | +------+-------------+------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ Constraints ---------------------------------- +---------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | Name | Description | Expression | +=========+===================================+========================================================================================================================+ | pglb | pg min | :math:`-p_g + c_{trl,n} p_{g, 0} u_{g,d}+ c_{trl} p_{g, min} u_{g,d} <= 0` | +---------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | pgub | pg max | :math:`p_g - c_{trl,n} p_{g, 0} u_{g,d}- c_{trl} p_{g, max} u_{g,d} <= 0` | +---------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | pb | power balance | :math:`B_{bus} \theta_{bus} + P_{bus}^{inj} 1_{tl} + C_{l} (p_{d,s}-p_{d,u}) + C_{sh} g_{sh} 1_{tl} - C_{g} p_g = 0` | +---------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | plflb | line flow lower bound | :math:`-B_{f} \theta_{bus} - P_{f}^{inj} - R_{ATEA} 1_{tl} <= 0` | +---------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | plfub | line flow upper bound | :math:`B_{f} \theta_{bus} + P_{f}^{inj} - R_{ATEA} 1_{tl} <= 0` | +---------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | alflb | line angle difference lower bound | :math:`-C_{ft}^T \theta_{bus} - \theta_{max} 1_{tl} <= 0` | +---------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | alfub | line angle difference upper bound | :math:`C_{ft}^T \theta_{bus} - \theta_{max} 1_{tl} <= 0` | +---------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | prsb | spinning reserve balance | :math:`u_{g,d} p_{g, max} 1_{tl} - z_{u_{g}} - p_{r,s} = 0` | +---------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | rsr | spinning reserve requirement | :math:`-S_{g} p_{r,s} + d_{s,r,z} <= 0` | +---------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | prnsb | non-spinning reserve balance | :math:`1-u_{g,d} p_{g, max} 1_{tl} - p_{r, ns} = 0` | +---------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | rnsr | non-spinning reserve requirement | :math:`-S_{g} p_{r, ns} + d_{nsr} <= 0` | +---------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | actv | startup action | :math:`u_{g,d} M_{r} - v_{g,d}[:, 1:] = 0` | +---------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | actv0 | initial startup action | :math:`u_{g,d}[:, 0] - u_{g}[:, 0] - v_{g,d}[:, 0] = 0` | +---------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | actw | shutdown action | :math:`-u_{g,d} M_{r} - w_{g,d}[:, 1:] = 0` | +---------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | actw0 | initial shutdown action | :math:`-u_{g,d}[:, 0] + u_{g}[:, 0] - w_{g,d}[:, 0] = 0` | +---------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | zuglb | zug lower bound | :math:`- z_{u_{g}} + p_g <= 0` | +---------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | zugub | zug upper bound | :math:`z_{u_{g}} - p_g - M_{zug} (1 - u_{g,d}) <= 0` | +---------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | zugub2 | zug upper bound | :math:`z_{u_{g}} - M_{zug} u_{g,d} <= 0` | +---------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | don | minimum online duration | :math:`T_{on} v_{g,d} - u_{g,d} <= 0` | +---------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | doff | minimum offline duration | :math:`T_{off} w_{g,d} - (1 - u_{g,d}) <= 0` | +---------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | pdumax | unserved demand upper bound | :math:`p_{d,u} - p_{d,s}^{+} c_{trl,d} 1_{tl} <= 0` | +---------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | cdgb | Select DG power from pg | :math:`C_{DG} p_g - p_{g,DG} = 0` | +---------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | SOClb | SOC lower bound | :math:`-SOC + SOC_{min} <= 0` | +---------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | SOCub | SOC upper bound | :math:`SOC - SOC_{max} <= 0` | +---------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | cdb | Charging decision bound | :math:`u_{c,ESD} + u_{d,ESD} - 1 = 0` | +---------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | cesb | Select ESD1 power from pg | :math:`C_{ESD} p_g + z_{c,ESD} - z_{d,ESD} = 0` | +---------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | zce1 | zce bound 1 | :math:`-z_{c,ESD} + p_{c,ESD} <= 0` | +---------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | zce2 | zce bound 2 | :math:`z_{c,ESD} - p_{c,ESD} - M_{big} (1-u_{c,ESD}) <= 0` | +---------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | zce3 | zce bound 3 | :math:`z_{c,ESD} - M_{big} u_{c,ESD} <= 0` | +---------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | zde1 | zde bound 1 | :math:`-z_{d,ESD} + p_{d,ESD} <= 0` | +---------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | zde2 | zde bound 2 | :math:`z_{d,ESD} - p_{d,ESD} - M_{big} (1-u_{d,ESD}) <= 0` | +---------+-----------------------------------+------------------------------------------------------------------------------------------------------------------------+ | zde3 | zde bound 3 | :math:`z_{d,ESD} - M_{big} u_{d,ESD} <= 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 | | +-------+----------------------+----------------------------------------------------------------+--------+-------------+------------+ | aBus | :math:`\theta_{bus}` | 2D Bus angle | *rad* | Bus.a | | +-------+----------------------+----------------------------------------------------------------+--------+-------------+------------+ | plf | :math:`p_{lf}` | 2D Line flow | *p.u.* | | | +-------+----------------------+----------------------------------------------------------------+--------+-------------+------------+ | prs | :math:`p_{r,s}` | 2D Spinning reserve | *p.u.* | | nonneg | +-------+----------------------+----------------------------------------------------------------+--------+-------------+------------+ | prns | :math:`p_{r, ns}` | 2D Non-spinning reserve | | | nonneg | +-------+----------------------+----------------------------------------------------------------+--------+-------------+------------+ | ugd | :math:`u_{g,d}` | commitment decision | | StaticGen.u | boolean | +-------+----------------------+----------------------------------------------------------------+--------+-------------+------------+ | vgd | :math:`v_{g,d}` | startup action | | StaticGen.u | boolean | +-------+----------------------+----------------------------------------------------------------+--------+-------------+------------+ | wgd | :math:`w_{g,d}` | shutdown action | | StaticGen.u | boolean | +-------+----------------------+----------------------------------------------------------------+--------+-------------+------------+ | zug | :math:`z_{ug}` | Aux var, :math:`z_{ug} = u_{g,d} * p_g` | | | pos | +-------+----------------------+----------------------------------------------------------------+--------+-------------+------------+ | pdu | :math:`p_{d,u}` | unserved demand | *p.u.* | | nonneg | +-------+----------------------+----------------------------------------------------------------+--------+-------------+------------+ | pgdg | :math:`p_{g,DG}` | DG output power | *p.u.* | | | +-------+----------------------+----------------------------------------------------------------+--------+-------------+------------+ | SOC | :math:`SOC` | ESD1 State of Charge | *%* | | pos | +-------+----------------------+----------------------------------------------------------------+--------+-------------+------------+ | pce | :math:`p_{c,ESD}` | ESD1 charging power | *p.u.* | | nonneg | +-------+----------------------+----------------------------------------------------------------+--------+-------------+------------+ | pde | :math:`p_{d,ESD}` | ESD1 discharging power | *p.u.* | | nonneg | +-------+----------------------+----------------------------------------------------------------+--------+-------------+------------+ | uce | :math:`u_{c,ESD}` | ESD1 charging decision | | | boolean | +-------+----------------------+----------------------------------------------------------------+--------+-------------+------------+ | ude | :math:`u_{d,ESD}` | ESD1 discharging decision | | | boolean | +-------+----------------------+----------------------------------------------------------------+--------+-------------+------------+ | zce | :math:`z_{c,ESD}` | Aux var for charging, :math:`z_{c,ESD}=u_{c,ESD}*p_{c,ESD}` | | | nonneg | +-------+----------------------+----------------------------------------------------------------+--------+-------------+------------+ | zde | :math:`z_{d,ESD}` | Aux var for discharging, :math:`z_{d,ESD}=u_{d,ESD}*p_{d,ESD}` | | | nonneg | +-------+----------------------+----------------------------------------------------------------+--------+-------------+------------+ Services --------- +---------+--------------------------+------------------------------------------------------+-----------+ | Name | Symbol | Description | Type | +=========+==========================+======================================================+===========+ | ctrle | :math:`c_{trl, e}` | Reshaped controllability | NumOpDual | +---------+--------------------------+------------------------------------------------------+-----------+ | nctrl | :math:`c_{trl,n}` | Effective Gen uncontrollability | NumOp | +---------+--------------------------+------------------------------------------------------+-----------+ | nctrle | :math:`c_{trl,n,e}` | Reshaped non-controllability | NumOpDual | +---------+--------------------------+------------------------------------------------------+-----------+ | amax | :math:`\theta_{max}` | max line angle difference | NumOp | +---------+--------------------------+------------------------------------------------------+-----------+ | gs | :math:`S_{g}` | Sum Gen vars vector in shape of zone | ZonalSum | +---------+--------------------------+------------------------------------------------------+-----------+ | ds | :math:`S_{d}` | Sum pd vector in shape of zone | ZonalSum | +---------+--------------------------+------------------------------------------------------+-----------+ | pdz | :math:`p_{d,z}` | zonal total load | 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 | +---------+--------------------------+------------------------------------------------------+-----------+ | dnsrpz | :math:`d_{nsr, p, z}` | zonal non-spinning reserve requirement in percentage | NumOpDual | +---------+--------------------------+------------------------------------------------------+-----------+ | dnsr | :math:`d_{nsr}` | zonal non-spinning reserve requirement | NumOpDual | +---------+--------------------------+------------------------------------------------------+-----------+ | Mzug | :math:`M_{zug}` | 10 times of max of pmax as big M for zug | NumOp | +---------+--------------------------+------------------------------------------------------+-----------+ | Con | :math:`T_{on}` | minimum ON coefficient | MinDur | +---------+--------------------------+------------------------------------------------------+-----------+ | Coff | :math:`T_{off}` | minimum OFF coefficient | MinDur | +---------+--------------------------+------------------------------------------------------+-----------+ | pdsp | :math:`p_{d,s}^{+}` | positive demand | 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 | +---------+--------------------------+------------------------------------------------------+-----------+ | ce | :math:`C_{ESD}` | Select zue from pg | 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 | +============+========================+========================================================+==============+======================+ | 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 | +------------+------------------------+--------------------------------------------------------+--------------+----------------------+ | ug | :math:`u_{g}` | Gen connection status | | StaticGen.u | +------------+------------------------+--------------------------------------------------------+--------------+----------------------+ | 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 | +------------+------------------------+--------------------------------------------------------+--------------+----------------------+ | p0 | :math:`p_{g, 0}` | Gen initial active power | *p.u.* | StaticGen.pg0 | +------------+------------------------+--------------------------------------------------------+--------------+----------------------+ | pd | :math:`p_{d}` | active demand | *p.u.* | StaticLoad.p0 | +------------+------------------------+--------------------------------------------------------+--------------+----------------------+ | rate_a | :math:`R_{ATEA}` | long-term flow limit | *MVA* | Line.rate_a | +------------+------------------------+--------------------------------------------------------+--------------+----------------------+ | gsh | :math:`g_{sh}` | shunt conductance | | Shunt.g | +------------+------------------------+--------------------------------------------------------+--------------+----------------------+ | 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 | +------------+------------------------+--------------------------------------------------------+--------------+----------------------+ | zg | :math:`z_{one,g}` | Gen zone | | StaticGen.zone | +------------+------------------------+--------------------------------------------------------+--------------+----------------------+ | zd | :math:`z_{one,d}` | Load zone | | StaticLoad.zone | +------------+------------------------+--------------------------------------------------------+--------------+----------------------+ | R10 | :math:`R_{10}` | 10-min ramp rate | *p.u./h* | StaticGen.R10 | +------------+------------------------+--------------------------------------------------------+--------------+----------------------+ | sd | :math:`s_{d}` | zonal load factor for UC | | UCTSlot.sd | +------------+------------------------+--------------------------------------------------------+--------------+----------------------+ | timeslot | :math:`t_{s,idx}` | Time slot for multi-period UC | | UCTSlot.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 | +------------+------------------------+--------------------------------------------------------+--------------+----------------------+ | cnsr | :math:`c_{nsr}` | cost for non-spinning reserve | *$/(p.u.*h)* | NSRCost.cnsr | +------------+------------------------+--------------------------------------------------------+--------------+----------------------+ | dnsr | :math:`d_{nsr}` | non-spinning reserve requirement in percentage | *%* | NSR.demand | +------------+------------------------+--------------------------------------------------------+--------------+----------------------+ | csu | :math:`c_{su}` | startup cost | *$* | GCost.csu | +------------+------------------------+--------------------------------------------------------+--------------+----------------------+ | csd | :math:`c_{sd}` | shutdown cost | *$* | GCost.csd | +------------+------------------------+--------------------------------------------------------+--------------+----------------------+ | cdp | :math:`c_{d,p}` | penalty for unserved load | *$/(p.u.*h)* | DCost.cdp | +------------+------------------------+--------------------------------------------------------+--------------+----------------------+ | dctrl | :math:`c_{trl,d}` | load controllability | | StaticLoad.ctrl | +------------+------------------------+--------------------------------------------------------+--------------+----------------------+ | td1 | :math:`t_{d1}` | minimum ON duration | *h* | StaticGen.td1 | +------------+------------------------+--------------------------------------------------------+--------------+----------------------+ | td2 | :math:`t_{d2}` | minimum OFF duration | *h* | StaticGen.td2 | +------------+------------------------+--------------------------------------------------------+--------------+----------------------+ | 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.gen | +------------+------------------------+--------------------------------------------------------+--------------+----------------------+ | gammapesd | :math:`\gamma_{p,ESD}` | Ratio of ESD1.pge w.r.t to that of static generator | | ESD1.gammap | +------------+------------------------+--------------------------------------------------------+--------------+----------------------+