DCED#

Type for DC-based economic dispatch.

Common Parameters: c2, c1, c0, pmax, pmin, pd, ptdf, rate_a

Common Vars: pg

Common Constraints: pb, lub, llb

Available routines: DCOPF, ED, EDDG, EDES, RTED, RTEDDG, RTEDES, RTEDVIS

DCOPF#

DC optimal power flow (DCOPF).

The nodal price is calculated as pi in pic.

Objective#

Unit

Expression

$

\(min. \sum(c_{2} p_g^{2})+ \sum(c_{1} p_g)+ \sum(u_{g} c_{0})\)

Constraints#

Name

Description

Expression

pglb

pg min

\(-p_g + c_{trl,n,e} p_{g, 0} + c_{trl, e} p_{g, min} \leq 0\)

pgub

pg max

\(p_g - c_{trl,n,e} p_{g, 0} - c_{trl, e} p_{g, max} \leq 0\)

sbus

align slack bus angle

\(c_{sb} \theta_{bus} = 0\)

pb

power balance

\(B_{bus} \theta_{bus} + P_{bus}^{inj} + C_{l} p_{d} + C_{sh} g_{sh} - C_{g} p_g = 0\)

plflb

line flow lower bound

\(-B_{f} \theta_{bus} - P_{f}^{inj} - R_{ATEA} \leq 0\)

plfub

line flow upper bound

\(B_{f} \theta_{bus} + P_{f}^{inj} - R_{ATEA} \leq 0\)

alflb

line angle difference lower bound

\(-C_{ft}^T \theta_{bus} + \theta_{bus, min} \leq 0\)

alfub

line angle difference upper bound

\(C_{ft}^T \theta_{bus} - \theta_{bus, max} \leq 0\)

Expressions#

Name

Variable

Description

Expression

plfc

plf

plf calculation

\(B_{f} \theta_{bus} + P_{f}^{inj}\)

pic

pi

dual of Constraint pb

\(\phi[pb]\)

Vars#

Name

Symbol

Description

Unit

Source

Properties

pg

\(p_g\)

Gen active power

p.u.

StaticGen.p

aBus

\(\theta_{bus}\)

Bus voltage angle

rad

Bus.a

pi

\(\pi\)

nodal price

$/p.u.

plf

\(p_{lf}\)

Line flow

p.u.

Services#

Name

Symbol

Description

Type

ctrle

\(c_{trl, e}\)

Effective Gen controllability

NumOpDual

nctrl

\(c_{trl,n}\)

Effective Gen uncontrollability

NumOp

nctrle

\(c_{trl,n,e}\)

Effective Gen uncontrollability

NumOpDual

csb

\(c_{sb}\)

select slack bus

VarSelect

Parameters#

Name

Symbol

Description

Unit

Source

c2

\(c_{2}\)

Gen cost coefficient 2

$/(p.u.^2)

GCost.c2

c1

\(c_{1}\)

Gen cost coefficient 1

$/(p.u.)

GCost.c1

c0

\(c_{0}\)

Gen cost coefficient 0

$

GCost.c0

ug

\(u_{g}\)

Gen connection status

StaticGen.u

ctrl

\(c_{trl}\)

Gen controllability

StaticGen.ctrl

pmax

\(p_{g, max}\)

Gen maximum active power

p.u.

StaticGen.pmax

pmin

\(p_{g, min}\)

Gen minimum active power

p.u.

StaticGen.pmin

p0

\(p_{g, 0}\)

Gen initial active power

p.u.

StaticGen.pg0

buss

\(B_{us,s}\)

Bus slack

Slack.bus

pd

\(p_{d}\)

active demand

p.u.

StaticLoad.p0

rate_a

\(R_{ATEA}\)

long-term flow limit

p.u.

Line.rate_a

amax

\(\theta_{bus, max}\)

max line angle difference

Line.amax

amin

\(\theta_{bus, min}\)

min line angle difference

Line.amin

gsh

\(g_{sh}\)

shunt conductance

Shunt.g

Cg

\(C_{g}\)

Gen connection matrix

MatProcessor.Cg

Cl

\(C_{l}\)

Load connection matrix

MatProcessor.Cl

CftT

\(C_{ft}^T\)

Transpose of line connection matrix

MatProcessor.CftT

Csh

\(C_{sh}\)

Shunt connection matrix

MatProcessor.Csh

Bbus

\(B_{bus}\)

Bus admittance matrix

MatProcessor.Bbus

Bf

\(B_{f}\)

Bf matrix

MatProcessor.Bf

Pbusinj

\(P_{bus}^{inj}\)

Bus power injection vector

MatProcessor.Pbusinj

Pfinj

\(P_{f}^{inj}\)

Line power injection vector

MatProcessor.Pfinj

ED#

DC-based multi-period economic dispatch (ED). Dispath interval config.t (\(T_{cfg}\)) is introduced, 1 [Hour] by default.

ED extends DCOPF as follows:

  • Vars pg, pru, prd are extended to 2D

  • 2D Vars rgu and rgd are introduced

  • Param ug is sourced from EDTSlot.ug as commitment decisions

Notes#

  1. Formulations has been adjusted with interval config.t

  2. The tie-line flow is not implemented in this model.

Objective#

Unit

Expression

$

\(min. \sum(T_{cfg}^{2} c_{2} p_g^{2})+ T_{cfg} \sum(c_{1} p_g + c_{sr} p_{r,s})+ \sum(u_{g} c_{0} 1_{tl})\)

Constraints#

Name

Description

Expression

pglb

pg min

\(-p_g + c_{trl,n,e} p_{g, 0} 1_{tl} + c_{trl, e} 1_{tl} p_{g, min} \leq 0\)

pgub

pg max

\(p_g - c_{trl,n,e} p_{g, 0} 1_{tl} - c_{trl, e} 1_{tl} p_{g, max} \leq 0\)

sbus

align slack bus angle

\(c_{sb} \theta_{bus} = 0\)

pb

power balance

\(B_{bus} \theta_{bus} + P_{bus}^{inj} 1_{tl} + C_{l} p_{d,s} + C_{sh} g_{sh} 1_{tl} - C_{g} p_g = 0\)

plflb

line flow lower bound

\(-B_{f} \theta_{bus} - P_{f}^{inj} 1_{tl} - R_{ATEA} 1_{tl} \leq 0\)

plfub

line flow upper bound

\(B_{f} \theta_{bus} + P_{f}^{inj} 1_{tl} - R_{ATEA} 1_{tl} \leq 0\)

alflb

line angle difference lower bound

\(-C_{ft}^T \theta_{bus} + \theta_{bus, min} 1_{tl} \leq 0\)

alfub

line angle difference upper bound

\(C_{ft}^T \theta_{bus} - \theta_{bus, max} 1_{tl} \leq 0\)

rbu

RegUp reserve balance

\(S_{g} u_{g} p_{r,u} - d_{u, d} 1_{tl} = 0\)

rbd

RegDn reserve balance

\(S_{g} u_{g} p_{r,d} - d_{d, d} 1_{tl} = 0\)

rru

RegUp reserve source

\(u_{g} p_g + p_{r,u} - p_{g, max} 1_{tl} \leq 0\)

rrd

RegDn reserve source

\(u_{g} -p_g + p_{r,d} + p_{g, min} 1_{tl} \leq 0\)

rgu

Gen ramping up

\(p_g M_{r} - T_{cfg} R_{30,R} \leq 0\)

rgd

Gen ramping down

\(-p_g M_{r} - T_{cfg} R_{30,R} \leq 0\)

prsb

spinning reserve balance

\(u_{g} p_{g, max} 1_{tl} - p_g - p_{r,s} = 0\)

rsr

spinning reserve requirement

\(-S_{g} p_{r,s} + d_{s,r,z} \leq 0\)

rgu0

Initial gen ramping up

\(p_g[:, 0] - p_{g, 0}[:, 0] - R_{30} \leq 0\)

rgd0

Initial gen ramping down

\(- p_g[:, 0] + p_{g, 0}[:, 0] - R_{30} \leq 0\)

Expressions#

Name

Variable

Description

Expression

plfc

plf

plf calculation

\(B_{f} \theta_{bus} + P_{f}^{inj} 1_{tl}\)

pic

pi

dual of Constraint pb

\(\phi[pb]\)

Vars#

Name

Symbol

Description

Unit

Source

Properties

pg

\(p_g\)

2D Gen power

p.u.

StaticGen.p

aBus

\(\theta_{bus}\)

