DCUC#

Type for DC-based unit commitment.

Available routines: UC, UCDG, UCES, UC2, UC2DG, UC2ES

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#

  • The formulations have been adjusted with interval config.t

  • 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} p_g^{2})+ T_{cfg} \sum(c_{1} p_g)+ \sum(u_{g} c_{0} 1_{tl})+ \sum(c_{su} v_{g,d} + c_{sd} w_{g,d}) + T_{cfg} \sum(c_{sr} p_{r,s} + c_{nsr} p_{r, ns} + c_{d,p} p_{d,u})\)

Expressions#

Name

Description

Expression

Unit

Source

plf

2D Line flow

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

p.u.

Line

pmaxe

Effective pmax

\(c_{trl,n} p_{g, 0} u_{g,d} + c_{trl} p_{g, max} u_{g,d}\)

p.u.

StaticGen

pmine

Effective pmin

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

p.u.

StaticGen

Constraints#

Name

Description

Expression

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

sbus

align slack bus angle

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

pglb

pg min

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

pgub

pg max

\(p_g - p_{g, max, e} \leq 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\)

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

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

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

Vars#

Name

Symbol

Description

Unit

Source

Properties

pg

\(p_g\)

2D Gen power

p.u.

StaticGen.p

vBus

\(v_{Bus}\)

2D Bus voltage

p.u.

Bus.v

aBus

\(\theta_{bus}\)

2D Bus angle

rad

Bus.a

prns

\(p_{r, ns}\)

2D Non-spinning reserve

StaticGen

nonneg

prs

\(p_{r,s}\)

2D Spinning reserve

p.u.

StaticGen

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

StaticGen

pos

pdu

\(p_{d,u}\)

unserved demand

p.u.

StaticLoad

nonneg

ExpressionCalcs#

Name

Description

Expression

Unit

Source

pi

LMP, dual of <pb>

\(\phi[pb]\)

$/p.u.

Bus

mu1

Lagrange multipliers, dual of <plflb>

\(\phi[plflb]\)

$/p.u.

Line

mu2

Lagrange multipliers, dual of <plfub>

\(\phi[plfub]\)

$/p.u.

Line

Services#

Name

Symbol

Description

Type

pd

\(p_{d}\)

effective active demand

NumOpDual

isb

\(I_{sb}\)

Index slack bus from all buses

VarSelect

ctrle

\(c_{trl, e}\)

Reshaped controllability

NumOpDual

nctrl

\(c_{trl,n}\)

Effective Gen uncontrollability

NumOp

nctrle

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

Reshaped non-controllability

NumOpDual

gs

\(S_{g}\)

Sum Gen vars vector in shape of area

ZonalSum

ds

\(S_{d}\)

Sum pd vector in shape of area

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

dnsrpz

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

zonal non-spinning reserve requirement in percentage

NumOpDual

dnsr

\(d_{nsr}\)

zonal non-spinning reserve requirement

NumOpDual

dsrpz

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

zonal spinning reserve requirement in percentage

NumOpDual

dsr

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

zonal 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

ug

\(u_{g}\)

Gen connection status

StaticGen.u

pg0

\(p_{g, 0}\)

Gen initial active power

p.u.

StaticGen.p0

gsh

\(g_{sh}\)

shunt conductance

Shunt.g

buss

\(B_{us,s}\)

Bus slack

Slack.bus

ud

\(u_{d}\)

Load connection status

StaticLoad.u

pd0

\(p_{d,0}\)

active demand

p.u.

StaticLoad.p0

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

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

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

ul

\(u_{l}\)

Line connection status

Line.u

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

zg

\(z_{one,g}\)

Gen area

StaticGen.area

zd

\(z_{one,d}\)

Load area

StaticLoad.area

R10

\(R_{10}\)

10-min ramp rate

p.u./h

StaticGen.R10

timeslot

\(t_{s,idx}\)

Time slot for multi-period UC

UCSlot.idx

sd

\(s_{d}\)

area load scaling factor for UC

UCSlotLoad.sd

R30

\(R_{30}\)

30-min ramp rate

p.u./h

StaticGen.R30

cnsr

\(c_{nsr}\)

cost for non-spinning reserve

$/(p.u.*h)

NSRCost.cnsr

dnsr

\(d_{nsr}\)

non-spinning reserve requirement in percentage

%

NSR.demand

dsr

\(d_{sr}\)

spinning reserve requirement in percentage

%

SR.demand

csr

\(c_{sr}\)

