1d_results.gms 12.4 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$ontext
This file is part of Backbone.

Backbone is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

Backbone is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License
along with Backbone.  If not, see <http://www.gnu.org/licenses/>.
$offtext

18
19
20
21
* =============================================================================
* --- Model Results Arrays ----------------------------------------------------
* =============================================================================

22
Parameters
23
24
25
26

* --- Cost Results ------------------------------------------------------------

    // Total Objective Function
27
    r_totalObj(t) "Total accumulated value of the objective function over all solves"
28

Topi Rasku's avatar
Topi Rasku committed
29
    // Unit Operational Cost Components
Topi Rasku's avatar
Topi Rasku committed
30
    r_gnuVOMCost(grid, node, unit, f, t) "Variable O&M costs for energy outputs (MEUR)"
Topi Rasku's avatar
Topi Rasku committed
31
    r_gnuTotalVOMCost(grid, node, unit) "Total gnu VOM costs over the simulation (MEUR)"
Topi Rasku's avatar
Topi Rasku committed
32
33
34
    r_uFuelEmissionCost(fuel, unit, f, t) "Unit fuel & emission costs for normal operation (MEUR)"
    r_uTotalFuelEmissionCost(fuel, unit) "Total unit fuel & emission costs over the simulation for normal operation (MEUR)"
    r_uStartupCost(unit, f, t) "Unit startup VOM, fuel, & emission costs (MEUR)"
35
    r_uShutdownCost(unit, f, t) "Unit startup VOM, fuel, & emission costs (MEUR)"
Topi Rasku's avatar
Topi Rasku committed
36
37
38
39
    r_uTotalStartupCost(unit) "Total unit startup costs over the simulation (MEUR)"

    // Nodal Cost Components
    r_gnStateSlackCost(grid, node, f, t) "Costs for states requiring slack (MEUR)"
Topi Rasku's avatar
Topi Rasku committed
40
    r_gnTotalStateSlackCost(grid, node) "Total costs for state slacks over the simulation (MEUR)"
Topi Rasku's avatar
Topi Rasku committed
41
42
    r_gnStorageValueChange(grid, node) "Change in storage values over the simulation (MEUR)"

Niina Helistö's avatar
Niina Helistö committed
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
    // Investment and Fixed Operation and Maintenance Cost Components
    r_gnuFOMCost(grid, node, unit) "Total gnu fixed O&M costs over the simulation (MEUR)"
    r_gnuUnitInvestmentCost(grid, node, unit) "Total unit investment costs over the simulation (MEUR)"
    r_gnnLinkInvestmentCost(grid, node, node) "Total transfer link investment costs over the simulation (MEUR)"

    // Realized System Operating Costs
    r_gnRealizedOperatingCost(grid, node, f, t) "Realized system operating costs in gn for each t (MEUR)"
    r_gnTotalRealizedOperatingCost(grid, node) "Total realized system operating costs in gn over the simulation (MEUR)"
    r_gnTotalRealizedOperatingCostShare(grid, node) "Total realized system operating cost gn/g shares over the simulation"
    r_gnTotalRealizedNetOperatingCost(grid, node) "Total realized system operating costs in gn over the simulation, minus the increase in storage values (MEUR)"
    r_gTotalRealizedOperatingCost(grid) "Total realized system operating costs in g over the simulation (MEUR)"
    r_gTotalRealizedNetOperatingCost(grid) "Total realized system operating costs in g over the simulation, minus the increase in storage values (MEUR)"
    r_totalRealizedOperatingCost "Total realized system operating costs over the simulation (MEUR)" / 0 /
    r_totalRealizedNetOperatingCost "Total realized system operating costs over the simulation (MEUR)" / 0 /

58
59
60
61
62
63
    // Realized System Fixed Costs
    r_gnTotalRealizedFixedCost(grid, node) "Total realized system fixed costs in gn over the simulation (MEUR)"
    r_gnTotalRealizedFixedCostShare(grid, node) "Total realized system fixed cost gn/g shares over the simulation"
    r_gTotalRealizedFixedCost(grid) "Total realized system fixed costs in g over the simulation (MEUR)"
    r_totalRealizedFixedCost "Total realized system fixed costs over the simulation (MEUR)" / 0 /

64
65
66
    // Realized System Costs
    r_gnTotalRealizedCost(grid, node) "Total realized system costs in gn over the simulation (MEUR)"
    r_gnTotalRealizedCostShare(grid, node) "Total realized system cost gn/g shares over the simulation"
67
    r_gnTotalRealizedNetCost(grid, node) "Total realized system costs in gn over the simulation, minus the increase in storage values (MEUR)"
