You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
can_grid_charge::Bool = off_grid_flag ? false : true # TODO: is this relevant for all dispatch strategies?
179
176
installed_cost_per_kw::Real = 968.0 # Cost of power components (e.g., inverter and BOS)
180
177
installed_cost_per_kwh::Real = 253.0 # Cost of energy components (e.g., battery pack)
181
178
installed_cost_constant::Real = 222115.0 # "+c" constant cost that is added to total ElectricStorage installed costs if a battery is included. Accounts for costs not expected to scale with power or energy capacity.
optimize_soc_init_fraction::Bool = false # If true, soc_init_fraction will not apply. Model will optimize initial SOC and constrain initial SOC = final SOC.
196
+
degradation::Dict = Dict()
202
197
min_duration_hours::Real = 0.0 # Minimum amount of time storage can discharge at its rated power capacity
203
198
max_duration_hours::Real = 100000.0 # Maximum amount of time storage can discharge at its rated power capacity (ratio of ElectricStorage size_kwh to size_kw)
199
+
200
+
# Dispatch-related inputs
201
+
dispatch_strategy::String = "optimized" # can be one of ["optimized", "peak_shaving", "self_consumption", "backup", "custom_soc"] # Note: "daily_foresight_optimized" is available only via the REopt API
202
+
# SOC inputs relevant if dispatch_strategy = "optimized", "peak_shaving", "self_consumption", or "backup" #TODO: confirm this.
optimize_soc_init_fraction::Bool = false # If true, soc_init_fraction will not apply. Model will optimize initial SOC and constrain initial SOC = final SOC.
208
+
# SOC inputs relevant if dispatch_strategy = "custom_soc"
204
209
fixed_soc_series_fraction::Union{Nothing, Array{<:Real,1}} = nothing # If provided, SOC (as fraction of total energy capacity) will not be optimized and will instead be fixed to the values provided here +- the absolute fixed_soc_series_fraction_tolerance (this buffer is to avoid infeasible solutions)
205
210
fixed_soc_series_fraction_tolerance::Union{Nothing, Real} = !isnothing(fixed_soc_series_fraction) ? 0.05 : nothing # Absolute tolerance on fixed_soc_series_fraction to avoid infeasible solutions when fixed_soc_series_fraction is provided.
211
+
206
212
207
-
```
213
+
214
+
!!! note "Dispatch Strategy Options"
215
+
The following dispatch strategies are available via the `dispatch_strategy` input:
216
+
- `optimized`: Storage dispatch is optimized to minimize the total lifecycle cost of energy for the site. The model has perfect foresight into loads and modeled variable generation potential over the entire year.
217
+
- `peak_shaving`: Uses SAM's Peak Shaving dispatch heuristic. To use this option, users MUST specify BESS (and PV if included) sizing (by setting min and max values) # TODO: Xiang to update
218
+
- `self_consumption`: To use this option, users MUST specify BESS (and PV if included) sizing (by setting min and max values) # TODO: Xiang to update
219
+
- `backup`: Storage is reserved to meet load during grid outages by changing the default soc_min_fraction to 0.8.
220
+
- `daily_foresight_optimized`: This option is only available via the REopt API (not available in REopt.jl)
221
+
- `custom_soc`: User must provide a fixed_soc_series_fraction and can optionally tailor the fixed_soc_series_fraction_tolerance.
optimize_soc_init_fraction::Bool=false# If true, soc_init_fraction will not apply. Model will optimize initial SOC and constrain initial SOC = final SOC.
263
+
fixed_soc_series_fraction::Union{Nothing, Array{<:Real,1}}=nothing# If provided, SOC (as fraction of total energy capacity) will not be optimized and will instead be fixed to the values provided here +- the absolute fixed_soc_series_fraction_tolerance (this buffer is to avoid infeasible solutions)
264
+
fixed_soc_series_fraction_tolerance::Union{Nothing, Real}=!isnothing(fixed_soc_series_fraction) ?0.05:nothing# Absolute tolerance on fixed_soc_series_fraction to avoid infeasible solutions when fixed_soc_series_fraction is provided.
0 commit comments