2D Bus angle

rad

Bus.a

pi

\(\pi\)

nodal price

$/p.u.

plf

\(p_{lf}\)

2D Line flow

p.u.

pru

\(p_{r,u}\)

2D RegUp power

p.u.

nonneg

prd

\(p_{r,d}\)

2D RegDn power

p.u.

nonneg

prs

\(p_{r,s}\)

spinning reserve

p.u.

nonneg

Services#

Name

Symbol

Description

Type

ctrle

\(c_{trl, e}\)

Effective Gen controllability

NumOpDual

nctrl

\(c_{trl,n}\)

Effective Gen uncontrollability

NumOp

nctrle

\(c_{trl,n,e}\)

Effective Gen uncontrollability

NumOpDual

csb

\(c_{sb}\)

select slack bus

VarSelect

gs

\(S_{g}\)

Sum Gen vars vector in shape of zone

ZonalSum

ds

\(S_{d}\)

Sum pd vector in shape of zone

ZonalSum

pdz

\(p_{d,z}\)

zonal total load

NumOpDual

dud

\(d_{u, d}\)

zonal RegUp reserve requirement

NumOpDual

ddd

\(d_{d, d}\)

zonal RegDn reserve requirement

NumOpDual

tlv

\(1_{tl}\)

time length vector

NumOp

pds

\(p_{d,s}\)

Scaled load

LoadScale

Mr

\(M_{r}\)

Subtraction matrix for ramping

RampSub

RR30

\(R_{30,R}\)

Repeated ramp rate

NumHstack

dsrpz

\(d_{s,r, p, z}\)

zonal spinning reserve requirement in percentage

NumOpDual

dsr

\(d_{s,r,z}\)

zonal spinning reserve requirement

NumOpDual

ugt

\(u_{g}\)

input ug transpose

NumOp

Parameters#

Name

Symbol

Description

Unit

Source

c2

\(c_{2}\)

Gen cost coefficient 2

$/(p.u.^2)

GCost.c2

c1

\(c_{1}\)

Gen cost coefficient 1

$/(p.u.)

GCost.c1

c0

\(c_{0}\)

Gen cost coefficient 0

$

GCost.c0

ug

\(u_{g}\)

unit commitment decisions

EDTSlot.ug

ctrl

\(c_{trl}\)

Gen controllability

StaticGen.ctrl

pmax

\(p_{g, max}\)

Gen maximum active power

p.u.

StaticGen.pmax

pmin

\(p_{g, min}\)

Gen minimum active power

p.u.

StaticGen.pmin

p0

\(p_{g, 0}\)

Gen initial active power

p.u.

StaticGen.pg0

buss

\(B_{us,s}\)

Bus slack

Slack.bus

pd

\(p_{d}\)

active demand

p.u.

StaticLoad.p0

rate_a

\(R_{ATEA}\)

long-term flow limit

p.u.

Line.rate_a

amax

\(\theta_{bus, max}\)

max line angle difference

Line.amax

amin

\(\theta_{bus, min}\)

min line angle difference

Line.amin

gsh

\(g_{sh}\)

shunt conductance

Shunt.g

Cg

\(C_{g}\)

Gen connection matrix

MatProcessor.Cg

Cl

\(C_{l}\)

Load connection matrix

MatProcessor.Cl

CftT

\(C_{ft}^T\)

Transpose of line connection matrix

MatProcessor.CftT

Csh

\(C_{sh}\)

Shunt connection matrix

MatProcessor.Csh

Bbus

\(B_{bus}\)

Bus admittance matrix

MatProcessor.Bbus

Bf

\(B_{f}\)

Bf matrix

MatProcessor.Bf

Pbusinj

\(P_{bus}^{inj}\)

Bus power injection vector

MatProcessor.Pbusinj

Pfinj

\(P_{f}^{inj}\)

Line power injection vector

MatProcessor.Pfinj

zg

\(z_{one,g}\)

Gen zone

StaticGen.zone

zd

\(z_{one,d}\)

Load zone

StaticLoad.zone

R10

\(R_{10}\)

10-min ramp rate

p.u./h

StaticGen.R10

cru

\(c_{r,u}\)

RegUp reserve coefficient

$/(p.u.)

SFRCost.cru

crd

\(c_{r,d}\)

RegDown reserve coefficient

$/(p.u.)

SFRCost.crd

du

\(d_{u}\)

RegUp reserve requirement in percentage

%

SFR.du

dd

\(d_{d}\)

RegDown reserve requirement in percentage

%

SFR.dd

sd

\(s_{d}\)

zonal load factor for ED

EDTSlot.sd

timeslot

\(t_{s,idx}\)

Time slot for multi-period ED

EDTSlot.idx

R30

\(R_{30}\)

30-min ramp rate

p.u./h

StaticGen.R30

dsr

\(d_{sr}\)

spinning reserve requirement in percentage

%

SR.demand

csr

\(c_{sr}\)

cost for spinning reserve

$/(p.u.*h)

SRCost.csr

Config Fields in [ED]

Option

Symbol

Value

Info

Accepted values

t

\(T_{cfg}\)

0.083

time interval in hours

EDDG#

ED with distributed generation DG.

Note that EDDG only inlcudes DG output power. If ESD1 is included, EDES should be used instead, otherwise there is no SOC.

Objective#

Unit

Expression

$

\(min. \sum(T_{cfg}^{2} c_{2} p_g^{2})+ T_{cfg} \sum(c_{1} p_g + c_{sr} p_{r,s})+ \sum(u_{g} c_{0} 1_{tl})\)

Constraints#

Name

Description

Expression

pglb

pg min

\(-p_g + c_{trl,n,e} p_{g, 0} 1_{tl} + c_{trl, e} 1_{tl} p_{g, min} \leq 0\)

pgub

pg max

\(p_g - c_{trl,n,e} p_{g, 0} 1_{tl} - c_{trl, e} 1_{tl} p_{g, max} \leq 0\)

sbus

align slack bus angle

\(c_{sb} \theta_{bus} = 0\)

pb

power balance

\(B_{bus} \theta_{bus} + P_{bus}^{inj} 1_{tl} + C_{l} p_{d,s} + C_{sh} g_{sh} 1_{tl} - C_{g} p_g = 0\)

plflb

line flow lower bound

\(-B_{f} \theta_{bus} - P_{f}^{inj} 1_{tl} - R_{ATEA} 1_{tl} \leq 0\)

plfub

line flow upper bound

\(B_{f} \theta_{bus} + P_{f}^{inj} 1_{tl} - R_{ATEA} 1_{tl} \leq 0\)

alflb

line angle difference lower bound

\(-C_{ft}^T \theta_{bus} + \theta_{bus, min} 1_{tl} \leq 0\)

alfub

line angle difference upper bound

\(C_{ft}^T \theta_{bus} - \theta_{bus, max} 1_{tl} \leq 0\)

rbu

RegUp reserve balance

\(S_{g} u_{g} p_{r,u} - d_{u, d} 1_{tl} = 0\)

rbd

RegDn reserve balance

\(S_{g} u_{g} p_{r,d} - d_{d, d} 1_{tl} = 0\)

rru

RegUp reserve source

\(u_{g} p_g + p_{r,u} - p_{g, max} 1_{tl} \leq 0\)

rrd

RegDn reserve source

\(u_{g} -p_g + p_{r,d} + p_{g, min} 1_{tl} \leq 0\)

rgu

Gen ramping up

\(p_g M_{r} - T_{cfg} R_{30,R} \leq 0\)

rgd

Gen ramping down

\(-p_g M_{r} - T_{cfg} R_{30,R} \leq 0\)

prsb

spinning reserve balance

\(u_{g} p_{g, max} 1_{tl} - p_g - p_{r,s} = 0\)

rsr

spinning reserve requirement

\(-S_{g} p_{r,s} + d_{s,r,z} \leq 0\)

rgu0

Initial gen ramping up

\(p_g[:, 0] - p_{g, 0}[:, 0] - R_{30} \leq 0\)

rgd0

Initial gen ramping down

\(- p_g[:, 0] + p_{g, 0}[:, 0] - R_{30} \leq 0\)

cdgb

Select DG power from pg

\(C_{DG} p_g - p_{g,DG} = 0\)

Expressions#

Name

Variable

Description

Expression

plfc

plf

plf calculation

\(B_{f} \theta_{bus} + P_{f}^{inj} 1_{tl}\)

pic

pi

dual of Constraint pb

\(\phi[pb]\)

Vars#

Name

