.. _DED: ================================================================================ DED ================================================================================ Type for Distributional economic dispatch. Available routines: DOPF_, DOPFVIS_ .. _DOPF: -------------------------------------------------------------------------------- DOPF -------------------------------------------------------------------------------- Linearzied distribution OPF, where power loss are ignored. UNDER DEVELOPMENT! References ----------------- 1. L. Bai, J. Wang, C. Wang, C. Chen, and F. Li, “Distribution Locational Marginal Pricing (DLMP) for Congestion Management and Voltage Support,” IEEE Trans. Power Syst., vol. 33, no. 4, pp. 4061-4073, Jul. 2018, doi: 10.1109/TPWRS.2017.2767632. 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` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | qglb | qg min | :math:`-q_{g} + u_{g} q_{min} \leq 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | qgub | qg max | :math:`q_{g} - u_{g} q_{max} \leq 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | vu | Voltage upper limit | :math:`v^{2} - v_{max}^{2} \leq 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | vl | Voltage lower limit | :math:`-v^{2} + v_{min}^{2} \leq 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | lvd | line voltage drop | :math:`C_{ft}^T v^{2} - (r p_{lf} + x q_{lf}) = 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | qb | reactive power balance | :math:`\sum(q_{d}) - \sum(q_{g}) = 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 | | +-------+----------------------+------------------------------------+--------+-------------+------------+ | qg | :math:`q_{g}` | Gen reactive power | *p.u.* | StaticGen.q | | +-------+----------------------+------------------------------------+--------+-------------+------------+ | v | :math:`v` | Bus voltage | *p.u.* | Bus.v | | +-------+----------------------+------------------------------------+--------+-------------+------------+ | vsq | :math:`v^{2}` | square of Bus voltage | *p.u.* | Bus | | +-------+----------------------+------------------------------------+--------+-------------+------------+ | qlf | :math:`q_{lf}` | line reactive power | *p.u.* | Line | | +-------+----------------------+------------------------------------+--------+-------------+------------+ 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 | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | qmax | :math:`q_{max}` | generator maximum reactive power | *p.u.* | StaticGen.qmax | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | qmin | :math:`q_{min}` | generator minimum reactive power | *p.u.* | StaticGen.qmin | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | qd | :math:`q_{d}` | reactive demand | *p.u.* | StaticLoad.q0 | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | vmax | :math:`v_{max}` | Bus voltage upper limit | *p.u.* | Bus.vmax | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | vmin | :math:`v_{min}` | Bus voltage lower limit | *p.u.* | Bus.vmin | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | r | :math:`r` | line resistance | *p.u.* | Line.r | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | x | :math:`x` | line reactance | *p.u.* | Line.x | +----------+---------------------------+-------------------------------------+--------------+----------------------+ .. _DOPFVIS: -------------------------------------------------------------------------------- DOPFVIS -------------------------------------------------------------------------------- Linearzied distribution OPF with variables for virtual inertia and damping from from REGCV1, where power loss are ignored. UNDER DEVELOPMENT! References ----------------- 1. L. Bai, J. Wang, C. Wang, C. Chen, and F. Li, “Distribution Locational Marginal Pricing (DLMP) for Congestion Management and Voltage Support,” IEEE Trans. Power Syst., vol. 33, no. 4, pp. 4061-4073, Jul. 2018, doi: 10.1109/TPWRS.2017.2767632. Objective ---------------------------------- +------+------------------------------------------------------------------------------------------+ | Unit | Expression | +======+==========================================================================================+ | *$* | :math:`min. \sum(c_{2} p_g^{2} + c_{1} p_g + u_{g} c_{0} + 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` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | qglb | qg min | :math:`-q_{g} + u_{g} q_{min} \leq 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | qgub | qg max | :math:`q_{g} - u_{g} q_{max} \leq 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | vu | Voltage upper limit | :math:`v^{2} - v_{max}^{2} \leq 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | vl | Voltage lower limit | :math:`-v^{2} + v_{min}^{2} \leq 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | lvd | line voltage drop | :math:`C_{ft}^T v^{2} - (r p_{lf} + x q_{lf}) = 0` | +--------+-----------------------------------+--------------------------------------------------------------------------------------------+ | qb | reactive power balance | :math:`\sum(q_{d}) - \sum(q_{g}) = 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 | | +-------+----------------------+---------------------------------------------------+--------+-------------+------------+ | qg | :math:`q_{g}` | Gen reactive power | *p.u.* | StaticGen.q | | +-------+----------------------+---------------------------------------------------+--------+-------------+------------+ | v | :math:`v` | Bus voltage | *p.u.* | Bus.v | | +-------+----------------------+---------------------------------------------------+--------+-------------+------------+ | vsq | :math:`v^{2}` | square of Bus voltage | *p.u.* | Bus | | +-------+----------------------+---------------------------------------------------+--------+-------------+------------+ | qlf | :math:`q_{lf}` | line reactive power | *p.u.* | Line | | +-------+----------------------+---------------------------------------------------+--------+-------------+------------+ | M | :math:`M` | Emulated startup time constant (M=2H) from REGCV1 | *s* | VSG | | +-------+----------------------+---------------------------------------------------+--------+-------------+------------+ | D | :math:`D` | Emulated damping coefficient from REGCV1 | *p.u.* | VSG | | +-------+----------------------+---------------------------------------------------+--------+-------------+------------+ 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 | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | qmax | :math:`q_{max}` | generator maximum reactive power | *p.u.* | StaticGen.qmax | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | qmin | :math:`q_{min}` | generator minimum reactive power | *p.u.* | StaticGen.qmin | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | qd | :math:`q_{d}` | reactive demand | *p.u.* | StaticLoad.q0 | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | vmax | :math:`v_{max}` | Bus voltage upper limit | *p.u.* | Bus.vmax | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | vmin | :math:`v_{min}` | Bus voltage lower limit | *p.u.* | Bus.vmin | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | r | :math:`r` | line resistance | *p.u.* | Line.r | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | x | :math:`x` | line reactance | *p.u.* | Line.x | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | cm | :math:`c_{m}` | Virtual inertia cost | *$/s* | VSGCost.cm | +----------+---------------------------+-------------------------------------+--------------+----------------------+ | cd | :math:`c_{d}` | Virtual damping cost | *$/(p.u.)* | VSGCost.cd | +----------+---------------------------+-------------------------------------+--------------+----------------------+