cost for spinning reserve

$/(p.u.*h)

SRCost.csr

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 includes 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} p_g^{2})+ T_{cfg} \sum(c_{1} p_g)+ \sum(u_{g} c_{0} 1_{tl})+ \sum(c_{su} v_{g,d} + c_{sd} w_{g,d}) + T_{cfg} \sum(c_{sr} p_{r,s} + c_{nsr} p_{r, ns} + c_{d,p} p_{d,u})\)

Expressions#

Name

Description

Expression

Unit

Source

plf

2D Line flow

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

p.u.

Line

pmaxe

Effective pmax

\(c_{trl,n} p_{g, 0} u_{g,d} + c_{trl} p_{g, max} u_{g,d}\)

p.u.

StaticGen

pmine

Effective pmin

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

p.u.

StaticGen

Constraints#

Name

Description

Expression

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

sbus

align slack bus angle

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

pglb

pg min

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

pgub

pg max

\(p_g - p_{g, max, e} \leq 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\)

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

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

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

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

Vars#

Name

Symbol

Description

Unit

Source

Properties

pg

\(p_g\)

2D Gen power

p.u.

StaticGen.p

vBus

\(v_{Bus}\)

2D Bus voltage

p.u.

Bus.v

aBus

\(\theta_{bus}\)

2D Bus angle

rad

Bus.a

prns

\(p_{r, ns}\)

2D Non-spinning reserve

StaticGen

nonneg

prs

\(p_{r,s}\)

2D Spinning reserve

p.u.

StaticGen

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

StaticGen

pos

pdu

\(p_{d,u}\)

unserved demand

p.u.

StaticLoad

nonneg

pgdg

\(p_{g,DG}\)

DG output power

p.u.

DG

ExpressionCalcs#

Name

Description

Expression

Unit

Source

pi

LMP, dual of <pb>

\(\phi[pb]\)

$/p.u.

Bus

mu1

Lagrange multipliers, dual of <plflb>

\(\phi[plflb]\)

$/p.u.

Line

mu2

Lagrange multipliers, dual of <plfub>

\(\phi[plfub]\)

$/p.u.

Line

Services#

Name

Symbol

Description

Type

pd

\(p_{d}\)

effective active demand

NumOpDual

isb

\(I_{sb}\)

Index slack bus from all buses

VarSelect

ctrle

\(c_{trl, e}\)

Reshaped controllability

NumOpDual

nctrl

\(c_{trl,n}\)

Effective Gen uncontrollability

NumOp

nctrle

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

Reshaped non-controllability

NumOpDual

gs

\(S_{g}\)

Sum Gen vars vector in shape of area

ZonalSum

ds

\(S_{d}\)

Sum pd vector in shape of area

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

dnsrpz

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

zonal non-spinning reserve requirement in percentage

NumOpDual

dnsr

\(d_{nsr}\)

zonal non-spinning reserve requirement

NumOpDual

dsrpz

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

zonal spinning reserve requirement in percentage

NumOpDual

dsr

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

zonal 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

idg

\(I_{DG}\)

Index DG power from pg

VarSelect

Parameters#

Name

Symbol

Description

Unit

Source

ug

\(u_{g}\)

Gen connection status

StaticGen.u

pg0

\(p_{g, 0}\)

Gen initial active power

p.u.

StaticGen.p0

gsh

\(g_{sh}\)

shunt conductance

Shunt.g

buss

\(B_{us,s}\)

Bus slack

Slack.bus

ud

\(u_{d}\)

Load connection status

StaticLoad.u

pd0

\(p_{d,0}\)

active demand

p.u.

StaticLoad.p0

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

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

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

ul

\(u_{l}\)

Line connection status

Line.u

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

zg

\(z_{one,g}\)

Gen area

StaticGen.area

zd

\(z_{one,d}\)

Load area

StaticLoad.area

R10

\(R_{10}\)

10-min ramp rate

p.u./h

StaticGen.R10

timeslot

\(t_{s,idx}\)

Time slot for multi-period UC

UCSlot.idx

sd

\(s_{d}\)

area load scaling factor for UC

UCSlotLoad.sd

R30

\(R_{30}\)

30-min ramp rate

p.u./h

StaticGen.R30

cnsr

\(c_{nsr}\)

cost for non-spinning reserve

$/(p.u.*h)

NSRCost.cnsr

dnsr

\(d_{nsr}\)

non-spinning reserve requirement in percentage

%

NSR.demand

dsr

\(d_{sr}\)

