Commit 77962fc9 authored by Erkka Rinne's avatar Erkka Rinne
Browse files

Merge branch 'dev'

parents 527df85b 9fc666c6
......@@ -7,11 +7,10 @@
225?/
*.put
*.log
*.gchf
# Backbone
Backbone.txt
input/
output/
EnsemblesAndYears.xlsx
Backbone.dat
diffile.gdx
......
......@@ -25,10 +25,10 @@ Created by:
- Based on Stochastic Model Predictive Control method [1].
- Enables multiple different models (m) to be implemented by changing
the temporal structure of the model.
the temporal structure of the model. (MULTI-MODEL RUNS TO BE IMPLEMENTED)
- Time steps (t) can vary in length.
- Short term forecast stochasticity (f) and longer term statistical uncertainty (s).
- Can handle ramp based dispatch in addition to energy blocks.
- Can handle ramp based dispatch in addition to energy blocks. (TO BE IMPLEMENTED)
GAMS command line arguments
......@@ -38,17 +38,23 @@ GAMS command line arguments
with all symbols as well as a gdx file for each solution containing
model parameters, variables and equations.
--diag=[yes|no]
Switch on/off diagnostics. Writes some additional diagnostic results in
'results.gdx' about data updates and efficiency approximations.
--dummy=[yes|no]
Do not solve the model, just do preliminary calculations.
For testing purposes.
--<name of model parameter>=<value>
Set model parameter value. See file inc/setting_sets.gms for available
parameters.
--penalty=<value>
Changes the value of the penalty cost. Default penalty value is 1e9
if not provided.
--input_dir=<path>
Directory to read input from. Defaults to './input'.
--<name of model feature>=[yes|no]
Switch model features on/off. See file inc/setting_sets.gms for available
features.
--output_dir=<path>
Directory to write output to. Defaults to './output'.
References
......@@ -60,6 +66,12 @@ References
==========================================================================
$offtext
* Default values for input and output dir
$if not set input_dir $setglobal input_dir 'input'
$if not set output_dir $setglobal output_dir 'output'
* Make sure output dir exists
$if not dexist %output_dir% $call 'mkdir %output_dir%'
* Activate end of line comments and set comment character to '//'
$oneolcom
......@@ -67,78 +79,84 @@ $eolcom //
$onempty // Allow empty data definitions
* Output file streams
files log /''/, gdx, f_info /'output\info.txt'/;
files log /''/, gdx, f_info /'%output_dir%/info.txt'/;
* Include options file to control the solver
$if exist 'input\1_options.gms' $include 'input\1_options.gms';
$include '%input_dir%/1_options.gms';
* === Libraries ===============================================================
$libinclude scenred2
* === Definitions, sets, parameters and input data=============================
$include 'inc\1a_definitions.gms' // Definitions for possible model settings
$include 'inc\1b_sets.gms' // Set definitions used by the models
$include 'inc\1c_parameters.gms' // Parameter definitions used by the models
$include 'inc\1d_results.gms' // Parameter definitions for model results
$include 'inc\1e_inputs.gms' // Load input data
$include 'inc/1a_definitions.gms' // Definitions for possible model settings
$include 'inc/1b_sets.gms' // Set definitions used by the models
$include 'inc/1c_parameters.gms' // Parameter definitions used by the models
$include 'inc/1d_results.gms' // Parameter definitions for model results
$include 'inc/1e_inputs.gms' // Load input data
* === Variables and equations =================================================
$include 'inc\2a_variables.gms' // Define variables for the models
$include 'inc\2b_eqDeclarations.gms' // Equation declarations
$ifthen exist 'input\2c_alternative_objective.gms' // Objective function - either the default or an alternative from input files
$$include 'input\2c_alternative_objective.gms';
$include 'inc/2a_variables.gms' // Define variables for the models
$include 'inc/2b_eqDeclarations.gms' // Equation declarations
$ifthen exist '%input_dir%/2c_alternative_objective.gms' // Objective function - either the default or an alternative from input files
$$include '%input_dir%/2c_alternative_objective.gms';
$else
$$include 'inc\2c_objective.gms'
$$include 'inc/2c_objective.gms'
$endif
$include 'inc\2d_constraints.gms' // Define constraint equations for the models
$ifthen exist 'input/2e_additional_constraints.gms'
$$include 'input/2e_additional_constraints.gms' // Define additional constraints from the input data
$include 'inc/2d_constraints.gms' // Define constraint equations for the models
$ifthen exist '%input_dir%/2e_additional_constraints.gms'
$$include '%input_dir%/2e_additional_constraints.gms' // Define additional constraints from the input data
$endif
* === Model definition files ==================================================
$include 'defModels\schedule.gms'
$include 'defModels\building.gms'
$include 'defModels\invest.gms'
$include 'defModels/schedule.gms'
$include 'defModels/building.gms'
$include 'defModels/invest.gms'
// Load model input parameters
$include 'input\modelsInit.gms'
$include '%input_dir%/modelsInit.gms'
* === Simulation ==============================================================
$include 'inc\3a_periodicInit.gms' // Initialize modelling loop
$include 'inc/3a_periodicInit.gms' // Initialize modelling loop
loop(modelSolves(mSolve, tSolve),
solveCount = solveCount + 1;
$$include 'inc\3b_inputsLoop.gms' // Read input data that is updated within the loop
$$include 'inc\3c_periodicLoop.gms' // Update modelling loop
$$include 'inc\3d_setVariableLimits.gms' // Set new variable limits (.lo and .up)
$$include 'inc\3e_solve.gms' // Solve model(s)
$$include 'inc\3f_afterSolve.gms' // Post-processing variables after the solve
$$include 'inc\4a_outputVariant.gms' // Store results from the loop
$$include 'inc/3b_periodicLoop.gms' // Update modelling loop
$$include 'inc/3c_inputsLoop.gms' // Read input data that is updated within the loop
$$include 'inc/3d_setVariableLimits.gms' // Set new variable limits (.lo and .up)
$iftheni.dummy not %dummy% == 'yes'
$$include 'inc/3e_solve.gms' // Solve model(s)
$$include 'inc/3f_afterSolve.gms' // Post-processing variables after the solve
$$include 'inc/4a_outputVariant.gms' // Store results from the loop
$endif.dummy
$iftheni.debug '%debug%' == 'yes'
putclose gdx;
put_utility 'gdxout' / 'output\' mSolve.tl:0 '-' tSolve.tl:0 '.gdx';
put_utility 'gdxout' / '%output_dir%/' mSolve.tl:0 '-' tSolve.tl:0 '.gdx';
execute_unload
$$include defOutput\debugSymbols.inc
$$include defOutput/debugSymbols.inc
;
$endif.debug
if(execError, put log "!!! Errors encountered: " execError:0:0);
);
$if exist 'input\3z_modelsClose.gms' $include 'input\3z_modelsClose.gms';
$if exist '%input_dir%/3z_modelsClose.gms' $include '%input_dir%/3z_modelsClose.gms';
* === Output ==================================================================
$echon "'version' " > 'version'
$call 'git describe --dirty=+ --always >> version'
$include 'inc\4b_outputInvariant.gms'
$include 'inc\4c_outputQuickFile.gms'
$ifi not %dummy% == 'yes'
$include 'inc/4b_outputInvariant.gms'
$include 'inc/4c_outputQuickFile.gms'
* Post-process results
$if exist 'input\4d_postProcess.gms' $include 'input\4d_postProcess.gms'
$if exist '%input_dir%/4d_postProcess.gms' $include '%input_dir%/4d_postProcess.gms'
execute_unload 'output\results.gdx',
$$include 'defOutput\resultSymbols.inc'
execute_unload '%output_dir%/results.gdx',
$$include 'defOutput/resultSymbols.inc'
;
*$ifi '%debug%' == 'yes' execute_unload 'output\debug.gdx';
execute_unload 'output\debug.gdx';
*$ifi '%debug%' == 'yes' execute_unload 'output/debug.gdx';
execute_unload '%output_dir%/debug.gdx';
if(errorcount > 0, abort errorcount);
* === THE END =================================================================
# Changelog
All notable changes to this project will be documented in this file.
## [Unreleased]
### Added
- New model setting `dataLength` to set the length of time series data before it is
recycled. Warn if this is not defined and automatically calculated from data.
- Command line arguments '--input_dir=<path>' and '--ouput_dir=<path' to set
input and output directories, respectively.
- Added sample dimension to most variables and equations (excl. investments).
Samples can now be used as long-term scenario alternatives (for e.g. hydro scehduling)
- Number of parallel samples can be reduced using SCENRED2. Activate with active('scenRed')
and set parameters in modelsInit.
### Changed
- Automatic calculation of parameter `dt_circular` takes into account time steps
only from `t000001` onwards.
### Fixed
- Calculation of parameter `df_central`
- Readability of some displayed messages
## 1.0 - 2018-09-12
### Changed
- Major updates to data structures etc.
[Unreleased]: https://gitlab.vtt.fi/backbone/backbone/compare/v1.0...dev
......@@ -22,6 +22,7 @@ Backbone has been designed with a modular structure, making it easier to change
* 1c_parameters.gms - Contains the parameter definitions used by the models.
* 1d_results.gms - Contains definitions for the model results.
* 1e_inputs.gms - Contains instructions on how to load input data, as well as forms a lot of helpful sets based on said data, for example in order to facilitate writing the constraints.
* 1e_scenChanges.gms - Inside input.gms - reads additional changes for scenarios (Sceleton Titan can use these)
* 2a_variables.gms - Contains variable definitions used by the models.
* 2b_eqDeclarations.gms - Contains equation declarations for the models.
* 2c_objective.gms - Contains the objective function definition.
......@@ -40,7 +41,7 @@ Backbone has been designed with a modular structure, making it easier to change
Most of these files are under *\inc* in the Backbone folder, except for the model definition files being housed under *\defModels*. Other than the abovementioned files, a few key input files are required for Backbone to work. These are assumed to be found under *\input* and are briefly described below.
* inputData.gdx - Contains most of the input data about the system to be modelled.
* 1_options.gms - Contains options to control the solver. Not required but included if exists.
* 1_options.gms - Contains options to control the solver.
* timeAndSamples.inc - Contains definitions for the time, forecast and sample index ranges.
* modelsInit.gms - Contains model parameters for the solve (or a link to a template under *\defModels* to be used). Useful for any additional GAMS scripting.
......
......@@ -23,14 +23,17 @@ Model building /
q_obj
q_balance
* q_resDemand
* q_resDemandLargestInfeedUnit
// Unit Operation
q_maxDownward
q_maxUpward
* q_reserveProvision
* q_startup
* q_startuptype
* q_onlineLimit
* q_onlineMinUptime
* q_onlineCyclic
* q_minDown
* q_genRamp
* q_genRampChange
......@@ -50,6 +53,8 @@ Model building /
q_transferLeftwardLimit
* q_resTransferLimitRightward
* q_resTransferLimitLeftward
* q_reserveProvisionRightward
* q_reserveProvisionLeftward
// State Variables
q_stateSlack
......@@ -68,7 +73,7 @@ Model building /
* q_energyShareMax
* q_energyShareMin
$ifthen exist 'input/building_additional_constraints.gms'
$$include 'input/building_additional_constraints.gms' // Declare additional constraints from the input data
$ifthen exist '%input_dir%/building_additional_constraints.gms'
$$include '%input_dir%/building_additional_constraints.gms' // Declare additional constraints from the input data
$endif
/;
......@@ -48,7 +48,7 @@ if (mType('building'),
ms_central('building', 's000') = yes;
// Define time span of samples
msStart('building', 's000') = mSettings('building', 't_start');
msStart('building', 's000') = 1;
msEnd('building', 's000') = msStart('building', 's000') + mSettings('building', 't_horizon');
// Define the probability (weight) of samples
......
......@@ -23,16 +23,19 @@ Model invest /
q_obj
q_balance
q_resDemand
q_resDemandLargestInfeedUnit
// Unit Operation
q_maxDownward
q_maxUpward
q_reserveProvision
q_startshut
q_startuptype
q_onlineOnStartUp
q_offlineAfterShutDown
q_onlineLimit
q_onlineMinUptime
q_onlineCyclic
q_genRamp
q_rampUpLimit
q_rampDownLimit
......@@ -52,6 +55,8 @@ Model invest /
q_transferLeftwardLimit
q_resTransferLimitRightward
q_resTransferLimitLeftward
q_reserveProvisionRightward
q_reserveProvisionLeftward
// State Variables
q_stateSlack
......@@ -70,7 +75,7 @@ Model invest /
q_energyShareMax
q_energyShareMin
$ifthen exist 'input/invest_additional_constraints.gms'
$$include 'input/invest_additional_constraints.gms' // Declare additional constraints from the input data
$ifthen exist '%input_dir%/invest_additional_constraints.gms'
$$include '%input_dir%/invest_additional_constraints.gms' // Declare additional constraints from the input data
$endif
/;
......@@ -48,11 +48,11 @@ if (mType('invest'),
ms_central('invest', 's000') = yes;
// Define time span of samples
msStart('invest', 's000') = mSettings('invest', 't_start');
msStart('invest', 's000') = 1;
msEnd('invest', 's000') = msStart('invest', 's000') + 168;
msStart('invest', 's001') = mSettings('invest', 't_start') + 18*168;
msStart('invest', 's001') = 1 + 18*168;
msEnd('invest', 's001') = msStart('invest', 's001') + 168;
msStart('invest', 's002') = mSettings('invest', 't_start') + 35*168;
msStart('invest', 's002') = 1 + 35*168;
msEnd('invest', 's002') = msStart('invest', 's002') + 168;
// Define the probability (weight) of samples
......
......@@ -23,16 +23,19 @@ Model schedule /
q_obj
q_balance
q_resDemand
q_resDemandLargestInfeedUnit
// Unit Operation
q_maxDownward
q_maxUpward
* q_reserveProvision
q_startshut
q_startuptype
q_onlineLimit
q_onlineOnStartUp
q_offlineAfterShutDown
q_onlineMinUptime
* q_onlineCyclic
q_genRamp
q_rampUpLimit
q_rampDownLimit
......@@ -52,6 +55,8 @@ Model schedule /
q_transferLeftwardLimit
q_resTransferLimitRightward
q_resTransferLimitLeftward
* q_reserveProvisionRightward
* q_reserveProvisionLeftward
// State Variables
q_stateSlack
......@@ -61,8 +66,8 @@ Model schedule /
q_boundCyclic
// Policy
* q_inertiaMin
* q_instantaneousShareMax
q_inertiaMin
q_instantaneousShareMax
q_constrainedOnlineMultiUnit
* q_capacityMargin
* q_constrainedCapMultiUnit
......@@ -70,8 +75,8 @@ Model schedule /
* q_energyShareMax
* q_energyShareMin
$ifthen exist 'input/schedule_additional_constraints.gms'
$$include 'input/schedule_additional_constraints.gms' // Declare additional constraints from the input data
$ifthen exist '%input_dir%/schedule_additional_constraints.gms'
$$include '%input_dir%/schedule_additional_constraints.gms' // Declare additional constraints from the input data
$endif
/;
......@@ -32,6 +32,9 @@ if (mType('schedule'),
mSettings('schedule', 't_horizon') = 8760; // How many active time steps the solve contains (aggregation of time steps does not impact this, unless the aggregation does not match)
mSettings('schedule', 't_jump') = 3; // How many time steps the model rolls forward between each solve
// Define length of data for proper circulation
mSettings('schedule', 'dataLength') = 8760;
* =============================================================================
* --- Model Time Structure ----------------------------------------------------
* =============================================================================
......@@ -41,6 +44,9 @@ if (mType('schedule'),
// Number of samples used by the model
mSettings('schedule', 'samples') = 1;
// Sample length of stocahstic data
mSettings('schedule', 'sampleLength') = mSettings('schedule', 'dataLength');
// Define Initial and Central samples
ms_initial('schedule', s) = no;
ms_initial('schedule', 's000') = yes;
......@@ -48,13 +54,33 @@ if (mType('schedule'),
ms_central('schedule', 's000') = yes;
// Define time span of samples
msStart('schedule', 's000') = mSettings('schedule', 't_start');
msStart('schedule', 's000') = 1;
msEnd('schedule', 's000') = msStart('schedule', 's000') + mSettings('schedule', 't_horizon');
// If using long-term samples, uncomment
//msEnd('schedule', 's000') = msStart('schedule', 's000')
// + mSettings('schedule', 't_forecastLengthUnchanging');
//loop(s $(ord(s) > 1),
// msStart('schedule', s) = msStart('schedule', 's000')
// + mSettings('schedule', 't_forecastLengthUnchanging');
// msEnd('schedule', s) = msStart('schedule', 's000')
// + mSettings('schedule', 't_horizon');
//);
// Define the probability (weight) of samples
p_msProbability('schedule', s) = 0;
p_msProbability('schedule', 's000') = 1;
// Define which nodes use long-term samples
loop(gn(grid, node)$sameas(grid, 'hydro'),
//longtermSamples('hydro', node, 'ts_influx') = yes;
//longtermSamples('hydro', node, 'minSpill') = yes;
);
loop(flowNode(flow, node)$sameas(flow, 'wind'),
//longtermSamples('wind', node, 'ts_cf') = yes;
);
* --- Define Time Step Intervals ----------------------------------------------
// Define the duration of a single time-step in hours
......@@ -84,11 +110,12 @@ if (mType('schedule'),
mSettings('schedule', 't_forecastLengthUnchanging') = 36; // Length of forecasts in time steps - this does not decrease when the solve moves forward (requires forecast data that is longer than the horizon at first)
mSettings('schedule', 't_forecastLengthDecreasesFrom') = 168; // Length of forecasts in time steps - this decreases when the solve moves forward until the new forecast data is read (then extends back to full length)
mSettings('schedule', 't_forecastJump') = 24; // How many time steps before new forecast is available
mSettings('schedule', 't_improveForecast') = 0; // Number of time steps ahead of time that the forecast is improved on each solve.
mTimeseries_loop_read('schedule', 'ts_reserveDemand') = no;
mTimeseries_loop_read('schedule', 'ts_unit') = no;
mTimeseries_loop_read('schedule', 'ts_effUnit') = no;
mTimeseries_loop_read('schedule', 'ts_effGroupUnit') = no;
* mTimeseries_loop_read('schedule', 'ts_effUnit') = no; // THESE ARE CURRENTLY DISABLED, ENABLE AT OWN RISK
* mTimeseries_loop_read('schedule', 'ts_effGroupUnit') = no; // THESE ARE CURRENTLY DISABLED, ENABLE AT OWN RISK
mTimeseries_loop_read('schedule', 'ts_influx') = no;
mTimeseries_loop_read('schedule', 'ts_cf') = no;
mTimeseries_loop_read('schedule', 'ts_reserveDemand') = no;
......@@ -109,13 +136,18 @@ if (mType('schedule'),
p_mfProbability('schedule', 'f02') = 0.6;
p_mfProbability('schedule', 'f03') = 0.2;
// Define active model features
active('schedule', 'storageValue') = yes;
* =============================================================================
* --- Model Features ----------------------------------------------------------
* =============================================================================
// Define active model features
active('schedule', 'storageValue') = yes;
active('schedule', 'scenRed') = no;
mSettings('schedule', 'red_num_leaves') = 10; // Desired number of long-term scenarios
mSettings('schedule', 'red_percentage') = 0; // Scenario reduction percentage
* --- Define Reserve Properties -----------------------------------------------
// Define whether reserves are used in the model
......
......@@ -57,11 +57,13 @@ p_uStartup
p_u_maxOutputInLastRunUpInterval
p_u_runUpTimeIntervals
dt_toStartup
p_ut_runUp
p_uCounter_runUpMin
p_uCounter_runUpMax
p_u_maxOutputInFirstShutdownInterval
p_u_shutdownTimeIntervals
dt_toShutdown
p_ut_shutdown
p_uCounter_shutdownMin
p_uCounter_shutdownMax
* Variables
v_obj
......@@ -101,6 +103,7 @@ v_invest_MIP
q_onlineOnStartUp
q_offlineAfterShutDown
q_onlineMinUptime
q_onlineCyclic
q_genRamp
q_rampUpLimit
q_rampDownLimit
......
......@@ -128,6 +128,7 @@ r_uTotalShutdown
// Reserve provision results required for model structure !!!!!!!!!!!!!!!!!!!!!
r_reserve
r_reserve2Reserve
r_resTransferRightward
r_resTransferLeftward
......@@ -150,14 +151,19 @@ r_qGen
r_gnTotalqGen
r_gTotalqGen
r_qResDemand
r_qResMissing
r_nTotalqResDemand
r_qCapacity
r_solveStatus
// Diagnostics
$iftheni.diag '%diag%' == yes
d_cop
d_eff
d_capacityFactor
d_nodeState
d_influx
$endif.diag
// Metadata and settings
metadata
......
......@@ -49,10 +49,15 @@ Sets
t_forecastLengthDecreasesFrom, // Length of forecasts in time steps - this decreases when the solve moves forward until the new forecast data is read (then extends back to full length)
t_forecastStart, // Time step for first reading the forecasts (not necessarily t_start)
t_forecastJump, // Number of time steps between each update of the forecasts
t_improveForecast "Number of time steps ahead of time on which the forecast is improved on each solve"
sampleLength "Length of sample in time steps for creating stocahstic scenarios from time series data"
// Features
t_trajectoryHorizon, // Length of the horizon when start-up and shutdown trajectories are considered (in time steps)
t_initializationPeriod // Number of time steps in the beginning of the simulation which are solved but the results of which are not stored
t_initializationPeriod, // Number of time steps in the beginning of the simulation which are solved but the results of which are not stored
dataLength, // The maximum number of time steps in any input data time series (recommended for correctly circulating data)
red_num_leaves "Desired number of preserved scenarios or leaves (SCENRED)"
red_percentage "Desired relative distance (accuracy) of scenario reduction (SCENRED)"
/
// Solve info
......@@ -135,12 +140,13 @@ Sets
// Other Features
feature "Set of optional model features" /
findStorageStart "Solve for optimal storage start levels"
* findStorageStart "Solve for optimal storage start levels" // NOT IMPLEMENTED
storageValue "Use storage value instead of fixed control"
storageEnd "Expected storage end levels greater than starting levels"
addOn "Use StoSSch as a storage add-on to a larger model"
extraRes "Use extra tertiary reserves for error in elec. load during time step"
rampSched "Use power based scheduling"
* storageEnd "Expected storage end levels greater than starting levels" // NOT IMPLEMENTED
* addOn "Use StoSSch as a storage add-on to a larger model" // NOT IMPLEMENTED
* extraRes "Use extra tertiary reserves for error in elec. load during time step" // NOT IMPLEMENTED
* rampSched "Use power based scheduling" // PARTIALLY IMPLEMENTED
scenRed "Reduce number of long-tem scenarios using GAMS SCENRED2"
/
* --- Set to declare time series that will be read between solves ------------------------------------------------------
......@@ -179,18 +185,8 @@ Parameter params(*) /
$if exist 'params.inc' $include 'params.inc'
/;
// Activate model features if found
Set active(mType, feature) "Set membership tells active model features" /
$if exist 'features.inc' $include 'features.inc'
/;
// Parse command line options and store values for features
$if set findStorageStart active('findStorageStart') = %findStorageStart%;
$if set storageValue active('storageValue') = %storageValue%;
$if set storageEnd active('storageEnd') = %storageEnd%;
$if set addOn active('addOn') = %addOn%;
$if set extraRes active('extraRes') = %extraRes%;
$if set rampSched active('rampSched') = %rampSched%;
// Features
Set active(mType, feature) "Set membership tells active model features";
* =============================================================================
* --- Parameter Set Definitions -----------------------------------------------
......@@ -208,8 +204,6 @@ param_gn "Possible parameters for grid, node" /
boundEnd "A flag to bound last t in each solve based on the reference constant or time series"
boundAll "A flag to bound the state to the reference in all time steps"
boundStartToEnd "Force the last states to equal the first state"
boundCyclic "A flag to impose cyclic bounds for the first and the last states within a sample"
boundCyclicBetweenSamples "A flag to impose cyclic bounds for the last and first states between samples"
forecastLength "Length of forecasts in use for the node (hours). After this, the node will use the central forecast."
capacityMargin "Capacity margin used in invest mode (MW)"
/
......@@ -250,13 +244,13 @@ param_gnn "Set of possible data parameters for grid, node, node (nodal interconn
param_gnu "Set of possible data parameters for grid, node, unit" /
maxGen "Maximum output capacity (MW)"
maxCons "Maximum loading capacity (MW)"
useInitialGeneration "A flag to indicate whether to fix generation for the first time step (binary)"
initialGeneration "Initial generation/consumption of the unit in the first time step (MW)"
conversionFactor "Conversion factor for inputs or outputs (for changing the unit of measurement)"
doNotOutput "Flag for inputs that are not included in the output commodities"
cV "Reduction in primary output when increasing secondary output, e.g. reduction of electricity generation due to heat generation in extraction CHP (MWh_e/MWh_h)"
maxRampUp "Speed to ramp up (p.u./min)"
maxRampDown "Speed to ramp down (p.u./min)"
rampUpCost "Wear and tear cost of ramping up (EUR/MW)" // redundant
rampDownCost "Wear and tear cost of ramping down (EUR/MW)" // redundant
upperLimitCapacityRatio "Ratio of the upper limit of the node state and the unit capacity investment ([v_state]/MW)"
unitSizeGen "Output capacity of one subunit for integer investments (MW)"
unitSizeCons "Loading capacity of one subunit for integer investments (MW)"
......@@ -278,8 +272,8 @@ param_unit "Set of possible data parameters for units" /
outputCapacityTotal "Output capacity of the unit, calculated by summing all the outputs together by default, unless defined in data"
unitOutputCapacityTotal "Output capacity of the unit, calculated by summing all the subunit output sizes together by default"
availability "Availability of given energy conversion technology (p.u.)"
useInitialOnlineStatus "A flag to fix the online status of a unit for the first time step"
initialOnlineStatus "Initial online status of the unit in the first time step (binary)"
useInitialOnlineStatus "A flag to fix the online status of a unit for the first time step (binary)"
initialOnlineStatus "Initial online status of the unit in the first time step (0-1)"
omCosts "Variable operation and maintenance costs (EUR/MWh)"
startCostCold "Variable start-up costs for cold starts excluding fuel costs (EUR/MW)"
startCostWarm "Variable start-up costs for warm starts excluding fuel costs (EUR/MW)"
......@@ -306,11 +300,17 @@ 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"
lastStepNotAggregated "Last time step when the unit is not yet aggregated - calculated in 3b_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"
/
param_eff "Parameters used for unit efficiency approximations" /
lb "Minimum load of the unit"
op "Maximum load of the unit, or the operating point of the SOS2 variable in the piecewise linear heat rate approximation (lambda)"
section "Operational heat rate of the unit, or the SOS2 variable in the piecewise linear heat rate approximation (lambda)"
slope "Heat rate parameter representing no-load fuel consumption"
/
param_fuel "Parameters for fuels" /
emissionIntensity "Intensity of emission from fuel (kg/MWh_fuel)"
main "Main fuel of the unit - unless input fuels defined as grids"