$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 .
$offtext
* =============================================================================
* --- Model Results Arrays ----------------------------------------------------
* =============================================================================
Parameters
* --- Cost Results ------------------------------------------------------------
// Total Objective Function
r_totalObj(t) "Total accumulated value of the objective function over all solves"
// Unit Operational Cost Components
r_gnuVOMCost(grid, node, unit, f, t) "Variable O&M costs for energy outputs (MEUR)"
r_gnuTotalVOMCost(grid, node, unit) "Total gnu VOM costs over the simulation (MEUR)"
r_uFuelEmissionCost(node, unit, f, t) "Unit fuel & emission costs for normal operation (MEUR)"
r_uTotalFuelEmissionCost(commodity, 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)"
r_uShutdownCost(unit, f, t) "Unit startup VOM, fuel, & emission costs (MEUR)"
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)"
r_gnTotalStateSlackCost(grid, node) "Total costs for state slacks over the simulation (MEUR)"
r_gnStorageValueChange(grid, node) "Change in storage values over the simulation (MEUR)"
r_gnnVariableTransCost(grid, node_,node, f, t) "Variable Transfer costs (MEUR)"
r_gnnTotalVariableTransCost(grid, node_, node) "Total Variable Transfer costs over the simulation (MEUR)"
// 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 /
// 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 /
// 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"
r_gnTotalRealizedNetCost(grid, node) "Total realized system costs in gn over the simulation, minus the increase in storage values (MEUR)"
r_gTotalRealizedCost(grid) "Total realized system costs in g over the simulation (MEUR)"
r_gTotalRealizedNetCost(grid) "Total realized system costs in g over the simulation, minus the increase in storage values (MEUR)"
r_totalRealizedCost "Total realized system costs over the simulation (MEUR)" / 0 /
r_totalRealizedNetCost "Total realized system costs over the simulation (MEUR)" / 0 /
* --- Node Results ------------------------------------------------------------
// State variable results, required for model structure
r_state(grid, node, f, t) "Node state at time step t"
// State variable slack values
r_stateSlack(grid, node, slack, f, t) "Note state slack at time step t"
// Energy transfer and spill variable results
r_transfer(grid, from_node, to_node, f, t) "Energy transfer (MW)"
r_transferRightward(grid, from_node, to_node, f, t) "Energy transfer from first node to second node (MW)"
r_transferLeftward(grid, to_node, from_node, f, t) "Energy transfer from second node to first node (MW)"
r_spill(grid, node, f, t) "Spill of energy from storage node during time interval (MWh)"
// Interesting node related results
r_balanceMarginal(grid, node, f, t) "Marginal values of the q_balance equation"
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)"
* --- Energy Generation/Consumption Results -----------------------------------
// Results required for model structure
r_gen(grid, node, unit, f, t) "Energy generation for a unit (MW)"
r_gen_gnUnittype(grid, node, unittype) "Energy generation for each unittype in each node (MWh)"
// Fuel use results
r_fuelUse(node, unit, f, t) "Fuel use of units"
r_genFuel(grid, node, *, f, t) "Energy generation/consumption based on fuels / flows (MW)"
r_genUnittype(grid, node, unittype, f, t) "Energy generation/consumption for each unittype (MW)"
r_gnTotalGenFuel(grid, node, commodity) "Total energy generation in gn per fuel over the simulation (MWh)"
r_gnTotalGenFuelShare(grid, node, commodity) "Total energy generation fuel consumption gn/g share"
r_gTotalGenFuel(grid, commodity) "Total energy generation in g per fuel over the simulation (MWh)"
r_totalGenFuel(commodity) "Total overall energy generation/consumption per fuel over the simulation (MWh)"
// 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
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)"
r_gnTotalConsumptionShare(grid, node) "Total consumption gn/g share"
r_gTotalConsumption(grid) "Total consumption of energy in g over the simulation (MWh)"
* --- Emissions Results -------------------------------------------------------
// Unit level emissions
r_emissions (node, emission, unit, f, t) "Emissions from units (tCO2)"
// Emission sums
r_nuTotalEmissions (node, unit, emission) "node unit total emissions (tCO2)"
r_nTotalEmissions(node, emission) "node total emissions (tCO2)"
r_uTotalEmissions(unit, emission) "unit total emissions (tCO2)"
r_totalEmissions (emission) "Total emissions (tCO2)"
* --- Unit Online State Results -----------------------------------------------
// Online results required for model structure
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"
// Interesting unit online results
r_uTotalOnline(unit) "Total online sub-unit-hours of units over the simulation"
r_uTotalOnlinePerUnit(unit) "Total unit online hours per sub-unit over the simulation"
// 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"
* --- Reserve Provision Results -----------------------------------------------
// Reserve provision results required for model structure
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)"
// Interesting reserve results
r_resDemandMarginal(restype, up_down, group, f, t) "Marginal values of the q_resDemand equation"
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"
* --- Investment Results ------------------------------------------------------
// Interesting investment results
r_invest(unit) "Number/amount of invested sub-units"
r_investTransfer(grid, node, node, t) "Amount of invested transfer link capacity"
* --- Group results -----------------------------------------------------------
// gnTotalgen in units that belong to gnuGroups over the simulation
r_gnTotalGenGnuGroup(grid, node, group) "gnTotalGen in units that belong to gnuGroup (MWh)"
* --- 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)"
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)."
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"
r_groupTotalqResDemand(restype, up_down, group) "Total dummy reserve provisions in the group over the simulation"
r_qCapacity(grid, node, f, t) "Dummy capacity to ensure capacity margin equation feasibility (MW)"
r_solveStatus(t, solve_info) "Information about the solve"
; // END PARAMETER DECLARATION
Scalar r_realizedLast "Order of last realised time step";
* --- Initialize a few of the results arrays, required by model structure -----
Option clear = r_totalObj;
Option clear = r_state;
Option clear = r_online;
Option clear = r_reserve;
Option clear = r_resTransferRightward;
Option clear = r_resTransferLeftward;
Option clear = r_gen;
Option clear = r_realizedLast;
Option clear = r_startup;
Option clear = r_shutdown;
Option clear = r_invest;
Option clear = r_investTransfer;
Option clear = r_qResDemand;
Option clear = r_resDemandLargestInfeedUnit;
* =============================================================================
* --- Diagnostics Results Arrays ----------------------------------------------
* =============================================================================
// Only include these if '--diag=yes' given as a command line argument
$iftheni.diag '%diag%' == yes
Parameters
d_cop(unit, f, t) "Coefficients of performance of conversion units"
d_eff(unit, f, t) "Efficiency of generation units using fuel"
d_capacityFactor(flow, node, s, f, t) "Diagnostic capacity factors (accounting for GAMS plotting error)"
d_nodeState(grid, node, param_gnBoundaryTypes, s, f, t) "Diagnostic temperature forecasts (accounting for GAMS plotting error)"
d_influx(grid, node, s, f, t) "Diagnostic influx forecasts (accounting for GAMS plotting error)"
d_state(grid, node, scenario, f, t) "Diagnostic state results in each scenario"
d_ts_scenarios(timeseries, *, node, scenario, f, t) "Diagnostic time series values in scenarios"
;
$endif.diag