spinning reserve requirement in percentage

%

SR.demand

csr

\(c_{sr}\)

cost for spinning reserve

$/(p.u.*h)

SRCost.csr

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} p_g^{2})+ T_{cfg} \sum(c_{1} p_g)+ \sum(u_{g} c_{0} 1_{tl})+ \sum(c_{su} v_{g,d} + c_{sd} w_{g,d}) + T_{cfg} \sum(c_{sr} p_{r,s} + c_{nsr} p_{r, ns} + c_{d,p} p_{d,u})+ T_{cfg} \sum(- c_{c,ESD} p_{c,ESD} + c_{d,ESD} p_{d,ESD})\)

Expressions#

Name

Description

Expression

Unit

Source

plf

2D Line flow

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

p.u.

Line

pmaxe

Effective pmax

\(c_{trl,n} p_{g, 0} u_{g,d} + c_{trl} p_{g, max} u_{g,d}\)

p.u.

StaticGen

pmine

Effective pmin

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

p.u.

StaticGen

Constraints#

Name

Description

Expression

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

sbus

align slack bus angle

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

pglb

pg min

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

pgub

pg max

\(p_g - p_{g, max, e} \leq 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\)

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

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

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

cesd

Select pce and pde from pg

\(I_{ESD} p_g + p_{c,ESD} - p_{d,ESD} = 0\)

SOClb

SOC lower bound

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

SOCub

SOC upper bound

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

SOCb

ESD1 SOC balance

\(E_{n,R} SOC M_{r,ES} - T_{cfg} \eta_{c,R} p_{c,ESD}[:, 1:] + T_{cfg} R_{\eta_d,R} p_{d,ESD}[:, 1:] = 0\)

SOCr

ESD1 final SOC requirement

\(SOC_{end} - SOC[:, -1] \leq 0\)

cdgb

Select DG power from pg

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

cdb

Charging decision bound

\(u_{c,ESD} + u_{d,ESD} - 1 = 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\)

tcdr

Minimum charging duration

\((t_{dc0} > 0) (t_{dc} > t_{dc0}) - u_{c,ESD} \leq 0\)

tddr

Minimum discharging duration

\((t_{dd0} > 0) (t_{dd} > t_{dd0}) - u_{d,ESD} \leq 0\)

SOCb0

ESD1 SOC initial balance

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

Vars#

Name

Symbol

Description

Unit

Source

Properties

pg

\(p_g\)

2D Gen power

p.u.

StaticGen.p

vBus

\(v_{Bus}\)

2D Bus voltage

p.u.

Bus.v

aBus

\(\theta_{bus}\)

2D Bus angle

rad

Bus.a

prns

\(p_{r, ns}\)

2D Non-spinning reserve

StaticGen

nonneg

prs

\(p_{r,s}\)

2D Spinning reserve

p.u.

StaticGen

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

StaticGen

pos

pdu

\(p_{d,u}\)

unserved demand

p.u.

StaticLoad

nonneg

SOC

\(SOC\)

ESD1 State of Charge

p.u. (%)

ESD1

nonneg

pce

\(p_{c,ESD}\)

ESD1 charging power

p.u.

ESD1

nonneg

pde

\(p_{d,ESD}\)

ESD1 discharging power

p.u.

ESD1

nonneg

pgdg

\(p_{g,DG}\)

DG output power

p.u.

DG

ucd

\(u_{c,ESD}\)

ESD1 charging decision

ESD1

boolean

udd

\(u_{d,ESD}\)

ESD1 discharging decision

ESD1

boolean

zce

\(z_{c,ESD}\)

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

ESD1

nonneg

zde

\(z_{d,ESD}\)

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

ESD1

nonneg

ExpressionCalcs#

Name

Description

Expression

Unit

Source

pi

LMP, dual of <pb>

\(\phi[pb]\)

$/p.u.

Bus

mu1

Lagrange multipliers, dual of <plflb>

\(\phi[plflb]\)

$/p.u.

Line

mu2

Lagrange multipliers, dual of <plfub>

\(\phi[plfub]\)

$/p.u.

Line

Services#

Name

Symbol

Description

Type

pd

\(p_{d}\)

effective active demand

NumOpDual

isb

\(I_{sb}\)

Index slack bus from all buses

VarSelect

ctrle

\(c_{trl, e}\)

Reshaped controllability

NumOpDual

nctrl

\(c_{trl,n}\)

Effective Gen uncontrollability

NumOp

nctrle

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

Reshaped non-controllability

