NREL / PRAS

NREL's Probabilistic Resource Adequacy Suite (PRAS)
https://www.nrel.gov/analysis/pras.html
Other
46 stars 11 forks source link

Attempting calculate EFC for generator in rts.pras #46

Closed glarange closed 11 months ago

glarange commented 12 months ago

I define two systems:

Base System:

sys = SystemModel("Documents/PRAS-master/test/PRASBase/rts.pras")
sys.generators.capacity[1,:] = 0 * sys.generators.capacity[1,:]   # remove this generator from the base system

Augmented system:

sys2 = SystemModel("Documents/PRAS-master/test/PRASBase/rts.pras")

Increase the load to get some baseline EUE:

sys2.regions.load .+= 100
sys.regions.load .+= 100

Then attempt to calculate the EFC of the sys.generators.capacity[1]

cc_result = assess(sys, sys2, EFC{EUE}(100, "1"), SequentialMonteCarlo())

Then get the warning below:

┌ Warning: Gap between upper and lower bound risk metrics is not statistically significant (p_value=0.15741688789903002), stopping bisection. The gap between capacity bounds is 100 MW, while the target stopping gap was 1 MW.
└ @ PRAS.CapacityCredit ~/.julia/packages/PRAS/jO1jk/src/CapacityCredit/EFC.jl:81
PRAS.CapacityCredit.CapacityCreditResult{EFC{EUE}, EUE{8784, 1, Hour, MWh}, MW}(EUE = 0.4±0.2 MWh/8784h, 0, 100, [0, 100], EUE{8784, 1, Hour, MWh}[EUE = 0.6±0.3 MWh/8784h, EUE = 0.3±0.2 MWh/8784h])

cc_lower, cc_upper = extrema(cc_result)
(0, 100)

Am I doing this right?

Thanks!

GordStephen commented 12 months ago

Hi Gui,

That happens when the precision of the mean estimates are too low to infer a difference in reliability at a meaningful level of statistical significance. My guess is that the system is still very reliable with 100 MW of load added, so the "before" and "after" risks (EUE = 0.6±0.3 MWh/8784h, EUE = 0.3±0.2 MWh/8784h) are too small relative to their standard errors. You could either increase the number of samples used to improve the precision of the result (although the default is 10000 samples, so you'd have to add a lot more), or add more load to the system to get a stronger "signal-to-noise" ratio in the risk metrics. Unless there's a specific reason you want to add 100 MW, I would suggest the latter.

glarange commented 12 months ago

Hi Gord,

I tried increasing the load for both base and augmented systems by same amount:

sys2.regions.load .+= 150
3×8784 Matrix{Int64}:
 1335  1336  1352  1386  1490  1637  …  1751  1719  1678  1592  1489  1431
 1453  1433  1430  1428  1449  1506     1833  1819  1787  1730  1654  1573
 1600  1542  1516  1500  1514  1579     2105  2064  2031  1949  1823  1708

sys.regions.load .+= 150
3×8784 Matrix{Int64}:
 1335  1336  1352  1386  1490  1637  …  1751  1719  1678  1592  1489  1431
 1453  1433  1430  1428  1449  1506     1833  1819  1787  1730  1654  1573
 1600  1542  1516  1500  1514  1579     2105  2064  2031  1949  1823  1708

so that I obtained larger shortfalls:

eue, lole = EUE(shortfallresult), LOLE(shortfallresult)
(EUE = 69±4 MWh/8784h, LOLE = 0.40±0.01 event-h/8784h)

eue, lole = EUE(shortfallresult), LOLE(shortfallresult)
(EUE = 40±2 MWh/8784h, LOLE = 0.26±0.01 event-h/8784h)

But then still got the same issue:

cc_result = assess(sys, sys2, EFC{EUE}(100, "1"), SequentialMonteCarlo())

┌ Warning: Gap between upper and lower bound risk metrics is not statistically significant (p_value=0.15512867481114462), stopping bisection. The gap between capacity bounds is 13 MW, while the target stopping gap was 1 MW.
└ @ PRAS.CapacityCredit ~/.julia/packages/PRAS/jO1jk/src/CapacityCredit/EFC.jl:81
PRAS.CapacityCredit.CapacityCreditResult{EFC{EUE}, EUE{8784, 1, Hour, MWh}, MW}(EUE = 42±2 MWh/8784h, 62, 75, [0, 100, 50, 75, 62], EUE{8784, 1, Hour, MWh}[EUE = 66±3 MWh/8784h, EUE = 36±2 MWh/8784h, EUE = 49±3 MWh/8784h, EUE = 42±2 MWh/8784h, EUE = 45±3 MWh/8784h])

Thanks!

GordStephen commented 12 months ago

Looks like it narrowed the capacity credit range to 62-75 MW (the 13 MW gap mentioned in the message), but then ran into a similar statistical precision issue (EUE = 42±2 MWh/8784h vs EUE = 45±3 MWh/8784h). So if you want to tighten the gap further (e.g. to the 1 MW target tolerance), you'd still need to add more samples or more load to the system.

glarange commented 12 months ago

OK, I can do that. However, the generating unit in the augmented system is a coal unit with a constant output of 76MW. Shouldn't the EFC be the 76 MW as well?

GordStephen commented 11 months ago

75 vs 76 MW is definitely within the sampling error of the estimates, so I'm not too surprised. If you look at the components of the EFC result that was returned, you'll see that the original system with the coal unit has EUE of 42 +/- 2 MWh, and a 75 MW perfect capacity addition also returned 42 +/- 2 MWh.

GordStephen commented 11 months ago

Closing this for now, but feel free to reopen if you have further questions