68
    r_gTotalRealizedCost(grid) "Total realized system costs in g over the simulation (MEUR)"
69
    r_gTotalRealizedNetCost(grid) "Total realized system costs in g over the simulation, minus the increase in storage values (MEUR)"
70
    r_totalRealizedCost "Total realized system costs over the simulation (MEUR)" / 0 /
71
    r_totalRealizedNetCost "Total realized system costs over the simulation (MEUR)" / 0 /
72
73
74
75

* --- Node Results ------------------------------------------------------------

    // State variable results, required for model structure
76
    r_state(grid, node, f, t) "Node state at time step t"
77
    // State variable slack values
78
    r_stateSlack(grid, node, slack, f, t) "Note state slack at time step t"
79

80
    // Energy transfer and spill variable results
81
    r_transfer(grid, from_node, to_node, f, t) "Energy transfer (MW)"
82
    r_spill(grid, node, f, t) "Spill of energy from storage node during time interval (MWh)"
83
84

    // Interesting node related results
85
    r_balanceMarginal(grid, node, f, t) "Marginal values of the q_balance equation"
86
87
88
89
    r_gnnTotalTransfer(grid, node, node) "Total amount of energy transferred between gnn over the simulation (MWh)"
    r_gnTotalSpill(grid, node) "Total spilled energy from gn over the simulation (MWh)"
    r_gnTotalSpillShare(grid, node) "Total spilled energy gn/g share"
    r_gTotalSpill(grid) "Total spilled energy from gn over the simulation (MWh)"
90

91
92
93
94
95
96
97
98
* --- Energy Generation/Consumption Results -----------------------------------

    // Results required for model structure
    r_gen(grid, node, unit, f, t) "Energy generation for a unit (MW)"

    // Fuel use results
    r_fuelUse(fuel, unit, f, t) "Fuel use of units"
    r_genFuel(grid, node, fuel, f, t) "Energy generation/consumption based on fuels / flows (MW)"
99
    r_genUnittype(grid, node, unittype, f, t) "Energy generation/consumption for each unittype (MW)"
100
101
102
    r_gnTotalGenFuel(grid, node, fuel) "Total energy generation in gn per fuel over the simulation (MWh)"
    r_gnTotalGenFuelShare(grid, node, fuel) "Total energy generation fuel consumption gn/g share"
    r_gTotalGenFuel(grid, fuel) "Total energy generation in g per fuel over the simulation (MWh)"
103
104
    r_totalGenFuel(fuel) "Total overall energy generation/consumption per fuel over the simulation (MWh)"

105
106
107
108
109
110
111
112
113
114
115
    // Interesting energy generation results
    r_gnuTotalGen(grid, node, unit) "Total energy generation in gnu over the simulation (MWh)"
    r_gnuTotalGenShare(grid, node, unit) "Total energy generation gnu/gn share"
    r_gnTotalGen(grid, node) "Total energy generation in gn over the simulation (MWh)"
    r_gnTotalGenShare(grid, node) "Total energy generation gn/g share"
    r_gTotalGen(grid) "Total energy generation in g over the simulation (MWh)"

    // Approximate utilization rates
    r_gnuUtilizationRate(grid, node, unit) "Approximate utilization rates of gnus over the simulation"

    // Interesting energy consumption results
116
117
    r_gnConsumption(grid, node, f, t) "Consumption of energy in gn for each t (MWh)"
    r_gnTotalConsumption(grid, node) "Total consumption of energy in gn over the simulation (MWh)"
118
    r_gnTotalConsumptionShare(grid, node) "Total consumption gn/g share"
119
    r_gTotalConsumption(grid) "Total consumption of energy in g over the simulation (MWh)"
120
121
122
123

* --- Unit Online State Results -----------------------------------------------

    // Online results required for model structure
124
125
126
    r_online(unit, f, t) "Sub-units online"
    r_startup(unit, starttype, f, t) "Sub-units started up"
    r_shutdown(unit, f, t) "Sub-units shut down"
127
128
129

    // Interesting unit online results
    r_uTotalOnline(unit) "Total online sub-unit-hours of units over the simulation"
130
    r_uTotalOnlinePerUnit(unit) "Total unit online hours per sub-unit over the simulation"
131

132
133
134
135
    // Interesting unit startup and shutdown results
    r_uTotalStartup(unit, starttype) "Number of sub-unit startups over the simulation"
    r_uTotalShutdown(unit) "Number of sub-unit shutdowns over the simulation"

136
137
138
* --- Reserve Provision Results -----------------------------------------------

    // Reserve provision results required for model structure