NumOpDual

gs

\(S_{g}\)

Sum Gen vars vector in shape of area

ZonalSum

ds

\(S_{d}\)

Sum pd vector in shape of area

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

dnsrpz

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

zonal non-spinning reserve requirement in percentage

NumOpDual

dnsr

\(d_{nsr}\)

zonal non-spinning reserve requirement

NumOpDual

dsrpz

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

zonal spinning reserve requirement in percentage

NumOpDual

dsr

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

zonal 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

REtaD

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

NumOp

Mb

\(M_{big}\)

10 times of max of pmax as big M

NumOp

ies

\(I_{ESD}\)

Index ESD from StaticGen

VarSelect

idg

\(I_{DG}\)

Index DG power 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

ug

\(u_{g}\)

Gen connection status

StaticGen.u

pg0

\(p_{g, 0}\)

Gen initial active power

p.u.

StaticGen.p0

gsh

\(g_{sh}\)

shunt conductance

Shunt.g

buss

\(B_{us,s}\)

Bus slack

Slack.bus

ud

\(u_{d}\)

Load connection status

StaticLoad.u

pd0

\(p_{d,0}\)

active demand

p.u.

StaticLoad.p0

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

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

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

ul

\(u_{l}\)

Line connection status

Line.u

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

zg

\(z_{one,g}\)

Gen area

StaticGen.area

zd

\(z_{one,d}\)

Load area

StaticLoad.area

R10

\(R_{10}\)

10-min ramp rate

p.u./h

StaticGen.R10

timeslot

\(t_{s,idx}\)

Time slot for multi-period UC

UCSlot.idx

sd

\(s_{d}\)

area load scaling factor for UC

UCSlotLoad.sd

R30

\(R_{30}\)

30-min ramp rate

p.u./h

StaticGen.R30

cnsr

\(c_{nsr}\)

cost for non-spinning reserve

$/(p.u.*h)

NSRCost.cnsr

dnsr

\(d_{nsr}\)

non-spinning reserve requirement in percentage

%

NSR.demand

dsr

\(d_{sr}\)

spinning reserve requirement in percentage

%

SR.demand

csr

\(c_{sr}\)

cost for spinning reserve

$/(p.u.*h)

SRCost.csr

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

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

SOCend

\(SOC_{end}\)

Target SOC at the end of the period

ESD1.SOCend

EtaC

\(\eta_c\)

Efficiency during charging

ESD1.EtaC

EtaD

\(\eta_d\)

Efficiency during discharging

ESD1.EtaD

cesdc

\(c_{c,ESD}\)

Charging cost

$/p.u.*h

ESD1.cesdc

cesdd

\(c_{d,ESD}\)

Discharging cost

$/p.u.*h

ESD1.cesdd

genesd

\(g_{ESD}\)

gen of ESD

ESD1.gen

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

tdc

\(t_{dc}\)

Minimum charging duration

h

ESD1.tdc

tdd

\(t_{dd}\)

Minimum discharging duration

h

ESD1.tdd

tdc0

\(t_{dc0}\)

Initial charging time

h

ESD1.tdc0

tdd0

\(t_{dd0}\)

Initial discharging time

h

ESD1.tdd0

Config Fields in [UCES]

Option

Symbol

Value

Info

Accepted values

t

\(T_{cfg}\)

1

time interval in hours

UC2#

DC-based unit commitment (UC) using PTDF formulations: 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#

  • The formulations have been adjusted with interval config.t

  • 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} p_g^{2})+ T_{cfg} \sum(c_{1} p_g)+ \sum(u_{g} c_{0} 1_{tl})+ \sum(c_{su} v_{g,d} + c_{sd} w_{g,d}) + T_{cfg} \sum(c_{sr} p_{r,s} + c_{nsr} p_{r, ns} + c_{d,p} p_{d,u})\)

Expressions#

Name

Description

Expression

Unit

Source

plf

2D Line flow

\(P_{TDF} (C_{g} p_g - C_{l} (p_{d,s} - p_{d,u}) - C_{sh} g_{sh} 1_{tl} - P_{bus}^{inj} 1_{tl})\)

p.u.

Line

pmaxe

Effective pmax

\(c_{trl,n} p_{g, 0} u_{g,d} + c_{trl} p_{g, max} u_{g,d}\)

p.u.

StaticGen

pmine

Effective pmin

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

p.u.

StaticGen

Constraints#

Name

Description

Expression

pb

power balance