Symbol

Description

Unit

Source

Properties

pg

\(p_g\)

2D Gen power

p.u.

StaticGen.p

aBus

\(\theta_{bus}\)

2D Bus angle

rad

Bus.a

pi

\(\pi\)

nodal price

$/p.u.

plf

\(p_{lf}\)

2D Line flow

p.u.

pru

\(p_{r,u}\)

2D RegUp power

p.u.

nonneg

prd

\(p_{r,d}\)

2D RegDn power

p.u.

nonneg

prs

\(p_{r,s}\)

spinning reserve

p.u.

nonneg

pgdg

\(p_{g,DG}\)

DG output power

p.u.

Services#

Name

Symbol

Description

Type

ctrle

\(c_{trl, e}\)

Effective Gen controllability

NumOpDual

nctrl

\(c_{trl,n}\)

Effective Gen uncontrollability

NumOp

nctrle

\(c_{trl,n,e}\)

Effective Gen uncontrollability

NumOpDual

csb

\(c_{sb}\)

select slack bus

VarSelect

gs

\(S_{g}\)

Sum Gen vars vector in shape of zone

ZonalSum

ds

\(S_{d}\)

Sum pd vector in shape of zone

ZonalSum

pdz

\(p_{d,z}\)

zonal total load

NumOpDual

dud

\(d_{u, d}\)

zonal RegUp reserve requirement

NumOpDual

ddd

\(d_{d, d}\)

zonal RegDn reserve requirement

NumOpDual

tlv

\(1_{tl}\)

time length vector

NumOp

pds

\(p_{d,s}\)

Scaled load

LoadScale

Mr

\(M_{r}\)

Subtraction matrix for ramping

RampSub

RR30

\(R_{30,R}\)

Repeated ramp rate

NumHstack

dsrpz

\(d_{s,r, p, z}\)

zonal spinning reserve requirement in percentage

NumOpDual

dsr

\(d_{s,r,z}\)

zonal spinning reserve requirement

NumOpDual

ugt

\(u_{g}\)

input ug transpose

NumOp

cd

\(C_{DG}\)

Select DG power from pg

VarSelect

Parameters#

Name

Symbol

Description

Unit

Source

c2

\(c_{2}\)

Gen cost coefficient 2

$/(p.u.^2)

GCost.c2

c1

\(c_{1}\)

Gen cost coefficient 1

$/(p.u.)

GCost.c1

c0

\(c_{0}\)

Gen cost coefficient 0

$

GCost.c0

ug

\(u_{g}\)

unit commitment decisions

EDTSlot.ug

ctrl

\(c_{trl}\)

Gen controllability

StaticGen.ctrl

pmax

\(p_{g, max}\)

Gen maximum active power

p.u.

StaticGen.pmax

pmin

\(p_{g, min}\)

Gen minimum active power

p.u.

StaticGen.pmin

p0

\(p_{g, 0}\)

Gen initial active power

p.u.

StaticGen.pg0

buss

\(B_{us,s}\)

Bus slack

Slack.bus

pd

\(p_{d}\)

active demand

p.u.

StaticLoad.p0

rate_a

\(R_{ATEA}\)

long-term flow limit

p.u.

Line.rate_a

amax

\(\theta_{bus, max}\)

max line angle difference

Line.amax

amin

\(\theta_{bus, min}\)

min line angle difference

Line.amin

gsh

\(g_{sh}\)

shunt conductance

Shunt.g

Cg

\(C_{g}\)

Gen connection matrix

MatProcessor.Cg

Cl

\(C_{l}\)

Load connection matrix

MatProcessor.Cl

CftT

\(C_{ft}^T\)

Transpose of line connection matrix

MatProcessor.CftT

Csh

\(C_{sh}\)

Shunt connection matrix

MatProcessor.Csh

Bbus

\(B_{bus}\)

Bus admittance matrix

MatProcessor.Bbus

Bf

\(B_{f}\)

Bf matrix

MatProcessor.Bf

Pbusinj

\(P_{bus}^{inj}\)

Bus power injection vector

MatProcessor.Pbusinj

Pfinj

\(P_{f}^{inj}\)

Line power injection vector

MatProcessor.Pfinj

zg

\(z_{one,g}\)

Gen zone

StaticGen.zone

zd

\(z_{one,d}\)

Load zone

StaticLoad.zone

R10

\(R_{10}\)

10-min ramp rate

p.u./h

StaticGen.R10

cru

\(c_{r,u}\)

RegUp reserve coefficient

$/(p.u.)

SFRCost.cru

crd

\(c_{r,d}\)

RegDown reserve coefficient

$/(p.u.)

SFRCost.crd

du

\(d_{u}\)

RegUp reserve requirement in percentage

%

SFR.du

dd

\(d_{d}\)

RegDown reserve requirement in percentage

%

SFR.dd

sd

\(s_{d}\)

zonal load factor for ED

EDTSlot.sd

timeslot

\(t_{s,idx}\)

Time slot for multi-period ED

EDTSlot.idx

R30

\(R_{30}\)

30-min ramp rate

p.u./h

StaticGen.R30

dsr

\(d_{sr}\)

spinning reserve requirement in percentage

%

SR.demand

csr

\(c_{sr}\)

cost for spinning reserve

$/(p.u.*h)

SRCost.csr

gendg

\(g_{DG}\)

gen of DG

DG.gen

gammapd

\(\gamma_{p,DG}\)

('Ratio of DG.pge w.r.t to that of static generator',)

DG.gammap

Config Fields in [EDDG]

Option

Symbol

Value

Info

Accepted values

t

\(T_{cfg}\)

1

time interval in hours

EDES#

ED with energy storage ESD1. The bilinear term in the formulation is linearized with big-M method.

Objective#

Unit

Expression

$

\(min. \sum(T_{cfg}^{2} c_{2} p_g^{2})+ T_{cfg} \sum(c_{1} p_g + c_{sr} p_{r,s})+ \sum(u_{g} c_{0} 1_{tl})\)

Constraints#

Name

Description

Expression

pglb

pg min

\(-p_g + c_{trl,n,e} p_{g, 0} 1_{tl} + c_{trl, e} 1_{tl} p_{g, min} \leq 0\)

pgub

pg max

\(p_g - c_{trl,n,e} p_{g, 0} 1_{tl} - c_{trl, e} 1_{tl} p_{g, max} \leq 0\)

sbus

align slack bus angle

\(c_{sb} \theta_{bus} = 0\)

pb

power balance

\(B_{bus} \theta_{bus} + P_{bus}^{inj} 1_{tl} + C_{l} p_{d,s} + C_{sh} g_{sh} 1_{tl} - C_{g} p_g = 0\)

plflb

line flow lower bound

\(-B_{f} \theta_{bus} - P_{f}^{inj} 1_{tl} - R_{ATEA} 1_{tl} \leq 0\)

plfub

line flow upper bound

\(B_{f} \theta_{bus} + P_{f}^{inj} 1_{tl} - R_{ATEA} 1_{tl} \leq 0\)

alflb

line angle difference lower bound

\(-C_{ft}^T \theta_{bus} + \theta_{bus, min} 1_{tl} \leq 0\)

alfub

line angle difference upper bound

\(C_{ft}^T \theta_{bus} - \theta_{bus, max} 1_{tl} \leq 0\)

rbu

RegUp reserve balance

\(S_{g} u_{g} p_{r,u} - d_{u, d} 1_{tl} = 0\)

rbd

RegDn reserve balance

\(S_{g} u_{g} p_{r,d} - d_{d, d} 1_{tl} = 0\)

rru

RegUp reserve source

\(u_{g} p_g + p_{r,u} - p_{g, max} 1_{tl} \leq 0\)

rrd

RegDn reserve source

\(u_{g} -p_g + p_{r,d} + p_{g, min} 1_{tl} \leq 0\)

rgu

Gen ramping up

\(p_g M_{r} - T_{cfg} R_{30,R} \leq 0\)

rgd

Gen ramping down

\(-p_g M_{r} - T_{cfg} R_{30,R} \leq 0\)

prsb

spinning reserve balance

\(u_{g} p_{g, max} 1_{tl} - p_g - p_{r,s} = 0\)

rsr

spinning reserve requirement

\(-S_{g} p_{r,s} + d_{s,r,z} \leq 0\)

rgu0

Initial gen ramping up

\(p_g[:, 0] - p_{g, 0}[:, 0] - R_{30} \leq 0\)

rgd0

Initial gen ramping down

