hydesign.ems.ems_hifi_dems

Attributes

dic

Classes

ems

Energy management optimization model

Functions

ems_cplex(parameter_dict, simulation_dict[, BM_model, ...])

Module Contents

class hydesign.ems.ems_hifi_dems.ems(parameter_dict, simulation_dict, market_fn, N_time, life_y=25, intervals_per_hour=4, BM_model=False, RD_model=True)[source]

Bases: openmdao.api.ExplicitComponent

Energy management optimization model The energy management system optimization model consists in maximizing the revenue generated by the plant over a period of time, including a possible penalty for not meeting the requirement of energy generation during peak hours over the period. It also assigns a cost for rapid fluctuations of the battery in order to slow down its degradation. The EMS type can be either a CPLEX optimization or a rule-based ems (Faster but not as optimal).

Parameters:
  • wind_t (WPP power time series [MW])

  • solar_t (PVP power time series [MW])

  • price_t (Electricity price time series)

  • b_P (Battery power capacity [MW])

  • b_E (Battery energy storage capacity [MW])

  • G_MW (Grid capacity [MW])

  • battery_depth_of_discharge (battery depth of discharge)

  • peak_hr_quantile (Quantile of price time series to define peak price hours (above this quantile))

  • cost_of_battery_P_fluct_in_peak_price_ratio (cost of battery power fluctuations computed as a peak price ratio)

  • n_full_power_hours_expected_per_day_at_peak_price (Penalty occurs if number of full power hours expected per day at peak price are not reached)

Returns:

  • wind_t_ext (WPP power time series)

  • solar_t_ext (PVP power time series)

  • price_t_ext (Electricity price time series)

  • hpp_t (HPP power time series)

  • hpp_curt_t (HPP curtailed power time series)

  • b_t (Battery charge/discharge power time series)

  • b_E_SOC_t (Battery energy SOC time series)

  • penalty_t (Penalty for not reaching expected energy productin at peak hours)

parameter_dict[source]
simulation_dict[source]
market_fn[source]
intervals_per_hour = 4[source]
life_y = 25[source]
life_h = 219000[source]
life_intervals = 876000[source]
yearly_intervals = 35040[source]
BM_model = False[source]
RD_model = True[source]
N_time[source]
setup()[source]

Declare inputs and outputs.

Available attributes:

name pathname comm options

setup_partials()[source]

Declare partials.

This is meant to be overridden by component classes. All partials should be declared here since this is called after all size/shape information is known for all variables.

compute_partials(inputs, partials)[source]

Compute sub-jacobian parts. The model is assumed to be in an unscaled state.

Parameters:
  • inputs (Vector) – Unscaled, dimensional input variables read via inputs[key].

  • partials (Jacobian) – Sub-jac components written to partials[output_name, input_name]..

  • discrete_inputs (dict or None) – If not None, dict containing discrete input values.

compute(inputs, outputs)[source]

Compute outputs given inputs. The model is assumed to be in an unscaled state.

An inherited component may choose to either override this function or to define a compute_primal function.

Parameters:
  • inputs (Vector) – Unscaled, dimensional input variables read via inputs[key].

  • outputs (Vector) – Unscaled, dimensional output variables read via outputs[key].

  • discrete_inputs (dict-like or None) – If not None, dict-like object containing discrete input values.

  • discrete_outputs (dict-like or None) – If not None, dict-like object containing discrete output values.

hydesign.ems.ems_hifi_dems.ems_cplex(parameter_dict, simulation_dict, BM_model=False, RD_model=False)[source]
hydesign.ems.ems_hifi_dems.dic[source]