\(\sum(p_g, axis=0) - \sum(p_{d,s} - p_{d,u}, axis=0) = 0\)

sbus

align slack bus angle

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

pglb

pg min

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

pgub

pg max

\(p_g - p_{g, max, e} \leq 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\)

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

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

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

Vars#

Name

Symbol

Description

Unit

Source

Properties

pg

\(p_g\)

2D Gen power

p.u.

StaticGen.p

vBus

\(v_{Bus}\)

2D Bus voltage

p.u.

Bus.v

aBus

\(\theta_{bus}\)

2D Bus angle

rad

Bus.a

prns

\(p_{r, ns}\)

2D Non-spinning reserve

StaticGen

nonneg

prs

\(p_{r,s}\)

2D Spinning reserve

p.u.

StaticGen

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

StaticGen

pos

pdu

\(p_{d,u}\)

unserved demand

p.u.

StaticLoad

nonneg

ExpressionCalcs#

Name

Description

Expression

Unit

Source

pi

locational marginal price (LMP)

\(-\phi[pb] - P_{TDF}^T (\phi[plfub] - \phi[plflb])\)

$/p.u.

Bus

mu1

Lagrange multipliers, dual of <plflb>

\(\phi[plflb]\)

$/p.u.

Line

mu2

Lagrange multipliers, dual of <plfub>

\(\phi[plfub]\)

$/p.u.

Line

pie

Energy price

\(-\phi[pb]\)

$/p.u.

pic

Congestion price

\(-P_{TDF}^T (\phi[plfub] - \phi[plflb])\)

$/p.u.

Bus

Services#

Name

Symbol

Description

Type

pd

\(p_{d}\)

effective active demand

NumOpDual

isb

\(I_{sb}\)

Index slack bus from all buses

VarSelect

ctrle

\(c_{trl, e}\)

Reshaped controllability

NumOpDual

nctrl

\(c_{trl,n}\)

Effective Gen uncontrollability

NumOp

nctrle

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

Reshaped non-controllability

NumOpDual

gs

\(S_{g}\)

Sum Gen vars vector in shape of area

ZonalSum

ds

\(S_{d}\)

Sum pd vector in shape of area

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

dnsrpz

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

zonal non-spinning reserve requirement in percentage

NumOpDual

dnsr

\(d_{nsr}\)

zonal non-spinning reserve requirement

NumOpDual

dsrpz

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

zonal spinning reserve requirement in percentage

NumOpDual

dsr

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

zonal 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

PTDFt

\(P_{TDF}^T\)

PTDF transpose

NumOp

Parameters#

Name

Symbol

Description

Unit

Source

ug

\(u_{g}\)

Gen connection status

StaticGen.u

pg0

\(p_{g, 0}\)

Gen initial active power

p.u.

StaticGen.p0

gsh

\(g_{sh}\)

shunt conductance

Shunt.g

buss

\(B_{us,s}\)

Bus slack

Slack.bus

ud

\(u_{d}\)

Load connection status

StaticLoad.u

pd0

\(p_{d,0}\)

active demand

p.u.

StaticLoad.p0

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

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

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

ul

\(u_{l}\)

Line connection status

Line.u

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

zg

\(z_{one,g}\)

Gen area

StaticGen.area

zd

\(z_{one,d}\)

Load area

StaticLoad.area

R10

\(R_{10}\)

10-min ramp rate

p.u./h

StaticGen.R10

timeslot

\(t_{s,idx}\)

Time slot for multi-period UC

UCSlot.idx

sd

\(s_{d}\)

area load scaling factor for UC

UCSlotLoad.sd

R30

\(R_{30}\)

30-min ramp rate

p.u./h

StaticGen.R30

cnsr

\(c_{nsr}\)

cost for non-spinning reserve

$/(p.u.*h)

NSRCost.cnsr

dnsr

\(d_{nsr}\)

non-spinning reserve requirement in percentage

%

NSR.demand

dsr

\(d_{sr}\)

spinning reserve requirement in percentage

%

SR.demand

csr

\(c_{sr}\)

cost for spinning reserve

$/(p.u.*h)

SRCost.csr

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

PTDF

\(P_{TDF}\)

PTDF

MatProcessor.PTDF

Config Fields in [UC2]

Option

Symbol

Value

Info

Accepted values

t

\(T_{cfg}\)

1

time interval in hours

UC2DG#

UC with distributed generation DG, using PTDF formulations.

