Commit 67f18153 authored by Niina Helistö's avatar Niina Helistö
Browse files

Updating constraints for maximum share of reserve provision, ROCOF limit, as...

Updating constraints for maximum share of reserve provision, ROCOF limit, as well as reserve demand caused by largest unit infeed and largest transfer link import/export. Testing one constraint for reserve demand caused by largest transfer link import/export (instead of two separate constraints).
parent 4a2b7fce
...@@ -23,11 +23,12 @@ Model schedule / ...@@ -23,11 +23,12 @@ Model schedule /
q_obj q_obj
q_balance q_balance
q_resDemand q_resDemand
* q_resDemandLargestInfeedUnit q_resDemandLargestInfeedUnit
* q_rateOfChangeOfFrequencyUnit q_rateOfChangeOfFrequencyUnit
* q_rateOfChangeOfFrequencyTransfer q_rateOfChangeOfFrequencyTransfer
* q_resDemandLargestInfeedTransfer * q_resDemandLargestInfeedTransferUp
* q_resDemandLargestInfeedTransfer2 * q_resDemandLargestInfeedTransferDown
q_resDemandLargestInfeedTransfer
// Unit Operation // Unit Operation
q_maxDownward q_maxDownward
q_maxUpward q_maxUpward
......
...@@ -182,8 +182,7 @@ alias(f, f_, f__); ...@@ -182,8 +182,7 @@ alias(f, f_, f__);
alias(s, s_, s__); alias(s, s_, s__);
alias(grid, grid_, grid_output); alias(grid, grid_, grid_output);
alias(unit, unit_); alias(unit, unit_);
alias(node, from_node, to_node, node_, node_input, node_output, node_fail); alias(node, from_node, to_node, node_, node_input, node_output, node_fail, node_left, node_right);
alias(node, from_node, to_node);
alias(effSelector, effSelector_); alias(effSelector, effSelector_);
alias(effDirect, effDirect_); alias(effDirect, effDirect_);
alias(effDirectOff, effDirectOff_); alias(effDirectOff, effDirectOff_);
...@@ -197,6 +196,7 @@ alias(hr, hr_, hr__); ...@@ -197,6 +196,7 @@ alias(hr, hr_, hr__);
alias(fuel, fuel_); alias(fuel, fuel_);
alias(effLevel, effLevel_); alias(effLevel, effLevel_);
alias(restype, restype_); alias(restype, restype_);
alias(group, group_);
*if(active('rampSched'), *if(active('rampSched'),
......
...@@ -53,7 +53,8 @@ Parameters ...@@ -53,7 +53,8 @@ Parameters
p_unit(unit, param_unit) "Unit data where energy type does not matter" p_unit(unit, param_unit) "Unit data where energy type does not matter"
p_nReserves(node, restype, *) "Data defining the reserve rules in each node" p_nReserves(node, restype, *) "Data defining the reserve rules in each node"
p_groupReserves(group, restype, *) "Data defining the reserve rules in each node group" p_groupReserves(group, restype, *) "Data defining the reserve rules in each node group"
p_nReserves3D(node, restype, up_down, param_policy) "Reserve policy in each node" p_groupReserves3D(group, restype, up_down, param_policy) "Reserve policy in each node group separately for each reserve type and direction"
p_groupReserves4D(group, restype, up_down, group, param_policy) "Reserve policy in each node group separately for each reserve type and direction, also linking to another group"
p_nuReserves(node, unit, restype, *) "Reserve provision data for units" p_nuReserves(node, unit, restype, *) "Reserve provision data for units"
p_nnReserves(node, node, restype, up_down) "Reserve provision data for node node connections" p_nnReserves(node, node, restype, up_down) "Reserve provision data for node node connections"
p_nuRes2Res(node, unit, restype, up_down, restype) "The first type of reserve can be used also in the second reserve category (with a possible multiplier)" p_nuRes2Res(node, unit, restype, up_down, restype) "The first type of reserve can be used also in the second reserve category (with a possible multiplier)"
......
...@@ -43,7 +43,8 @@ $ifthen exist '%input_dir%/inputData.gdx' ...@@ -43,7 +43,8 @@ $ifthen exist '%input_dir%/inputData.gdx'
$$loaddc restypeDirection $$loaddc restypeDirection
$$loaddc restypeReleasedForRealization $$loaddc restypeReleasedForRealization
$$loaddc p_groupReserves $$loaddc p_groupReserves
$$loaddc p_nReserves3D $$loaddc p_groupReserves3D
$$loaddc p_groupReserves4D
$$loaddc p_nuReserves $$loaddc p_nuReserves
$$loaddc p_nnReserves $$loaddc p_nnReserves
$$loaddc p_nuRes2Res $$loaddc p_nuRes2Res
......
...@@ -54,11 +54,12 @@ equations ...@@ -54,11 +54,12 @@ equations
q_obj "Objective function" q_obj "Objective function"
q_balance(grid, node, mType, s, f, t) "Energy demand must be satisfied at each node" q_balance(grid, node, mType, s, f, t) "Energy demand must be satisfied at each node"
q_resDemand(restype, up_down, group, s, f, t) "Procurement for each reserve type is greater than demand" q_resDemand(restype, up_down, group, s, f, t) "Procurement for each reserve type is greater than demand"
q_resDemandLargestInfeedUnit(grid, restype, up_down, node, unit, s, f, t) "N-1 Reserve" q_resDemandLargestInfeedUnit(restype, up_down, group, unit, s, f, t) "N-1 reserve for units"
q_rateOfChangeOfFrequencyUnit(group, unit, s, f, t) "N-1 unit contingency with ROCOF" q_rateOfChangeOfFrequencyUnit(group, unit, s, f, t) "N-1 unit contingency with ROCOF"
q_rateOfChangeOfFrequencyTransfer(group, grid, node, node, s, f, t) "N-1 transmission line contingency with ROCOF" q_rateOfChangeOfFrequencyTransfer(group, grid, node, node, s, f, t) "N-1 transmission line contingency with ROCOF"
q_resDemandLargestInfeedTransfer(grid, restype, up_down, node, node, s, f, t) "N-1 up reserve for transmission lines" q_resDemandLargestInfeedTransferUp(restype, up_down, group, grid, node, node, s, f, t) "N-1 up reserve for transmission lines"
q_resDemandLargestInfeedTransfer2(grid, restype, up_down, node, node, s, f, t) "N-1 down reserve for transmission lines" q_resDemandLargestInfeedTransferDown(restype, up_down, group, grid, node, node, s, f, t) "N-1 down reserve for transmission lines"
q_resDemandLargestInfeedTransfer(restype, up_down, group, grid, node, node, s, f, t) "N-1 up/down reserve for transmission lines"
// Unit Operation // Unit Operation
q_maxDownward(grid, node, unit, mType, s, f, t) "Downward commitments will not undercut power plant minimum load constraints or maximum elec. consumption" q_maxDownward(grid, node, unit, mType, s, f, t) "Downward commitments will not undercut power plant minimum load constraints or maximum elec. consumption"
q_maxUpward(grid, node, unit, mType, s, f, t) "Upward commitments will not exceed maximum available capacity or consumed power" q_maxUpward(grid, node, unit, mType, s, f, t) "Upward commitments will not exceed maximum available capacity or consumed power"
...@@ -114,5 +115,5 @@ equations ...@@ -114,5 +115,5 @@ equations
q_energyShareMax(group) "Maximum energy share of generation and import from a group of units" q_energyShareMax(group) "Maximum energy share of generation and import from a group of units"
q_energyShareMin(group) "Minimum energy share of generation and import from a group of units" q_energyShareMin(group) "Minimum energy share of generation and import from a group of units"
q_minCons(group, grid, node, unit, s, f, t) "Minimum consumption of storage unit when charging" q_minCons(group, grid, node, unit, s, f, t) "Minimum consumption of storage unit when charging"
q_ReserveShareMax(group, restype, up_down, node, s, f, t) "Maximum reserve share of a group of units" q_ReserveShareMax(group, restype, up_down, group, s, f, t) "Maximum reserve share of a group of units"
; ;
This diff is collapsed.
...@@ -66,8 +66,9 @@ Option clear = q_resDemand; ...@@ -66,8 +66,9 @@ Option clear = q_resDemand;
Option clear = q_resDemandLargestInfeedUnit; Option clear = q_resDemandLargestInfeedUnit;
Option clear = q_rateOfChangeOfFrequencyUnit; Option clear = q_rateOfChangeOfFrequencyUnit;
Option clear = q_rateOfChangeOfFrequencyTransfer; Option clear = q_rateOfChangeOfFrequencyTransfer;
Option clear = q_resDemandLargestInfeedTransferUp;
Option clear = q_resDemandLargestInfeedTransferDown;
Option clear = q_resDemandLargestInfeedTransfer; Option clear = q_resDemandLargestInfeedTransfer;
Option clear = q_resDemandLargestInfeedTransfer2;
// Unit Operation // Unit Operation
Option clear = q_maxDownward; Option clear = q_maxDownward;
...@@ -124,6 +125,7 @@ Option clear = q_emissioncap; ...@@ -124,6 +125,7 @@ Option clear = q_emissioncap;
Option clear = q_energyShareMax; Option clear = q_energyShareMax;
Option clear = q_energyShareMin; Option clear = q_energyShareMin;
Option clear = q_minCons; Option clear = q_minCons;
Option clear = q_ReserveShareMax;
* --- Temporary Time Series --------------------------------------------------- * --- Temporary Time Series ---------------------------------------------------
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment