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