\(- p_g[:, 0] + p_{g, 0}[:, 0] - R_{30} \leq 0\)

cdgb

Select DG power from pg

\(C_{DG} p_g - p_{g,DG} = 0\)

SOClb

SOC lower bound

\(-SOC + SOC_{min} \leq 0\)

SOCub

SOC upper bound

\(SOC - SOC_{max} \leq 0\)

cdb

Charging decision bound

\(u_{c,ESD} + u_{d,ESD} - 1 = 0\)

cesb

Select ESD1 power from pg

\(C_{ESD} p_g + z_{c,ESD} - z_{d,ESD} = 0\)

zce1

zce bound 1

\(-z_{c,ESD} + p_{c,ESD} \leq 0\)

zce2

zce bound 2

\(z_{c,ESD} - p_{c,ESD} - M_{big} (1-u_{c,ESD}) \leq 0\)

zce3

zce bound 3

\(z_{c,ESD} - M_{big} u_{c,ESD} \leq 0\)

zde1

zde bound 1

\(-z_{d,ESD} + p_{d,ESD} \leq 0\)

zde2

zde bound 2

\(z_{d,ESD} - p_{d,ESD} - M_{big} (1-u_{d,ESD}) \leq 0\)

zde3

zde bound 3

\(z_{d,ESD} - M_{big} u_{d,ESD} \leq 0\)

SOCb

ESD1 SOC balance

