DCUC#

Type for DC-based unit commitment.

Available routines: UC, UCDG, UCES

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

  1. 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#

Unit

Expression

$

\(min. T_{cfg}^{2} \sum(c_{2} z_{u_{g}}^{2} + T_{cfg} c_{1} z_{u_{g}})+ \sum(u_{g} c_{0} 1_{tl}) + T_{cfg} \sum(c_{su} v_{g,d} + c_{sd} w_{g,d} + c_{sr} p_{r,s} + c_{nsr} p_{r, ns} + c_{d,p} p_{d,u})\)

Constraints#

Name

Description

Expression

pglb

pg min

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

pgub

pg max

\(p_g - c_{trl,n} p_{g, 0} u_{g,d}- c_{trl} p_{g, max} u_{g,d} \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}-p_{d,u}) + C_{sh} g_{sh} 1_{tl} - C_{g} p_g = 0\)

plflb

line flow lower bound

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

plfub

line flow upper bound

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

alflb

line angle difference lower bound

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

alfub

line angle difference upper bound

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

prsb

spinning reserve balance

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

rsr

spinning reserve requirement

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

prnsb

non-spinning reserve balance

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

rnsr

non-spinning reserve requirement

\(-S_{g} p_{r, ns} + d_{nsr} \leq 0\)

actv

startup action

\(u_{g,d} M_{r} - v_{g,d}[:, 1:] = 0\)

actv0

initial startup action

\(u_{g,d}[:, 0] - u_{g}[:, 0] - v_{g,d}[:, 0] = 0\)

actw

shutdown action

\(-u_{g,d} M_{r} - w_{g,d}[:, 1:] = 0\)

actw0

initial shutdown action

\(-u_{g,d}[:, 0] + u_{g}[:, 0] - w_{g,d}[:, 0] = 0\)

zuglb

zug lower bound

\(- z_{u_{g}} + p_g \leq 0\)

zugub

zug upper bound

\(z_{u_{g}} - p_g - M_{zug} (1 - u_{g,d}) \leq 0\)

zugub2

zug upper bound

\(z_{u_{g}} - M_{zug} u_{g,d} \leq 0\)

don

minimum online duration

\(T_{on} v_{g,d} - u_{g,d} \leq 0\)

doff

minimum offline duration

\(T_{off} w_{g,d} - (1 - u_{g,d}) \leq 0\)

pdumax

unserved demand upper bound

\(p_{d,u} - p_{d,s}^{+} c_{trl,d} 1_{tl} \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\)

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.

prs

\(p_{r,s}\)

2D Spinning reserve

p.u.

nonneg

prns

\(p_{r, ns}\)

2D Non-spinning reserve

nonneg

ugd

\(u_{g,d}\)

commitment decision

StaticGen.u

boolean

vgd

\(v_{g,d}\)

startup action

StaticGen.u

boolean

wgd

\(w_{g,d}\)

shutdown action

StaticGen.u

boolean

zug

\(z_{ug}\)

Aux var, \(z_{ug} = u_{g,d} * p_g\)

pos

pdu

\(p_{d,u}\)

unserved demand

p.u.

nonneg

Services#

Name

Symbol

Description

Type

ctrle

\(c_{trl, e}\)

Reshaped controllability

NumOpDual

nctrl

\(c_{trl,n}\)

Effective Gen uncontrollability

NumOp

nctrle

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

Reshaped non-controllability

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

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

dnsrpz

\(d_{nsr, p, z}\)

zonal non-spinning reserve requirement in percentage

NumOpDual

dnsr

\(d_{nsr}\)

zonal non-spinning reserve requirement

NumOpDual

Mzug

\(M_{zug}\)

10 times of max of pmax as big M for zug

NumOp

Con

\(T_{on}\)

minimum ON coefficient

MinDur

Coff

\(T_{off}\)

minimum OFF coefficient

MinDur

pdsp

\(p_{d,s}^{+}\)

positive demand

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}\)

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

sd

\(s_{d}\)

zonal load factor for UC

UCTSlot.sd

timeslot

\(t_{s,idx}\)

Time slot for multi-period UC

UCTSlot.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

cnsr

\(c_{nsr}\)

cost for non-spinning reserve

$/(p.u.*h)

NSRCost.cnsr

dnsr

\(d_{nsr}\)

non-spinning reserve requirement in percentage

%

NSR.demand

csu

\(c_{su}\)

startup cost

$

GCost.csu

csd

\(c_{sd}\)

shutdown cost

$

GCost.csd

cdp

\(c_{d,p}\)

penalty for unserved load

$/(p.u.*h)

DCost.cdp

dctrl

\(c_{trl,d}\)

load controllability

StaticLoad.ctrl

td1

\(t_{d1}\)

minimum ON duration

h

StaticGen.td1

td2

\(t_{d2}\)

minimum OFF duration

h

StaticGen.td2

Config Fields in [UC]

Option

Symbol

Value

Info

Accepted values

t

