Commit 64d26981 authored by Niina Helistö's avatar Niina Helistö
Browse files

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

Adding an equation for fixing v_gen of certain flow units to a value determined by availability, flow, and capacity (both existing and invested). These units are indicated by a non-zero p_unit(unit, 'fixedFlow').
parent ffe96ecb
......@@ -33,6 +33,7 @@ Model building /
* q_maxDownwardOfflineReserve
q_maxUpward
* q_maxUpwardOfflineReserve
* q_fixedFlow
* q_reserveProvision
* q_reserveProvisionOnline
* q_startup
......
......@@ -33,6 +33,7 @@ Model invest /
q_maxDownwardOfflineReserve
q_maxUpward
q_maxUpwardOfflineReserve
q_fixedFlow
q_reserveProvision
q_reserveProvisionOnline
q_startshut
......
......@@ -33,6 +33,7 @@ Model schedule /
q_maxDownwardOfflineReserve
q_maxUpward
q_maxUpwardOfflineReserve
q_fixedFlow
* q_reserveProvision
q_reserveProvisionOnline
q_startshut
......
......@@ -107,6 +107,7 @@ v_help_inc
q_maxDownwardOfflineReserve
q_maxUpward
q_maxUpwardOfflineReserve
q_fixedFlow
q_reserveProvision
q_reserveProvisionOnline
q_startshut
......
......@@ -329,6 +329,7 @@ param_unit "Set of possible data parameters for units" /
investMIP "A flag to make integer investment instead of continous investment"
maxUnitCount "Maximum 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
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))"
......
......@@ -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_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_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_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"
......
......@@ -789,6 +789,41 @@ q_maxUpwardOfflineReserve(gnu(grid, node, unit), msft(m, s, f, t))
] // 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 -----------------------------
q_reserveProvision(gnuRescapable(restypeDirectionGridNode(restype, up_down, grid, node), unit), sft(s, f, t))
......
......@@ -74,6 +74,7 @@ Option clear = q_maxDownward;
Option clear = q_maxDownwardOfflineReserve;
Option clear = q_maxUpward;
Option clear = q_maxUpwardOfflineReserve;
Option clear = q_fixedFlow;
Option clear = q_reserveProvision;
Option clear = q_reserveProvisionOnline;
Option clear = q_startshut;
......
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