Note that UCDG only includes 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} p_g^{2})+ T_{cfg} \sum(c_{1} p_g)+ \sum(u_{g} c_{0} 1_{tl})+ \sum(c_{su} v_{g,d} + c_{sd} w_{g,d}) + T_{cfg} \sum(c_{sr} p_{r,s} + c_{nsr} p_{r, ns} + c_{d,p} p_{d,u})\)

Expressions#

Name

Description

Expression

Unit

Source

plf

2D Line flow

\(P_{TDF} (C_{g} p_g - C_{l} (p_{d,s} - p_{d,u}) - C_{sh} g_{sh} 1_{tl} - P_{bus}^{inj} 1_{tl})\)

p.u.

Line

pmaxe

Effective pmax

\(c_{trl,n} p_{g, 0} u_{g,d} + c_{trl} p_{g, max} u_{g,d}\)

p.u.

StaticGen

pmine

Effective pmin

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

p.u.

StaticGen

Constraints#

Name

Description

Expression

pb

power balance

\(\sum(p_g, axis=0) - \sum(p_{d,s} - p_{d,u}, axis=0) = 0\)

sbus

align slack bus angle

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

pglb

pg min

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

pgub

pg max

\(p_g - p_{g, max, e} \leq 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\)

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

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

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

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

Vars#

Name

Symbol

Description

Unit

Source

Properties

pg

\(p_g\)

2D Gen power

p.u.

StaticGen.p

vBus

\(v_{Bus}\)

2D Bus voltage

p.u.

Bus.v

aBus

\(\theta_{bus}\)

2D Bus angle

rad

Bus.a

prns

\(p_{r, ns}\)

2D Non-spinning reserve

StaticGen

nonneg

prs

\(p_{r,s}\)

2D Spinning reserve

p.u.

StaticGen

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

StaticGen

pos

pdu

\(p_{d,u}\)

unserved demand

p.u.

StaticLoad

nonneg

pgdg

\(p_{g,DG}\)

DG output power

p.u.

DG

ExpressionCalcs#

Name

Description

Expression

Unit

Source

pi

locational marginal price (LMP)

\(-\phi[pb] - P_{TDF}^T (\phi[plfub] - \phi[plflb])\)

$/p.u.

Bus

mu1

Lagrange multipliers, dual of <plflb>

\(\phi[plflb]\)

$/p.u.

Line

mu2

Lagrange multipliers, dual of <plfub>

\(\phi[plfub]\)

$/p.u.

Line

pie

Energy price

\(-\phi[pb]\)

$/p.u.

pic

Congestion price

\(-P_{TDF}^T (\phi[plfub] - \phi[plflb])\)

$/p.u.

Bus

Services#

Name

Symbol

Description

Type

pd

\(p_{d}\)

effective active demand

NumOpDual

isb

\(I_{sb}\)

Index slack bus from all buses

VarSelect

ctrle

\(c_{trl, e}\)

Reshaped controllability

NumOpDual

nctrl

\(c_{trl,n}\)

Effective Gen uncontrollability

NumOp

nctrle

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

Reshaped non-controllability

NumOpDual

gs

\(S_{g}\)

Sum Gen vars vector in shape of area

ZonalSum

ds

\(S_{d}\)

Sum pd vector in shape of area

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

dnsrpz

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

zonal non-spinning reserve requirement in percentage

NumOpDual

dnsr

\(d_{nsr}\)

zonal non-spinning reserve requirement

NumOpDual

dsrpz

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

zonal spinning reserve requirement in percentage

NumOpDual

dsr

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

zonal 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

PTDFt

\(P_{TDF}^T\)

PTDF transpose

NumOp

idg

\(I_{DG}\)

Index DG power from pg

VarSelect

Parameters#

Name

Symbol

Description

Unit

Source

ug

\(u_{g}\)

Gen connection status

StaticGen.u

pg0

\(p_{g, 0}\)

Gen initial active power

p.u.

StaticGen.p0

gsh

\(g_{sh}\)

shunt conductance

Shunt.g

buss

\(B_{us,s}\)

Bus slack

Slack.bus

ud

\(u_{d}\)

Load connection status

StaticLoad.u

pd0

\(p_{d,0}\)

active demand

p.u.

StaticLoad.p0

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

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

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

ul

\(u_{l}\)

Line connection status

Line.u

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

zg

\(z_{one,g}\)

Gen area

StaticGen.area

zd

\(z_{one,d}\)

Load area

StaticLoad.area

R10

\(R_{10}\)

10-min ramp rate

p.u./h

StaticGen.R10

timeslot

