hydesign.ems.ems_hifi_dems
Attributes
Classes
Energy management optimization model |
Functions
|
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)
- 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.