\(T_{cfg}\)

1

time interval in hours

UCDG#

UC with distributed generation DG.

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

Objective#

Unit

Expression

$

\(min. T_{cfg}^{2} \sum(c_{2} z_{u_{g}}^{2} + T_{cfg} c_{1} z_{u_{g}})+ \sum(u_{g} c_{0} 1_{tl}) + T_{cfg} \sum(c_{su} v_{g,d} + c_{sd} w_{g,d} + c_{sr} p_{r,s} + c_{nsr} p_{r, ns} + c_{d,p} p_{d,u})\)

Constraints#

Name

Description

Expression

pglb

pg min

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

pgub

pg max

\(p_g - c_{trl,n} p_{g, 0} u_{g,d}- c_{trl} p_{g, max} u_{g,d} \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}-p_{d,u}) + C_{sh} g_{sh} 1_{tl} - C_{g} p_g = 0\)

plflb

line flow lower bound

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

plfub

line flow upper bound

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

alflb

line angle difference lower bound

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

alfub

line angle difference upper bound

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

prsb

spinning reserve balance

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

rsr

spinning reserve requirement

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

prnsb

non-spinning reserve balance

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

rnsr

non-spinning reserve requirement

\(-S_{g} p_{r, ns} + d_{nsr} \leq 0\)

actv

startup action

\(u_{g,d} M_{r} - v_{g,d}[:, 1:] = 0\)

actv0

initial startup action

\(u_{g,d}[:, 0] - u_{g}[:, 0] - v_{g,d}[:, 0] = 0\)

actw

shutdown action

\(-u_{g,d} M_{r} - w_{g,d}[:, 1:] = 0\)

actw0

initial shutdown action

\(-u_{g,d}[:, 0] + u_{g}[:, 0] - w_{g,d}[:, 0] = 0\)

zuglb

zug lower bound

\(- z_{u_{g}} + p_g \leq 0\)

zugub

zug upper bound

\(z_{u_{g}} - p_g - M_{zug} (1 - u_{g,d}) \leq 0\)

zugub2

zug upper bound

\(z_{u_{g}} - M_{zug} u_{g,d} \leq 0\)

don

minimum online duration

\(T_{on} v_{g,d} - u_{g,d} \leq 0\)

doff

minimum offline duration

\(T_{off} w_{g,d} - (1 - u_{g,d}) \leq 0\)

pdumax

unserved demand upper bound

\(p_{d,u} - p_{d,s}^{+} c_{trl,d} 1_{tl} \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\)

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.

prs

\(p_{r,s}\)

2D Spinning reserve

p.u.

nonneg

prns

\(p_{r, ns}\)

2D Non-spinning reserve

nonneg

ugd

\(u_{g,d}\)

commitment decision

StaticGen.u

boolean

vgd

\(v_{g,d}\)

startup action

StaticGen.u

boolean

wgd

\(w_{g,d}\)

shutdown action

StaticGen.u

boolean

zug

\(z_{ug}\)

Aux var, \(z_{ug} = u_{g,d} * p_g\)

pos

pdu

\(p_{d,u}\)

unserved demand

p.u.

nonneg

pgdg

\(p_{g,DG}\)

DG output power

p.u.

Services#

Name

Symbol

Description

Type

ctrle

\(c_{trl, e}\)

Reshaped controllability

NumOpDual

nctrl

\(c_{trl,n}\)

Effective Gen uncontrollability

NumOp

nctrle

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

Reshaped non-controllability

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

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

dnsrpz

\(d_{nsr, p, z}\)

zonal non-spinning reserve requirement in percentage

NumOpDual

dnsr

\(d_{nsr}\)

zonal non-spinning reserve requirement

NumOpDual

Mzug

\(M_{zug}\)

10 times of max of pmax as big M for zug

NumOp

Con

\(T_{on}\)

minimum ON coefficient

MinDur

Coff

\(T_{off}\)

minimum OFF coefficient

MinDur

pdsp

\(p_{d,s}^{+}\)

positive demand

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}\)

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

sd

\(s_{d}\)

zonal load factor for UC

UCTSlot.sd

timeslot

\(t_{s,idx}\)

Time slot for multi-period UC

UCTSlot.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

cnsr

\(c_{nsr}\)

cost for non-spinning reserve

$/(p.u.*h)

NSRCost.cnsr

dnsr

\(d_{nsr}\)

non-spinning reserve requirement in percentage

%

NSR.demand

csu

\(c_{su}\)

startup cost

$

GCost.csu

csd

\(c_{sd}\)

shutdown cost

$

GCost.csd

cdp

\(c_{d,p}\)

penalty for unserved load

$/(p.u.*h)

DCost.cdp

dctrl

\(c_{trl,d}\)

load controllability

StaticLoad.ctrl

td1

\(t_{d1}\)

minimum ON duration

h

StaticGen.td1

td2

\(t_{d2}\)

minimum OFF duration

h

StaticGen.td2

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 [UCDG]

