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 /
q_obj
q_balance
q_resDemand
* q_resDemandLargestInfeedUnit
* q_rateOfChangeOfFrequencyUnit
* q_rateOfChangeOfFrequencyTransfer
* q_resDemandLargestInfeedTransfer
* q_resDemandLargestInfeedTransfer2
q_resDemandLargestInfeedUnit
q_rateOfChangeOfFrequencyUnit
q_rateOfChangeOfFrequencyTransfer
* q_resDemandLargestInfeedTransferUp
* q_resDemandLargestInfeedTransferDown
q_resDemandLargestInfeedTransfer
// Unit Operation
q_maxDownward
q_maxUpward
......
......@@ -182,8 +182,7 @@ alias(f, f_, f__);
alias(s, s_, s__);
alias(grid, grid_, grid_output);
alias(unit, unit_);
alias(node, from_node, to_node, node_, node_input, node_output, node_fail);
alias(node, from_node, to_node);
alias(node, from_node, to_node, node_, node_input, node_output, node_fail, node_left, node_right);
alias(effSelector, effSelector_);
alias(effDirect, effDirect_);
alias(effDirectOff, effDirectOff_);
......@@ -197,6 +196,7 @@ alias(hr, hr_, hr__);
alias(fuel, fuel_);
alias(effLevel, effLevel_);
alias(restype, restype_);
alias(group, group_);
*if(active('rampSched'),
......
......@@ -53,7 +53,8 @@ Parameters
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_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_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)"
......
......@@ -43,7 +43,8 @@ $ifthen exist '%input_dir%/inputData.gdx'
$$loaddc restypeDirection
$$loaddc restypeReleasedForRealization
$$loaddc p_groupReserves
$$loaddc p_nReserves3D
$$loaddc p_groupReserves3D
$$loaddc p_groupReserves4D
$$loaddc p_nuReserves
$$loaddc p_nnReserves
$$loaddc p_nuRes2Res
......
......@@ -54,11 +54,12 @@ equations
q_obj "Objective function"
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_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_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_resDemandLargestInfeedTransfer2(grid, restype, up_down, node, node, s, f, t) "N-1 down reserve for transmission lines"
q_resDemandLargestInfeedTransferUp(restype, up_down, group, grid, node, node, s, f, t) "N-1 up 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
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"
......@@ -114,5 +115,5 @@ equations
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_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;
Option clear = q_resDemandLargestInfeedUnit;
Option clear = q_rateOfChangeOfFrequencyUnit;
Option clear = q_rateOfChangeOfFrequencyTransfer;
Option clear = q_resDemandLargestInfeedTransferUp;
Option clear = q_resDemandLargestInfeedTransferDown;
Option clear = q_resDemandLargestInfeedTransfer;
Option clear = q_resDemandLargestInfeedTransfer2;
// Unit Operation
Option clear = q_maxDownward;
......@@ -124,6 +125,7 @@ Option clear = q_emissioncap;
Option clear = q_energyShareMax;
Option clear = q_energyShareMin;
Option clear = q_minCons;
Option clear = q_ReserveShareMax;
* --- Temporary Time Series ---------------------------------------------------
......
Markdown is supported
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