Modules
- class trident_extras.EndValueBendersCuts
Bases:
ProblemModuleName: End value Benders Cuts
Description: End value from Benders Cuts
UUID: 0fb7de37-f876-4fe0-81ce-688742cf84b5
Input time series:
Url
Description
Unit
cut_values/{scenario_num}/{reservoir_id}
Cut values for a reservoir
mu/Mm^3
iteration_count_cuts/{scenario_num}
Number of cuts
count
Input XY time series:
Url
Description
Unit
cut_rhs_values/{scenario_num}
Right hand side for the cut constraints
mu
Output time series:
Url
Description
Unit
alpha_water_values
Alpha objective function contribution
mu
Configuration parameters:
Name
Type
Default
Description
lower_res_volume_cutoff
double
0.200000
Lower limit for reservoir volume. Reservoir with volume less than this is cut off and volume variables are not set up.
- __init__(self: EndValueBendersCuts) None
- description = 'End value from Benders Cuts'
- factory
alias of
EndValueBendersCutsFactory
- name = 'End value Benders Cuts'
- uuid = '0fb7de37-f876-4fe0-81ce-688742cf84b5'
- class trident_extras.EndValueEmpsTargetReservoirs
Bases:
ProblemModuleName: End value EMPS target reservoirs
Description: End value from EMPS as aggregated water values. Disaggregated using the target reservoir method.
UUID: c3d8472c-6248-4115-bc21-7924cf40b1b6
Input time series:
Url
Description
Unit
snowfall/{area_id}
Snowfall for an area. Used to decide which snow level to use when applying water values from EMPS.
GWh
Input XY time series:
Url
Description
Unit
snowfall_to_snow_level_mapping/{area_id}
Maps from snow amount (in GWh) to snow_level
x: GWh, y: snow_level
Input NDArrayTS:
Url
Description
Unit
emps_water_values/{area_id}
M is a two dimensional matrix that represent aggregated water values for a whole area. M[sl, l] provides the value of the water for the given snow layer(sl) and reservoir fill layer(l). The dimensions must fulfill snow_layer >= 1 and fill_layer >= 2.
mu/GWh, Dim: snow_layer, fill_layer
Output time series:
Url
Description
Unit
reservoir_regulation_degree/{reservoir_id}
Degree of regulation is computed as max_reservoir_volume / expected_annual_inflow.
years
reservoir_snow_level_index/{reservoir_id}
Snow level index
Index
Output NDArrayTS:
Url
Description
Unit
emps_water_value_layer_sizes/{reservoir_id}
The size of each water value layer.
Mm^3
Configuration parameters:
Name
Type
Default
Description
compute_regulation_degree_from_inflow
bool
False
Decides if the EndValueEmpsTargetReservoirs module should compute reservoir regulation degree from expected inflow or use a value provided by the input logical model.
energy_equivalent_limit
double
0.100000
Lower limit for the absolute value of the energy equivalent - used to ensure numeric stability and LP solve speed. Unit GWh/Mm^3
export_regulation_degree
bool
False
Decides if the EndValueEmpsTargetReservoirs module should export the computed reservoir regulation degree.
export_water_value_layers
bool
False
Set to true if water value layers should be exported.
lower_res_volume_cutoff
double
0.200000
Lower limit for reservoir volume. Reservoir with volume less than this is cut off and volume variables are not set up.
smooth_water_value_layers
bool
False
Smooth water values between depletion and filling seasons when using the EndValueEmpsTargetReservoirs module.
use_unscaled_energy_equivalent_for_end_valuation
bool
False
Set this to true if the end valuation should use the unscaled global energy equivalent regardless of relative head scaling.
- __init__(self: EndValueEmpsTargetReservoirs) None
- description = 'End value from EMPS as aggregated water values. Disaggregated using the target reservoir method.'
- factory
alias of
EndValueEmpsTargetReservoirsFactory
- name = 'End value EMPS target reservoirs'
- uuid = 'c3d8472c-6248-4115-bc21-7924cf40b1b6'
- class trident_extras.EndValueEmpsWaterValue
Bases:
ProblemModuleName: End value EMPS water value
Description: End value from EMPS as aggregated water values.
UUID: 7b050e9c-cefe-4ea0-9bce-421e556f390e
Input time series:
Url
Description
Unit
snowfall/{area_id}
Snowfall for an area. Used to decide which snow level to use when applying water values from EMPS.
GWh
Input XY time series:
Url
Description
Unit
snowfall_to_snow_level_mapping/{area_id}
Maps from snow amount (in GWh) to snow_level
x: GWh, y: snow_level
Input NDArrayTS:
Url
Description
Unit
emps_water_values/{area_id}
M is a two dimensional matrix that represent aggregated water values for a whole area. M[sl, l] provides the value of the water for the given snow layer(sl) and reservoir fill layer(l). The dimensions must fulfill snow_layer >= 1 and fill_layer >= 2.
mu/GWh, Dim: snow_layer, fill_layer
Output time series:
Url
Description
Unit
reservoir_snow_level_index/{reservoir_id}
Snow level index
Index
Configuration parameters:
Name
Type
Default
Description
energy_equivalent_limit
double
0.100000
Lower limit for the absolute value of the energy equivalent - used to ensure numeric stability and LP solve speed. Unit GWh/Mm^3
export_water_value_layers
bool
False
Set to true if water value layers should be exported.
lower_res_volume_cutoff
double
0.200000
Lower limit for reservoir volume. Reservoir with volume less than this is cut off and volume variables are not set up.
use_unscaled_energy_equivalent_for_end_valuation
bool
False
Set this to true if the end valuation should use the unscaled global energy equivalent regardless of relative head scaling.
- __init__(self: EndValueEmpsWaterValue) None
- description = 'End value from EMPS as aggregated water values.'
- factory
alias of
EndValueEmpsWaterValueFactory
- name = 'End value EMPS water value'
- uuid = '7b050e9c-cefe-4ea0-9bce-421e556f390e'
- class trident_extras.EndValueSimple
Bases:
ProblemModuleName: End Value SIMPLE
Description: End values from energy equivalent and mock
UUID: ddfdce1a-395e-4c8c-9fd2-885869b47e46
- __init__(self: EndValueSimple) None
- description = 'End values from energy equivalent and mock'
- factory
alias of
EndValueSimpleFactory
- name = 'End Value SIMPLE'
- uuid = 'ddfdce1a-395e-4c8c-9fd2-885869b47e46'
- class trident_extras.HydroModule
Bases:
ProblemModuleName: Hydro
Description: Models hydro units
UUID: e60638e9-2b8c-4b2e-a7d2-62f03c2d72ad
Input time series:
Url
Description
Unit
Default value
global_reservoir_absolute_max_volume_penalty
The cost of not meeting the absolute maximum volume requirement. Will be scaled by the reservoir’s energy equivalent [GWh/Mm^3] and time step length [h].
mu/(GWh^2)
1000
global_reservoir_bypass_penalty
Penalty value for bypass violations
mu/Mm^3
0.01
global_reservoir_max_bypass
Maximum allowed bypass for a given reservoir
m^3/s
global_reservoir_max_discharge
Default max allowed discharge for reservoirs
m^3/s
global_reservoir_min_bypass
Minimum allowed bypass for a given reservoir
m^3/s
global_reservoir_min_bypass_penalty
Penalty value for minimum bypass violations
mu/Mm^3
-500
global_reservoir_min_discharge
Default minimum allowed discharge for reservoirs
m^3/s
global_reservoir_min_discharge_penalty
Penalty value for minimum discharge violations
mu/Mm^3
70
global_reservoir_min_volume
Minimum allowed volume for a given reservoir
Mm^3
global_reservoir_min_volume_penalty
The cost of not meeting the minimum volume requirement. Will be scaled by the reservoir’s energy equivalent [GWh/Mm^3] and time step length [h].
mu/(GWh*h)
-500
global_reservoir_soft_max_volume_penalty
The cost of not meeting the soft maximum volume requirement. Will be scaled by the reservoir’s energy equivalent [GWh/Mm^3] and time step length [h].
mu/(GWh*h)
10
global_reservoir_spillage_penalty
Penalty value for spillage violations
mu/Mm^3
0.02
global_reservoir_target_penalty
The cost of not meeting the target requirement. Will be scaled by the reservoir’s energy equivalent [GWh/Mm^3] and time step length [h].
mu/(GWh^2)
70
hydro_plant_min_production/{hydro_plant_id}
Percentage of the maximum production that is this plants minimum production.
percentage
hydro_plant_startup_cost/{hydro_plant_id}
Cost of starting up the hydro plant
mu/startup
inflow/{inflow_name}
Normalized inflow data
m^3/s (normalized)
reservoir_absolute_max_volume_penalty/{reservoir_id}
The cost of not meeting the absolute maximum volume requirement. Will be scaled by the reservoir’s energy equivalent [GWh/Mm^3] and time step length [h].
mu/(GWh^2)
reservoir_max_bypass/{reservoir_id}
Maximum allowed bypass for a given reservoir
m^3/s
reservoir_max_discharge/{reservoir_id}
Max allowed discharge for a given reservoir
m^3/s
reservoir_max_tunnel/{upstream_node_id}/{downstream_node_id}
Maximum allowed flow for a waterway tunnel
Mm^3
reservoir_max_volume/{reservoir_id}
Maximum allowed volume for a given reservoir
Mm^3
reservoir_min_bypass/{reservoir_id}
Minimum allowed bypass for a given reservoir
m^3/s
reservoir_min_discharge/{reservoir_id}
Minimum allowed discharge for a given reservoir
m^3/s
reservoir_min_volume/{reservoir_id}
Minimum allowed volume for a given reservoir
Mm^3
reservoir_soft_max_volume_penalty/{reservoir_id}
The cost of not meeting the soft maximum volume requirement. Will be scaled by the reservoir’s energy equivalent [GWh/Mm^3] and time step length [h].
mu/(GWh*h)
reservoir_volume_target/{reservoir_id}
The volume target of a reservoir as a percentage of max volume
%
Input XY time series:
Url
Description
Unit
pq_curve/{hydro_plant_id}
PQ curves for a hydro plant
x: Mm^3, y: MW
Input XY curves:
Url
Description
Unit
discharge_head_curve/{hydro_plant_id}
The curve describes the dependency between maximum discharge and head for a given hydro power plant.
x: m, y: m^3/s
reservoir_curve/{reservoir_id}
MASL of water level as a function of volume
x: Mm^3, y: m
Output time series:
Url
Description
Unit
aggregated_reservoir_energy/{area_id}
Aggregated reservoir energy in an area
GWh
aggregated_reservoir_volume/{area_id}
Aggregated reservoir volume in an area
GWh
energy_equivalent/{obj_id}
The energy equivalent of the object. May be reservoir, junction or pump.
GWh/Mm^3
hydro_plant_production/{hydro_plant_id}
The amount of energy produced by the hydro plant
GW
hydro_plant_production_error/{hydro_plant_id}
The difference in energy produced by the hydro plant using the correct order of PQ segments and the order used in the simulation.
GW
hydro_plant_state/{hydro_plant_id}
On state of the power plant
On/Off
hydro_reserve_downward_production/{hydro_plant_id}
Delivered hydro downward reserve production for each power plant
GW
hydro_reserve_upward_production/{hydro_plant_id}
Delivered upward hydro reserve production for each power plant
GW
pq_segment_discharge/{hydro_plant_id}/{segment_id}
Discharge in a PQ segment
m^3/s
pq_segment_efficiency/{hydro_plant_id}/{segment_id}
Efficiency in a PQ segment
m^3/s
pq_segment_max_discharge/{hydro_plant_id}/{segment_id}
Max allowed discharge in a PQ segment
m^3/s
pump_flow_coeff/{pump_id}
The amount of water the pump has pumped
Mm^3
pump_power_consumption/{pump_id}
Power consumption of pump
GW
regulated_inflow_coeff/{reservoir_id}
Coefficient for regulated inflow data per reservoir
Mm^3
reservoir_bypass/{reservoir_id}
The amount of bypass flow from the reservoir
m^3/s
reservoir_discharge/{reservoir_id}
The amount of discharge from the reservoir
m^3/s
reservoir_min_bypass_violation/{reservoir_id}
Violation of minimum bypass constraint
Mm^3
reservoir_min_discharge_violation/{reservoir_id}
Violation of minimum discharge constraint
Mm^3
reservoir_min_volume_violation/{reservoir_id}
Violation of minimum volume constraint
Mm^3
reservoir_release/{reservoir_id}
Discharge from reservoir
m^3/s
reservoir_spillage/{reservoir_id}
The amount of spillage flow from the reservoir
m^3/s
reservoir_target_violation/{reservoir_id}
Violation of minimum target constraint
Mm^3
reservoir_volume/{reservoir_id}
The amount of water in the reservoir
Mm^3
shadow_price_inflow_balance/{reservoir_id}
The dual value of the inflow balance
mu/Mm^3
shadow_price_min_bypass_violation/{reservoir_id}
The dual value of the minimum bypass constraint
mu/Mm^3
shadow_price_min_discharge_violation/{reservoir_id}
The dual value of the minimum discharge constraint
mu/Mm^3
shadow_price_min_flow_violation/{reservoir_id}
The dual value of the minimum flow constraint
mu/Mm^3
shadow_price_min_volume_violation/{reservoir_id}
The dual value of the minimum volume constraint
mu/Mm^3
shadow_price_reservoir_balance/{reservoir_id}
The dual value of the reservoir balance
mu/Mm^3
tunnel/{reservoir_id}/{downstream_node_id}
The amount of tunnel flow from the reservoir
m^3/s
unregulated_inflow_coeff/{hydro_plant_id}
Coefficient for unregulated inflow data per hydro plant
Mm^3
waterway_flow/{waterway_id}
The amount of flow in a waterway
m^3/s
Output XY time series:
Url
Description
Unit
concave_pq_curve/{hydro_plant_id}
Concave version of PQ Curve
x: Mm^3, y: MW
Output XY curves:
Url
Description
Unit
concave_discharge_head_curve/{hydro_plant_id}
Concave version of the discharge_head_curve.
x: m, y: m^3/s
concave_reservoir_curve/{reservoir_id}
Cncave version of reservoir_curve
x: Mm^3, y: m
Configuration parameters:
Name
Type
Default
Description
allow_negative_prices
bool
False
Set this to true if you use negative prices.
combine_pq_segments_for_all_plants_if_wrong_order
bool
False
If true, the model combines all segments for all plants if any is in the wrong order. WARNING: May adversely affect both result quality and simulation time should a few plants have incorrectly set up PQ segments. Please ensure that segments have segment slopes in a strictly decending order and that no consecutive segments have the same slope.
cutoff_small_unreg_inflows
bool
False
If true, the model will disregard (or set to 0) all unregulated inflow under the limit.
energy_equivalent_limit
double
0.100000
Lower limit for the absolute value of the energy equivalent - used to ensure numeric stability and LP solve speed. Unit GWh/Mm^3
export_inflow_coefficients
bool
False
Debug setting to export inflow coefficients in the result store.
export_relative_head_scaling
bool
False
Debug setting to export relative head scaling values in the result store.
lower_res_volume_cutoff
double
0.200000
Lower limit for reservoir volume. Reservoir with volume less than this is cut off and volume variables are not set up.
redistribute_small_unregulated_inflows
bool
False
Enable to redistribute unregulated inflow coefficient below the limit to the nearest above reservoir.
refine_if_pq_segments_in_wrong_order
bool
False
If true, the model undergoes refinement when pq segments are in the wrong order.
reservoir_balance_rhs_limit
double
0.000000
Lower absolute limit for the reservoir balance right-hand-side before setting to 0.0.
small_unregulated_inflow_limit
double
0.010000
Limit for what is considered a negligible unregulated inflow for purposes of moving or discarding unregulated inflow.
use_relative_head
bool
False
Use relative head
use_volume_discharge_constraints_for_decision_problem
bool
False
Sets to use the full set of constraints when using volume dependend discharge limitations for hydro plants. False means initial volume sets the discharge limit for the whole problem.
validate_pump_efficiencies
bool
True
If true, validation of pumps will return errors if any discrepancies are detected. If false, only warnings are returned.
validate_watercourse_cycles
bool
True
If true, validation of waterways will return errors if any discrepancies are detected. If false, only warnings are returned.
- __init__(self: HydroModule) None
- description = 'Models hydro units'
- factory
alias of
HydroModuleFactory
- name = 'Hydro'
- uuid = 'e60638e9-2b8c-4b2e-a7d2-62f03c2d72ad'
- class trident_extras.ModuleHydroRelaxation
Bases:
ProblemModuleName: HydroRelaxation
Description: Hydro balance relaxation
UUID: 0488c655-1d63-4f95-b729-26201b9d0648
Configuration parameters:
Name
Type
Default
Description
cutoff_small_unreg_inflows
bool
False
If true, the model will disregard (or set to 0) all unregulated inflow under the limit.
enable_reservoir_relaxation
bool
False
Enables reservoir relaxation functionality.
relaxation_reservoir_ids
List
[]
List of ids of reservoirs which will always be relaxed. They can not be target reservoirs. Empty list means all above limit.
relaxation_volume_limit
double
-1.000000
<Insert documentation>
small_unregulated_inflow_limit
double
0.010000
Limit for what is considered a negligible unregulated inflow for purposes of moving or discarding unregulated inflow.
- __init__(self: ModuleHydroRelaxation) None
- description = 'Hydro balance relaxation'
- factory
alias of
ModuleHydroRelaxationFactory
- name = 'HydroRelaxation'
- uuid = '0488c655-1d63-4f95-b729-26201b9d0648'
- class trident_extras.ModuleOptimModel
Bases:
ProblemModuleName: ModuleOptimModel
Description: Solver time optimizations for Trident model
UUID: 04c0bb22-ed6b-453f-84c2-45dda4b05e55
Configuration parameters:
Name
Type
Default
Description
enable_ramping_on_cables
bool
False
Model ramping on transmission cables
model_startup_costs
bool
False
Model start up costs for thermal plants
use_relative_head
bool
False
Use relative head
- __init__(self: ModuleOptimModel) None
- description = 'Solver time optimizations for Trident model'
- factory
alias of
ModuleOptimModelFactory
- name = 'ModuleOptimModel'
- uuid = '04c0bb22-ed6b-453f-84c2-45dda4b05e55'
- class trident_extras.ModuleReserve
Bases:
ProblemModuleName: Reserve
Description: Models reserve units
UUID: dcb788fb-53c3-4617-8563-11ceff560bba
Input time series:
Url
Description
Unit
hydro_reserve_min_production_level/{hydro_plant_id}
Minimum production level for each hydro power plant in expressed per unit, i.e. in [0,1]
GW
reserve_downward_requirement/{area_id}
Downward hydro reserve requirement per area
GW
reserve_upward_requirement/{area_id}
Upward hydro reserve requirement per area
GW
reserve_upward_requirement/{area_id}
Upward hydro reserve requirement per area
GW
reserve_violation_cost/{area_id}
Penalty for violating area wide reserve constraint
mu/GWh
thermal_plant_capacity/{thermal_plant_id}
Max production for a thermal plant
GW
thermal_plant_min_production/{thermal_plant_id}
Minimum production for a thermal plant
GW
thermal_reserve_min_production_level/{thermal_plant_id}
Minimum production level for each power plant in expressed per unit, i.e. in [0,1]
GW
Output time series:
Url
Description
Unit
hydro_reserve_downward_production/{hydro_plant_id}
Delivered hydro downward reserve production for each power plant
GW
hydro_reserve_upward_production/{hydro_plant_id}
Delivered upward hydro reserve production for each power plant
GW
shadow_price_reserve_downward_production/{area_id}
Shadow price of delivered downward reserve production for each power plant
mu/GW
shadow_price_reserve_upward_production/{area_id}
Shadow price of delivered upward reserve production for each power plant
mu/GW
thermal_reserve_downward_production/{thermal_plant_id}
Delivered thermal downward reserve production for each power plant
GW
thermal_reserve_upward_production/{thermal_plant_id}
Delivered upward thermal reserve production for each power plant
GW
Configuration parameters:
Name
Type
Default
Description
model_startup_costs
bool
False
Model start up costs for thermal plants
use_relative_head
bool
False
Use relative head
- __init__(self: ModuleReserve) None
- description = 'Models reserve units'
- factory
alias of
ModuleReserveFactory
- name = 'Reserve'
- uuid = 'dcb788fb-53c3-4617-8563-11ceff560bba'