\(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

\(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

\(SOC[:, -1] - SOC_{init} = 0\)

Expressions#

Name

Variable

Description

Expression

plfc

plf

plf calculation

\(B_{f} \theta_{bus} + P_{f}^{inj} 1_{tl}\)

pic

pi

dual of Constraint pb

\(\phi[pb]\)

Vars#

Name

Symbol

Description

Unit

Source

Properties

pg

\(p_g\)

2D Gen power

p.u.

StaticGen.p

aBus

\(\theta_{bus}\)

2D Bus angle

rad

Bus.a

pi

\(\pi\)

nodal price

$/p.u.

plf

\(p_{lf}\)

2D Line flow

p.u.

pru

\(p_{r,u}\)

2D RegUp power

p.u.

nonneg

prd

\(p_{r,d}\)

2D RegDn power

p.u.

nonneg

prs

\(p_{r,s}\)

spinning reserve

p.u.

nonneg

pgdg

\(p_{g,DG}\)

DG output power

p.u.

SOC

\(SOC\)

ESD1 State of Charge

%

pos

pce

\(p_{c,ESD}\)

ESD1 charging power

p.u.

nonneg

pde

\(p_{d,ESD}\)

ESD1 discharging power

p.u.

nonneg

uce

\(u_{c,ESD}\)

ESD1 charging decision

boolean

ude

\(u_{d,ESD}\)

ESD1 discharging decision

boolean

zce

\(z_{c,ESD}\)

Aux var for charging, \(z_{c,ESD}=u_{c,ESD}*p_{c,ESD}\)

nonneg

zde

\(z_{d,ESD}\)

Aux var for discharging, \(z_{d,ESD}=u_{d,ESD}*p_{d,ESD}\)

nonneg

Services#

Name

Symbol

Description

Type

ctrle

\(c_{trl, e}\)

Effective Gen controllability

NumOpDual

nctrl

\(c_{trl,n}\)

Effective Gen uncontrollability

NumOp

nctrle

\(c_{trl,n,e}\)

Effective Gen uncontrollability

NumOpDual

csb

\(c_{sb}\)

select slack bus

VarSelect

gs

\(S_{g}\)

Sum Gen vars vector in shape of zone

ZonalSum

ds

\(S_{d}\)

Sum pd vector in shape of zone

ZonalSum

pdz

\(p_{d,z}\)

zonal total load

NumOpDual

dud

\(d_{u, d}\)

zonal RegUp reserve requirement

NumOpDual

ddd

\(d_{d, d}\)

zonal RegDn reserve requirement

NumOpDual

tlv

\(1_{tl}\)

time length vector

NumOp

pds

\(p_{d,s}\)

Scaled load

LoadScale

Mr

\(M_{r}\)

Subtraction matrix for ramping

RampSub

RR30

\(R_{30,R}\)

Repeated ramp rate

NumHstack

dsrpz

\(d_{s,r, p, z}\)

zonal spinning reserve requirement in percentage

NumOpDual

dsr

\(d_{s,r,z}\)

zonal spinning reserve requirement

NumOpDual

ugt

\(u_{g}\)

input ug transpose

NumOp

cd

\(C_{DG}\)

Select DG power from pg

VarSelect

REtaD

\(\frac{1}{\eta_d}\)

NumOp

Mb

\(M_{big}\)

10 times of max of pmax as big M

NumOp

ce

\(C_{ESD}\)

Select zue from pg

VarSelect

Mre

\(M_{r,ES}\)

Subtraction matrix for SOC

RampSub

EnR

\(E_{n,R}\)

Repeated En as 2D matrix, (ng, ng-1)

NumHstack

EtaCR

\(\eta_{c,R}\)

Repeated Etac as 2D matrix, (ng, ng-1)

NumHstack

REtaDR

\(R_{\eta_d,R}\)

Repeated REtaD as 2D matrix, (ng, ng-1)

NumHstack

Parameters#

Name

Symbol

Description

Unit

Source

c2

\(c_{2}\)

Gen cost coefficient 2

$/(p.u.^2)

GCost.c2

c1

\(c_{1}\)

Gen cost coefficient 1

$/(p.u.)

GCost.c1

c0

\(c_{0}\)

Gen cost coefficient 0

$

GCost.c0

ug

\(u_{g}\)

unit commitment decisions

EDTSlot.ug

ctrl

\(c_{trl}\)

Gen controllability

StaticGen.ctrl

pmax

\(p_{g, max}\)

Gen maximum active power

p.u.

StaticGen.pmax

pmin

\(p_{g, min}\)

Gen minimum active power

p.u.

StaticGen.pmin

p0

\(p_{g, 0}\)

Gen initial active power

p.u.

StaticGen.pg0

buss

\(B_{us,s}\)

Bus slack

Slack.bus

pd

\(p_{d}\)

active demand

p.u.

StaticLoad.p0

rate_a

\(R_{ATEA}\)

long-term flow limit

p.u.

Line.rate_a

amax

\(\theta_{bus, max}\)

max line angle difference

Line.amax

amin

\(\theta_{bus, min}\)

min line angle difference

Line.amin

gsh

\(g_{sh}\)

shunt conductance

Shunt.g

Cg

\(C_{g}\)

Gen connection matrix

MatProcessor.Cg

Cl

\(C_{l}\)

Load connection matrix

MatProcessor.Cl

CftT

\(C_{ft}^T\)

Transpose of line connection matrix

MatProcessor.CftT

Csh

\(C_{sh}\)

Shunt connection matrix

MatProcessor.Csh

Bbus

\(B_{bus}\)

Bus admittance matrix

MatProcessor.Bbus

Bf

\(B_{f}\)

Bf matrix

MatProcessor.Bf

Pbusinj

\(P_{bus}^{inj}\)

Bus power injection vector

MatProcessor.Pbusinj

Pfinj

\(P_{f}^{inj}\)

Line power injection vector

MatProcessor.Pfinj

zg

\(z_{one,g}\)

Gen zone

StaticGen.zone

zd

\(z_{one,d}\)

Load zone

StaticLoad.zone

R10

\(R_{10}\)

10-min ramp rate

p.u./h

StaticGen.R10

cru

\(c_{r,u}\)

RegUp reserve coefficient

$/(p.u.)

SFRCost.cru

crd

\(c_{r,d}\)

RegDown reserve coefficient

$/(p.u.)

SFRCost.crd

du

\(d_{u}\)

RegUp reserve requirement in percentage

%

SFR.du

dd

\(d_{d}\)

RegDown reserve requirement in percentage

%

SFR.dd

sd

\(s_{d}\)

zonal load factor for ED

EDTSlot.sd

timeslot

\(t_{s,idx}\)

Time slot for multi-period ED

EDTSlot.idx

R30

\(R_{30}\)

30-min ramp rate

p.u./h

StaticGen.R30

dsr

\(d_{sr}\)

spinning reserve requirement in percentage

%

SR.demand

csr

\(c_{sr}\)

cost for spinning reserve

$/(p.u.*h)

SRCost.csr

gendg

\(g_{DG}\)

gen of DG

DG.gen

gammapd

\(\gamma_{p,DG}\)

('Ratio of DG.pge w.r.t to that of static generator',)

DG.gammap

En

\(E_n\)

Rated energy capacity

MWh

ESD1.En

SOCmax

\(SOC_{max}\)

Maximum allowed value for SOC in limiter

%

ESD1.SOCmax

SOCmin

\(SOC_{min}\)

Minimum required value for SOC in limiter

%

ESD1.SOCmin

SOCinit

\(SOC_{init}\)

Initial SOC

%

ESD1.SOCinit

EtaC

\(\eta_c\)

Efficiency during charging

%

ESD1.EtaC

EtaD

\(\eta_d\)

Efficiency during discharging

%

ESD1.EtaD

genesd

\(g_{ESD}\)

gen of ESD1

ESD1.gen

gammapesd

\(\gamma_{p,ESD}\)

Ratio of ESD1.pge w.r.t to that of static generator

ESD1.gammap

Config Fields in [EDES]

Option

Symbol

Value

Info

Accepted values

t

\(T_{cfg}\)

1

time interval in hours

RTED#

DC-based real-time economic dispatch (RTED). RTED extends DCOPF with:

  • Mapping dicts to interface with ANDES

  • Function dc2ac to do the AC conversion

  • Vars for SFR reserve: pru and prd

  • Param for linear SFR cost: cru and crd

  • Param for SFR requirement: du and dd

  • Param for ramping: start point pg0 and ramping limit R10

  • Param pg0, which can be retrieved from dynamic simulation results.

The function dc2ac sets the vBus value from solved ACOPF. Without this conversion, dynamic simulation might fail due to the gap between DC-based dispatch results and AC-based dynamic initialization.

Notes#

  1. Formulations has been adjusted with interval config.t, 5/60 [Hour] by default.

  2. The tie-line flow has not been implemented in formulations.

Objective#

Unit

Expression

$

\(min. T_{cfg}^{2} \sum(c_{2} p_g^{2}) + \sum(u_{g} c_{0})+ T_{cfg} \sum(c_{1} p_g + c_{r,u} p_{r,u} + c_{r,d} p_{r,d})\)

Constraints#

Name

Description

Expression

pglb

pg min

\(-p_g + c_{trl,n,e} p_{g, 0} + c_{trl, e} p_{g, min} \leq 0\)

pgub

pg max

\(p_g - c_{trl,n,e} p_{g, 0} - c_{trl, e} p_{g, max} \leq 0\)

sbus

align slack bus angle

\(c_{sb} \theta_{bus} = 0\)

pb

power balance

\(B_{bus} \theta_{bus} + P_{bus}^{inj} + C_{l} p_{d} + C_{sh} g_{sh} - C_{g} p_g = 0\)

plflb

line flow lower bound

\(-B_{f} \theta_{bus} - P_{f}^{inj} - R_{ATEA} \leq 0\)

plfub

line flow upper bound

\(B_{f} \theta_{bus} + P_{f}^{inj} - R_{ATEA} \leq 0\)

alflb

line angle difference lower bound

\(-C_{ft}^T \theta_{bus} + \theta_{bus, min} \leq 0\)

alfub

line angle difference upper bound

\(C_{ft}^T \theta_{bus} - \theta_{bus, max} \leq 0\)

rbu

RegUp reserve balance

\(S_{g} u_{g} p_{r,u} - d_{u, d} = 0\)

rbd

RegDn reserve balance

\(S_{g} u_{g} p_{r,d} - d_{d, d} = 0\)

rru

RegUp reserve source

\(u_{g} (p_g + p_{r,u}) - u_{g} p_{g, max} \leq 0\)

rrd

RegDn reserve source

\(u_{g} (-p_g + p_{r,d}) + u_{g} p_{g, min} \leq 0\)

rgu

Gen ramping up

\(u_{g} (p_g-p_{g, 0}-R_{10}) \leq 0\)

rgd

Gen ramping down

\(u_{g} (-p_g+p_{g, 0}-R_{10}) \leq 0\)

Expressions#

Name

Variable

Description

Expression

plfc

plf

plf calculation

\(B_{f} \theta_{bus} + P_{f}^{inj}\)

pic

pi

dual of Constraint pb

\(\phi[pb]\)

Vars#

Name

Symbol

Description

Unit

Source

Properties

pg

\(p_g\)

Gen active power

p.u.

StaticGen.p

aBus

\(\theta_{bus}\)

Bus voltage angle

rad

Bus.a

pi

\(\pi\)

nodal price

$/p.u.

plf

\(p_{lf}\)

Line flow

p.u.

pru

\(p_{r,u}\)

RegUp reserve

p.u.

nonneg

prd

\(p_{r,d}\)

RegDn reserve

p.u.

nonneg

Services#

Name

Symbol

Description

Type

ctrle

\(c_{trl, e}\)

Effective Gen controllability

NumOpDual

nctrl

\(c_{trl,n}\)

Effective Gen uncontrollability

NumOp

nctrle

\(c_{trl,n,e}\)

Effective Gen uncontrollability

NumOpDual

csb

\(c_{sb}\)

select slack bus

VarSelect

gs

\(S_{g}\)

Sum Gen vars vector in shape of zone

ZonalSum

ds

\(S_{d}\)

Sum pd vector in shape of zone

ZonalSum

pdz

\(p_{d,z}\)

zonal total load

NumOpDual

dud

\(d_{u, d}\)

zonal RegUp reserve requirement

NumOpDual

ddd

\(d_{d, d}\)

zonal RegDn reserve requirement

NumOpDual

Parameters#

Name

Symbol

Description

Unit

Source

c2

\(c_{2}\)

Gen cost coefficient 2

$/(p.u.^2)

GCost.c2

c1

\(c_{1}\)

Gen cost coefficient 1

$/(p.u.)

GCost.c1

c0

\(c_{0}\)

Gen cost coefficient 0

$

GCost.c0

ug

\(u_{g}\)

Gen connection status

StaticGen.u

ctrl

\(c_{trl}\)

Gen controllability

StaticGen.ctrl

pmax

\(p_{g, max}\)

Gen maximum active power

p.u.

StaticGen.pmax

pmin

\(p_{g, min}\)

Gen minimum active power

p.u.

StaticGen.pmin

p0

\(p_{g, 0}\)

Gen initial active power

p.u.

StaticGen.pg0

buss

\(B_{us,s}\)

Bus slack

Slack.bus

pd

\(p_{d}\)

active demand

p.u.

StaticLoad.p0

rate_a

\(R_{ATEA}\)

long-term flow limit

p.u.

Line.rate_a

amax

\(\theta_{bus, max}\)

max line angle difference

Line.amax

amin

\(\theta_{bus, min}\)

min line angle difference

Line.amin

gsh

\(g_{sh}\)

shunt conductance

Shunt.g

Cg

\(C_{g}\)

Gen connection matrix

MatProcessor.Cg

Cl

\(C_{l}\)

Load connection matrix

MatProcessor.Cl

CftT

\(C_{ft}^T\)

Transpose of line connection matrix

MatProcessor.CftT

Csh

\(C_{sh}\)

Shunt connection matrix

MatProcessor.Csh

Bbus

\(B_{bus}\)

Bus admittance matrix

MatProcessor.Bbus

Bf

\(B_{f}\)

Bf matrix

MatProcessor.Bf

Pbusinj

\(P_{bus}^{inj}\)

Bus power injection vector

MatProcessor.Pbusinj

Pfinj

\(P_{f}^{inj}\)

Line power injection vector

MatProcessor.Pfinj

zg

\(z_{one,g}\)

Gen zone

StaticGen.zone

zd

\(z_{one,d}\)

Load zone

StaticLoad.zone

R10

\(R_{10}\)

10-min ramp rate

p.u./h

StaticGen.R10

cru

\(c_{r,u}\)

RegUp reserve coefficient

$/(p.u.)

SFRCost.cru

crd

\(c_{r,d}\)

RegDown reserve coefficient

$/(p.u.)

SFRCost.crd

du

\(d_{u}\)

RegUp reserve requirement in percentage

%

SFR.du

dd

\(d_{d}\)

RegDown reserve requirement in percentage

%

SFR.dd

Config Fields in [RTED]

Option

Symbol

Value

Info

Accepted values

t

\(T_{cfg}\)

0.083

time interval in hours

RTEDDG#

RTED with distributed generator DG.

Note that RTEDDG only inlcudes DG output power. If ESD1 is included, RTEDES should be used instead, otherwise there is no SOC.

Objective#

Unit

Expression

$

\(min. T_{cfg}^{2} \sum(c_{2} p_g^{2}) + \sum(u_{g} c_{0})+ T_{cfg} \sum(c_{1} p_g + c_{r,u} p_{r,u} + c_{r,d} p_{r,d})\)

Constraints#

Name

Description

Expression

pglb

pg min

\(-p_g + c_{trl,n,e} p_{g, 0} + c_{trl, e} p_{g, min} \leq 0\)

pgub

pg max

\(p_g - c_{trl,n,e} p_{g, 0} - c_{trl, e} p_{g, max} \leq 0\)

sbus

align slack bus angle

\(c_{sb} \theta_{bus} = 0\)

pb

power balance

\(B_{bus} \theta_{bus} + P_{bus}^{inj} + C_{l} p_{d} + C_{sh} g_{sh} - C_{g} p_g = 0\)

plflb

line flow lower bound

\(-B_{f} \theta_{bus} - P_{f}^{inj} - R_{ATEA} \leq 0\)

plfub

line flow upper bound

\(B_{f} \theta_{bus} + P_{f}^{inj} - R_{ATEA} \leq 0\)

alflb

line angle difference lower bound

\(-C_{ft}^T \theta_{bus} + \theta_{bus, min} \leq 0\)

alfub

line angle difference upper bound

\(C_{ft}^T \theta_{bus} - \theta_{bus, max} \leq 0\)

rbu

RegUp reserve balance

\(S_{g} u_{g} p_{r,u} - d_{u, d} = 0\)

rbd

RegDn reserve balance

\(S_{g} u_{g} p_{r,d} - d_{d, d} = 0\)

rru

RegUp reserve source

\(u_{g} (p_g + p_{r,u}) - u_{g} p_{g, max} \leq 0\)

rrd

RegDn reserve source

\(u_{g} (-p_g + p_{r,d}) + u_{g} p_{g, min} \leq 0\)

rgu

Gen ramping up

\(u_{g} (p_g-p_{g, 0}-R_{10}) \leq 0\)

rgd

Gen ramping down

\(u_{g} (-p_g+p_{g, 0}-R_{10}) \leq 0\)

cdgb

Select DG power from pg

\(C_{DG} p_g - p_{g,DG} = 0\)

Expressions#

Name

Variable

Description

Expression

plfc

plf

plf calculation

\(B_{f} \theta_{bus} + P_{f}^{inj}\)

pic

pi

dual of Constraint pb

\(\phi[pb]\)

Vars#

Name

Symbol

Description

Unit

Source

Properties

pg

\(p_g\)

Gen active power

p.u.

StaticGen.p

aBus

\(\theta_{bus}\)

Bus voltage angle

rad

Bus.a

pi

\(\pi\)

nodal price

$/p.u.

plf

\(p_{lf}\)

Line flow

p.u.

pru

\(p_{r,u}\)

RegUp reserve

p.u.

nonneg

prd

\(p_{r,d}\)

RegDn reserve

p.u.

nonneg

pgdg

\(p_{g,DG}\)

DG output power

p.u.

Services#

Name

Symbol

Description

Type

ctrle

\(c_{trl, e}\)

Effective Gen controllability

NumOpDual

nctrl

\(c_{trl,n}\)

Effective Gen uncontrollability

NumOp

nctrle

\(c_{trl,n,e}\)

Effective Gen uncontrollability

NumOpDual

csb

\(c_{sb}\)

select slack bus

VarSelect

gs

\(S_{g}\)

Sum Gen vars vector in shape of zone

ZonalSum

ds

\(S_{d}\)

Sum pd vector in shape of zone

ZonalSum

pdz

\(p_{d,z}\)

zonal total load

NumOpDual

dud

\(d_{u, d}\)

zonal RegUp reserve requirement

NumOpDual

ddd

\(d_{d, d}\)

zonal RegDn reserve requirement

NumOpDual

cd

\(C_{DG}\)

Select DG power from pg

VarSelect

Parameters#

Name

Symbol

Description

Unit

Source

c2

\(c_{2}\)

Gen cost coefficient 2

$/(p.u.^2)

GCost.c2

c1

\(c_{1}\)

Gen cost coefficient 1

$/(p.u.)

GCost.c1

c0

\(c_{0}\)

Gen cost coefficient 0

$

GCost.c0

ug

\(u_{g}\)

Gen connection status

StaticGen.u

ctrl

\(c_{trl}\)

Gen controllability

StaticGen.ctrl

pmax

\(p_{g, max}\)

Gen maximum active power

p.u.

StaticGen.pmax

pmin

\(p_{g, min}\)

Gen minimum active power

p.u.

StaticGen.pmin

p0

\(p_{g, 0}\)

Gen initial active power

p.u.

StaticGen.pg0

buss

\(B_{us,s}\)

Bus slack

Slack.bus

pd

\(p_{d}\)

active demand

p.u.

StaticLoad.p0

rate_a

\(R_{ATEA}\)

long-term flow limit

p.u.

Line.rate_a

amax

\(\theta_{bus, max}\)

max line angle difference

Line.amax

amin

\(\theta_{bus, min}\)

min line angle difference

Line.amin

gsh

\(g_{sh}\)

shunt conductance

Shunt.g

Cg

\(C_{g}\)

Gen connection matrix

MatProcessor.Cg

Cl

\(C_{l}\)

Load connection matrix

MatProcessor.Cl

CftT

\(C_{ft}^T\)

Transpose of line connection matrix

MatProcessor.CftT

Csh

\(C_{sh}\)

Shunt connection matrix

MatProcessor.Csh

Bbus

\(B_{bus}\)

Bus admittance matrix

MatProcessor.Bbus

Bf

\(B_{f}\)

Bf matrix

MatProcessor.Bf

Pbusinj

\(P_{bus}^{inj}\)

Bus power injection vector

MatProcessor.Pbusinj

Pfinj

\(P_{f}^{inj}\)

Line power injection vector

MatProcessor.Pfinj

zg

\(z_{one,g}\)

Gen zone

StaticGen.zone

zd

\(z_{one,d}\)

Load zone

StaticLoad.zone

R10

\(R_{10}\)

10-min ramp rate

p.u./h

StaticGen.R10

cru

\(c_{r,u}\)

RegUp reserve coefficient

$/(p.u.)

SFRCost.cru

crd

\(c_{r,d}\)

RegDown reserve coefficient

$/(p.u.)

SFRCost.crd

du

\(d_{u}\)

RegUp reserve requirement in percentage

%

SFR.du

dd

\(d_{d}\)

RegDown reserve requirement in percentage

%

SFR.dd

gendg

\(g_{DG}\)

gen of DG

DG.gen

gammapd

\(\gamma_{p,DG}\)

('Ratio of DG.pge w.r.t to that of static generator',)

DG.gammap

Config Fields in [RTEDDG]

Option

Symbol

Value

Info

Accepted values

t

\(T_{cfg}\)

0.083

time interval in hours

RTEDES#

RTED with energy storage ESD1. The bilinear term in the formulation is linearized with big-M method.

Objective#

Unit

Expression

$

\(min. T_{cfg}^{2} \sum(c_{2} p_g^{2}) + \sum(u_{g} c_{0})+ T_{cfg} \sum(c_{1} p_g + c_{r,u} p_{r,u} + c_{r,d} p_{r,d})\)

Constraints#

Name

Description

Expression

pglb

pg min

\(-p_g + c_{trl,n,e} p_{g, 0} + c_{trl, e} p_{g, min} \leq 0\)

pgub

pg max

\(p_g - c_{trl,n,e} p_{g, 0} - c_{trl, e} p_{g, max} \leq 0\)

sbus

align slack bus angle

\(c_{sb} \theta_{bus} = 0\)

pb

power balance

\(B_{bus} \theta_{bus} + P_{bus}^{inj} + C_{l} p_{d} + C_{sh} g_{sh} - C_{g} p_g = 0\)

plflb

line flow lower bound

\(-B_{f} \theta_{bus} - P_{f}^{inj} - R_{ATEA} \leq 0\)

plfub

line flow upper bound

\(B_{f} \theta_{bus} + P_{f}^{inj} - R_{ATEA} \leq 0\)

alflb

line angle difference lower bound

\(-C_{ft}^T \theta_{bus} + \theta_{bus, min} \leq 0\)

alfub

line angle difference upper bound

\(C_{ft}^T \theta_{bus} - \theta_{bus, max} \leq 0\)

rbu

RegUp reserve balance

\(S_{g} u_{g} p_{r,u} - d_{u, d} = 0\)

rbd

RegDn reserve balance

\(S_{g} u_{g} p_{r,d} - d_{d, d} = 0\)

rru

RegUp reserve source

\(u_{g} (p_g + p_{r,u}) - u_{g} p_{g, max} \leq 0\)

rrd

RegDn reserve source

\(u_{g} (-p_g + p_{r,d}) + u_{g} p_{g, min} \leq 0\)

rgu

Gen ramping up

\(u_{g} (p_g-p_{g, 0}-R_{10}) \leq 0\)

rgd

Gen ramping down

\(u_{g} (-p_g+p_{g, 0}-R_{10}) \leq 0\)

cdgb

Select DG power from pg

\(C_{DG} p_g - p_{g,DG} = 0\)

SOClb

SOC lower bound

\(-SOC + SOC_{min} \leq 0\)

SOCub

SOC upper bound

\(SOC - SOC_{max} \leq 0\)

cdb

Charging decision bound

\(u_{c,ESD} + u_{d,ESD} - 1 = 0\)

cesb

Select ESD1 power from pg

\(C_{ESD} p_g + z_{c,ESD} - z_{d,ESD} = 0\)

zce1

zce bound 1

\(-z_{c,ESD} + p_{c,ESD} \leq 0\)

zce2

zce bound 2

\(z_{c,ESD} - p_{c,ESD} - M_{big} (1-u_{c,ESD}) \leq 0\)

zce3

zce bound 3

\(z_{c,ESD} - M_{big} u_{c,ESD} \leq 0\)

zde1

zde bound 1

\(-z_{d,ESD} + p_{d,ESD} \leq 0\)

zde2

zde bound 2

\(z_{d,ESD} - p_{d,ESD} - M_{big} (1-u_{d,ESD}) \leq 0\)

zde3

zde bound 3

\(z_{d,ESD} - M_{big} u_{d,ESD} \leq 0\)

SOCb

ESD1 SOC balance

\(E_n (SOC - SOC_{init}) - T_{cfg} \eta_c z_{c,ESD}+ T_{cfg} \frac{1}{\eta_d} z_{d,ESD} = 0\)

Expressions#

Name

Variable

Description

Expression

plfc

plf

plf calculation

\(B_{f} \theta_{bus} + P_{f}^{inj}\)

pic

pi

dual of Constraint pb

\(\phi[pb]\)

Vars#

Name

Symbol

Description

Unit

Source

Properties

pg

\(p_g\)

Gen active power

p.u.

StaticGen.p

aBus

\(\theta_{bus}\)

Bus voltage angle

rad

Bus.a

pi

\(\pi\)

nodal price

$/p.u.

plf

\(p_{lf}\)

Line flow

p.u.

pru

\(p_{r,u}\)

RegUp reserve

p.u.

nonneg

prd

\(p_{r,d}\)

RegDn reserve

p.u.

nonneg

pgdg

\(p_{g,DG}\)

DG output power

p.u.

SOC

\(SOC\)

ESD1 State of Charge

%

pos

pce

\(p_{c,ESD}\)

ESD1 charging power

p.u.

nonneg

pde

\(p_{d,ESD}\)

ESD1 discharging power

p.u.

nonneg

uce

\(u_{c,ESD}\)

ESD1 charging decision

boolean

ude

\(u_{d,ESD}\)

ESD1 discharging decision

boolean

zce

\(z_{c,ESD}\)

Aux var for charging, \(z_{c,ESD}=u_{c,ESD}*p_{c,ESD}\)

nonneg

zde

\(z_{d,ESD}\)

Aux var for discharging, \(z_{d,ESD}=u_{d,ESD}*p_{d,ESD}\)

nonneg

Services#

Name

Symbol

Description

Type

ctrle

\(c_{trl, e}\)

Effective Gen controllability

NumOpDual

nctrl

\(c_{trl,n}\)

Effective Gen uncontrollability

NumOp

nctrle

\(c_{trl,n,e}\)

Effective Gen uncontrollability

NumOpDual

csb

\(c_{sb}\)

select slack bus

VarSelect

gs

\(S_{g}\)

Sum Gen vars vector in shape of zone

ZonalSum

ds

\(S_{d}\)

Sum pd vector in shape of zone

ZonalSum

pdz

\(p_{d,z}\)

zonal total load

NumOpDual

dud

\(d_{u, d}\)

zonal RegUp reserve requirement

NumOpDual

ddd

\(d_{d, d}\)

zonal RegDn reserve requirement

NumOpDual

cd

\(C_{DG}\)

Select DG power from pg

VarSelect

REtaD

\(\frac{1}{\eta_d}\)

NumOp

Mb

\(M_{big}\)

10 times of max of pmax as big M

NumOp

ce

\(C_{ESD}\)

Select zue from pg

VarSelect

Parameters#

Name

Symbol

Description

Unit

Source

c2

\(c_{2}\)

Gen cost coefficient 2

$/(p.u.^2)

GCost.c2

c1

\(c_{1}\)

Gen cost coefficient 1

$/(p.u.)

GCost.c1

c0

\(c_{0}\)

Gen cost coefficient 0

$

GCost.c0

ug

\(u_{g}\)

Gen connection status

StaticGen.u

ctrl

\(c_{trl}\)

Gen controllability

StaticGen.ctrl

pmax

\(p_{g, max}\)

Gen maximum active power

p.u.

StaticGen.pmax

pmin

\(p_{g, min}\)

Gen minimum active power

p.u.

StaticGen.pmin

p0

\(p_{g, 0}\)

Gen initial active power

p.u.

StaticGen.pg0

buss

\(B_{us,s}\)

Bus slack

Slack.bus

pd

\(p_{d}\)

active demand

p.u.

StaticLoad.p0

rate_a

\(R_{ATEA}\)

long-term flow limit

p.u.

Line.rate_a

amax

\(\theta_{bus, max}\)

max line angle difference

Line.amax

amin

\(\theta_{bus, min}\)

min line angle difference

Line.amin

gsh

\(g_{sh}\)

shunt conductance

Shunt.g

Cg

\(C_{g}\)

Gen connection matrix

MatProcessor.Cg

Cl

\(C_{l}\)

Load connection matrix

MatProcessor.Cl

CftT

\(C_{ft}^T\)

Transpose of line connection matrix

MatProcessor.CftT

Csh

\(C_{sh}\)

Shunt connection matrix

MatProcessor.Csh

Bbus

\(B_{bus}\)

Bus admittance matrix

MatProcessor.Bbus

Bf

\(B_{f}\)

Bf matrix

MatProcessor.Bf

Pbusinj

\(P_{bus}^{inj}\)

Bus power injection vector

MatProcessor.Pbusinj

Pfinj

\(P_{f}^{inj}\)

Line power injection vector

MatProcessor.Pfinj

zg

\(z_{one,g}\)

Gen zone

StaticGen.zone

zd

\(z_{one,d}\)

Load zone

StaticLoad.zone

R10

\(R_{10}\)

10-min ramp rate

p.u./h

StaticGen.R10

cru

\(c_{r,u}\)

RegUp reserve coefficient

$/(p.u.)

SFRCost.cru

crd

\(c_{r,d}\)

RegDown reserve coefficient

$/(p.u.)

SFRCost.crd

du

\(d_{u}\)

RegUp reserve requirement in percentage

%

SFR.du

dd

\(d_{d}\)

RegDown reserve requirement in percentage

%

SFR.dd

gendg

\(g_{DG}\)

gen of DG

DG.gen

gammapd

\(\gamma_{p,DG}\)

('Ratio of DG.pge w.r.t to that of static generator',)

DG.gammap

En

\(E_n\)

Rated energy capacity

MWh

ESD1.En

SOCmax

\(SOC_{max}\)

Maximum allowed value for SOC in limiter

%

ESD1.SOCmax

SOCmin

\(SOC_{min}\)

Minimum required value for SOC in limiter

%

ESD1.SOCmin

SOCinit

\(SOC_{init}\)

Initial SOC

%

ESD1.SOCinit

EtaC

\(\eta_c\)

Efficiency during charging

%

ESD1.EtaC

EtaD

\(\eta_d\)

Efficiency during discharging

%

ESD1.EtaD

genesd

\(g_{ESD}\)

gen of ESD1

ESD1.gen

gammapesd

\(\gamma_{p,ESD}\)

Ratio of ESD1.pge w.r.t to that of static generator

ESD1.gammap

Config Fields in [RTEDES]

Option

Symbol

Value

Info

Accepted values

t

\(T_{cfg}\)

0.083

time interval in hours

RTEDVIS#

RTED with virtual inertia scheduling.

This class implements real-time economic dispatch with virtual inertia scheduling. Please ensure that the parameters dvm and dvd are set according to the system base.

Reference:

[1] B. She, F. Li, H. Cui, J. Wang, Q. Zhang and R. Bo, "Virtual Inertia Scheduling (VIS) for Real-time Economic Dispatch of IBRs-penetrated Power Systems," in IEEE Transactions on Sustainable Energy, doi: 10.1109/TSTE.2023.3319307.

Objective#

Unit

Expression

$

\(min. T_{cfg}^{2} \sum(c_{2} p_g^{2}) + \sum(u_{g} c_{0})+ T_{cfg} \sum(c_{1} p_g + c_{r,u} p_{r,u} + c_{r,d} p_{r,d})+ T_{cfg} \sum(c_{m} M + c_{d} D)\)

Constraints#

Name

Description

Expression

pglb

pg min

\(-p_g + c_{trl,n,e} p_{g, 0} + c_{trl, e} p_{g, min} \leq 0\)

pgub

pg max

\(p_g - c_{trl,n,e} p_{g, 0} - c_{trl, e} p_{g, max} \leq 0\)

sbus

align slack bus angle

\(c_{sb} \theta_{bus} = 0\)

pb

power balance

\(B_{bus} \theta_{bus} + P_{bus}^{inj} + C_{l} p_{d} + C_{sh} g_{sh} - C_{g} p_g = 0\)

plflb

line flow lower bound

\(-B_{f} \theta_{bus} - P_{f}^{inj} - R_{ATEA} \leq 0\)

plfub

line flow upper bound

\(B_{f} \theta_{bus} + P_{f}^{inj} - R_{ATEA} \leq 0\)

alflb

line angle difference lower bound

\(-C_{ft}^T \theta_{bus} + \theta_{bus, min} \leq 0\)

alfub

line angle difference upper bound

\(C_{ft}^T \theta_{bus} - \theta_{bus, max} \leq 0\)

rbu

RegUp reserve balance

\(S_{g} u_{g} p_{r,u} - d_{u, d} = 0\)

rbd

RegDn reserve balance

\(S_{g} u_{g} p_{r,d} - d_{d, d} = 0\)

rru

RegUp reserve source

\(u_{g} (p_g + p_{r,u}) - u_{g} p_{g, max} \leq 0\)

rrd

RegDn reserve source

\(u_{g} (-p_g + p_{r,d}) + u_{g} p_{g, min} \leq 0\)

rgu

Gen ramping up

\(u_{g} (p_g-p_{g, 0}-R_{10}) \leq 0\)

rgd

Gen ramping down

\(u_{g} (-p_g+p_{g, 0}-R_{10}) \leq 0\)

Mub

M upper bound

\(M - M_{max} \leq 0\)

Dub

D upper bound

\(D - D_{max} \leq 0\)

Mreq

Emulated inertia requirement

\(-S_{g} M + d_{v,m} = 0\)

Dreq

Emulated damping requirement

\(-S_{g} D + d_{v,d} = 0\)

Expressions#

Name

Variable

Description

Expression

plfc

plf

plf calculation

\(B_{f} \theta_{bus} + P_{f}^{inj}\)

pic

pi

dual of Constraint pb

\(\phi[pb]\)

Vars#

Name

Symbol

Description

Unit

Source

Properties

pg

\(p_g\)

Gen active power

p.u.

StaticGen.p

aBus

\(\theta_{bus}\)

Bus voltage angle

rad

Bus.a

pi

\(\pi\)

nodal price

$/p.u.

plf

\(p_{lf}\)

Line flow

p.u.

pru

\(p_{r,u}\)

RegUp reserve

p.u.

nonneg

prd

\(p_{r,d}\)

RegDn reserve

p.u.

nonneg

M

\(M\)

Emulated startup time constant (M=2H)

s

VSG.M

nonneg

D

\(D\)

Emulated damping coefficient

p.u.

VSG.D

nonneg

Services#

Name

Symbol

Description

Type

ctrle

\(c_{trl, e}\)

Effective Gen controllability

NumOpDual

nctrl

\(c_{trl,n}\)

Effective Gen uncontrollability

NumOp

nctrle

\(c_{trl,n,e}\)

Effective Gen uncontrollability

NumOpDual

csb

\(c_{sb}\)

select slack bus

VarSelect

gs

\(S_{g}\)

Sum Gen vars vector in shape of zone

ZonalSum

ds

\(S_{d}\)

Sum pd vector in shape of zone

ZonalSum

pdz

\(p_{d,z}\)

zonal total load

NumOpDual

dud

\(d_{u, d}\)

zonal RegUp reserve requirement

NumOpDual

ddd

\(d_{d, d}\)

zonal RegDn reserve requirement

NumOpDual

gvsg

\(S_{g}\)

Sum VSG vars vector in shape of zone

ZonalSum

Parameters#

Name

Symbol

Description

Unit

Source

c2

\(c_{2}\)

Gen cost coefficient 2

$/(p.u.^2)

GCost.c2

c1

\(c_{1}\)

Gen cost coefficient 1

$/(p.u.)

GCost.c1

c0

\(c_{0}\)

Gen cost coefficient 0

$

GCost.c0

ug

\(u_{g}\)

Gen connection status

StaticGen.u

ctrl

\(c_{trl}\)

Gen controllability

StaticGen.ctrl

pmax

\(p_{g, max}\)

Gen maximum active power

p.u.

StaticGen.pmax

pmin

\(p_{g, min}\)

Gen minimum active power

p.u.

StaticGen.pmin

p0

\(p_{g, 0}\)

Gen initial active power

p.u.

StaticGen.pg0

buss

\(B_{us,s}\)

Bus slack

Slack.bus

pd

\(p_{d}\)

active demand

p.u.

StaticLoad.p0

rate_a

\(R_{ATEA}\)

long-term flow limit

p.u.

Line.rate_a

amax

\(\theta_{bus, max}\)

max line angle difference

Line.amax

amin

\(\theta_{bus, min}\)

min line angle difference

Line.amin

gsh

\(g_{sh}\)

shunt conductance

Shunt.g

Cg

\(C_{g}\)

Gen connection matrix

MatProcessor.Cg

Cl

\(C_{l}\)

Load connection matrix

MatProcessor.Cl

CftT

\(C_{ft}^T\)

Transpose of line connection matrix

MatProcessor.CftT

Csh

\(C_{sh}\)

Shunt connection matrix

MatProcessor.Csh

Bbus

\(B_{bus}\)

Bus admittance matrix

MatProcessor.Bbus

Bf

\(B_{f}\)

Bf matrix

MatProcessor.Bf

Pbusinj

\(P_{bus}^{inj}\)

Bus power injection vector

MatProcessor.Pbusinj

Pfinj

\(P_{f}^{inj}\)

Line power injection vector

MatProcessor.Pfinj

zg

\(z_{one,g}\)

Gen zone

StaticGen.zone

zd

\(z_{one,d}\)

Load zone

StaticLoad.zone

R10

\(R_{10}\)

10-min ramp rate

p.u./h

StaticGen.R10

cru

\(c_{r,u}\)

RegUp reserve coefficient

$/(p.u.)

SFRCost.cru

crd

\(c_{r,d}\)

RegDown reserve coefficient

$/(p.u.)

SFRCost.crd

du

\(d_{u}\)

RegUp reserve requirement in percentage

%

SFR.du

dd

\(d_{d}\)

RegDown reserve requirement in percentage

%

SFR.dd

cm

\(c_{m}\)

Virtual inertia cost

$/s

VSGCost.cm

cd

\(c_{d}\)

Virtual damping cost

$/(p.u.)

VSGCost.cd

zvsg

\(z_{one,vsg}\)

VSG zone

VSG.zone

Mmax

\(M_{max}\)

Maximum inertia emulation

s

VSG.Mmax

Dmax

\(D_{max}\)

Maximum damping emulation

p.u.

VSG.Dmax

dvm

\(d_{v,m}\)

Emulated inertia requirement

s

VSGR.dvm

dvd

\(d_{v,d}\)

Emulated damping requirement

p.u.

VSGR.dvd

Config Fields in [RTEDVIS]

Option

Symbol

Value

Info

Accepted values

t

\(T_{cfg}\)

0.083

time interval in hours