Option

Symbol

Value

Info

Accepted values

t

\(T_{cfg}\)

1

time interval in hours

UCES#

UC with energy storage ESD1.

Objective#

Unit

Expression

$

\(min. T_{cfg}^{2} \sum(c_{2} z_{u_{g}}^{2} + T_{cfg} c_{1} z_{u_{g}})+ \sum(u_{g} c_{0} 1_{tl}) + T_{cfg} \sum(c_{su} v_{g,d} + c_{sd} w_{g,d} + c_{sr} p_{r,s} + c_{nsr} p_{r, ns} + c_{d,p} p_{d,u})\)

Constraints#

Name

Description

Expression

pglb

pg min

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

pgub

pg max

\(p_g - c_{trl,n} p_{g, 0} u_{g,d}- c_{trl} p_{g, max} u_{g,d} \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}-p_{d,u}) + C_{sh} g_{sh} 1_{tl} - C_{g} p_g = 0\)

plflb

line flow lower bound

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

plfub

line flow upper bound

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

alflb

line angle difference lower bound

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

alfub

line angle difference upper bound

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

prsb

spinning reserve balance

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

rsr

spinning reserve requirement

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

prnsb

non-spinning reserve balance

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

rnsr

non-spinning reserve requirement

\(-S_{g} p_{r, ns} + d_{nsr} \leq 0\)

actv

startup action

\(u_{g,d} M_{r} - v_{g,d}[:, 1:] = 0\)

actv0

initial startup action

\(u_{g,d}[:, 0] - u_{g}[:, 0] - v_{g,d}[:, 0] = 0\)

actw

shutdown action

\(-u_{g,d} M_{r} - w_{g,d}[:, 1:] = 0\)

actw0

initial shutdown action

\(-u_{g,d}[:, 0] + u_{g}[:, 0] - w_{g,d}[:, 0] = 0\)

zuglb

zug lower bound

\(- z_{u_{g}} + p_g \leq 0\)

zugub

zug upper bound

\(z_{u_{g}} - p_g - M_{zug} (1 - u_{g,d}) \leq 0\)

zugub2

zug upper bound

\(z_{u_{g}} - M_{zug} u_{g,d} \leq 0\)

don

minimum online duration

\(T_{on} v_{g,d} - u_{g,d} \leq 0\)

doff

minimum offline duration

\(T_{off} w_{g,d} - (1 - u_{g,d}) \leq 0\)

pdumax

unserved demand upper bound

\(p_{d,u} - p_{d,s}^{+} c_{trl,d} 1_{tl} \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}\)

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.

prs

\(p_{r,s}\)

2D Spinning reserve

p.u.

nonneg

prns

\(p_{r, ns}\)

2D Non-spinning reserve

nonneg

ugd

\(u_{g,d}\)

commitment decision

StaticGen.u

boolean

vgd

\(v_{g,d}\)

startup action

StaticGen.u

boolean

wgd

\(w_{g,d}\)

shutdown action

StaticGen.u

boolean

zug

\(z_{ug}\)

Aux var, \(z_{ug} = u_{g,d} * p_g\)

pos

pdu

\(p_{d,u}\)

unserved demand

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}\)

Reshaped controllability

NumOpDual

nctrl

\(c_{trl,n}\)

Effective Gen uncontrollability

NumOp

nctrle

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

Reshaped non-controllability

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

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

dnsrpz

\(d_{nsr, p, z}\)

zonal non-spinning reserve requirement in percentage

NumOpDual

dnsr

\(d_{nsr}\)

zonal non-spinning reserve requirement

NumOpDual

Mzug

\(M_{zug}\)

10 times of max of pmax as big M for zug

NumOp

Con

\(T_{on}\)

minimum ON coefficient

MinDur

Coff

\(T_{off}\)

minimum OFF coefficient

MinDur

pdsp

\(p_{d,s}^{+}\)

positive demand

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}\)

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

sd

\(s_{d}\)

zonal load factor for UC

UCTSlot.sd

timeslot

\(t_{s,idx}\)

Time slot for multi-period UC

UCTSlot.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

cnsr

\(c_{nsr}\)

cost for non-spinning reserve

$/(p.u.*h)

NSRCost.cnsr

dnsr

\(d_{nsr}\)

non-spinning reserve requirement in percentage

%

NSR.demand

csu

\(c_{su}\)

startup cost

$

GCost.csu

csd

\(c_{sd}\)

shutdown cost

$

GCost.csd

cdp

\(c_{d,p}\)

penalty for unserved load

$/(p.u.*h)

DCost.cdp

dctrl

\(c_{trl,d}\)

load controllability

StaticLoad.ctrl

td1

\(t_{d1}\)

minimum ON duration

h

StaticGen.td1

td2

\(t_{d2}\)

minimum OFF duration

h

StaticGen.td2

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 [UCES]

Option

Symbol

Value

Info

Accepted values

t

\(T_{cfg}\)

1

time interval in hours