pywrdrb.parameters.FfmpNycRunningAvgParameter#
- class pywrdrb.parameters.FfmpNycRunningAvgParameter(model, node, max_avg_delivery, **kwargs)#
Enforces the NYC FFMP delivery constraint using a running average over time.
This custom Pywr parameter limits the amount of water that can be delivered from an NYC reservoir based on a long-term daily average (max_avg_delivery). It ensures that daily releases stay within the specified delivery budget and adjusts dynamically based on past deliveries.
- node#
The node from which water is being delivered (usually an NYC reservoir).
- Type:
pywr.Node
- max_avg_delivery#
Maximum allowable average delivery volume per day.
- Type:
float
- max_delivery#
Array holding the daily remaining delivery allowance per scenario.
- Type:
numpy.ndarray
- timestep#
The number of days per timestep (usually 1 for daily models).
- Type:
int
- datetime#
The current model date used for enforcing reset logic.
- Type:
pandas.Timestamp
- setup()#
Allocates an array to store per-scenario delivery limits.
- reset()#
Initializes delivery limits and datetime to model start.
- value(timestep, scenario_index)#
Returns the remaining delivery volume for the given scenario.
- after()#
Updates the running delivery limit based on the prior day’s release.
- load(model, data)#
Class method to load the parameter from JSON/YAML model data.
- __init__(model, node, max_avg_delivery, **kwargs)#
Initialize the FfmpNycRunningAvgParameter.
- Parameters:
model (pywr.Model) – The Pywr model instance.
node (pywr.Node) – The node associated with this delivery parameter.
max_avg_delivery (pywr.parameters.ConstantParameter) – The maximum daily average delivery limit for the FFMP constraint.
**kwargs – Additional keyword arguments passed to the base Parameter class.
Notes
This parameter is typically used on NYC reservoir delivery nodes to ensure long-term delivery limits are not exceeded in the FFMP simulation framework.
Methods
__init__
(model, node, max_avg_delivery, **kwargs)Initialize the FfmpNycRunningAvgParameter.
after
()Update the delivery budget based on the previous timestep’s release.
before
(self)finish
(self)get_all_values
(self)get_constant_value
(self)Return a constant value.
get_double_lower_bounds
(self)get_double_upper_bounds
(self)get_double_variables
(self)get_integer_lower_bounds
(self)get_integer_upper_bounds
(self)get_integer_variables
(self)get_value
(self, ScenarioIndex scenario_index)load
(model, data)Load the parameter from model and configuration data.
register
(cls)reset
()Reset the delivery budget and internal clock for all scenarios.
set_double_variables
(self, double[)set_integer_variables
(self, int[)setup
()Allocate internal arrays used to track max delivery per scenario.
unregister
(cls)value
(timestep, scenario_index)Get the remaining delivery volume for the current timestep and scenario.
Attributes
children
comment
unicode
double_size
'int'
integer_size
'int'
is_constant
is_variable
'bool'
model
name
parents
size
tags
dict