Commit 5d9e7db7 authored by Ciara O'Dwyer's avatar Ciara O'Dwyer
Browse files

Deleted obsolete equations q_maxUpward3 and q_rampUpLimit2

parent 209402da
......@@ -30,7 +30,6 @@ Model invest /
q_maxDownward2
q_maxUpward
q_maxUpward2
* q_maxUpward3
q_reserveProvision
q_reserveProvision2
q_startshut
......@@ -43,7 +42,6 @@ Model invest /
q_genRamp
q_rampUpLimit
q_rampDownLimit
* q_rampUpLimit2
q_rampUpDown
q_rampSlack
q_outputRatioFixed
......
......@@ -30,7 +30,6 @@ Model schedule /
q_maxDownward2
q_maxUpward
q_maxUpward2
* q_maxUpward3
* q_reserveProvision
q_startshut
q_startuptype
......@@ -41,7 +40,6 @@ Model schedule /
* q_onlineCyclic
q_genRamp
q_rampUpLimit
* q_rampUpLimit2
q_rampDownLimit
q_rampUpDown
q_rampSlack
......
......@@ -60,7 +60,6 @@ equations
q_maxDownward2(grid, node, unit, mType, s, f, t) "Downward commitments will not undercut power plant maximum elec. consumption - offline Res"
q_maxUpward(grid, node, unit, mType, s, f, t) "Upward commitments will not exceed maximum available capacity or consumed power"
q_maxUpward2(grid, node, unit, mType, s, f, t) "Upward commitments will not exceed maximum available capacity or consumed power - offline Res"
q_maxUpward3(grid, node, unit, mType, s, f, t) "Upward commitments will not exceed maximum available capacity or consumed power - offline Res"
q_reserveProvision(restype, up_down, node, unit, s, f, t) "Reserve provision limited for units"
q_reserveProvision2(restype, up_down, node, unit, s, f, t) "Reserve provision limited for units offline Res capable"
q_startshut(mType, s, unit, f, t) "Online capacity now minus online capacity in the previous interval is equal to started up minus shut down capacity"
......@@ -72,7 +71,6 @@ equations
q_onlineCyclic(unit, s, s, mType) "Cyclic online state bound for the first and the last states of samples"
q_genRamp(mType, s, grid, node, unit, f, t) "Record the ramps of units with ramp restricitions or costs"
q_rampUpLimit(mType, s, grid, node, unit, f, t) "Up ramping limited for units"
q_rampUpLimit2(mType, s, grid, node, unit, f, t) "Up ramping limited for units with offline reserve capability"
q_rampDownLimit(mType, s, grid, node, unit, f, t) "Down ramping limited for units"
q_rampUpDown(mType, s, grid, node, unit, f, t) "Ramping separated into possibly several upward and downward parts (for different cost levels)"
q_rampSlack(mType, s, grid, node, unit, slack, f, t) "Upward and downward ramps constrained by slack boundaries (for different cost levels)"
......
......@@ -545,72 +545,6 @@ q_maxUpward2(gnu(grid, node, unit), msft(m, s, f, t))
] // END * p_unit(availability)
;
* --- Maximum Upwards Capacity Offline ------------------------------------------------
q_maxUpward3(gnu(grid, node, unit), msft(m, s, f, t))
${ gnuft(grid, node, unit, f, t)
and {
[ ord(t) < tSolveFirst + smax(restype, p_nReserves(node, restype, 'reserve_length')) // Unit is either providing
and sum(restype, nuRescapable(restype, 'up', node, unit)) // upward reserves
]
or [
uft_online(unit, f, t) // or the unit has an online variable
and [
[unit_minLoad(unit) and p_gnu(grid, node, unit, 'unitSizeCons')] // consuming units with min_load
or [p_gnu(grid, node, unit, 'maxGen')] // generators with an online variable
]
]
or [
gnu_output(grid, node, unit) // generators with investment possibility
and (unit_investLP(unit) or unit_investMIP(unit))
]
}
and { sum(restype, nuOfflineRescapable(restype, node, unit))}
* and { not nuOfflineRescapable(restype, node, unit)}
}
..
// Upwards reserve participation
+ sum(nuRescapable(restype, 'up', node, unit)${ord(t) < tSolveFirst + p_nReserves(node, restype, 'reserve_length')},
+ v_reserve(restype, 'up', node, unit, s, f+df_reserves(node, restype, f, t), t) ${not offlineRes(restype)}
) // END sum(nuRescapable)
=L= // must be less than available/online capacity
// Online capacity restriction
[ + p_gnu(grid, node, unit, 'maxGen')${not uft_online(unit, f, t)} // Use initial maxGen if no online variables
+ p_gnu(grid, node, unit, 'unitSizeGen') ]
* [
+ v_online_LP(unit, s, f+df_central(f,t), t)${uft_onlineLP(unit, f ,t)}
+ v_online_MIP(unit, s, f+df_central(f,t), t)${uft_onlineMIP(unit, f, t)}
// Investments to non-online capacity
+ sum(t_invest(t_)${ ord(t_)<=ord(t)
and not uft_online(unit, f ,t)
},
+ v_invest_LP(unit, t_)${unit_investLP(unit)}
+ v_invest_MIP(unit, t_)${unit_investMIP(unit)}
) // END sum(t_invest)
]
;
* --- Reserve Provision of Units with Investments -----------------------------
q_reserveProvision(nuRescapable(restypeDirectionNode(restype, up_down, node), unit), sft(s, f, t))
......@@ -1080,139 +1014,6 @@ q_rampUpLimit(ms(m, s), gnuft_ramp(grid, node, unit, f, t))
) // END * v_shutdown
;
* --- Ramp Up Limits Offline ----------------------------------------------------------
q_rampUpLimit2(ms(m, s), gnuft_ramp(grid, node, unit, f, t))
${ ord(t) > msStart(m, s) + 1
and msft(m, s, f, t)
and p_gnu(grid, node, unit, 'maxRampUp')
and [ sum(restype, nuRescapable(restype, 'up', node, unit))
or uft_online(unit, f, t)
or unit_investLP(unit)
or unit_investMIP(unit)
]
and { sum(restype, nuOfflineRescapable(restype, node, unit))}
} ..
// Ramp speed of the unit?
+ v_genRamp(grid, node, unit, s, f, t)
+ sum(nuRescapable(restype, 'up', node, unit)${ord(t) < tSolveFirst + p_nReserves(node, restype, 'reserve_length')},
+ (v_reserve(restype, 'up', node, unit, s, f+df_reserves(node, restype, f, t), t))${not offlineRes(restype)} // (v_reserve can be used only if the unit is capable of providing a particular reserve)
) // END sum(nuRescapable)
/ p_stepLength(m, f, t)
=L=
// Ramping capability of units without an online variable
+ (
+ ( p_gnu(grid, node, unit, 'maxGen') + p_gnu(grid, node, unit, 'maxCons') )${not uft_online(unit, f, t)}
+ sum(t_invest(t_)${ ord(t_)<=ord(t) },
+ v_invest_LP(unit, t_)${not uft_online(unit, f, t) and unit_investLP(unit)}
* p_gnu(grid, node, unit, 'unitSizeTot')
+ v_invest_MIP(unit, t_)${not uft_online(unit, f, t) and unit_investMIP(unit)}
* p_gnu(grid, node, unit, 'unitSizeTot')
)
)
* p_gnu(grid, node, unit, 'maxRampUp')
* 60 // Unit conversion from [p.u./min] to [p.u./h]
// Ramping capability of units with an online variable
+ (
+ v_online_LP(unit, s, f+df_central(f,t), t)
${uft_onlineLP(unit, f, t)}
+ v_online_MIP(unit, s, f+df_central(f,t), t)
${uft_onlineMIP(unit, f, t)}
)
* p_gnu(grid, node, unit, 'unitSizeTot')
* p_gnu(grid, node, unit, 'maxRampUp')
* 60 // Unit conversion from [p.u./min] to [p.u./h]
// Generation units not be able to ramp from zero to min. load within one time interval according to their maxRampUp
+ sum(unitStarttype(unit, starttype)${ uft_online(unit, f, t)
and gnu_output(grid, node, unit)
and not uft_startupTrajectory(unit, f, t)
and ( + sum(suft(effGroup, unit, f, t), // Uses the minimum 'lb' for the current efficiency approximation
+ p_effGroupUnit(effGroup, unit, 'lb')${not ts_effGroupUnit(effGroup, unit, 'lb', f, t)}
+ ts_effGroupUnit(effGroup, unit, 'lb', f, t)
) // END sum(effGroup)
/ p_stepLength(m, f, t)
- p_gnu(grid, node, unit, 'maxRampUp')
* 60 > 0
)
},
+ v_startup_LP(unit, starttype, s, f, t)
${ uft_onlineLP(unit, f, t) }
+ v_startup_MIP(unit, starttype, s, f, t)
${ uft_onlineMIP(unit, f, t) }
) // END sum(starttype)
* p_gnu(grid, node, unit, 'unitSizeTot')
* (
+ sum(suft(effGroup, unit, f, t), // Uses the minimum 'lb' for the current efficiency approximation
+ p_effGroupUnit(effGroup, unit, 'lb')${not ts_effGroupUnit(effGroup, unit, 'lb', f, t)}
+ ts_effGroupUnit(effGroup, unit, 'lb', f, t)
) // END sum(effGroup)
/ p_stepLength(m, f, t)
- p_gnu(grid, node, unit, 'maxRampUp')
* 60 // Unit conversion from [p.u./min] to [p.u./h]
) // END * v_startup
// Units in the run-up phase need to keep up with the run-up rate
+ p_gnu(grid, node, unit, 'unitSizeTot')
* sum(unitStarttype(unit, starttype)${uft_startupTrajectory(unit, f, t)},
sum(runUpCounter(unit, counter)${t_active(t+dt_trajectory(counter))}, // Sum over the run-up intervals
+ [
+ v_startup_LP(unit, starttype, s, f+df(f, t+dt_trajectory(counter)), t+dt_trajectory(counter))
${ uft_onlineLP_withPrevious(unit, f+df(f, t+dt_trajectory(counter)), t+dt_trajectory(counter)) }
+ v_startup_MIP(unit, starttype, s, f+df(f, t+dt_trajectory(counter)), t+dt_trajectory(counter))
${ uft_onlineMIP_withPrevious(unit, f+df(f, t+dt_trajectory(counter)), t+dt_trajectory(counter)) }
]
* [
+ p_unit(unit, 'rampSpeedToMinLoad')
+ ( p_gnu(grid, node, unit, 'maxRampUp') - p_unit(unit, 'rampSpeedToMinLoad') )${ not runUpCounter(unit, counter+1) } // Ramp speed adjusted for the last run-up interval
* ( p_u_runUpTimeIntervalsCeil(unit) - p_u_runUpTimeIntervals(unit) )
]
* 60 // Unit conversion from [p.u./min] into [p.u./h]
) // END sum(runUpCounter)
) // END sum(unitStarttype)
// Shutdown of consumption units according to maxRampUp
+ [
+ v_shutdown_LP(unit, s, f, t)
${uft_onlineLP(unit, f, t) and gnu_input(grid, node, unit)}
+ v_shutdown_MIP(unit, s, f, t)
${uft_onlineMIP(unit, f, t) and gnu_input(grid, node, unit)}
]
* p_gnu(grid, node, unit, 'unitSizeTot')
* p_gnu(grid, node, unit, 'maxRampUp')
* 60 // Unit conversion from [p.u./min] to [p.u./h]
// Consumption units not be able to ramp from min. load to zero within one time interval according to their maxRampUp
+ [
+ v_shutdown_LP(unit, s, f, t)
${ uft_onlineLP(unit, f, t) }
+ v_shutdown_MIP(unit, s, f, t)
${ uft_onlineMIP(unit, f, t) }
]
${ gnu_input(grid, node, unit)
and ( + sum(suft(effGroup, unit, f, t), // Uses the minimum 'lb' for the current efficiency approximation
+ p_effGroupUnit(effGroup, unit, 'lb')${not ts_effGroupUnit(effGroup, unit, 'lb', f, t)}
+ ts_effGroupUnit(effGroup, unit, 'lb', f, t)
) // END sum(effGroup)
/ p_stepLength(m, f, t)
- p_gnu(grid, node, unit, 'maxRampUp')
* 60 > 0
)
}
* p_gnu(grid, node, unit, 'unitSizeTot')
* (
+ sum(suft(effGroup, unit, f, t), // Uses the minimum 'lb' for the current efficiency approximation
+ p_effGroupUnit(effGroup, unit, 'lb')${not ts_effGroupUnit(effGroup, unit, 'lb', f, t)}
+ ts_effGroupUnit(effGroup, unit, 'lb', f, t)
) // END sum(effGroup)
/ p_stepLength(m, f, t)
- p_gnu(grid, node, unit, 'maxRampUp')
* 60 // Unit conversion from [p.u./min] to [p.u./h]
) // END * v_shutdown
;
* --- Ramp Down Limits --------------------------------------------------------
......
......@@ -69,7 +69,6 @@ Option clear = q_maxDownward;
Option clear = q_maxDownward2;
Option clear = q_maxUpward;
Option clear = q_maxUpward2;
Option clear = q_maxUpward3;
Option clear = q_reserveProvision;
Option clear = q_reserveProvision2;
Option clear = q_startshut;
......@@ -82,7 +81,6 @@ Option clear = q_offlineAfterShutdown;
Option clear = q_genRamp;
Option clear = q_rampUpLimit;
Option clear = q_rampDownLimit;
Option clear = q_rampUpLimit2;
Option clear = q_rampUpDown;
Option clear = q_rampSlack;
Option clear = q_outputRatioFixed;
......
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