139
140
141
142
    r_reserve(restype, up_down, grid, node, unit, f, t) "Unit capacity reserved for providing reserve of specific type (MW)"
    r_resTransferRightward(restype, up_down, grid, node, node, f, t) "Electricity transmission capacity from the first node to the second node reserved for providing reserves (MW)"
    r_resTransferLeftward(restype, up_down, grid, node, node, f, t) "Electricity transmission capacity from the second node to the first node reserved for providing reserves (MW)"
    r_reserve2Reserve(restype, up_down, grid, node, unit, restype, f, t) "Reserve provided for another reserve category (MW) (also included in r_reserve - this is just for debugging)"
143
144

    // Interesting reserve results
145
    r_resDemandMarginal(restype, up_down, group, f, t) "Marginal values of the q_resDemand equation"
146
147
148
149
    r_gnuTotalReserve(restype, up_down, grid, node, unit) "Total gnu reserve provision over the simulation (MW*h)"
    r_gnuTotalReserveShare(restype, up_down, grid, node, unit) "Total gnu/group reserve provision share over the simulation"
    r_groupTotalReserve(restype, up_down, group) "Total reserve provisions in groups over the simulation (MW*h)"
    r_resDemandLargestInfeedUnit(restype, up_down, group, f, t) "Reserve Demand from the loss of largest infeed unit"
150

151
152
153
* --- Investment Results ------------------------------------------------------

    // Interesting investment results
154
    r_invest(unit, t) "Number/amount of invested sub-units"
Niina Helistö's avatar
Niina Helistö committed
155
    r_investTransfer(grid, node, node, t) "Amount of invested transfer link capacity"
156

157
158
159
160
* --- Dummy Variable Results --------------------------------------------------

    // Results regarding solution feasibility
    r_qGen(inc_dec, grid, node, f, t) "Dummy energy generation (increase) or consumption (generation decrease) to ensure equation feasibility (MW)"
161
162
    r_gnTotalqGen(inc_dec, grid, node) "Total dummy energy generation/consumption in gn over the simulation (MWh)."
    r_gTotalqGen(inc_dec, grid) "Total dummy energy generation/consumption in g over the simulation (MWh)."
163
164
    r_qResDemand(restype, up_down, group, f, t) "Dummy to decrease demand for a reserve (MW) before reserve commitment"
    r_qResMissing(restype, up_down, group, f, t) "Dummy to decrease demand for a reserve (MW) after reserve commitment"
165
    r_groupTotalqResDemand(restype, up_down, group) "Total dummy reserve provisions in the group over the simulation"
166
    r_qCapacity(grid, node, f, t) "Dummy capacity to ensure capacity margin equation feasibility (MW)"
167
168
    r_solveStatus(t, solve_info) "Information about the solve"

Topi Rasku's avatar
Topi Rasku committed
169
; // END PARAMETER DECLARATION
170

171
172
Scalar r_realizedLast "Order of last realised time step";

173
174
* --- Initialize a few of the results arrays, required by model structure -----

175
Option clear = r_totalObj;
176
177
Option clear = r_state;
Option clear = r_online;
178
Option clear = r_reserve;
179
180
Option clear = r_resTransferRightward;
Option clear = r_resTransferLeftward;
181
182
Option clear = r_gen;
Option clear = r_realizedLast;
Niina Helistö's avatar
Niina Helistö committed
183
184
Option clear = r_startup;
Option clear = r_shutdown;
Niina Helistö's avatar
Niina Helistö committed
185
186
Option clear = r_invest;
Option clear = r_investTransfer;
187
Option clear = r_qResDemand;
188
Option clear = r_resDemandLargestInfeedUnit;
189

190
191
192
193
* =============================================================================
* --- Diagnostics Results Arrays ----------------------------------------------
* =============================================================================

194
195
// Only include these if '--diag=yes' given as a command line argument
$iftheni.diag '%diag%' == yes
196
Parameters
197
198
    d_cop(unit, f, t) "Coefficients of performance of conversion units"
    d_eff(unit, f, t) "Efficiency of generation units using fuel"
199
    d_capacityFactor(flow, node, s, f, t) "Diagnostic capacity factors (accounting for GAMS plotting error)"
200
    d_nodeState(grid, node, param_gnBoundaryTypes, s, f, t) "Diagnostic temperature forecasts (accounting for GAMS plotting error)"
201
    d_influx(grid, node, s, f, t) "Diagnostic influx forecasts (accounting for GAMS plotting error)"
202
    d_state(grid, node, scenario, f, t) "Diagnostic state results in each scenario"
203
    d_ts_scenarios(timeseries, *, node, scenario, f, t) "Diagnostic time series values in scenarios"
204
;
205
$endif.diag