hydesign.ems.ems_PPA_EM
Classes
Long term operation EMS. Predicts the operation of the plant throughout the entire lifetime, taking into account the battery |
|
Energy management optimization model |
Functions
|
|
|
EMS solver implemented in cplex |
|
EMS operation for degraded PV and battery based on an existing EMS. |
|
EMS operation for degraded PV and battery based on an existing EMS. |
Module Contents
- class hydesign.ems.ems_PPA_EM.ems_long_term_operation(N_time, num_batteries=1, life_h=25 * 365 * 24, ems_type='energy_penalty', load_min_penalty_factor=1000000.0)[source]
Bases:
openmdao.api.ExplicitComponent
Long term operation EMS. Predicts the operation of the plant throughout the entire lifetime, taking into account the battery and PV degradations.
- Parameters:
ii_time (indices on the liftime timeseries. Hydesign operates in each range at constant battery health.)
SoH (Battery state of health at discretization levels)
wind_t_ext_deg (WPP power time series with degradation [MW])
solar_t_ext_deg (WPP power time series with degradation [MW])
wind_t_ext (WPP power time series [MW])
solar_t_ext (PVP power time series [MW])
price_t_ext (Electricity price time series)
b_P (Battery power capacity)
b_E (Battery energy storage capacity)
G_MW (Grid capacity)
battery_depth_of_discharge (battery depth of discharge)
battery_charge_efficiency (battery charge efficiency)
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)
peak_hr_quantile (Quantile of price time series to define peak price hours)
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:
hpp_t_with_deg (HPP power time series)
hpp_curt_t_with_deg (HPP curtailed power time series)
b_t_with_deg (Battery charge/discharge power time series)
b_E_SOC_t_with_deg (Battery energy SOC time series)
penalty_t_with_deg (penalty for not reaching expected energy production at peak hours)
total_curtailment (total curtailment in the lifetime)
- 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.
- class hydesign.ems.ems_PPA_EM.ems_PPA_EM(N_time, life_h=25 * 365 * 24, weeks_per_season_per_year=None, ems_type='cplex', load_min_penalty_factor=1000000.0)[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)
battery_charge_efficiency (Wake affected power curve)
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)
- 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_PPA_EM.ems_cplex_PPA_EM(wind_ts, solar_ts, price_ts, P_batt_MW, E_batt_MWh_t, hpp_grid_connection, battery_depth_of_discharge, charge_efficiency, peak_hr_quantile=0.9, cost_of_battery_P_fluct_in_peak_price_ratio=0.5, n_full_power_hours_expected_per_day_at_peak_price=3, batch_size=2 * 24, load_min=3, load_min_penalty_factor=1000000.0)[source]
- hydesign.ems.ems_PPA_EM.ems_cplex_parts_PPA_EM(wind_ts, solar_ts, price_ts, P_batt_MW, E_batt_MWh_t, hpp_grid_connection, battery_depth_of_discharge, charge_efficiency, peak_hr_quantile=0.9, cost_of_battery_P_fluct_in_peak_price_ratio=0.5, n_full_power_hours_expected_per_day_at_peak_price=3, load_min=2, load_min_penalty_factor=1000000.0)[source]
EMS solver implemented in cplex
- Parameters:
wind_ts (WPP power time series)
solar_ts (PVP power time series)
price_ts (price time series)
P_batt_MW (battery power)
E_batt_MWh_t (battery energy capacity time series)
hpp_grid_connection (grid connection)
battery_depth_of_discharge (battery depth of discharge)
charge_efficiency (battery charge efficiency)
peak_hr_quantile (quantile of price time series to define peak price hours)
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)
load_min (minimum electrical load to meet [MW])
load_min_penalty_factor (penalty factor to scale the penalty when not meeting required load)
- Returns:
P_HPP_ts (HPP power time series)
P_curtailment_ts (HPP curtailed power time series)
P_charge_discharge_ts (Battery charge/discharge power time series)
E_SOC_ts (Battery energy SOC time series)
penalty_ts (penalty time series for not reaching expected energy production at peak hours)
- hydesign.ems.ems_PPA_EM.operation_rule_base_no_penalty(wind_t_deg, solar_t_deg, batt_degradation, wind_t, solar_t, hpp_curt_t, b_t, b_E_SOC_t, G_MW, b_E, battery_depth_of_discharge, battery_charge_efficiency, b_E_SOC_0=None, load_min=3, load_min_penalty_factor=1000000.0, change_BES_charging='only_for_less_power')[source]
EMS operation for degraded PV and battery based on an existing EMS.
- Parameters:
wind_t_deg (Wind time series including degradation)
solar_t_deg (PV time series including degradation)
batt_degradation (Battery degradation as health factor [0=dead,1=new])
b_t (HPP battery power (charge/discharge) time series results form an EMS planed without degradation)
b_E_SOC_t (HPP battery state of charge (SoC) time series results form an EMS planed without degradation)
G_MW (grid connection)
E_batt_MWh_t (battery energy capacity time series)
battery_depth_of_discharge (battery depth of discharge)
battery_charge_efficiency (battery charge efficiency)
b_E_SOC_0 (Initial charge status of the actual operation)
load_min (minimum electrical load to meet [MW])
load_min_penalty_factor (penalty factor to scale the penalty when not meeting required load)
- Returns:
Hpp_deg (HPP power time series)
P_curt_deg (HPP curtailed power time series)
b_t_sat (Battery charge/discharge power time series)
b_E_SOC_t_sat (Battery energy SOC time series)
penalty_ts (penalty for not reaching minimum electrical load constraint)
- hydesign.ems.ems_PPA_EM.operation_constant_output(wind_t_deg, solar_t_deg, batt_degradation, wind_t, solar_t, hpp_curt_t, b_t, b_E_SOC_t, G_MW, b_E, battery_depth_of_discharge, battery_charge_efficiency, b_E_SOC_0=None, load_min=3, load_min_penalty_factor=1000000.0, change_BES_charging='only_for_less_power')[source]
EMS operation for degraded PV and battery based on an existing EMS.
- Parameters:
wind_t_deg (Wind time series including degradation)
solar_t_deg (PV time series including degradation)
batt_degradation (Battery degradation as health factor [0=dead,1=new])
b_t (HPP battery power (charge/discharge) time series results form an EMS planed without degradation)
b_E_SOC_t (HPP battery state of charge (SoC) time series results form an EMS planed without degradation)
G_MW (grid connection)
E_batt_MWh_t (battery energy capacity time series)
battery_depth_of_discharge (battery depth of discharge)
battery_charge_efficiency (battery charge efficiency)
b_E_SOC_0 (Initial charge status of the actual operation)
load_min (minimum electrical load to meet [MW])
load_min_penalty_factor (penalty factor to scale the penalty when not meeting required load)
- Returns:
Hpp_deg (HPP power time series)
P_curt_deg (HPP curtailed power time series)
b_t_sat (Battery charge/discharge power time series)
b_E_SOC_t_sat (Battery energy SOC time series)
penalty_ts (penalty for not reaching minimum electrical load constraint)