\(t_{s,idx}\)

Time slot for multi-period UC

UCSlot.idx

sd

\(s_{d}\)

area load scaling factor for UC

UCSlotLoad.sd

R30

\(R_{30}\)

30-min ramp rate

p.u./h

StaticGen.R30

cnsr

\(c_{nsr}\)

cost for non-spinning reserve

$/(p.u.*h)

NSRCost.cnsr

dnsr

\(d_{nsr}\)

non-spinning reserve requirement in percentage

%

NSR.demand

dsr

\(d_{sr}\)

spinning reserve requirement in percentage

%

SR.demand

csr

\(c_{sr}\)

cost for spinning reserve

$/(p.u.*h)

SRCost.csr

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

PTDF

\(P_{TDF}\)

PTDF

MatProcessor.PTDF

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

Option

Symbol

Value

Info

Accepted values

t

\(T_{cfg}\)

1

time interval in hours

UC2ES#

UC with energy storage ESD1, using PTDF formulations.

Objective#

Unit

Expression

$

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

Expressions#

Name

Description

Expression

Unit

Source

plf

2D Line flow

\(P_{TDF} (C_{g} p_g - C_{l} (p_{d,s} - p_{d,u}) - C_{sh} g_{sh} 1_{tl} - P_{bus}^{inj} 1_{tl})\)

p.u.

Line

pmaxe

Effective pmax

\(c_{trl,n} p_{g, 0} u_{g,d} + c_{trl} p_{g, max} u_{g,d}\)

p.u.

StaticGen

pmine

Effective pmin

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

p.u.

StaticGen

Constraints#

Name

Description

Expression

pb

power balance

\(\sum(p_g, axis=0) - \sum(p_{d,s} - p_{d,u}, axis=0) = 0\)

sbus

align slack bus angle

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

pglb

pg min

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

pgub

pg max

\(p_g - p_{g, max, e} \leq 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\)

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

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

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

cesd

Select pce and pde from pg

\(I_{ESD} p_g + p_{c,ESD} - p_{d,ESD} = 0\)

SOClb

SOC lower bound

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

SOCub

SOC upper bound

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

SOCb

ESD1 SOC balance

\(E_{n,R} SOC M_{r,ES} - T_{cfg} \eta_{c,R} p_{c,ESD}[:, 1:] + T_{cfg} R_{\eta_d,R} p_{d,ESD}[:, 1:] = 0\)

SOCr

ESD1 final SOC requirement

\(SOC_{end} - SOC[:, -1] \leq 0\)

cdgb

Select DG power from pg

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

cdb

Charging decision bound

\(u_{c,ESD} + u_{d,ESD} - 1 = 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\)

tcdr

Minimum charging duration

\((t_{dc0} > 0) (t_{dc} > t_{dc0}) - u_{c,ESD} \leq 0\)

tddr

Minimum discharging duration

\((t_{dd0} > 0) (t_{dd} > t_{dd0}) - u_{d,ESD} \leq 0\)

SOCb0

ESD1 SOC initial balance

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

Vars#

Name

Symbol

Description

Unit

Source

Properties

pg

\(p_g\)

2D Gen power

p.u.

StaticGen.p

vBus

\(v_{Bus}\)

2D Bus voltage

p.u.

Bus.v

aBus

\(\theta_{bus}\)

2D Bus angle

rad

Bus.a

prns

\(p_{r, ns}\)

2D Non-spinning reserve

StaticGen

nonneg

prs

\(p_{r,s}\)

2D Spinning reserve

p.u.

StaticGen

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

StaticGen

pos

pdu

\(p_{d,u}\)

unserved demand

p.u.

StaticLoad

nonneg

SOC

\(SOC\)

ESD1 State of Charge

p.u. (%)

ESD1

nonneg

pce

\(p_{c,ESD}\)

ESD1 charging power

p.u.

ESD1

nonneg

pde

\(p_{d,ESD}\)

ESD1 discharging power

p.u.

ESD1

nonneg

pgdg

\(p_{g,DG}\)

DG output power

p.u.

DG

ucd

\(u_{c,ESD}\)

ESD1 charging decision

ESD1

boolean

udd

\(u_{d,ESD}\)

ESD1 discharging decision

ESD1

boolean

zce

\(z_{c,ESD}\)

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

ESD1

nonneg

zde

\(z_{d,ESD}\)

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

ESD1

nonneg

ExpressionCalcs#

Name

Description

Expression

Unit

Source

pi

locational marginal price (LMP)

