GenXProject / GenX.jl

GenX: a configurable power system capacity expansion model for studying low-carbon energy futures. More details at : https://genx.mit.edu
https://genxproject.github.io/GenX.jl/
GNU General Public License v2.0
270 stars 114 forks source link

Provide computationally efficient approach to incorporate multi-level investment/O&M cost supply curve #647

Closed wrgunther closed 3 months ago

wrgunther commented 6 months ago

In capex modeling, there are a handful of resource types to choose from (wind, solar, storage etc.) within each zone. There may however be multiple cost buckets for each technology type to reflect an upward sloping cost curve (and spread the resource buildout across zones). At present, this can be entered by adding each cost level as a separate resource entry and relying on the cost minimization to pick the lowest cost first. However, having high-cost bucket wind units competing with lower cost bucket versions in the same zone likely requires more computational effort than a single wind resource with a piecewise defined cost curve. Adding a supply cost curve would be a helpful new feature and could leverage work elsewhere on implementing piecewise-linear heat rate curves.

To provide more context, NYSERDA recently provided county level cost data for renewables. Large-Scale Renewables Supply Curve Analysis – February 2024

https://www.nyserda.ny.gov/About/Publications/Energy-Analysis-Reports-and-Studies/Additional-EA-Reports-Studies Adding each entry as a separate generator would roughly double the number of resources in our simulation and lead to a potentially non-linear increase in runtime.

JesseJenkins commented 6 months ago

This is already implemented for variable renewables which can have multiple "bins" with varying capital cost that share single capacity factor profile and operational decision variable. See https://genxproject.github.io/GenX.jl/dev/Model_Reference/Resources/curtailable_variable_renewable/

@dharik13 can explain further how to use this. I believe this addresses your request.

sambuddhac commented 6 months ago

I am quoting here @dharik13 's response:

I think NumVRE_bin feature effectively allows for modeling multiple VRE resource types in a zone without actually tracking the individual power generation output from each resource bin. Effectively if you have three sites r1,r2,r3 then you have the following constraints: capacity constraint: cap_i,z <= max_cap_i,z for i=r1,r2,r3 power generation capacity constraint: power_i',z <= sum(i, max_cap_i,z cf_i,z)for i=r1,r2,r3 where i' is defined as the first bin then the objective function term would be sum(i, cap_i, z(inv_cost_i + fom_cost_i) (edited)

https://genxproject.github.io/GenX.jl/dev/Model_Reference/Resources/curtailable_variable_renewable/

Let us know @wrgunther if these responses from us address your issue.

wrgunther commented 6 months ago

Thanks for pointing this feature out and yes this should address my request. Is there an input syntax example somewhere (the link above is to the mathematical formulation)? Based on a quick search it appears I need to set Num_VRE_bins > 1 for this first instance and 0 thereafter (and name _1, _2) but I also saw a mention of sequential RID, which I am not sure still exists in the new separated Generators_data.csv format. Also, for the different bins can I change all of the Vre.csv parameters or just a select few and should I include duplicate 8760s for each bin in the Generators_variability.csv file?

GenXProject commented 6 months ago

@dharik13 just assigned this to you