Commit 51b6eea1 authored by Tomi J. Lindroos's avatar Tomi J. Lindroos
Browse files

Merge branch 'fixed_flow' into 'master'

Adding an equation for fixing v_gen of certain flow units to a value...

See merge request !23
parents 30cde1d2 64d26981
...@@ -33,6 +33,7 @@ Model building / ...@@ -33,6 +33,7 @@ Model building /
* q_maxDownwardOfflineReserve * q_maxDownwardOfflineReserve
q_maxUpward q_maxUpward
* q_maxUpwardOfflineReserve * q_maxUpwardOfflineReserve
* q_fixedFlow
* q_reserveProvision * q_reserveProvision
* q_reserveProvisionOnline * q_reserveProvisionOnline
* q_startup * q_startup
......
...@@ -33,6 +33,7 @@ Model invest / ...@@ -33,6 +33,7 @@ Model invest /
q_maxDownwardOfflineReserve q_maxDownwardOfflineReserve
q_maxUpward q_maxUpward
q_maxUpwardOfflineReserve q_maxUpwardOfflineReserve
q_fixedFlow
q_reserveProvision q_reserveProvision
q_reserveProvisionOnline q_reserveProvisionOnline
q_startshut q_startshut
......
...@@ -33,6 +33,7 @@ Model schedule / ...@@ -33,6 +33,7 @@ Model schedule /
q_maxDownwardOfflineReserve q_maxDownwardOfflineReserve
q_maxUpward q_maxUpward
q_maxUpwardOfflineReserve q_maxUpwardOfflineReserve
q_fixedFlow
* q_reserveProvision * q_reserveProvision
q_reserveProvisionOnline q_reserveProvisionOnline
q_startshut q_startshut
......
...@@ -107,6 +107,7 @@ v_help_inc ...@@ -107,6 +107,7 @@ v_help_inc
q_maxDownwardOfflineReserve q_maxDownwardOfflineReserve
q_maxUpward q_maxUpward
q_maxUpwardOfflineReserve q_maxUpwardOfflineReserve
q_fixedFlow
q_reserveProvision q_reserveProvision
q_reserveProvisionOnline q_reserveProvisionOnline
q_startshut q_startshut
......
...@@ -329,6 +329,7 @@ param_unit "Set of possible data parameters for units" / ...@@ -329,6 +329,7 @@ param_unit "Set of possible data parameters for units" /
investMIP "A flag to make integer investment instead of continous investment" investMIP "A flag to make integer investment instead of continous investment"
maxUnitCount "Maximum number of units when making integer investments" maxUnitCount "Maximum number of units when making integer investments"
minUnitCount "Minimum number of units when making integer investments" minUnitCount "Minimum number of units when making integer investments"
fixedFlow "A flag to fix the production or consumption of the unit based on availability, flow, and capacity"
// Calculated based on other input data // Calculated based on other input data
lastStepNotAggregated "Last time step when the unit is not yet aggregated - calculated in inputsLoop.gms for units that have aggregation" lastStepNotAggregated "Last time step when the unit is not yet aggregated - calculated in inputsLoop.gms for units that have aggregation"
becomeAvailable "The relative position of the time step when the unit becomes available (calculated from ut(unit, t, start_end))" becomeAvailable "The relative position of the time step when the unit becomes available (calculated from ut(unit, t, start_end))"
......
...@@ -63,6 +63,7 @@ equations ...@@ -63,6 +63,7 @@ equations
q_maxDownwardOfflineReserve(grid, node, unit, mType, s, f, t) "Downward commitments (v_gen and all v_reserve) will not undercut zero production (+) or maximum consumption capacity (-)" q_maxDownwardOfflineReserve(grid, node, unit, mType, s, f, t) "Downward commitments (v_gen and all v_reserve) will not undercut zero production (+) or maximum consumption capacity (-)"
q_maxUpward(grid, node, unit, mType, s, f, t) "Upward commitments (v_gen and online v_reserve) will not exceed maximum (online) production capacity (+) or minimum (online) consumption capacity (-)" q_maxUpward(grid, node, unit, mType, s, f, t) "Upward commitments (v_gen and online v_reserve) will not exceed maximum (online) production capacity (+) or minimum (online) consumption capacity (-)"
q_maxUpwardOfflineReserve(grid, node, unit, mType, s, f, t) "Upward commitments (v_gen and all v_reserve) will not exceed maximum production capacity (+) or zero consumption (-)" q_maxUpwardOfflineReserve(grid, node, unit, mType, s, f, t) "Upward commitments (v_gen and all v_reserve) will not exceed maximum production capacity (+) or zero consumption (-)"
q_fixedFlow(grid, node, unit, mType, s, f, t) "V_gen is fixed to flow-based value, multiplied by availability and capacity"
q_reserveProvision(restype, up_down, grid, node, unit, s, f, t) "Reserve provision limited for units with investment possibility" q_reserveProvision(restype, up_down, grid, node, unit, s, f, t) "Reserve provision limited for units with investment possibility"
q_reserveProvisionOnline(restype, up_down, grid, node, unit, s, f, t) "Reserve provision limited for units that are not capable of providing offline reserve" q_reserveProvisionOnline(restype, up_down, grid, node, unit, s, f, t) "Reserve provision limited for units that are not capable of providing offline reserve"
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" 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"
......
...@@ -789,6 +789,41 @@ q_maxUpwardOfflineReserve(gnu(grid, node, unit), msft(m, s, f, t)) ...@@ -789,6 +789,41 @@ q_maxUpwardOfflineReserve(gnu(grid, node, unit), msft(m, s, f, t))
] // END * p_unit(availability) ] // END * p_unit(availability)
; ;
* --- Fixed Flow Production/Consumption ---------------------------------------
q_fixedFlow(gnu(grid, node, unit_flow(unit)), msft(m, s, f, t))
${ gnuft(grid, node, unit, f, t)
and (p_gnu(grid, node, unit, 'capacity') or p_gnu(grid, node, unit, 'unitSize'))
and p_unit(unit, 'fixedFlow')
}..
// Energy generation/consumption
+ v_gen(grid, node, unit, s, f, t)
=E= // must be equal to available capacity
+ [
// Available capacity restrictions
+ p_unit(unit, 'availability')$gnu_output(grid, node, unit)
- p_unit(unit, 'availability')$gnu_input(grid, node, unit)
]
* sum(flowUnit(flow, unit), // Capacity factor for flow units
+ ts_cf_(flow, node, s, f, t)
) // END sum(flow)
* [
// Capacity restriction
+ p_gnu(grid, node, unit, 'unitSize')
* [
// Existing capacity
+ p_unit(unit, 'unitCount')
// Investments to new capacity
+ v_invest_LP(unit)${unit_investLP(unit)}
+ v_invest_MIP(unit)${unit_investMIP(unit)}
] // END * p_gnu(unitSize)
] // END * p_unit(availability)
;
* --- Reserve Provision of Units with Investments ----------------------------- * --- Reserve Provision of Units with Investments -----------------------------
q_reserveProvision(gnuRescapable(restypeDirectionGridNode(restype, up_down, grid, node), unit), sft(s, f, t)) q_reserveProvision(gnuRescapable(restypeDirectionGridNode(restype, up_down, grid, node), unit), sft(s, f, t))
......
...@@ -74,6 +74,7 @@ Option clear = q_maxDownward; ...@@ -74,6 +74,7 @@ Option clear = q_maxDownward;
Option clear = q_maxDownwardOfflineReserve; Option clear = q_maxDownwardOfflineReserve;
Option clear = q_maxUpward; Option clear = q_maxUpward;
Option clear = q_maxUpwardOfflineReserve; Option clear = q_maxUpwardOfflineReserve;
Option clear = q_fixedFlow;
Option clear = q_reserveProvision; Option clear = q_reserveProvision;
Option clear = q_reserveProvisionOnline; Option clear = q_reserveProvisionOnline;
Option clear = q_startshut; Option clear = q_startshut;
......
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