\(-\phi[pb] - P_{TDF}^T (\phi[plfub] - \phi[plflb])\)

$/p.u.

Bus

mu1

Lagrange multipliers, dual of <plflb>

\(\phi[plflb]\)

$/p.u.

Line

mu2

Lagrange multipliers, dual of <plfub>

\(\phi[plfub]\)

$/p.u.

Line

pie

Energy price

\(-\phi[pb]\)

$/p.u.

pic

Congestion price

\(-P_{TDF}^T (\phi[plfub] - \phi[plflb])\)

$/p.u.

Bus

Services#

Name

Symbol

Description

Type

pd

\(p_{d}\)

effective active demand

NumOpDual

isb

\(I_{sb}\)

Index slack bus from all buses

VarSelect

ctrle

\(c_{trl, e}\)

Reshaped controllability

NumOpDual

nctrl

\(c_{trl,n}\)

Effective Gen uncontrollability

NumOp

nctrle

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

Reshaped non-controllability

NumOpDual

gs

\(S_{g}\)

Sum Gen vars vector in shape of area

ZonalSum

ds

\(S_{d}\)

Sum pd vector in shape of area

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

dnsrpz

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

zonal non-spinning reserve requirement in percentage

NumOpDual

dnsr

\(d_{nsr}\)

zonal non-spinning reserve requirement

NumOpDual

dsrpz

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

zonal spinning reserve requirement in percentage

NumOpDual

dsr

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

zonal 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

PTDFt

\(P_{TDF}^T\)

PTDF transpose

NumOp

REtaD

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

NumOp

Mb

\(M_{big}\)

10 times of max of pmax as big M

NumOp

ies

\(I_{ESD}\)

Index ESD from StaticGen

VarSelect

idg

\(I_{DG}\)

Index DG power 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

ug

\(u_{g}\)

Gen connection status

StaticGen.u

pg0

\(p_{g, 0}\)

Gen initial active power

p.u.

StaticGen.p0

gsh

\(g_{sh}\)

shunt conductance

Shunt.g

buss

\(B_{us,s}\)

Bus slack

Slack.bus

ud

\(u_{d}\)

Load connection status

StaticLoad.u

pd0

\(p_{d,0}\)

active demand

p.u.

StaticLoad.p0

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

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

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

ul

\(u_{l}\)

Line connection status

Line.u

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

zg

\(z_{one,g}\)

Gen area

StaticGen.area

zd

\(z_{one,d}\)

Load area

StaticLoad.area

R10

\(R_{10}\)

10-min ramp rate

p.u./h

StaticGen.R10

timeslot

\(t_{s,idx}\)

Time slot for multi-period UC

UCSlot.idx

sd

\(s_{d}\)

area load scaling factor for UC

UCSlotLoad.sd

R30

\(R_{30}\)

30-min ramp rate

p.u./h

StaticGen.R30

cnsr

\(c_{nsr}\)

cost for non-spinning reserve

$/(p.u.*h)

NSRCost.cnsr

dnsr

\(d_{nsr}\)

non-spinning reserve requirement in percentage

%

NSR.demand

dsr

\(d_{sr}\)

spinning reserve requirement in percentage

%

SR.demand

csr

\(c_{sr}\)

cost for spinning reserve

$/(p.u.*h)

SRCost.csr

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

PTDF

\(P_{TDF}\)

PTDF

MatProcessor.PTDF

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

SOCend

\(SOC_{end}\)

Target SOC at the end of the period

ESD1.SOCend

EtaC

\(\eta_c\)

Efficiency during charging

ESD1.EtaC

EtaD

\(\eta_d\)

Efficiency during discharging

ESD1.EtaD

cesdc

\(c_{c,ESD}\)

Charging cost

$/p.u.*h

ESD1.cesdc

cesdd

\(c_{d,ESD}\)

Discharging cost

$/p.u.*h

ESD1.cesdd

genesd

\(g_{ESD}\)

gen of ESD

ESD1.gen

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

tdc

\(t_{dc}\)

Minimum charging duration

h

ESD1.tdc

tdd

\(t_{dd}\)

Minimum discharging duration

h

ESD1.tdd

tdc0

\(t_{dc0}\)

Initial charging time

h

ESD1.tdc0

tdd0

\(t_{dd0}\)

Initial discharging time

h

ESD1.tdd0

Config Fields in [UC2ES]

Option

Symbol

Value

Info

Accepted values

t

\(T_{cfg}\)

1

time interval in hours