TIMESDoc Details

Download as pdf or txt
Download as pdf or txt
You are on page 1of 325

Energy Technology Systems Analysis Programme

http://www.iea-etsap.org/web/Documentation.asp

Documentation for the TIMES Model

PART II
April 2005

Authors:
Richard Loulou
Antti Lehtilä
Amit Kanudia
Uwe Remne
Gary Goldstein

1
General Introduction

This documentation is composed of thee Parts.

Part I comprises eight chapters constituting a general description of the TIMES paradigm,
with emphasis on the model’s general structure and its economic significance. Part I also
includes a simplified mathematical formulation of TIMES, a chapter comparing it to the
MARKAL model, pointing to similarities and differences, and chapters describing new
model options.

Part II comprise 7 chapters and constitutes a comprehensive reference manual intended


for the technically minded modeler or programmer looking for an in-depth understanding
of the complete model details, in particular the relationship between the input data and the
model mathematics, or contemplating making changes to the model’s equations. Part II
includes a full description of the sets, attributes, variables, and equations of the TIMES
model.

Part III describes the GAMS control statements required to run the TIMES model. GAMS
is a modeling language that translates a TIMES database into the Linear Programming
matrix, and then submits this LP to an optimizer and generates the result files. In addition
to the GAMS program, two model interfaces (VEDA-FE and VEDA-BE) are used to
create, browse, and modify the input data, and to explore and further process the model’s
results. The two VEDA interfaces are described in detail in their own user’s guides.

2
PART II: REFERENCE MANUAL

3
TABLE OF CONTENTS FOR PART II

1 INTRODUCTION ............................................................................................. 8
1.1 Basic notation and conventions ......................................................................................................... 8
1.2 GAMS modelling language and TIMES implementation ............................................................... 9

2 SETS ............................................................................................................. 10
2.1 Indexes (One-dimensional sets)....................................................................................................... 10
2.2 User input sets .................................................................................................................................. 15
2.2.1 Definition of the Reference Energy System (RES) .................................................................. 15
2.2.1.1 Processes.............................................................................................................................. 16
2.2.1.2 Commodities ........................................................................................................................ 20
2.2.2 Definition of the time structure ................................................................................................ 20
2.2.2.1 Time horizon........................................................................................................................ 20
2.2.2.2 Timeslices ............................................................................................................................ 22
2.2.3 Multi-regional models .............................................................................................................. 23
2.2.4 Overview of all user input sets ................................................................................................. 26
2.3 Definition of internal sets ................................................................................................................ 32

3 PARAMETERS .............................................................................................. 38
3.1 User input parameters ..................................................................................................................... 38
3.1.1 Inter- and extrapolation of user input parameters ..................................................................... 38
3.1.2 Inheritance and aggregation of timesliced input parameters .................................................... 42
3.1.3 Overview of user input parameters ........................................................................................... 44
3.2 Internal parameters ....................................................................................................................... 107
3.3 Report parameters ......................................................................................................................... 118

4 VARIABLES ................................................................................................ 125


4.1 VAR_ACT(r,v,t,p,s) ....................................................................................................................... 128
4.2 VAR_BLND(r,ble,opr) .................................................................................................................. 129
4.3 VAR_CAP(r,t,p) ............................................................................................................................. 129
4.4 VAR_COMNET(r,t,c,s) ................................................................................................................. 129
4.5 VAR_COMPRD(r,t,c,s) ................................................................................................................. 129
4.6 VAR_DNCAP(r,t,p,u) .................................................................................................................... 129
4.7 VAR_ELAST(r,t,c,s,j,l) ................................................................................................................. 130
4.8 VAR_FLO(r,v,t,p,c,s) .................................................................................................................... 130
4.9 VAR_IRE(r,v,t,p,c,s,ie) .................................................................................................................. 130
4.10 VAR_NCAP(r,v,p) ......................................................................................................................... 131
4.11 VAR_OBJ(y0) and related variables ............................................................................................ 132
4.11.1 VAR_OBJR(r, y0)................................................................................................................... 132
4.11.2 INVCOST(r,y) ........................................................................................................................ 132
4.11.3 INVTAXSUB(r,y) .................................................................................................................. 132
4.11.4 INVDECOM(r,y) ................................................................................................................... 133
4.11.5 FIXCOST(r,y) ........................................................................................................................ 133
4.11.6 FIXTAXSUB(r,y) ................................................................................................................... 133
4.11.7 VARCOST(r,y) ...................................................................................................................... 133

4
4.11.8 ELASTCOST(r,y) .................................................................................................................. 133
4.11.9 LATEREVENUES(r,y) .......................................................................................................... 133
4.11.10 SALVAGE(r,y0) ..................................................................................................................... 133
4.12 VAR_SIN/SOUT(r,v,t,p,c,s) .......................................................................................................... 134
4.13 Variables used in User Constraints .............................................................................................. 134
4.13.1 VAR_UC(uc_n)...................................................................................................................... 134
4.13.2 VAR_UCR(uc_n,r)................................................................................................................. 135
4.13.3 VAR_UCT(uc_n,t) ................................................................................................................. 135
4.13.4 VAR_UCRT(uc_n,r,t) ............................................................................................................ 135
4.13.5 VAR_UCTS(uc_n,t,s) ............................................................................................................ 135
4.13.6 VAR_UCRTS(uc_n,r,t,s) ....................................................................................................... 135
4.13.7 VAR_UCSU(uc_n,t) .............................................................................................................. 135
4.13.8 VAR_UCSUS(uc_n,t,s) .......................................................................................................... 135
4.13.9 VAR_UCRSUS(r,uc_n,r,t,s) .................................................................................................. 135
4.13.10 VAR_UCRSU(uc_n,r,t) ......................................................................................................... 135

5 EQUATIONS ............................................................................................... 136


5.1 Notational conventions .................................................................................................................. 136
5.1.1 Notation for summations ........................................................................................................ 136
5.1.2 Notation for logical conditions ............................................................................................... 137
5.1.3 Using Indicator functions in arithmetic expressions............................................................... 137
5.2 Objective function EQ_OBJ ......................................................................................................... 138
5.2.1 Introduction and notation ....................................................................................................... 138
5.2.1.1 Notation relative to time .................................................................................................... 139
5.2.1.2 Other notation .................................................................................................................... 140
5.2.1.3 Reminder of some technology attribute names (each is indexed by t)............................... 140
5.2.1.4 Discounting option............................................................................................................. 140
5.2.1.5 Components of the Objective function .............................................................................. 140
5.2.2 Investment costs: INVCOST(y) ............................................................................................. 141
5.2.3 Taxes and subsidies on investments ....................................................................................... 148
5.2.4 Decommissioning (dismantling) capital costs: COSTDECOM(y) .......................................... 148
5.2.5 Fixed annual costs: FIXCOST(y), SURVCOST(y) ................................................................ 153
5.2.6 Annual taxes/tubsidies on capacity: FIXTAXSUB(Y) ........................................................... 160
5.2.7 Variable annual costs VARCOST(y), y ≤ EOH .................................................................... 160
5.2.8 Cost of demand reductions ELASTCOST(y) ......................................................................... 161
5.2.9 Salvage value: SALVAGE (EOH+1) ..................................................................................... 161
5.2.10 Late revenues from endogenous commodity recycling after EOH LATEREVENUE(y) ..... 169
5.2.11 The two discounting methods for annual payments ............................................................... 170
5.3 Constraints ..................................................................................................................................... 172
5.3.1 Equation: EQ_ACTFLO ......................................................................................................... 174
5.3.2 Equation EQ(l)_ACTBND ..................................................................................................... 175
5.3.3 Equation: EQ(l)_BLND.......................................................................................................... 176
5.3.4 Bound: BND_ELAST ............................................................................................................ 177
5.3.5 Equation: EQ(l)_BNDNET/PRD ........................................................................................... 178
5.3.6 Equation: EQ(l)_CAPACT ..................................................................................................... 179
5.3.7 Equation: EQ(l)_CPT ............................................................................................................. 184
5.3.8 Equation: EQ(l)_COMBAL ................................................................................................... 186
5.3.9 Equation: EQE_COMPRD ..................................................................................................... 195
5.3.10 Equation: EQ(l)_CUMNET/PRD ........................................................................................... 196
5.3.11 Equation EQ_DSCNCAP ...................................................................................................... 198
5.3.12 Equation: EQ_DSCONE ........................................................................................................ 199
5.3.13 Equation: EQ(l)_FLMRK ....................................................................................................... 200
5.3.14 Equation: EQ(l)_FLOBND .................................................................................................... 203
5.3.15 Equation: EQ(l)_FLOFR ........................................................................................................ 205
5.3.16 Equations related to exchanges (EQ_IRE, EQ_IREBND, EQ_XBND) ................................. 206
5.3.16.1 Equation EQ_IRE .............................................................................................................. 213
5.3.16.2 Equation: EQ(l)_IREBND ................................................................................................ 216
5.3.16.3 Equation: EQ(l)_XBND ................................................................................................... 219

5
5.3.17 Equations: EQ(l)_INSHR, EQ(l)_OUTSHR .......................................................................... 227
5.3.18 Equation: EQ_PEAK .............................................................................................................. 223
5.3.19 Equation: EQ_PTRANS ......................................................................................................... 226
5.3.20 Equation: EQ_STGTSS/IPS ................................................................................................... 229
5.3.20.1 EQ_SRGTSS: Storage between timeslices (including night-storage devices): ................. 230
5.3.20.2 EQ_STGIPS: Storage between periods ............................................................................. 231
5.3.21 Equations: EQ(l)_STGIN / EQ(l)_STGOUT ......................................................................... 232
5.3.22 User Constraints ..................................................................................................................... 233
5.3.22.1 Equation: EQ(l)_UC / EQE_UC........................................................................................ 247
5.3.22.2 Equation: EQ(l)_UCR / EQE_UCR .................................................................................. 248
5.3.22.3 Equation: EQ(l)_UCT / EQE_UCT ................................................................................... 249
5.3.22.4 Equation: EQ(l)_UCRT / EQE_UCRT ............................................................................. 250
5.3.22.5 Equation: EQ(l)_UCRTS / EQE_UCRTS ......................................................................... 251
5.3.22.6 Equation: EQ(l)_UCTS / EQE_UCTS .............................................................................. 252
5.3.22.7 Equation: EQ(l)_UCSU / EQE_UCSU ............................................................................. 260
5.3.22.8 Equation: EQ(l)_UCRSU / EQE_UCRSU ........................................................................ 262
5.3.22.9 Equation: EQ(l)_UCRSUS / EQE_UCRSU ...................................................................... 264
5.3.22.10 Equation: EQ(l)_UCSUS / EQE_UCSUS ....................................................................... 266
5.3.22.11 Equation: EQ(l)_UCSU / EQE_UCSU ........................................................................... 271
5.3.22.12 Equation: EQ(l)_UCRSU / EQE_UCRSU ...................................................................... 273
5.3.22.13 Equation: EQ(l)_UCRSUS / EQE_UCRSU .................................................................... 275
5.3.22.14 Equation: EQ(l)_UCSUS / EQE_UCSUS ....................................................................... 277

6 THE ENDOGENOUS TECHNOLOGICAL LEARNING (ETL) OPTION ...... 279


6.1 Sets, Switches and Parameters ...................................................................................................... 279
6.2 Variables ......................................................................................................................................... 285
6.2.1 VAR_CCAP(r,t,p) .................................................................................................................. 286
6.2.2 VAR_CCOST(r,t,p)................................................................................................................ 286
6.2.3 VAR_DELTA(r,t,p,k) ............................................................................................................ 287
6.2.4 VAR_IC(r,t,p) ........................................................................................................................ 287
6.2.5 VAR_LAMBD(r,t,p,k) ........................................................................................................... 288
6.3 Equations ........................................................................................................................................ 289
6.3.1 EQ_CC(r,t,p) .......................................................................................................................... 291
6.3.2 EQ_CLU(r,t,p)........................................................................................................................ 292
6.3.3 EQ_COS(r,t,p) ........................................................................................................................ 293
6.3.4 EQ_CUINV(r,t,p) ................................................................................................................... 295
6.3.5 EQ_DEL(r,t,p) ........................................................................................................................ 296
6.3.6 EQ_EXPE1(r,t,p,k)................................................................................................................. 297
6.3.7 EQ_EXPE2(r,t,p,k)................................................................................................................. 298
6.3.8 EQ_IC1(r,t,p).......................................................................................................................... 299
6.3.9 EQ_IC2(r,t,p).......................................................................................................................... 300
6.3.10 EQ_LA1(r,t,p,k) ..................................................................................................................... 301
6.3.11 EQ_LA2(r,t,p,k) ..................................................................................................................... 302
6.3.12 EQ_OBJSAL(r,cur) ................................................................................................................ 303
6.3.13 EQ_OBJINV(r,cur) ................................................................................................................ 304

7 THE TIMES CLIMATE MODULE ................................................................ 305


7.1 Formulation of the TIMES Climate Module ............................................................................... 305
7.1.1 Approach taken....................................................................................................................... 305
7.1.1.1 Concentrations (accumulation of CO2) ............................................................................. 306
7.1.1.2 Radiative forcing ............................................................................................................... 306
7.1.1.3 Temperature increase ......................................................................................................... 307
7.2 Input parameters of the Climate Module .................................................................................... 308
7.3 Climate related Variables .............................................................................................................. 310
7.3.1 VAR_CO2TOT(t) .................................................................................................................. 310
7.3.2 VAR_CO2ATM(t), VAR_CO2UP(t), VAR_CO2LOW(t) .................................................... 310

6
7.4 Climate Equations .......................................................................................................................... 310
7.4.1 Equation: EQ_CO2TOT ......................................................................................................... 310
7.4.2 Equation: EQ_CO2ATM ........................................................................................................ 311
7.4.3 Equation: EQ_CO2UP............................................................................................................ 312
7.4.4 Equation: EQ_CO2LOW ........................................................................................................ 313
7.4.5 Equation: EQ_MXCONC ....................................................................................................... 315
7.5 Reporting Parameters.................................................................................................................... 316
7.5.1 DT_FORC .............................................................................................................................. 316
7.5.2 DT_ATM ................................................................................................................................ 317
7.5.3 DT_LOW ............................................................................................................................... 318
7.6 Default values of the climate parameters ..................................................................................... 320
7.7 GAMS implementation .................................................................................................................. 321
7.7.1 Specification of parameters .................................................................................................... 321
7.7.2 Climate related Variables ....................................................................................................... 323
7.7.3 Equations ................................................................................................................................ 323
7.7.4 Example of use ....................................................................................................................... 324
7.7.5 Exporting results to VEDA4................................................................................................... 324
7.8 References for chapter 7 ................................................................................................................ 325

7
1 Introduction

The purpose of the Reference Manual is to lay out the full details of the TIMES model,
including data specification, internal data structures, and mathematical formulation of the
model’s Linear Program (LP) formulation, as well as the Mixed Integer Programming (MIP)
formulations required by some of its options. As such, it provides the TIMES
modeller/programmer with sufficiently detailed information to fully understand the nature and
purpose of the data components, model equations and variables. A solid understanding of the
material in this Manual is a necessary prerequisite for anyone considering making
programming changes in the TIMES source code.

The Reference Manual is organized as follows:


Chapter 1 Basic notation and conventions: lays the groundwork for understanding the
rest of the material in the Reference Manual;
Chapter 2 Sets: explains the meaning and role of various sets that identify how the
model components are grouped according to their nature (e.g. demand
devices, power plants, energy carriers, etc.) in a TIMES model;
Chapter 3 Parameters: elaborates the details related to the user-provided numerical data,
as well as the internally constructed data structures, used by the model
generator (and report writer) to derive the coefficients of the LP matrix (and
prepare the results for analysis);
Chapter 4 Variables: defines each variable that may appear in the matrix, both
explaining its nature and indicating how if fits into the matrix structure;
Chapter 5 Equations: states each equation in the model, both explaining its role, and
providing its explicit mathematical formulation;
Chapter 6 The User Constraints: explains the framework that may be employed by
modellers to formulate additional linear constraints, which are not part of the
generic constraint set of TIMES, without having to bother with any GAMS
programming;
Chapter 7 The Lumpy Investment facility, and
Chapter 8 The Endogenous Technological Learning capability.

1.1 Basic notation and conventions


To assist the reader, the following conventions are employed consistently throughout this
chapter:

• Sets, and their associated index names, are in lower and bold case, e.g., com is the set
of all commodities;
• Literals, explicitly defined in the code, are in upper case within single quotes, e.g.,
‘UP’ for upper bound;
• Parameters, and scalars (constants, i.e., un-indexed parameters) are in upper case, e.g.,
NCAP_AF for the availability factor of a technology;
• Variables are in upper case with a prefix of VAR_, e.g., VAR_ACT corresponds to the
activity level of a technology.
• Equations are in upper case with a prefix of EQ_ or EQ(l)_ with the placeholder (l)
denoting the equation type (l=E for a strict equality, l=L for an inequality with the left

8
hand side term being smaller or equal the right hand side term and l=G for an
inequality with the left hand side term being greater or equal the right hand side
term),e.g., EQ_COMBAL is the commodity balance constraint, and

1.2 GAMS modelling language and TIMES implementation


TIMES consists of generic variables and equations constructed from the specification of sets
and parameter values depicting an energy system for each distinct region in a model. To
construct a TIMES model, a preprocessor first translates all data defined by the modeller into
special internal data structures representing the coefficients of the TIMES matrix applied to
each variable of Chapter 4 for each equation of Chapter 5 in which the variable may appear.
This step is called Matrix Generation. Once the model is solved (optimised) a Report Writer
assembles the results of the run for analysis by the modeller. The matrix generation, report
writer and control files are written in GAMS 1 (the General Algebraic Modelling System), a
powerful high-level language specifically designed to facilitate the process of building large-
scale optimisation models. GAMS accomplishes this by relying heavily on the concepts of
sets, compound indexed parameters, dynamic looping and conditional controls, variables and
equations. Thus there is very a strong synergy between the philosophy of GAMS and the
overall concept of the RES specification embodied in TIMES making GAMS very well suited
to the TIMES paradigm.
Furthermore, by nature of its underlying design philosophy, the GAMS code is very
similar to the mathematical description of the equations provided in Chapter 5. Thus, the
approach taken to implement a TIMES model is to “massage” the input data by means of a
(rather complex) preprocessor that handles the necessary exceptions that need to be taken into
consideration to properly construct the matrix coefficients in a form ready to be applied to the
appropriate variables in the respective equations. GAMS also integrates seamlessly with a
wide range of commercially available optimisers that are charged with the task of solving the
actual TIMES linear (LP) or mixed integer (MIP) problems that represent the desired model.
This step is called the Solve or Optimisation step. CPLEX or XPRESS are the optimisers
most often employed to solve the TIMES LP and MIP formulations.
The standard TIMES formulation has optional features, such as lumpy investments and
endogenous technology learning. In addition, a modeller experienced in GAMS programming
and the details of the TIMES implementation can define additional equation modules or
report routine modules based on an extension mechanism, which allows the linkage of these
modules to the standard TIMES code in a flexible way (see PART III, chapter 3)
To build, run and analyse a TIMES model several software tools have been developed in
the past or are currently under development, so that the modeller does not need to provide the
input information needed to build a TIMES model directly in GAMS. These tools are the
model interfaces VEDA-FE, ANSWER-TIMES as well as the reporting and analysing tool
VEDA-BE.

1
GAMS A User’s Guide, A. Brooke, D. Kendrick, A. Meeraus, R. Raman, GAMS
Development Corporation, December 1998.
9
2 Sets
Sets are used in TIMES to group elements or combinations of elements with the purpose of
specifying qualitative characteristics of the energy system. One can distinguish between one-
dimensional and multi-dimensional sets. The former sets contain single elements, e.g. the set
prc contains all processes of the model, while the elements of multi-dimensional sets are a
combination of one-dimensional sets. An example for a multi-dimensional set is the set top,
which specifies for a process the commodities entering and leaving that process.
Two types of sets are employed in the TIMES framework: user input sets and internal sets.
User input sets are created by the user, and used to describe qualitative information and
characteristics of the depicted energy system. One can distinguish the following functions
associated with user input sets:
• definition of the elements or building blocks of the energy system model (i.e. regions,
processes, commodities),
• definition of the time horizon and the sub-annual time resolution,
• definition of special characteristics of the elements of the energy system.

In addition to these user sets, TIMES also generates its own internal sets. Internal sets
serve to both ensure proper exception handling (e.g., from what date is a technology available,
or in which time-slices is a technology permitted to operate), as well as sometimes just to
improve the performance or smooth the complexity of the actual model code.
In the following sections, the user input sets and the internal sets will be presented. A
special type of set is an one-dimensional set, also called index, which is needed to build multi-
dimensional sets or parameters. At the highest level of the one-dimensional sets are the master
or “domain” sets that define the comprehensive list of elements (e.g., the main building
blocks of the reference energy system such as the processes and commodities in all regions)
permitted at all other levels, with which GAMS performs complete domain checking, helping
to automatically ensure the correctness of set definition (for instance, if the process name used
in a parameter is not spelled correctly, GAMS will issue a warning). Therefore, before
elaborating on the various sets, the indexes used in TIMES are discussed.

2.1 Indexes (One-dimensional sets)


Indexes (also called one-dimensional sets) contain in most cases the different elements of the
energy model. A list of all indexes used in TIMES is given in Table 2. Examples of indexes
are the set prc containing all processes, the set c containing all commodities or the set all_reg
containing all regions of the model. Some of the one-dimensional sets are subsets of another
one-dimensional set, e.g., the set r comprising the so-called internal model regions is a subset
of the set all_reg which in addition also contains the so-called external model regions 2. To
express that the set r depends on the set all_reg, the master set all_reg is put in brackets after
the set name r: r(all_r).
The set cg comprises all commodity groups 3. Each commodity c is considered as a
commodity group with only one element the commodity itself. Thus the commodity set c is a
subset of the commodity group set cg.
Apart from indexes that are under user control, some indexes have fixed elements to serve
as indicators within sets and parameters and should not be modified by the user (Table 1). The
only exception to this rule is the set prc_grp: while the process groups IRE, NST, PRV,
2
The meaning and the role of internal and external regions is discussed in Section 2.2.
3
See Section 2.2.1 for a more in-depth treatment of commodity groups.
10
PRW, STG and STK are used within the code and must not be deleted, the other process
groups may be modified by the user.

Table 1: Sets with fixed elements


Set/Index name Description
bd(lim) Index of bound type; subset of the set lim having the internally fixed
elements ‘LO’, ‘UP’, ‘FX’.
com_type Indicator of commodity type; initialized to the elements DEM (demand),
NRG (energy), MAT (material), ENV (environment), FIN (financial), but
the user can define any list for com_type in MAPLIST.DEF with the
exception of the predefined elements DEM, ENV, FIN, MAT, NRG.
lim Index of limit types; internally fixed to the elements ‘LO’, ‘UP’, ‘FX’, ‘N’.
ie Export/import exchange index; internally fixed to the two elements: ‘IMP’
standing for import and ‘EXP’ standing for export.
io Input/Output index; internally fixed elements: ‘IN’, ‘OUT’; used in
combination with processes and commodities as indicator whether a
commodity enters or leaves a process.
prc_grp List of process groups; internally established in MAPLIST:DEF as:
CHP: combined heat and power plant
DISTR: distribution process
DMD: demand device
ELE: electricity producing technology excluding CHP
HPL: heat plant
MISC: miscellaneous
PRE: technology with energy output not falling in the group of
the other energy technologies
REF: refinery process
RENEW: renewable energy technology
XTRACT: extraction process.
The user may adjust this list to any disjoint groups desired. The following
groups are required by the model, therefore must not be deleted by the user:
IRE: inter-regional exchange process
PRV: technology with material output measured in volume units
PRW: technology with material output measured in weight units
NST: night (off-peak) storage process
STG: storage process
STK: stockpiling process.
tslvl Index of timeslice levels; internally fixed to the elements ‘ANNUAL’,
‘SEASON’, ‘WEEKLY’, ‘DAYNITE’.
uc_grptype Index of internally fixed key types of variables: = ‘ACT_’, ‘CAP_’,
‘COMPRD_’, ‘COMCON_’, ‘FLO_’, ‘IRE_’, ‘NCAP_’, used in
association with the user constraints.
uc_name List of internally fixed indicators for attributes able to be referenced as
coefficients in user constraints (e.g. the flow variable may be multiplied by
the attribute FLO_COST in a user constraint if desired): =
‘ACT_COST’, ‘ACT_BNDUP’, ‘ACT_BNDLO’, ‘ACT_BNDFX’,
‘CAP_BNDUP’, ‘CAP_BNDLO’, ‘CAP_BNDFX’, ‘GROWTH’,
‘FLO_COST’, ‘FLO_DELIV’, ‘FLO_SUB’, ‘FLO_TAX’,
‘NCAP_COST’, ‘NCAP_ITAX’, ‘NCAP_ISUB’.

11
Table 2: Indexes in TIMES
Related
Index 4 Aliases 5 Description
Indexes 6
age Index for age (number of years since installation) into
a parameter shaping curve; default elements 1-200.
all_r all_reg r All internal and external regions.
bd bnd_type lim Index of bound type; subset of lim, having the
internally fixed elements ‘LO’, ‘UP’, ‘FX’.
c com, cg User defined 7 list of all commodities in all regions;
com1, subset of cg.
com2,
com3
cg com_grp, c User defined list of all commodities and commodity
cg1, cg2, groups in all regions 8; each commodity itself is
cg3, cg4 considered a commodity group; initial elements are the
members of com_type.
com_typ Indicator of commodity type; initialized to the
e elements DEM (demand), NRG (energy), MAT
(material), ENV (environment), FIN (financial), but
the user can define any list for com_type in
MAPLIST.DEF with the exception of the predefined
elements DEM, ENV, FIN, MAT, NRG.
cur cur User defined list of currency units.
datayear y Years for which model input data are specified.
ie impexp Export/import exchange indicator; internally fixed =
‘EXP’ for exports and ‘IMP’ for imports.
io inout Input/Output indicator for defining whether a
commodity flow enters or leaves a process; internally
fixed = ‘IN’ for enters and ‘OUT’ for leaves.
j Indicator for elastic demand steps and sequence
number of the shape/multi curves; default elements 1-
50.
kp Index for “kink” points in ETL formulation; currently
limited to 1-6 {can be extended in <case>.run file by
including SET KP / 1*n /; for n-kink points.
lim lim_type, l, bd Index of limit types; internally fixed = ‘LO’, ‘UP’,
ll ‘FX’ and ‘N’.
p prc User defined list of all processes in all regions 9.

4
This column contains the names of the indexes as used in this document.
5
For programming reasons, alternative names (aliases) may exist for some indexes. This
information is only relevant for those users who are interested in gaining an understanding of
the underlying GAMS code.
6
This column refers to possible related indexes, e.g. the index c is a subset of the index
cg.
7
VEDA compiles the complete list from the union of the commodities defined in each
region.
8
VEDA complies the complete list from the union of the commodity groups defined in
each region.
9
VEDA complies the complete list from the union of the processes defined in each region.
12
Related
Index 4 Aliases 5 Description
Indexes 6
pastyear pyr modlyear,y Years for which past investments are specified;
pastyears must be before the beginning of the first
period.
prc_grp List of process groups; internally established in
MAPLIST:DEF as:
CHP: combined heat and power plant
DISTR: distribution process
DMD: demand device
ELE: electricity producing technology excluding
CHP
HPL: heat plant
MISC: miscellaneous
PRE: technology with energy output not falling
in the group of the other energy
technologies
REF: refinery process
RENEW: renewable energy technology
XTRACT: extraction process.

The user may adjust this list to any disjoint groups


desired. The following groups are required by the
model and therefore must not be deleted by the user:
IRE: inter-regional exchange process
PRV: technology with material output measured
in volume units
PRW: technology with material output measured
in weight units
NST: night (off-peak) storage process
STG: storage process
STK: stockpiling process.
r reg all_r Explicit regions within the area of study.
s all_ts, ts, Timeslice divisions of a year, at any of the tslvl levels.
s2, sl
t milestonyr, y Representative years for the model periods.
tt
teg p Technologies modelled with endogenous technology
learning.
tslvl Timeslice level indicator; internally fixed =
‘ANNUAL’, ‘SEASON’, ‘WEEKLY’, ‘DAYNITE’.
u units units_com, List of all units; maintained in the file UNITS.DEF.
units_cap,
units_act
uc_grpty Fixed internal list of the key types of variables: fixed =
pe ‘ACT_’, ‘CAP_’, ‘COMPRD_’, ‘COMCON_’,
‘FLO_’, ‘IRE_’, ‘NCAP_’.
uc_n User specified unique indicator for a user constraint.

13
Related
Index 4 Aliases 5 Description
Indexes 6
uc_name The list of indicators associated with various attributes
that can be referenced in user constraints to be applied
when deriving a coefficient (e.g. the flow variable may
be multiplied by the attribute FLO_COST to represent
expenditure associated with said flow in a user
constraint if desired): =
‘ACT_COST’, ‘ACT_BNDUP’, ‘ACT_BNDLO’,
‘ACT_BNDFX’, ‘CAP_BNDUP’, ‘CAP_BNDLO’,
‘CAP_BNDFX’, ‘GROWTH’, ‘FLO_COST’,
‘FLO_DELIV’, ‘FLO_SUB’, ‘FLO_TAX’,
‘NCAP_COST’, ‘NCAP_ITAX’, ‘NCAP_ISUB’.
unit List of capacity blocks that can be added in lumpy
investment option; default elements 0-100; the element
‘0’ describes the case when no capacity is added.
units_act u List of activity units; maintained in the file
UNITS.DEF.
units_cap u List of capacity units; maintained in the file
UNITS.DEF.
units_co u List of commodity units; maintained in the file
m UNITS.DEF.
v modlyear pastyear, t Union of the set pastyear and t corresponding to all
modelling periods.
y allyear, k, datayear, Years that can be used in the model; default range
ll pastyear, 1850-2200; under user control by the dollar control
modlyear, parameters $SET BOTIME yyyy and $SET EOTIME
milestonyr in the <case>.RUN file.

14
2.2 User input sets
The user input sets contain the fundamental information regarding the structure and the
characteristics of the underlying energy system model. The user input sets can be grouped
according to the type of information related to them:

• One dimensional sets defining the components of the energy system: regions,
commodities, processes;
• Sets defining the Reference Energy System (RES) within each region;
• Sets defining the inter-connections (trade) between regions;
• Sets defining the time structure of the model;
• Sets defining various properties of processes or commodities.

The formulation of user constraints also uses sets to specify the type and the features of a
constraint. The structure and the input information required to construct a user constraint is
covered in detail in Chapter 5, and therefore will not be presented here.
In the following subsections first the sets related to the definition of the RES will be
described (subsection 2.2.1), then the sets related to the time horizon and the sub-annual
representation of the energy system will be presented (subsection 2.2.2). The mechanism of
defining trade between regions of a multi-regional model is discussed in subsection 2.2.3.
Finally, an overview of all possible user input sets is given in subsection 2.2.4.

2.2.1 Definition of the Reference Energy System (RES)

A TIMES model is structured by regions (all_r). One can distinguish between external
regions and internal regions. The internal regions (r) correspond to regions within the area of
study, and for which an RES has been defined by the user. Each internal region may contain
processes and commodities to depict an energy system, whereas external regions serve only as
origins of commodities (e.g. for import of primary energy resources or for the import of
energy carriers) or as destination for the export of commodities. A region is defined as an
internal region by putting it in the internal region set (r), which is a subset of the set of all
regions all_r. An external region needs no explicit definition, all regions that are member of
the set all_r but not member of r are external regions. A TIMES model must consist of at
least one internal region, the number of external regions is arbitrary. The main building blocks
of the RES are processes (p) and commodities (c), which are connected by commodity flows
to form a network. An example of an RES with one internal region (UTOPIA) and two
external regions (IMPEXP, MINRNW) is given in Figure 1.
All components of the energy system, as well as nearly the entire input information,
are identified by a region index. It is therefore possible to use the same process name in
different regions with different numerical data (and description if desired), or even completely
different commodities associated with the process.

15
External regions
Internal region

UTOPIA

OIL HYD URN FEQ HCO GSL DSL ELC RH RL TX NOX


IMPEXP
E51
E01

RHE
E21

RL1
SRE
RHO
E31

TXD
E70

TXE
MINRNW
TXG

Figure 1: Example of internal and external regions in TIMES

2.2.1.1 Processes
A process may represent an individual plant, e.g. a specific existing nuclear power plant, or a
generic technology, e.g. the coal-fired IGCC technology. TIMES distinguishes three main
types of processes:
• Standard processes;
• Inter-regional exchange processes, and
• Storage processes.

2.2.1.1.1 Standard processes


The so-called standard processes can be used to model the majority of the energy
technologies, e.g., condensing power plants, heat plants, CHP plants, demand devices such as
boilers, coal extraction processes, etc. Standard processes can be classified into the following
groups:

• PRE for generic energy processes;


• PRW for material processing technologies (by weight);
• PRV for material processing technologies (by volume);
• REF for refinery processes;
• ELE for electricity generation technologies;
• HPL for heat generation technologies;
• CHP for combined heat and power plants;
• DMD for demand devices;
• DISTR for distribution systems;
• MISC for miscellaneous processes

16
via the set prc_map(r,prc_grp,p). This grouping does not affect the properties of the
standard processes 10 or the matrix, but is intended for reporting purposes. The set is
maintained in the MAPLIST.DEF file, and may be adjusted by user into any list of disjoint
technology groups of interest, with some restrictions as noted in Table 1.
The topology of a standard process is specified by the set top(r,p,c,io) of all quadruples
such that the process p in region r is consuming (io = ’IN’) or producing (io = ‘OUT’)
commodity c. Usually, for each entry of the topology set top a flow variable (see VAR_FLO
in Chapter 4) will be created. When the so-called reduction algorithm is activated, some flow
variables may be eliminated and replaced by other variables (see PART III, chapter 4).
The activity variable (VAR_ACT) of a standard process is equal to the sum of one or
several commodity flows on either the input or the output side of a process. The activity of a
process is limited by the available capacity, so that the activity variable establishes a link
between the installed capacity of a process and the maximum possible commodity flows
entering or leaving the process during a year or a subdivision of a year. The commodity flows
that define the process activity are specified by the set prc_actunt(r,p,cg,u) where the
commodity index cg may be a single commodity or a user-defined commodity group. The
commodity group defining the activity of a process is also called Primary Commodity Group
(PCG).

Diesel Gasoline
Oil
Commodity group
OIL CG_SRE DSL GSL
Activity in PJ

Refinery All commodities


SRE in PJ

COM_GMAP(r,cg,c) = {UTOPIA.CG_SRE.DSL, UTOPIA.CG_SRE.GSL}


Definition of
commodity group PRC_CG(r,p,cg) = {UTOPIA.SRE.CG_SRE}

Definition of
process activity PRC_ACTUNT(r,p,cg,u) = {UTOPIA.SRE.CG_SRE.PJ}

Figure 2: Example of the definition of a commodity group and of the activity of a


process

User-defined commodity groups are specified by means of the set com_gmap(r,cg,c),


which indicates the commodities (c) belonging to the group (cg). In order to apply a user-
defined commodity group in connection with a process (not only for the definition of the
process activity, but also for other purposes, e.g., in the transformation equation
EQ_PTRANS) one has to assign the commodity group cg to the process by specifying the
prc_cg(r,p,cg). Thus, it is possible to use the same commodity group name for different
processes.
An example for the definition of the activity of a process is shown in Figure 2. In order to
define the activity of the process SRE as the sum of the two output flows of gasoline (GSL)
and diesel (DSL), one has to define a commodity group called CG_SRE containing these two
commodities. The name of the commodity group can be arbitrarily chosen by the modeller.

10
The only exceptions are material processing technologies of type PRW or PRV where
the grouping may affect the creation of the internal set prc_spg (see Table 4).
17
In addition to the activity of a process, one has to define the capacity unit of the process.
This is done by means of the set prc_capunt(r,p,cg,u), where the index cg denotes the
primary commodity group. In the example in Figure 3 the capacity of the refinery process is
defined in mtoe/a (megatonne oil equivalent). Since the capacity and activity units are
different (mtoe for the capacity and PJ for the activity), the user has to supply the conversion
factor from the energy unit embedded in the capacity unit to the activity unit. This is done by
specifying the parameter prc_capact(r,p). In the example prc_capact has the value 41.868.

Diesel Gasoline
Oil
Commodity group
OIL CG_SRE DSL GSL
Activity in PJ

Refinery All commodities


SRE in PJ

Capacity in
mtoe/a

Definition of
capacity unit PRC_CAPUNT(r,p,cg,u) = {UTOPIA.SRE.CG_SRE.MTOE}

Conversion factor from


capacity to activity unit PRC_CAPACT UTOPIA,SRE = 41.868

Figure 3: Example of the definition of the capacity unit


It might occur that the unit in which the commodity(ies) of the primary commodity group
are measured, is different from the activity unit. An example is shown in Figure 4. The
activity of the transport technology CAR is defined by commodity TX1, which is measured in
passenger kilometres PKM. The activity of the process is, however, defined in vehicle
kilometres VKM, while the capacity of the process CAR is defined as number of cars NOC.

DSL TX1
Activity in „vehicle
kilometers“ VKM Commodity unit
„Passenger
kilometers“ PKM
Car
CAR

Capacity in „# of cars“
NOC

Definition of process activity PRC_ACTUNT(r,p,cg,u) = {UTOPIA.CAR.TX1.PKM}

Definition of capacity unit PRC_CAPUNT(r,p,cg,u) = {UTOPIA.CAR.TX1.NOC}

Conversion factor from capacity to


activity unit PRC_CAPACT UTOPIA, CAR = 10000

Conversion factor from activity unit to


commodity unit PRC_ACTFLO UTOPIA, 2000,CAR,TX1 = 1.5

Figure 4: Example of different activity and commodity units

18
The conversion factor from capacity to activity unit prc_capact describes the average
mileage of a car per year. The process arameter prc_actflo(r,y,p,cg) contains the conversion
factor from the activity unit to the commodity unit of the primary commodity group. In the
example this factor corresponds to the average number of persons per car (1.5).

2.2.1.1.2 Inter-regional exchange processes


Inter-regional exchange (IRE) processes are used for trading commodities between regions.
They are needed for linking internal regions with external regions as well as for modelling
trade between internal regions. A process is specified as an inter-regional exchange process
by specifying it as a member of the set prc_map(r,’IRE’,p). If the exchange process is
connecting internal regions, this set entry is required for each of the internal regions trading
with region r. The topology of an inter-regional exchange process p is defined by the set
top_ire(all_reg,com,all_r,c,p) stating that the commodity com in region all_reg is exported
to the region all_r (the traded commodity may have a different name c in region all_r than in
region all_reg). For example the topology of the export of the commodity electricity (ELC_F)
from France (FRA) to Germany (GER), where the commodity is called ELC_G via the
exchange process (HV_GRID) is modelled by the top_ire entry:

top_ire(‘FRA’, ’ELC_F’, ’GER’, ’ELC_G’, ’HV_GRID’).

The first pair of region and commodity (‘FRA’,’ELC_F’) denotes the origin and the name of
the traded commodity, while the second pair (‘GER’,’ELC_G’) denotes the destination. The
name of the traded commodity can be different in both regions, here ‘ELC_F’ in France and
‘ELC_G in Germany, depending on the chosen commodity names in both regions. As with
standard processes, the activity definition set prc_actunt(r,p,cg,u) has to be specified for an
exchange process belonging to each internal region. The special features related to inter-
regional exchange processes are described in subsection 2.2.3.

2.2.1.1.3 Storage processes


Storage processes are used to store a commodity either between periods or between
timeslices. A process (p) is specified to be an inter-period storage (IPS) process for
commodity ( c ) by including it as a member of the set prc_stgips(r,p,c). In a similar way, a
process is characterised as a general timeslice storage (TSS) by inclusion in the set
prc_stgtss(r,p,c). A special case of timeslice storage is a so-called night-storage device
(NST) where the commodity for charging and the one for discharging the storage are
different. An example for a night storage device is an electric heating technology which is
charged during the night using electricity and produces heat during the day. Including a
process in the set prc_nstts(r,p,s) indicates that it is a night storage device which is charged
in timeslice(s) s. More than one timeslice can be specified as charging timeslices, the non-
specified timeslices are assumed to be discharging timeslices. The charging and discharging
commodity of a night storage device are specified by the topology set (top). It should be
noted that for inter-period storage and general timeslice storage processes the commodity
entering and leaving the storage is specified by the set prc_stgips(r,p,c) and prc_stgtss(r,p,c)
respectively. Other commodity flows are not permitted in combination with these two storage
types and hence the topology set top is not applicable to these storages.
As for standard processes, the flows that define the activity of a storage process are
identified by providing the set prc_actunt(r,p,c) entry. In contrast to standard processes, the
activity of a storage process is however interpretted as the amount of the commodity being
stored in the storage process. Accordingly the capacity of a storage process describes the
maximum commodity amount that can be kept in storage.

19
Based on the storage characterization given by prc_stgips, prc_stgtss or prc_nstts for a
process p, internally a prc_map(r,’STG’,p) entry is generated to put the process in the group
of the storage processes. A further prc_map entry is created to specify the type of storage
(‘STK’ for inter-operiod storage, ‘STS’ for time-slice storage and ‘NST’ for a night-storage
device).

2.2.1.2 Commodities
As mentioned before the set of commodities ( c ) is a subset of the commodity group set (cg).
A commodity in TIMES is characterised by its type, which may be an energy carrier (‘NRG’),
a material (‘MAT’), an emission --or environmental impact (‘ENV’), a demand commodity
(‘DEM’) or a financial resource (‘FIN’). The commodity type is indicated by membership in
the commodity type mapping set (com_tmap(r,com_type,c)). The commodity type affects
the default sense of the commodity balance equation. For NRG, ENV and DEM the
commodity production is normally greater than or equal to consumption, while for MAT and
FIN the default commodity balance constraint is generated as an equality. The type of the
commodity balance can be modified by the user for individual commodities by means of the
commodity limit set (com_lim(r,c,lim)). The unit in which a commodity is measured is
indicated by the commodity unit set (com_unit(r,c,units_com)). The user should note that
within the GAMS code of TIMES no unit conversion, e.g., of import prices, takes place when
the commodity unit is changed from one unit to another one. Therefore, the proper handling
of the units is entirely the responsibility of the user (or the user interface).

2.2.2 Definition of the time structure

2.2.2.1 Time horizon


The time horizon for which the energy system is analysed may range from one year to many
decades. The time horizon is usually split into several periods which are represented by so-
called milestone years (t(allyear) or milestonyr(allyear), see Figure 5). Each milestone year
represents a point in time where decisions may be taken by the model, e.g. installation of new
capacity or changes in the energy flows. The activity and flow variables used in TIMES may
therefore be considered as average values over a period. The shortest possible duration of a
period is one year. However, in order to keep the number of variables and equations at a size
that can be processed by the current solution and reporting software as well as computer
hardware a period usually comprises several years. The durations of the periods do not have
to be equal, so that it is possible that the first period, which usually represents the past and is
used to calibrate the model to historic data, has a length of one year, while the following
periods may have longer durations. Thus in TIMES both the number of periods and the
duration of each period are fully under user control. The beginning year of a period
B(allyear), its ending year E(allyear), its middle year M(allyear) and its duration D(allyear)
have to be specified as input parameters by the user (see Table 12 in subsection 3.1.3), except
for past years where B=E=milestonyr.
To describe capacity installations that took place before the beginning of the model
horizon, and still exist during the modeling horizon, TIMES uses additional years, the so-
called past years (pastyear(allyear)), which identify the construction completion year of the
already existing technologies. The amount of capacity that has been installed in a pastyear is
specified by the parameter NCAP_PASTI(r,allyear,p), also called past investment. For a
process, an arbitrary number of past investments may be specified to reflect the age structure
in the existing capacity stock. The union of the sets milestonyr and pastyear is called
modelyear (or v). The years for which input data is provided by the user are called datayears
(datayear(allyear)). The datayears do not have to coincide with modelyears, since the
preprocessor will interpolate or extrapolate the data internally to the modelyears. All

20
pastyears are by default included in datayears, but, as a general rule, any other years for which
input data is provided should be explicitly included in the set datayear or that information
will not be seen by the model. Apart from a few exceptions (see Table 3), all parameter values
defined for years other than datayears (or pastyears) are ignored by the model generator. Due
to the distinction between of modelyears and datayears, the definition of the model horizon,
e.g., the duration and number of the periods, may be changed without having to adjust the
input data to the new periods. The rules and options of the inter- and extrapolation routine are
described in more detail in subection 3.1.1.

Model horizon

1st period

2nd period 3rd period 4th period 5th period

99 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20

Pastyear

Milestoneyears

Modelyears

Datayears

Figure 5: Definition of the time horizon and the different year types

One should note that it is possible to define past investments (NCAP_PASTI) not only for
pastyears but also for milestoneyears. Since the first period(s) of a model may cover historical
data, it is useful to store the already known capacity installations made during this time-span
as past investments and not as a bound on new investments in the model database. If one later
changes the beginning of the model horizon to a more recent year, the capacity data of the
first period(s) do not have to be changed, since they are already stored as past investments.
This feature therefore supports the decoupling of the datayears, for which input information is
provided, and the definition of the model horizon for which the model is run, making it
relatively easy to change the definition of the modeling horizon. The use of past investments
for milestoneyears is also useful to identify already planned (although not yet constructed)
capacity expansions in the near future 11.

11
In this case the model may still decide to add additional new capacity, if this is
economical and not inhibited by any investment bounds.
21
Table 3: Parameters that can have values defined for any year, irrespective of
datayear 12
Attribute name Description
G_DRATE General discount rate for currency in a particular year
G_CHNGMONY Exchange rate for currency in a particular year
MULTI Parameter multiplier table with values by year
COM_CUMPRD Cumulative limit on gross production of a commodity for a
block of years
COM_CUMNET Cumulative limit on net production of a commodity for a block
of years
CM_HISTORY Climate module calibration values; not part of the standard
TIMES code, but included in the climate module extension
(see chapter 7 for a description of the climate module).

2.2.2.2 Timeslices
The milestoneyears can be further divided in sub-annual timeslices in order to describe for
the changing electricity load within a year which may affect the required electricity generation
capacity, or other commodity flows that need to be tracked at a finer than annual resolution.
Timeslices may be organised into four hierarchy levels only: ‘ANNUAL’, ‘SEASON’,
‘WEEKLY’ and ‘DAYNITE’ defined by the internal set tslvl. The level ANNUAL consists
of only one member, the predefined timeslice ‘ANNUAL,’ while the other levels may include
an arbitrary number of divisions. The desired timeslice levels are activated by the user
providing entries in set ts_group(r,tslvl,s), where also the individual user-provided timeslices
(s) are assigned to each level. An additional user input set ts_map(r,s1,s2) is needed to
determine the structure of a timeslice tree, where timeslice s1 is defined as the parent node of
s2. Figure 6 illustrates a timeslice tree, in which a year is divided into four seasons consisting
of working days and weekends, and each day is further divided into day and night timeslices.
The name of each timeslice has to be unique in order to be used later as an index in other sets
and parameters. Not all timeslice levels have to be utilized when building a timeslice tree, for
example one can skip the ‘WEEKLY’ level and directly connect the seasonal timeslices with
the daynite timeslices. The duration of each timeslice is expressed as a fraction of the year by
the parameter G_YRFR(r,s). The user is responsible for ensuring that each lower level group
sums up properly to its parent timeslice, as this is not verified by the pre-processor. The
definition of a timeslice tree is region-specific. When different timeslice names and durations
are used in two regions, which are connected by an exchange process, the mapping
parameters IRE_CCVT(r,c,reg,com) for commodities and IRE_TSCVT(r,s,reg,ts) for
timeslices have to be provided by the user to map the different timeslice definitions. When the
same timeslice definitions are used, these mapping tables do not need to be specified by the
user.

12
The purpose of this table is to list those parameters whose year values are independent
of the input datayears associated with most of the regular parameters, and therefore should
not be specified for datayears. For example, a value for MULTI(j,'2012') would not include
2012 in datayears if 2012 were not relevant to the other input parameters.

22
Figure 6: Example of a timeslice tree

Commodities may be tracked and process operation controlled at a particular timeslice


level by using the sets com_tsl(r,c,tslvl) and prc_tsl(r,p,tslvl) respectively. Providing a
commodity timeslice level determines for which timeslices the commodity balance will be
generated, where the default is ‘ANNUAL’. For processes, the set prc_tsl determines the
timeslice level of the activity variable. Thus, for instance, condensing power plants may be
forced to operate on a seasonal level, so that the activity during a season is uniform, while
hydropower production may vary between days and nights, if the ‘DAYNITE’ level is
specified for hydro power plants. Instead of specifying a timeslice level, the user can also
identify individual timeslices for which a commodity or a process is available by the sets
com_ts(r,c,s) and prc_ts(r,p,s) respectively. Note that when specifying individual timeslices
for a specific commodity or process by means of com_ts or prc_ts they have to be on the
same timeslice level.
The timeslice level of the commodity flows entering and leaving a process are determined
internally by the preprocessor. The timeslice level of a flow variable equals the timeslice level
of the process when the flow variable is part of the commodity group defining the activity of
the process. Otherwise the timeslice level of a flow variable is set to whichever level is finer,
that of the commodity or the process.

2.2.3 Multi-regional models

If a TIMES model consists of several internal regions, it is called a multi-regional model.


Each of the internal regions contains a unique RES to represent the particularities of the
region. As already mentioned, the regions can be connected by inter-regional exchange
processes to enable trade of commodities between the regions. Two types of trade activities
can be depicted in TIMES: bi-lateral trade between two regions and multilateral trade between
several supply and demand regions.
Bi-lateral trade takes place between specific pairs of regions. A pair of regions together
with an exchange process and the direction of the commodity flow is first identified, where
the model ensures that trade through the exchange process is balanced between these two
regions (whatever amount is exported from region A to region B must be imported by region

23
B from region A, possibly adjusted for transportation losses). The basic structure is shown in
Figure 7. Bi-lateral trading may be fully described in TIMES by defining an inter-regional
exchange process and by specifying the two pair-wise connections by indicating the regions
and commodities be traded via the set top_ire(r,c,reg,com,p). If trade should occur only in
one direction then only that direction is provided in the set top_ire (export from region r into
region reg). The process capacity and the process related costs (e.g. activity costs, investment
costs) of the exchange process can be described individually for both regions by specifying
the corresponding parameters in each regions. If for example the investment costs for an
electricity line between two regions A and B are 1000 monetary units (MU) per MW and 60
% of these investment costs should be allocated to region A and the remaining 40 % to region
B, the investment costs for the exchange process have to be set to 600 MU/MW in region A
and to 400 MU/MW in region B.

Region A Region B
com com

Inter-regional
exchange process

Figure 7: Bilateral trade in TIMES

Bi-lateral trade is the most detailed way to specify trade between regions. However, there
are cases when it is not important to fully specify the pair of trading regions. In such cases,
the so-called multi-lateral trade option decreases the size of the model while preserving
enough flexibility. Multi-lateral trade is based on the idea that a common marketplace exists
for a traded commodity with several supplying and several consuming regions for the
commodity, e.g. for crude oil or GHG emission permits. To facilitate the modelling of this
kind of trade scheme the concept of marketplace has been introduced in TIMES. To model a
marketplace first the user has to identify one internal region that participates both in the
production and consumption of the traded commodity. Then only one exchange process is
used to link the supply and demand regions with the marketplace region using the set
top_ire. 13

The following example illustrates the modelling of a marketplace in TIMES. Assume that
we want to set up a market-based trading where the commodity CRUD can be exported by
regions A, B, C, and D, and that it can be imported by regions C, D, E and F (Figure 8).

13
Note however that some flexibility is lost when using multilateral trade. For instance, it
is not possible to express transportation costs in a fully accurate manner, if such cost depends
upon the precise pair of trading regions in a specific way
24
Supply Demand
regions regions

Region A Region D

Region B Marketplace Region E


Region C

Region D Region F
The same region may occur on
the supply and demand side.

Figure 8: Example of multi-lateral trade in TIMES


First, the exchange process and marketplace should be defined. For example, we could
choose the region C as the marketplace region. The exchange process has the name XP. The
trade possibilities can then be defined simply by the following six top_ire entries:

SET PRC / XP /;
SET TOP_IRE /
A .CRUD .C .CRUD .XP
B .CRUD .C .CRUD .XP
D .CRUD .C .CRUD .XP
C .CRUD .D .CRUD .XP
C .CRUD .E .CRUD .XP
C .CRUD .F .CRUD .XP
/;

To complete the RES definition of the exchange process, only the set prc_actunt(r,p,c,u)
is needed to define the units for the exchange process XP in all regions:

SET PRC_ACTUNT /
A .XP .CRUD .PJ
B .XP .CRUD .PJ
C .XP .CRUD .PJ
D .XP .CRUD .PJ
E .XP .CRUD .PJ
F .XP .CRUD .PJ
/;

These definitions are sufficient for setting up of the market-based trade. Additionally, the
user can of course specify various other data for the exchange processes, for example
investment and distribution costs, and efficiencies.

25
2.2.4 Overview of all user input sets

All the input sets which are under user control in TIMES are listed in Table 4. For a few sets
default settings exist that are applied if no user input information is given. Set names starting
with the prefix ‘com_’ are associated with commodities, the prefix ‘prc_’ denotes process
information and the prefix ‘uc_’ is reserved for sets related to user constraints. Column 3 of
Table 3 is a description of each set. In some cases (especially for complex sets), two
(equivalent) descriptions may be given, the first in general terms, followed by a more precise
description within square brackets, given in terms of n-tuples of indices.

Remark

Set are used in basically two ways:


- as the domain over which summations must be effected in some mathematical
expression, or
- as the domain over which a particular expression or constraint must be
enumerated (replicated)
In the case of n-dimensional sets, some indexes may be used for enumeration and others for
summation. In each such situation, the distinction between the two uses of the indexes is
made clear by the way each index is used in the expression.

An example will illustrate this important point: consider the 4-dimensional set top, having
indexes r,p,c,io (see table 3 for its precise description). If some quantity A(r,p,c,io) must be
enumerated for all values of the third index (c=commodity) and of the last index
(io=orientation), but summed over all processes (p) and regions (r), this will be
mathematically denoted:

EXPRESSION1c ,io = ∑ A(r , p, c, io)


r , p ,c ,io∈top

It is thus understood from the indexes listed in the name of the expression (c,io), that these
two indexes are being enumerated, and thus, by deduction, only r and p are being summed
upon. Thus the expression calculates the total of A for each commodity c, in each direction io
(‘IN’ and ‘OUT’), summed over all processes and regions.

Another example illustrates the case of nested summations, where index r is enumerated in
the inner summation, but is summed upon in the outer summation. Again here, the expression
is made unambiguous by observing the positions of the different indexes (for instance, the
outer summation is done on the r index)

EXPRESSION 2 c ,io = ∑
r , p ,c ,io∈top
B(r )∑ A(r , p )
p

26
Table 4: User input sets in TIMES
Set ID/Indexes 14 Alias 15 Description
all_reg all_r Set of all regions, internal as well as external ; a region is
defined as internal by putting it in the internal region set (r),
regions that are not member of the internal region set are per
definition external.
c com, com1, User defined list of all commodities in all regions; subset of
com2, com3 cg.
cg com_grp, User defined list of all commodities and commodity groups
cg1, cg2, (see Figure 2) in all regions.
cg3, cg4
clu Set of cluster technologies in endogenous technology
(p) learning.
cluster Indicator that technology teg is a learning component that
(r,teg,prc) may be part of several technologies prc; teg is also called
key component [set of triplets {r,teg,prc} such that learning
component teg is part of technology prc in region r]. 16
com_gmap Mapping of commodity c to user-defined commodity group
(r,cg,c) cg, including itself [set of triplets {r,cg,c} such that
commodity c in in group cg in region r].
com_lim Definition of commodity balance equation type [set of
(r,c,lim) triplets {r,c,lim}such that commodity c has a balance of
type lim (lim=’UP’,’LO’,’EQ’) in region r]; Default: for
commodities of type NRG, DM and ENV production is
greater or equal consumption, while for MAT and FIN
commodities the balance is a strict equality.
com_off Specifying that the commodity c in region r is not available
(r,c,y1,y2) between the years y1 and y2 [set of quadruplets {r,c,y1,y2}
such that commodity c is unavailable from years y1 to y1 in
region r] ; note that y1 may be ‘BOH’ for the first year of
the first period and y2 may be ‘EOH’ for the last year of the
last period.
com_peak set of pairs {r,cg} such that a peaking constraint is to be
(r,cg) generated for commodity cg in region r; note that the
peaking equation can be generated for a single commodity
(cg also contains single commodities c) or for a group of
commodities, e.g. electricity commodities differentiated by
voltage level.

14
The first row contains the set name. If the set is a one-dimensional subset of another set,
the second row contains the parent set in brackets. If the set is a multi-dimensional set, the
second row contains the index domain in brackets.
15
For programming reasons, alternative names (aliases) may exist for some indexes. This
information is only relevant for those users who are interested in gaining an understanding of
the underlying GAMS code.
16
For multidimensional sets such as this one, two definityions are sometimes given, one
as an indicator function or mapping, the other (in square brackets) as a set of n-tuples.
27
Set ID/Indexes 14 Alias 15 Description
com_pkts Set of triplets {r,cg,s} such that a peaking constraint for a
(r,cg,s) single commodity or a group of commodities cg (e.g. if the
model differentiates between three electricity commodities:
electricity on high, middle and low voltage ) is to be
generated for the timeslice s; Default: all timeslices of
com_ts; note that the peaking constraint will be binding
only for the timeslice with the highest load.
com_tmap Mapping of commodities to the main commodity types (see
(r,com_type,c) com_type); [set of triplets {r,com_type,c} such that
commodity c has type com_type];
com_ts Set of triplets {r,c,s}such that commodity c is available in
(r,c,s) timeslice s in region r; commodity balances will be
generated for the given timeslices; Default: all timeslices of
timeslice level specified by com_tsl.
com_tsl Set of triplets {r,c,tslvl} such that commodity c is modelled
(r,c,tslvl) on the timeslice level tslvl in region r; Default: 'ANNUAL
timeslice level.
com_unit Set of triplets {r,c,units_com} such that commodity c is
(r,c,units_com) expressed in unit units_com in region r.
cur User defined list of currency units.
datayear Years for which model input data are to be taken; No
default.
p prc User defined list of all processes in all regions
pastyear pyr Years for which past investments are specified; pastyears
have to lie before the beginning of the first period; No
default.
prc_actunt Definition of activity [Set of quadruples such that the
(r,p,cg,units_act) commodity group cg is used to define the activity of the
process p, with units units_act, in region r].
prc_aoff Set of quadruples {r,p,y1,y2} such that process p cannot
(r,p,y1,y2) operate (activity is zero) between the years y1 and y2 in
region r; note that y1 may be ‘BOH’ for first year of first
period and y2 may be ‘EOH’ for last year of last period.
prc_capunt Definition of capacity unit of process p [set of quadruples
(r,p,cg,units_cap) {r,p,cg,units_cap}such that process p uses commodity
group cg and units units_cap to define its capacity in region
r].
prc_cg User defined commodity groups (cg) associated with a
(r,p,cg) process p [set of triplets {r,p,cg} such that commodity
group cg has been defined for process p in region r]; note:
the same commodity group can be used for several
processes.
prc_dscncap Set of processes p to be modelled using the lumpy
(r,p) investment formulation in region r; Default: empty set. If p
is not in this set, then any lumpy investment parameters
provided for p are ignored.

28
Set ID/Indexes 14 Alias 15 Description
prc_foff Set of sextuples specifying that the flow of commodity c at
(r,p,c,s,y1,y2) process p and timeslice s is not available between the years
y1 and y2 in region r; note that y1 may be ‘BOH’ for first
year of first period and y2 may be ‘EOH’ for last year of last
period.
prc_grp List of process groups, used strictly for reporting purposes;
Default list of groups (defined in MAPLIST.DEF) is shown
in section 2.2.1.
prc_map Grouping of processes into process groups (prc_grp) [set of
(r,prc_grp,p) triplets {r,prc_grp,p} such that process p belongs to group
prc_grp in region r]. Note: used strictly for reporting
purposes.
prc_noff Set of quadruples {r,p,y1,y2} such that new capacity of
(r,p,y1,y2) process p cannot be installed between the years y1 and y2 in
region r; note that y1 may be ‘BOH’ for first year of first
period and y2 may be ‘EOH’ for last year of last period.
prc_nstts Set of triplets {r,p,s} such that process p is a night storage
(r,p,s) device with charging timeslices s in region r; note that for
night storage devices the commodity entering and the
commodity leaving the storage may be different, as defined
via the set top.
prc_pkaf Set of pairs {all_r,p} such that the availability factor
(all_r,p) (ncap_af) is to be used as value for the fraction of capacity
of process p that can contribute to the peaking constraints
(ncap_pkcnt), in region r.
prc_pkno Set of pairs {all_r,p}such that process p cannot be used in
(all_r,p) the peaking constraints in region r.
prc_stgips Set of triplets {r,p,c}such that process p is an inter-period
(r,p,c) storage for the commodity c in region r; note that the
commodity c entering and leaving the storage is the same, so
the set top is not used for this type of process.
prc_stgtss Set of triplets {r,p,c}such that process p is a storage process
(r,p,c) between timeslices (e.g., seasonal hydro reservoir, day/night
pumped storage) for commodity c in region r; note that the
storage process operates for the timeslices specified by
prc_ts; the same commodity c enters and leaves the storage
so the set top is not used for this type of process.
prc_ts prc_ts2 Set of triplets {all_r,p,s} such that process p can operate at
(all_r,p,s) timeslice s in region r; Default: all timeslices on the
timeslice level specified by prc_tsl..
prc_tsl Set of triplets {r,p,tsllvl} such that process p can operate at
(r,p,tslvl) timeslice level tslvl in region r; Default: ‘ANNUAL’
timeslice level.
prc_vint Set of processes p that are vintaged technologies, in region r
(r,p) i.e. technical characteristics are tied to when the capacity
was installed, not the current period; Default: process is not
vintaged; note that vintaging increases the model size.
r reg Set of internal regions; Subset of all_r.

29
Set ID/Indexes 14 Alias 15 Description
s all_ts, ts, s2, Set of all timeslices (define the sub-annual divisions of a
sl period). Timeslices effectively defined for specific processes
and technologies are subsets of this set.
t milestonyr, Set of representative years (middle years) for the model
tt periods within the modelling horizon.
teg Set of technologies selected for endogenous technology
learning; Subset of set p; if p not in teg, then any ETL
investment parameters provided are ignored.
top RES topology definition indicating that commodity c enters
(r,p,c,io) (io=’IN’) or leaves (io=’OUT’) the process p [set of
quadruples {r,p,c,io} such that process p has a flow of
commodity c with orientation io in region r].
top_ire RES topology definition for trade between regions [Set of
(all_reg,com, quintuples indicating that commodity com from region
all_r,c,p) all_reg is traded (exported) via exchange process p (where
it is imported) into region all_r as commodity c]; note: the
name of the traded commodity may be different in the two
regions.
ts_group Set of triplets {all_r,tslvl,s} such that timeslice s belongs to
(all_r,tslvl,s) the timeslice level tslvl in region r; needed for the definition
of the timeslice tree; only default is that the ‘ANNUAL’
timeslice belongs to the ‘ANNUAL’ timeslice level.
ts_map Set of triplets {all_r,s,ts} such that s is an intermediate node
(all_r,s,ts) s of the timeslice tree (neither ‘ANNUAL’ nor the lowest
level), and ts is a node directly under s in region r; the set is
further extended by allowing ts = s (see figure 1).
uc_attr Set of quintuples such that the TIMES attribute specified by
(r,uc_n,side, the uc_name (e.g., capacity, flow, etc.) will be used as
uc_grptype, coefficient for the variable identified by uc_grptype in the
uc_name) user constraint uc_n, for the side side (‘LHS’ or ‘RHS’) in
region r; if uc_name=’GROWTH’ the user constraint
represents a growth constraint.
uc_grptype Fixed internal list of the key types of variables: fixed =
‘ACT_’, ‘CAP_’, ‘COMPRD_’, ‘COMCON_’, ‘FLO_’,
‘IRE_’, ‘NCAP_’.
uc_n List of user specified unique indicators of the user
constraints.
uc_name The list of indicators associated with various attributes that
can be referenced in user constraints to be applied when
deriving a coefficient (e.g. the flow variable may be
multiplied by the attribute FLO_COST to represent
expenditure associated with said flow in a user constraint if
desired): = ‘ACT_COST’, ‘ACT_BNDUP’,
‘ACT_BNDLO’, ‘ACT_BNDFX’, ‘CAP_BNDUP’,
‘CAP_BNDLO’, ‘CAP_BNDFX’, ‘GROWTH’,
‘FLO_COST’, ‘FLO_DELIV’, ‘FLO_SUB’, ‘FLO_TAX’,
‘NCAP_COST’, ‘NCAP_ITAX’, ‘NCAP_ISUB’.
uc_r_each Set of pairs {all_r,uc_n} such that the user constraint uc_n
(all_r,uc_n) is to be generated for each specified region all_r.

30
Set ID/Indexes 14 Alias 15 Description
uc_r_sum Set of pairs {all_r,uc_n}indicating that the user constraint
(all_r,uc_n) uc_n is summing over all specified regions all_r (that is
these constraints do not have a region index). Note that
depending on the specified regions in ur_r_sum, the
summation may be done only over a subset of all model
regions. For example if the model contains the regions FRA,
GER, ESP and one wants to create a user constraint called
GHG summing over the regions FRA and GER but not ESP,
the set uc_r_sum contains has the two entries
{‘FRA’,’GHG’} and {‘GER’,’GHG’}.
uc_t_each Indicator that the user constraint uc_n is to be generated for
(r,uc_n,t) each specified period t.
uc_t_succ Indicator that the user constraint uc_n is to be generated
(r,uc_n,t) between the two successive periods t and t+1.
uc_t_sum Indicator that the user constraint uc_n is to be generated
(r,uc_n,t) summing over the periods t.
uc_ts_each Indicator that the user constraint uc_n will be generated for
(r,uc_n,s) each specified timeslice s.
uc_ts_sum Indicator that the user constraint uc_n is to be generated
(r,uc_n,s) summing over the specified timeslice s .
v modlyear Union of the sets pastyear and t corresponding to all the
years (periods) of a model run.

31
2.3 Definition of internal sets
The sets internally derived by the TIMES model generator are given in Table 5. The list of
internal sets presented here concentrates on the ones frequently used in the model generator
and the ones used in the description of the model equations in Chapter 5. Some internal sets
are omitted from Table 5 as they are strictly auxiliary sets of the preprocessor whose main
purpose is the reduction of the computation time for preprocessor operations.

Table 5: Internal sets in TIMES


Set ID 17
Description
Indexes 18
afs Indicator that the internal parameter COEF_AF, which is used as
(r,t,p,s,bd) coefficient of the capacity (new investment variableVAR_NCAP plus
past investments NCAP_PASTI) in the capacity utilization constraint
EQ(l)_CAPACT, exists.
bohyear Set allyear plus element ‘BOH’ (Beginning Of Horizon).
(*) 19
dm_year Union of sets datayear and modlyear
(y)
eachyear Set of all years between scalars MINYR (first year needed for cost
(y) calculation in objective function) and MIYR_VL + DUR_MAX
(estimation of last year possible cost terms may occur).
eohyear Set allyear plus element ‘EOH’ (Ending OF Horizon)
(*)
eohyears Set of all years between scalars MINYR (first year needed for cost
(y) calculation in objective function) and MIYR_VL (last year of model
horizon).
finest Set of finest timeslices s used in region r.
(r,s)
fs_emis Indicator that the flow variable (VAR_FLO) associated with emission
(r,p,cg,c,com) com can be replaced by the flow variable of c multiplied by the
emission factor FLO_SUM, which is used in the transformation
equation (EQ_PTRANS) between the commodity group cg and the
commodity com; used in the reduction algorithm (see Part III).
miyr_1 First milestonyr.
(t)
no_act List of processes p in region r not requiring the activity variable; used
(r,p) in reduction algorithm
no_cap List of processes p in region r not having any capacity related input
(r,p) parameters; used in reduction algorithm.
no_rvp New investment in process p in region r is not possible in period v
(r,v,p) and previously installed capacity does not exist anymore.
obj_1a Investment case small investment (NCAP_ILED/D(v) <=
(r,v,p) G_ILEDNO) and no repetition of investment (NCAP_TLIFE +
NCAP_ILED >= D(v)) for process p in region r and vintage period v.

17
Name of the internal set as used in this documentation and the GAMS code.
18
Index domain of the internal set is given in brackets.
19
The asterisk denotes in the modeling system GAMS a wildcard, so that domain
checking is disabled and any index may be used.
32
Set ID 17
Description
Indexes 18
obj_1b Investment case small investment (NCAP_ILED/D(v) <=
(r,v,p) G_ILEDNO) and repetition of investment (NCAP_TLIFE +
NCAP_ILED < D(v)) for process p in region r and vintage period v.
obj_2a Investment case large investment (NCAP_ILED/D(v) > G_ILEDNO)
(r,v,p) and no repetition of investment (NCAP_TLIFE + NCAP_ILED >=
D(v)) for process p in region r and vintage period v.
obj_2b Investment case large investment (NCAP_ILED/D(v) > G_ILEDNO)
(r,v,p) and repetition of investment (NCAP_TLIFE + NCAP_ILED < D(v))
for process p in region r and vintage period v.
obj_sumi Summation control for investment and capacity related taxes and
(y,r,v,p,k) subsidies with running year index y of annual objective function,
vintage period v and commissioning year k (e.g. in case of spreading
investment over construction time).
obj_sumiii Summation control for decommissioning costs with for the running
(y,r,v,p,k) year index y of annual objective function, vintage period v and
commissioning year k (e.g. for spreading decommissioning costs over
decommissioning time).
obj_sumiv Summation control for fixed costs with running year index y of
(y,r,v,p,k) annual objective function, vintage period v and commissioning year
k.
obj_sumivs Summation control for decommissioning surveillance costs with
(y,k,r,v,p) running year index y of annual objective function, vintage period v
and commissioning year k.
obj_sums Indicator that process p in region r with vintage period v has a
(r,v,p) salvage value for investments with a (technical) lifetime that extends
past the model horizon.
obj_sums3 Indicator that process p in region r with vintage period v has a
(r,v,p) salvage value associated with the decommissioning or surveillance
costs.
obj_sumsi Indicator that for commissioning years k process p in region r with
(r,v,p,k) vintage period v has a salvage value due to investment,
decommissioning or surveillance costs arsing from the technical
lifetime extending past the model horizon.
periodyr Mapping of individual years y to the modlyear (milestonyr or
(v,y) pastyear; v) period they belong to; if v is a pastyear, only the pastyear
itself belongs to the period; for the last period of the model horizon
also the years until the very end of the model accounting horizon
(MIYR_VL + DUR_MAX) are elements of periodyr.
prc_act Indicator that a process p in region r needs an activity variable (used
(r,p) in reduction algorithm).
prc_cap Indicator that a process p in region r needs a capacity variable (used
(r,p) in reductio algorithm).

33
Set ID 17
Description
Indexes 18
prc_spg Shadow primary group (SPG) of a process p; all commodities on the
(r,p,cg) opposite process side of the primary commodity group (PCG) which
have the same commodity type as the PCG, usually internally
determined (though it may be specified by the user under special
circumstances (e.g., when not all the commodities on the opposite
side of the process, which should be in the SPG, are of the same
commodity type com_type);
if no commodity of the same type is found:
• if PCG is of type ‘DEM’ and process is a material processing
process (PRV or PRW), then the SPG contains all material
commodities;
• if not, the SPG contains all energy commodities.
rc List of all commodities c found in region r.
(r,c)
rcj Steps j used in direction bd for the elastic demand formulation of
(r,c,j,bd) commodity c.
rcs_combal Indicator of which timeslices (s) associate with commodity c in region
(r,t,c,s,bd) r for time period t the commodity balance equation
(EQ(l)_COMBAL) is to be generated, with a constraint type
corresponding to bd.
rcs_comprd Indicator of which timeslices (s) associate with commodity c in region
(r,t,c,s,bd) r for time period t the commodity production equation
(EQ(l)_COMBAL) is to be generated, with a constraint type
according to bd, when a corresponding rhs_comprd indicator exists.
rcs_comts All timeslices s being at or above timelsice level (com_tsl) of
(r,c,s) commodity c in region r.
rhs_combal Indicator that the commodity net variable (VAR_COMNET) is
(r,t,c,s) required in commodity balance (EQE_COMBAL), owing to a
limit/costs imposed on the net.
rhs_comprd Indicator that the commodity production variable (VAR_COMPRD)
(r,t,c,s) is required in commodity balance (EQE_COMPRD), owing to a
limit/costs imposed on the production.
rp List of processes (p) in each region (r).
(r,p)
rp_1t1 Indicator of processes (p) in region (r) with exactly one input and one
(r,p) output flow (exluding emission commodity of (com_type=’ENV’));
used in reduction algorithm.
rp_1tn Indicator of processes (p) in region (r) with one input flow and an
(r,p) arbitrary number of output flows; used in reduction algorithm.
rp_flo List of all processes in region r, except inter-regional exchange
(r,p) processes (ire).
rp_inout Indicator as to whether a process (p) in a region (r) is input or output
(r,p,io) (io = ‘IN’/’OUT’) normalized with respect to its activity.
rp_ire List of inter-regional exchange processes (p) found in each region
(all_r,p) (all_r).
rp_pg The primary commodity group (cg) of each process (p) in a region
(r,p,cg) (r).

34
Set ID 17
Description
Indexes 18
rp_pgtype The commodity type (com_type) of primary commodity group of a
(r,p,com_type) process (p) in a region (r).
rpc List of commodities ( c ) assocaited with a process p in region r (by
(r,p,c) top or top_ire).
rpc_act Indicator that the primary commodity group of a process (p, except
(r,p,c) exchange processes see rpc_aire) consists of only one commodity (c),
enabling the corresponding flow variable to be replaced by the
activity variable (used in reduction algorithm).
rpc_aire Indicator that the primary commodity group of an exchange process
(r,ire,c) (ire) consists of only one commodity (c), enabling the corresponding
flow variable to be replaced by the activity variable (used in reduction
algorithm).
rpc_capflo Indicator that a commodity flow c in region r is associated with the
(r,v,p,c) capacity of a process (p, due to NCAP_ICOM, NCAP_OCOM, or
NCAP_COM being provided).
rpc_conly A subset of rpc_capflo indicating those processes (p) in a region (r)
(r,v,p,c) where a commodity (c) is only consumed or produced through
capacity based flows.
rpc_emis Indicator that the flow variable of an emission commodity (cg)
(r,p,cg) associated with process (p) in a region (r) can be replaced by the fuel
flow causing the emission multiplied by the emission factor (used in
reduction algorithm).
rpc_eqire Indicator of the commodities (c) associated with inter-regional
(r,p,c) exchange processes (p) in region (r) for which an inter-region
exchange equation (EQ_IRE) is to be generated; the set does not
contain the marketplace region (rpc_market).
rpcc_ffunc Flow variable of a commodity (c) associated with a process (p) that
(r,p,c) can be replaced by another flow variable of the process, due to a
direct FLO_FUNC or FLO_SUM relationship.
rpc_ire Commodities (c) imported or exported (ie=’IMP’/’EXP’) via process
(all_r,p,c,ie) p in a region (all_r).
rpc_market The list of market place regions (subset of all_r) that trades a
(all_r,p,c) commodity (c) through a process (p). The market structure is user
defined through the set top_ire. rpc_market is internally derived
based on the structure of top_ire, but may also be explicitly specified
by the user.
rpc_pg The mapping of the commodities (c) in a region (r) that belong to the
(r,p,cg,c) primary commodity group (cg) associated with process p.
rpc_spg The list of commodities (c) in a region (r) belonging to the shadow
(r,p,c) primary group of process (p).
rpcg_ptran Indicator of the transformation equations (EQ_PTRANS) that can be
(r,p,c1,c2,cg1,cg2) eliminated by the reduction algorithm.
rpcs_var The list of valid timeslices for the flow variable (VAR_FLO) of
(r,p,c,s) commodity c associated with process p in region r; flow variables of
commodities which are part of the primary commodity group have the
timeslice resolution of the process (prc_tsl), while all other flow
variables are created according to the rps_s1 timeslices.
rps_prcts All (permitted) timeslices (s) at or above the process (p) timeslice
(r,p,s) level (prc_tsl) in a region (r).
35
Set ID 17
Description
Indexes 18
rps_s1 All (permitted) timeslices (s) belonging to the finest timeslice level of
(r,p,s) the process (p, prc_tsl) and the commodity timeslice level (com_tsl)
of the shadow primary commodity group.
rps_s2 All (permitted) timeslices (s) at or above the finest timeslice level of
(r,p,s) the process (p) timeslice level prc_tsl) and the commodity timeslice
level (com_tsl) of the shadow primary commodity group.
rreg Indicator that trade exists from region all_reg to region all_r.
(all_reg,all_r)
rs_below All timeslices (s) strictly below the higher timeslice (ts) in the
(all_r,ts,s) timeslice tree.
rs_below1 All timeslices (s) immediately (one level) below the higher timeslice
(all_r,ts,s) (ts) in the timeslice tree.
rs_tree For a timeslice (ts) all timeslices (s) that are on the same paths within
(all_r,ts,s) the timeslice tree, e.g. if ts=SP WD in Fig. 6, valid timeslices s are:
ANNUAL, SP, SP_WD, SP_WD_D, SP_WD_N
rtc_cumnet Indicator that the commodity net variable (VAR_COMNET) for
(r,t,c) commodity c in region r for period t has a cumulative bound applied.
rtc_cumprd Indicator that the commodity production variable (VAR_COMPRD)
(r,t,c) for commodity c in region r for period t has a cumulative bound
applied.
rtcs_sing Indicator that a commodity c is not available in a specific period t and
(r,t,c,s,io) timeslice s, since the only processes producing (io = ‘OUT’) or
consuming the process (io = ‘IN’) are turned-off.. In the case of io =
‘OUT’, the commodity is not available meaning that processes, which
have only this commodity as input, cannot operate. Similar reasoning
applies to the case io = ‘IN’.
rtcs_varc For commodity (c) in region (r) indicator for the timeslices (s) and the
(r,t,c,s) periods (t) the commodity is available.
rtp = rvp Indication of the periods and pastyears for which process (p) in region
(r,v,p) (r ) is available; all other RTP_* control sets are based on this set.
rtp_cptyr For each vintage period (v) an indication of the periods (t) for which
(r,v,t,p) newly installed capacity of process (p) in a region (r)is available,
taking into account construction lead-time (NCAP_ILED) and
technical lifetime (NCAP_TLIFE).
rtp_off Indication of the periods (t) in which no new investment is permitted
(r,t,p) for a process (p) in a region (r).
rtp_qact Indicator that a bound on process activity (ACT_BND) of a process p
(r,t,p) in a region r can be applied directly to the activity variable
(VAR_ACT); used in reduction algorithm.
rtp_vara Indication of the periods (t) for which a process (p) in a region (r) is
(r,t,p) available.
rtp_varp Indicator that the capacity variable (VAR_CAP) will be generated for
(r,t,p) process (p) in a region (r) in period (t).
rtp_vintyr An indication of for which periods (t) a process (p) in a region (r) is
(r,v,t,p) available since it was first installed (v); for vintaged processes
(prc_vint) identical to rtp_cptyr, for non-vintaged processes the v
index in the rtp_cptyr entries is ignored by setting it to t (v = t).
rtpc For a process (p) in a region (r) the combination of the periods it is
(r,v,p,c) available (rtp) and commodities associated with it (rpc).
36
Set ID 17
Description
Indexes 18
rtps_off An indication for process (p) of the timeslices (s) for which the
(r,t,p,s) process is turned-off (used in reduction algorithm).
rtpcs_varf The list of valid timeslices (s) and periods (t) for the flow variable
(r,t,p,c,s) (VAR_FLO) of process (p) and commodity (c); taking into account
the activity, capacity and flow availability (rtp_vara, rpcs_var and
prc_foff). The timeslice level of a flow variable equals the timeslice
level of the process (prc_tsl) when the flow variable is part of the
commodity group defining the activity of the process. Otherwise the
timeslice level of a flow variable is set to whichever level is finer, that
of the commodity or the process.
uc_dyndir If side = ‘RHS’, indicator for growth constraints to be generated
(r,uc_n,side) between the periods t-1 and t; if side = ‘LHS’, the set is ignored.
uc_gmap_c Indicator that a commodity variable (VAR_COMCON or
(r,uc_n,uc_grptype,c) VAR_COMPRD) for commodity (c) in a region (r) appears in a user
constraint (uc_n).
uc_gmap_p Indicator that a variable (VAR_ACT, VAR_NCAP or VAR_CAP)
(r,uc_n,uc_grptype,p) associated with a process (p) in a region (r) appears in a user
constraint (uc_n).
uc_map_flo Indicator that the flow variable (VAR_FLO) for region r, process p
(uc_n,r,p,c) and commodity c is involved in user constraint uc_n.
uc_map_ire Indicator that an import/export (according to top_ire) trade variable
(uc_n,r,p,c) (VAR_IRE) for region r, process p, and commodity c is involved in a
user constraint (uc_n).

37
3 Parameters

While sets describe structural information of the energy system or qualitative characteristics
of its entities (e.g. processes or commodities), parameters contain numerical information.
Examples of parameters are the import price of an energy carrier or the investment cost of a
technology. Most parameters are time-series where a value is provided (or interpolated) for
each year (datayear). The TIMES model generator distinguishes between user input
parameters and internal parameters. The former are provided by the modeller (usually by way
of a data handling system or “shell” such a VEDA-FE or ANSWER-TIMES), while the latter
are internally derived from the user input parameters, in combination with information given
by sets, in order to calculate for example the cost coefficients in the objective function. This
Chapter first covers the user input parameters in Section 3.1 and then describes the most
important internal parameters as far as they are relevant for the basic understanding of the
equations (Section 3.2). Section 3.3 presents the parameters used for reporting the results of a
model run.

3.1 User input parameters


This section provides an overview of the user input parameters that are available in TIMES to
describe the energy system. Before presenting the various parameters in detail in Section 3.1.3
two preprocessing algorithms applied to the user input data are presented, namely the inter-
/extrapolation and the inheritance/aggregation routines. User input parameters that are time-
dependent can be provided by the user for those years for which statistical information or
future projections are available, and the inter-/extrapolation routine described in Section 3.1.1
used to adjust the input data to the years required for the model run. Timeslice dependent
parameters do not have to be provided on the timelice level of a process, commodity or
commodity flow. Instead the so-called inheritance/aggregation routine described in Section
3.1.2 assigns the input data from the user provided timeslice level to the appropriate timeslice
level as necessary.

3.1.1 Inter- and extrapolation of user input parameters

Time-dependent user input parameters are specified for specific years, the so-called datayears
(datayear). These datayears do not have to coincide with the modelyears (v or modelyear)
needed for the current run. Reasons for differences between these two sets are for example
that the period definition for the model has been altered after having provided the initial set of
input data leading to different milestoneyears (t or milestoneyr) or that statistical data are
only available for certain years that do not match the modelyears. In order to avoid burdening
the user with the cumbersome adjustment of the input data to the modelyears,an inter-
/extrapolation routine is embedded in the TIMES model generator. The inter-/extrapolation
routine distinguishes between a default inter-/extrapolation that is automatically applied to the
input data and an enhanced user-controlled inter-/extrapolation that allows the user to specify
inter-/extrapolation rules for each time-series explicitly. Independent of the default or user-
controlled inter-/extrapolation options, TIMES inter-/extrapolates (using the standard
algorithm) all cost parameters in the objective function to the individual years of the model as
part of calculating the annual cost details.

38
Default inter/extrapolation
The default inter-/extrapolation routines interpolates linearly between data points, while it
extrapolates the first/last data point constantly backward/forward. The parameters given in
Table 6 are by default NOT inter/extrapolated. All other parameters are by default both
interpolated and extrapolated.

Table 6: Parameters not being inter/extrapolated by default


Parameter Justification
ACT_BND
CAP_BND
NCAP_BND
FLO_FR
FLO_SHAR
STGOUT_BND
STGIN_BND
Bound may be intended at specific periods only
COM_BNDNET
COM_BNDPRD
COM_CUMNET
COM_CUMPRD
COM_CHRBND
IRE_BND
IRE_XBND
UC_RHST
User constraint may be intended for specific periods
UC_RHSRT
only
UC_RHSRTS
NCAP_AFM
NCAP_EFFM Interpolation meaningless for these parameters
NCAP_FOMM (parameter value is a discrete number indicating which
NCAP_FSUBM MULTI curve should be used).
NCAP_FTAXM
NCAP_AFX
NCAP_EFFX Interpolation meaningless for these parameters
NCAP_FOMX (parameter value is a discrete number indicating which
NCAP_FSUBX SHAPE curve should be used).
NCAP_FTAXX
NCAP_PASTI Parameter describes past investment for a single vintage
year and is not interpolated.
NCAP_PASTY Parameter describes number of years over which to
distribute past investments.
COM_BLVAL Blending parameters at the moment not interpolated
PEAKDA_BL

Enhanced user-controlled inter/extrapolation


The inter-/extrapolation facility provides maximum flexibility by allowing the user to control
the interpolation of each time series separately. Many bounding constraints as well as market
and product allocation constraints might be applicable either to only specific years or to the
continuous time-span of the full time horizon, or to a subset thereof. The possibility of
controlling interpolation on a time-series basis improves the independence between the years
found in the primary database and the data actually used in the individual runs of a TIMES

39
model. In this way the model is made more flexible with respect to running scenarios with
arbitrary model years and period lengths, while using basically the very same input database.
The enhanced interpolation/extrapolation facility provides the user with options to control the
interpolation and extrapolation of each individual time series (Table 7). Non-default
interpolation/extrapolation can be requested for any parameter by providing an additional
instance of the parameter with an indicator in the YEAR index and a value corresponding to
one of the integer-valued Option Codes (see Table 7 and example below). This control
specification activates the interpolation/extrapolation rule for the time series, and is
distinguished from actual time-series data by providing a special control label (“0”) in the
YEAR index. The particular interpolation rule to apply is a function of the Option Code
assigned to the control record for the parameter. Note that for log-linear interpolation the
Option Code indicates the year from which the interpolation is switched from standard to log-
linear mode. TIMES user shell(s) will provide mechanisms for imbedding the control label
and setting the Option Code through easily understandable selections from a user-friendly
drop-down list, making the specification simple and transparent to the user.

Table 7: Option codes for the control of data interpolation


Option code Action
Interpolation and extrapolation of data in the default way as
0 (or none) predefined in TIMES. This option does not require any explicit
action from the user.
No interpolation or extrapolation of data (only valid for non-
<0
cost parameters).
Interpolation between data points but no extrapolation (useful
1
for many bounds).
Interpolation between data points entered, and filling-in all
points outside the interpolation window with the EPS value.
This is useful for e.g. the RHS of equality-type user
2
constraints, or limitations on future investment in a particular
instance of a technology, which should often have a continuous
value of EPS to be effective.
Forced interpolation and both forward and backward
3…999 extrapolation throughout the time horizon. Useful for many
parameters that are by default not interpolated.
Log-linear interpolation beyond a specified data year, and both
forward and backward extrapolation outside the interpolation
YEAR (>= 1000)
window. Log-linear interpolation is guided by relative
coefficients of annual change instead of absolute data values.

Example:
Three normal data points in a FLO_SHAR data series:
FLO_SHAR('REG','1995','PRC1','COAL','IN_PRC1','ANNUAL','UP') = 0.25;
FLO_SHAR('REG','2010','PRC1','COAL','IN_PRC1','ANNUAL','UP') = 0.12;
FLO_SHAR('REG','2020','PRC1','COAL','IN_PRC1','ANNUAL','UP') = 0.05;

FLO_SHAR is by default NOT interpolated or extrapolated in TIMES. To force


interpolation/extrapolation of the FLO_SHAR parameter the following control option for
this data series should be added:

FLO_SHAR('REG','0','PRC1','COAL','IN_PRC1','ANNUAL','UP') = 3;

40
Log-linear interpolation means that the values in the data series are interpreted as coefficients
of annual change beyond a given YEAR. The YEAR can be any year, including modelyears.
The user only has to take care that the data values in the data series correspond to the
interpretation given to them when using the log-linear option. For simplicity, however, the
first data point is always interpreted as an absolute value, because log-linear interpolation
requires at least one absolute data point to start with.

Example:
FLO_SHAR('REG','0','PRC1','COAL','IN_PRC1','ANNUAL','UP') = 2005;

This parameter specifies a log-linear control option with the value for the threshold YEAR
of log-linear interpolation taken from 2005. The option specifies that all data points up to
the year 2005 should be interpreted normally (as absolute data values), but all values
beyond that year should be interpreted as coefficients of annual change. By using this
interpretation, TIMES will then apply full interpolation and extrapolation to the whole of
the data series. It is the responsibility of the user to ensure that the first data point and all
data points up to (and including) the year 2005 represent absolute values of the parameter,
and that all subsequent data points represent coefficients of annual change. Using the data
of the example above, the first data point beyond 2005 is found for the year 2010, and it
has the value of 0.12. The interpretation thus requires that the maximum flow share of
COAL in the commodity group IN_PRC1 is actually meant to increase by as much as 12%
per annum between the years 1995 and 2010, and by 5% per annum between 2010 and
2020.

Applicability
All the enhanced interpolation options described above are available for all TIMES
parameters, excluding integer-valued parameters related to the SHAPE and MULTI tables, as
shown in Table 8.

Table 8: Parameters which cannot be interpolated


Parameter Comment
NCAP_AFM
NCAP_EFFM
Parameter value is a discrete number indicating which
NCAP_FOMM
MULTI curve should be used.
NCAP_FSUBM
NCAP_FTAXM
NCAP_AFX
NCAP_EFFX
Parameter value is a discrete number indicating which
NCAP_FOMX
SHAPE curve should be used.
NCAP_FSUBX
NCAP_FTAXX

However, another option for the extrapolation of SHAPE index parameters is available.
The extrapolation can be done either only inside the data points provided by the user, or both
inside and outside those data points. Inside the data points the SHAPE index specified for any
datayear is extrapolated to all modelyears (v) between that datayear and the following
datayear for which the SHAPE index is specified.

41
Table 9: Option codes for the extrapolation of SHAPE indexes
Option code Action
<= 0 (or none) No extrapolation (default)
1 Extrapolation between data points only
>= 2 Extrapolation between and outside data points

Example:
The user has specified the following two SHAPE indexes and a control option for
extrapolation:

NCAP_AFX('REG', '0', 'PRC1') = 1;


NCAP_AFX('REG', '1995', 'PRC1') = 12;
NCAP_AFX('REG', '2010', 'PRC1') = 13;

In this case, all modelyears (v) between 1995 and 2010 will get the shape index 12. No
extrapolation is done for modelyears (v) beyond 2010 or before 1995.

The extrapolation options are currently available for the following SHAPE parameters, which
are an indicator for the SHAPE curve that should be applied to the corresponding parameter:

• NCAP_AFX,
• NCAP_FOMX,
• NCAP_FSUBX,
• NCAP_FTAXX,
• FLO_FUNCX.

3.1.2 Inheritance and aggregation of timesliced input parameters

As mentioned before, processes and commodities can be modelled in TIMES on different


timeslice levels. Some of the input parameters, which describe a process or a commodity, are
timeslice specific, i.e. they have to be provided by the user for specific timeslices, e.g. the
availability factor NCAP_AF of a power plant operating on a ‘DAYNITE’ timeslice level.
During the process of developing a model, the timeslice resolution of some processes or even
the entire model may be refined. One could imagine for example the situation that a user
starts developing a model on an ‘ANNUAL’ timeslice level and refines the model later by
refining the timeslice definition of the processes and commodities. In order to avoid the need
for all the timeslice related parameters to be re-entered again for the finer timeslices, TIMES
supports the inheritance and aggregation of parameters along the timeslice tree (see Figure 1).
Inheritance in this context means that input data being specified on a coarser timeslice level
(higher up the tree) are inherited to a finer timeslice level (lower down the tree), whereas
aggregation means that timeslice specific data are aggregated from a finer timeslice level
(lower down the tree) to a coarser one (further up the tree). The inheritance feature may also
be useful in some cases where the value of a parameter should be the same over all timeslices,
since in this case it is sufficient to provide the parameter value for the ‘ANNUAL’ timeslice
which is then inherited to the required finer target timeslices 20.
20
The term target timeslice level or target timeslice is used in the following as synonym
for the timeslice level or timeslices which are required by the model generators depending on
the process or commodity timeslice resolution (prc_tsl and com_tsl respectively).
42
The pre-processor supports different inheritance and aggregation rules, which depend on
the type of attribute. In Table 12 below the inheritance and aggregation rules applied by the
preprocessor are listed for each individual parameter. The following inheritance and
aggregation rules exist in TIMES (Table 10).

Table 10: Inheritance and aggregation rules


Inheritance rules Description
Direct inheritance A value on a coarser timeslice is inherited by target timeslices
below (in the timeslice tree), without changing the numeric
values.
Weighted inheritance A value on a coarser timeslice is inherited by target timeslices
below (in the timeslice tree) by weighting the input value with
the ratio of the duration of the target timeslices to the duration
of the coarser timeslice.
No inheritance Absolute bound parameters specified on a coarser timeslice
level than the target timeslice level are not inherited. Instead a
constraint summing over related variables on the finer
timeslices is generated, e.g. an annual ACT_BND parameter
specified for a process with a ‘DAYNITE’ process timeslice
level (prc_tsl) leads to a constraint (EQ_ACTBND) with the
summation over the activity variables on the ‘DAYNITE’
level as LHS term and with the bound as RHS term.
Aggregation rules Description
Standard aggregation The values specified on finer timeslices are aggregated to the
target timeslice being a parent node in the timeslice tree by
summing over the values on the finer timeslices.
Weighted aggregation The values specified for finer timeslices are aggregated to the
target timeslice being a parent node in the timeslice tree by
summing over the weighted values on the finer timeslices.
The ratios of the duration of the finer timeslices to the
duration of the target timeslice serve as weighting factors.

The different aggregation rules are illustrated by examples in Figure 9. It should be noted
that if input data are specified on two timeslice levels different from the target level, then the
inheritance/aggregation routine may lead to incorrect results. Therefore it is strongly
recommended to provide input data only for timeslices on one timeslice level. One should
also notice that if a mixture of fixed bounds with upper or lower bounds is specified by the
user on a timeslice level different from the target level, then the fixed bounds are converted
into upper and lower bounds. These upper and lower bounds are then inherited or aggregated
with the other user-specified upper or lower bounds to the target timeslice level.

43
Weighted Inheritance Direct Inheritance

Given value = 1.0 ANNUAL Given value = 1.0 ANNUAL


(G_YRFR=1.0) (G_YRFR=1.0)

WI SU WI SU
(G_YRFR=0.6) (G_YRFR=0.4) (G_YRFR=0.6) (G_YRFR=0.4)
Given Given Given Given
Target value = none value = none
Target value = none value = none
level level
Inherited Inherited Inherited Inherited
value = 0.6 value = 0.4 value = 1.0 value = 1.0

WID WIN SUD SUN WID WIN SUD SUN


(G_YRFR=0.25) (G_YRFR=0.35) (G_YRFR=0.15) (G_YRFR=0.25) (G_YRFR=0.25) (G_YRFR=0.35) (G_YRFR=0.15) (G_YRFR=0.25)

Weighted Aggregation Standard Aggregation

ANNUAL ANNUAL
(G_YRFR=1.0) (G_YRFR=1.0)

WI SU WI SU
(G_YRFR=0.6) (G_YRFR=0.4) (G_YRFR=0.6) (G_YRFR=0.4)
Given Given Given Given
Target value = none value = none
Target value = none value = none
level level
Aggregated Aggregated Aggregated Aggregated
value = 1.58 value = 3.63 value = 3.0 value = 7.0

WID WIN SUD SUN WID WIN SUD SUN


(G_YRFR=0.25) (G_YRFR=0.35) (G_YRFR=0.15) (G_YRFR=0.25) (G_YRFR=0.25) (G_YRFR=0.35) (G_YRFR=0.15) (G_YRFR=0.25)
Given Given Given Given Given Given Given Given
value = 1.0 value = 2.0 value = 3.0 value = 4.0 value = 1.0 value = 2.0 value = 3.0 value = 4.0

Figure 9: Inheritance and aggregation rules for timeslice specific parameters in TIMES

3.1.3 Overview of user input parameters

A list of all user input parameters is given in Table 12. In order to facilitate the recognition by
the user of to which part of the model a parameter relates the following naming conventions
apply to the prefixes of the parameters (Table 11).

Table 11: Naming conventions for user input parameters


Prefix Related model component
ACT_ Activity of a process
CAP_ Capacity of a process
COM_ Commodity
FLO_ Process flow
IRE_ Inter-regional exchange
NCAP_ New capacity of a process
STG_ Storage process
UC_ User constraint

44
Table 12: User input parameters in TIMES
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
23
/extrapolation
ACT_BND • Units of activity • Since inter-/extrapolation Bound on the overall • Activity limit
(r,datayear,p,s,bd) • [open]; default default is none, the activity a process. constraint
value: none bound must be explicitly (EQ(l)_ACTBND)
• Default i/e 26: none specified for a when s is above
milestoneyear, unless an prc_tsl.
inter-/extrapolation • Direct bound on
option is set. activity variable
• If the bound is specified (VAR_ACT)
for a timeslice s above when at the
the process timeslice prc_tsl level.
resolution (prc_tsl), the • May appear in
bound is applied to the user constraints
sum of the activity (EQ_UC*) if
variables according to the (‘ACT_BNDLO/F

21
The first row contains the parameter name, the second row contains in brackets the index domain over which the parameter is
defined.
22
This column gives references to related input parameters or sets being used in the context of this parameter as well as internal
parameters/sets or result parameters being derived from the input parameter.
23
This column lists the unit of the parameter, the possible range of its numeric value [in square brackets] and the inter-
/extrapolation rules that apply.
24
An indication of circumstances for which the parameter is to be provided or omitted, as well as description of
inheritance/aggregation rules applied to parameters having the timeslice (s) index.
25
Equations or variables that are directly affected by the parameter.
26
Abbreviation i/e = inter-/extrapolation

45
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
timeslice tree. X/UP’) specified
• Standard aggregation. in UC_NAME.
ACT_COST OBJ_ACOST, • Monetary unit per Variable costs • Applied to the
(r,datayear,p,cur) CST_ACTV, unit of activity associated with the activity variable
PAR_OBJACT, • [open]; default activity of a process. (VAR_ACT) as a
TOT_ACT value: none component of the
• Default i/e: objective function
standard (EQ_OBJVAR).
• May appear in
user constraints
(EQ_UC*) if
specified in
UC_NAME.
B M, D, E, Beginning year of
(t) COEF_CPT, period t.
rtp_vintyr
CAP_BND PAR_CAPLO, • Capacity unit • Since inter-/extrapolation Bound on • Imposes an
(r,datayear,p,bd) PAR_CAPUP • [open]; default is turned-off by default, investment in new indirect limit on
value: none the bound must be capacity. the capacity
• Default i/e: none specified for each transfer equation
milestoneyear desired, if (EQ_CPT) by
no specific information means of a direct
regarding inter- bound on the
/extrapolation option is capacity variable
given. (VAR_CAP).
• May appear in

46
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
user constraints
(EQ_UC*) if
(‘CAP_BNDLO/F
X/UP’) specified
in UC_NAME.
CCAP0 PAT, CCOST0 • Capacity unit • For learning technologies Initial cumulative • Cumulative
(r,teg) • [open]; default teg when ETL is used. capacity of a investment
value: none learning technology. constraint
(EQ_CUINV) and
cumulative
capacity variable
(VAR_CCAP) in
endogenous
technological
learning
formulation.
CCAPM CCOSTM • Capacity unit • For learning technologies Maximum • Core ETL
(r,teg) • [open]; default teg when ETL is used. cumulative capacity. equations.
value: none
COM_BNDNET rhs_combal, • Commodity unit • Since inter-/extrapolation Limit on the net • The balance
(r,datayear,c,s,bd) rcs_combal • [open]; default is turned-off by default, amount of a constraint is set to
value: none the bound must be commodity within a an equality
• Default i/e: none specified for each region for a (EQE_COMBAL)
milestoneyear desired, particular timeslice. .
unless an inter- • Either the finer
/extrapolation option is timeslice variables

47
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
given. are summed
• If the bound is specified (EQ(l)_BNDNET)
for a timeslice s above or the bound
the commodity timeslice applied direct to
resolution (com_tsl), the the commodity net
bound is applied to the variable(VAR_CO
sum of the net MNET) when at
commodity variables the commodity
(VAR_COMNET) below level (com_tsl).
it, according to the
timeslice tree.
• Standard aggregation.
COM_BNDPRD rhs_comprd, • Commodity unit • Since inter-/extrapolation Limit on the amount • The balance
(r,datayear,c,s,bd) rcs_comprd • [open]; default is turned-off by default, of a commodity constraint is set to
value: none the bound must be produced within a an equality
• Default i/e: none specified for each region for a (EQE_COMBAL)
milestoneyear desired, particular timeslice. .
unless an inter- • Finer timeslice
/extrapolation option is variables summed
given. (EQ(l)_BNDPRD)
• If the bound is specified .
for a timeslice s being • or the bound is
above the commodity applied direct to
timeslice resolution the commodity
(com_tsl), the bound is production
applied to the sum of the variable

48
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
commodity production (VAR_COMPRD)
variables when at the
(VAR_COMPRD) below commodity level
it, according to the (com_tsl).
rhtimeslice tree.
• Standard aggregation.
COM_BPRICE COM_ELAST, • Monetary unit per • The control parameter Base price of a • Controls the
(r,t,c,s,cur) COM_STEP, commodity unit $SET TIMESED ‘YES’ demand commodity inclusion of the
COM_VOC • [open]; default to activate elastic for the elastic elastic demand
value: none demands must be set. demand formulation. variable
• Default i/e: none (VAR_ELAST) in
the commodity
balance
equation(EQ(l)_C
OMBAL)
• Applied to the
elastic demand
variable
(VAR_ELAST) in
the objective
function
(EQ_OBJELS).
COM_CSTNET OBJ_CNCST, • Monetary unit per • Direct inheritance. Cost on the net • Forces the net
(r,datayear,c,s,cur) CST_COMV, commodity unit • Weighted aggregation. amount of a commodity
PAR_OBJCOM, • [open]; default commodity within a variable
TOT_COM, value: none region for a (VAR_COMNET)

49
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
rhs_combal, • Default i/e: particular timeslice. to be included in
rcs_combal standard the equality
balance constraint
(EQE_COMBAL)
.
• Applied to said
variable in the cost
component of the
objective function
(EQ_OBJVAR).
COM_CSTPRD OBJ_CPCST, • Monetary unit per • Direct inheritance. Cost on the • Forces the
(r,datayear,c,s,cur) CST_COMV, commodity unit • Weighted aggregation. production of a commodity
PAR_OBJCOM, • [open]; default commodity, within a production
TOT_COM, value: none region for a variable
rhs_comprd, • Default i/e: particular timeslice. (VAR_COMPRD)
rcs_comprd standard to be included in
the equality
balance constraint
(EQE_COMBAL)
.
• Applied to said
variable in the cost
component of the
objective function
(EQ_OBJVAR).
COM_CUMNET bohyear, eohyear, • Commodity unit • The years y1 and y2 may Bound on the • Forces the net

50
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
(r,y1,y2,bd) rhs_combal, • [open]; default be any years of the set cumulative net commodity
rcs_combal, value: none allyear; where y1 may amount of a variable
rtc_cumnet • Default i/e: not also be ‘BOH’ for first commodity between (VAR_COMNET)
possible year of first period and the years y1 and y2, to be included in
y2 may be ‘EOH’ for last within a region for athe equality
year of last period. particular timeslice.balance constraint
(EQE_COMBAL)
.
• Generates the
cumulative
commodity
constraint
(EQ(l)_CUMNET
).
COM_CUMPRD bohyear, eohyear, • Commodity unit • The years y1 and y2 may Bound on the • Forces the net
(r,y1,y2,bd) rhs_comprd, • [open]; default be any years of the set cumulative commodity
rcs_comprd, value: none allyear; where y1 may production of a variable
rtc_cumprd • Default i/e: not also be ‘BOH’ for first commodity between (VAR_COMPRD)
possible year of first period and the years y1 and y2 to be included in
y2 may be ‘EOH’ for last within a region for a the balance
year of last period. particular timeslice. equation
(EQE_COMBAL)
.
• The cumulative
constraint is
generated

51
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
(EQ(l)_CUMPRD
).
COM_ELAST COM_BPRICE, • Dimensionless • The control parameter Elasticity of demand • Controls the
(r,datayear,c,s,bd) COM_STEP, • [open]; default $SET TIMESED ‘YES’ indicating how inclusion of the
COM_VOC value: none to activate elastic much the demand elastic demand
• Default i/e: none demands must be set. rises/falls in variable
• An elasticity is required response to a unit (VAR_ELAST) in
for each direction the change in the the commodity
demand is permitted to marginal cost of balance
move. meeting a demand equation(EQ(l)_C
• The index bd = ‘LO’ that is elastic. OMBAL)
corresponds to the • Applied to the
direction of decreasing elastic demand
the demand, while bd = variable
‘UP’ denotes the (VAR_ELAST) in
direction for demand the objective
increase. function costs
• A different value may be (EQ_OBJELS).
provided for each
direction, thus curves
may be asymmetric.
COM_FR COM_PROJ, • Decimal fraction • Only applicable to Fraction of the • Applied to the
(r,datayear,c,s) com_ts, com_tsl, • [0,1]; default demand commodities annual demand annual demand
RTCS_TSFR value: timeslice (com_type = ‘DEM’). (COM_PROJ) (COM_PROJ) as
duration • Affects timeslice occurring in the RHS of the
(G_YRFR) resolution at which a timeslice s; balance equation

52
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
• Default i/e: commodity is tracked describes the shape (EQ(l)_COMBAL
standard (RTCS_TSFR), and of the load curve. ).
thereby may affect when • Enters the
a process cannot operate peaking equation
(rtps_off). (EQ_PEAK), if a
• Weighted inheritance. peaking
• Weighted aggregation. commodity.
• Applied when
setting the upper
bound of an
elastic demand
step
(VAR_ELAST).
COM_IE • Decimal fraction • Direct inheritance. Infrastructure or • Overall efficiency
(r,datayear,c,s) • [0,1]; default • Weighted aggregation. transmission applied to the total
value: 1 efficiency of a production of a
• Default i/e: commodity. commodity in the
standard commodity
balance equation
(EQ(l)_COMBAL
).
COM_PKFLX com_peak, • Scalar • Direct inheritance. Difference between • Applied to the
(r,datayear,c,s) com_pkts, • [open]; default • Weighted aggregation. the average demand total consumption
COM_PKRSV, value: none and the peak of a commodity to
FLO_PKCOI • Default i/e: demand in timeslice raise the capacity
standard s, expressed as needed to satisfy

53
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
fraction of the the peaking
average demand. constraint
(EQ_PEAK).
COM_PKRSV com_peak, • Scalar Peak reserve margin • Applied to the
(r,datayear,c) com_pkts, • [open]; default as fraction of peak total consumption
COM_PKFLX, value: none demand, e.g. if of a commodity to
FLO_PKCOI • Default i/e: COM_PKRSV = raise the capacity
standard 0.2, the total needed to satisfy
installed capacity the peaking
must exceed the constraint
peak load by 20 %. (EQ_PEAK).
COM_PROJ COM_FR • Commodity unit • Only applicable to Projected annual • Serves as the RHS
(r,datayear,c) • [open]; default demand commodities demand for a (after COM_FR
value: none (com_type = ‘DEM’) commodity. applied) of the
• Default i/e: commodity
standard balance constraint
(EQ(l)_COMBAL
).
• Enters the peaking
equation
(EQ_PEAK), if a
peaking
commodity.
• Applied when
setting the upper
bound of an elastic

54
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
demand step
(VAR_ELAST).
COM_STEP COM_BPRICE, • Integer number • The control parameter Number of steps to • Controls the
(r,c,bd) COM_ELAST, • [open]; default $SET TIMESED ‘YES’ use for the instance of the
COM_VOC, value: none to activate elastic approximation of elastic demand
rcj demands must be set. change of variable
The number of steps is producer/consumer (VAR_ELAST)
required for each surplus when using in:
direction the demand is the elastic demand  the commodity
permitted to move. formulation. balance
• The index bd = LO equation
corresponds to the (EQ(l)_COMB
direction of decreasing AL);
the demand, while bd =  setting of the
UP denotes the direction step limit for
for demand increase. the elastic
• A different value may be demand
provided for each variable
direction, thus curves (VAR_ELAST
may be asymmetric. );
 enters the
objective
function costs
(EQ_OBJELS).
COM_TAXNET OBJ_CNTAX, • Monetary unit per • Direct inheritance. Tax on the net • Forces the net
(r,datayear,c,s,cur) CST_COMV, commodity unit • Weighted aggregation. amount of a commodity
PAR_OBJCOM, commodity within a variable

55
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
TOT_COM, • [open]; default region for a (VAR_COMNET)
rhs_combal, value: none particular timeslice. to be included in
rcs_combal • Default i/e: the equality
standard balance constraint
(EQE_COMBAL)
.
• Applied to said
variable in the cost
component of the
objective function
(EQ_OBJVAR).
COM_TAXPRD OBJ_CPTAX, • Monetary unit per • Direct inheritance. Tax on the • Forces the
(r,datayear,c,s,cur) CST_COMV, commodity unit • Weighted aggregation. production of a commodity
PAR_OBJCOM, • [open]; default commodity within a production
TOT_COM, value: none region for a variable
rhs_comprd, • Default i/e: particular timeslice. (VAR_COMPRD)
rcs_comprd standard to be included in
the equality
balance constraint
(EQE_COMBAL)
.
• Applied to said
variable in the cost
component of the
objective function
(EQ_OBJVAR).

56
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
COM_SUBNET OBJ_CNSUB, • Monetary unit per • Direct inheritance. Subsidy on the net • Forces the net
(r,datayear,c,s,cur) CST_COMV, commodity unit • Weighted aggregation. amount of a commodity
PAR_OBJCOM, • [open]; default commodity within a variable
TOT_COM, value: none region for a (VAR_COMNET)
rhs_combal, • Default i/e: particular timeslice. to be included in
rcs_combal standard the equality
balance constraint
(EQE_COMBAL)
.
• Applied (-) to said
variable in the cost
component of the
objective function
(EQ_OBJVAR).
COM_SUBPRD OBJ_CPSUB, • Monetary unit per • Direct inheritance. Subsidy on the • Forces the
(r,datayear,c,s,cur) CST_COMV, commodity unit • Weighted aggregation. production of a commodity
PAR_OBJCOM, • [open]; default commodity within a production
TOT_COM, value: none region for a variable
rhs_comprd, • Default i/e: particular timeslice. (VAR_COMPRD)
rcs_comprd standard to be included in
the equality
balance constraint
(EQE_COMBAL)
.
• Applied (-) to said
variable in the cost

57
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
component of the
objective function
(EQ_OBJVAR).
COM_VOC COM_BPRICE, • Dimensionless • The control parameter Possible variation of • Applied when
(r,datayear,c,bd) COM_STEP, • [open]; default: $SET TIMESED ‘YES’ demand in both setting the bound
COM_ELAST none to activate elastic directions when of an elastic
• Default i/e: demands must be set. using the elastic demand step
standard • A number is required for demand formulation. (VAR_ELAST).
each direction the • Applied to the
demand is permitted to elasticity variable
move. in the objective
• The index bd = LO function costs
corresponds to the (EQ_OBJELS).
direction of decreasing
the demand, while bd =
UP denotes the direction
for demand increase.
• A different value may be
provided for each
direction, thus curves
may be asymmetric.
E B. D, M, • For each modelyear End year of period t, • The amount of
(t) COEF_CPT, period used in determining new investment
rtp_vintyr the length of each (VAR_NCAP)
period carried over in the
capacity transfer

58
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
constraint
(EQ(l)_CPT).
• Amount of
investments
(VAR_NCAP)
remaining past the
modelling horizon
that needs to be
credited back to
the objective
function
(EQ_OBJINV).
FLO_BND • Commodity unit • If the bound is specified Bound on the flow • Flow activity limit
(r,datayear,p,cg,s,bd) • [open]; default: for a timeslice s being of a commodity or constraint
none above the flow timeslice the sum of flows (EQ(l)_FLOBND)
• Default i/e: none resolution (rtpcs_varf), within a commodity when s is above
the bound is applied to group. rtpcs_varf
the sum of the flow • Direct bound on
variables (VAR_FLO) activity variable
according to the timeslice (VAR_FLO) when
tree, otherwise directly to at the rtpcs_varf
the flow variable. level.
• No aggregation 27. • May appear in
user constraints

27
Standard aggregation not implement yet.

59
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
(EQ_UC*) if
(‘FLO_BNDLO/F
X/UP’) specified
in UC_NAME.
FLO_COST OBJ_FCOST, • Monetary unit per • Direct inheritance Variable cost of a • Applied to the
(r,datayear,p,c,s,cur) CST_FLOV, commodity unit • Weighted aggregation process associated flow variable
PAR_OBJFLO, • [open]; default: with the production/ (VAR_FLO) when
TOT_FLO none consumption of a entering the
• Default i/e: commodity. objective function
standard (EQ_OBJVAR).
• May appear in
user constraints
(EQ_UC*) if
specified in
UC_NAME.
FLO_DELIV OBJ_FDELV, • Monetary unit per • Direct inheritance. Cost of a delivering • Applied to the
(r,datayear,p,c,s,cur) CST_FLOV, commodity unit • Weighted aggregation. (consuming) a flow variable
PAR_OBJFLO, • [open]; default: commodity to a (VAR_FLO) when
TOT_FLO none process. entering the
• Default i/e: objective function
standard (EQ_OBJVAR).
• May appear in
user constraints
(EQ_UC*) if
specified in
UC_NAME.

60
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
FLO_FR • Decimal fraction • FLO_FR may be Limits /Load curve • A share equation
(r,datayear,p,c,s,bd) • [0,1]; default specified as lower, upper on the flow of (EQ(l)_FLOFR)
value: none or fixed bounds, in commodity (c) limiting the
• Default i/e: none contrast to COM_FR. entering or leaving amount of
• FLO_FR can be specified process (p) in a commodity (c) is
for any flow variable timeslice. generated
having a subannual according to the
timeslice resolution. bound type (bd = l
• Omitted timeslices (s) indicator).
have the associated flow
turned off in said
timeslice.
• Weighted inheritance.
• Weighted aggregation.
FLO_FUNC FLO_SUM, • Commodity unit • If for the same indexes A key parameter • Establishes the
(r,datayear,p,cg1,cg2 FLO_FUNCX, of cg2/commodity the parameter FLO_SUM describing the basic basic
,s) COEF_PTRAN, unit of cg1 is specified but no operation of or transformation
rpc_ffunc, • [open]; default FLO_FUNC, the within a process. relationship
rpcg_ptran value: see next FLO_FUNC is set to 1. Sets the ratio (EQ_PTRANS)
column • Important factor in between the sum of between one or
• Default i/e: determining the level at flows in commodity more input (or
standard which a process operates group cg2 to the output)
in that the derived sum of flows in commodities and
transformation parameter commodity group one or more
(COEF_PTRAN) is cg1, thereby output (or input)
inherited/aggregated to defining the commodities.

61
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
the timeslice levels of the efficiency of • Establishes the
flow variables associated producing cg2 from relationship
with the commodities in cg1 (subject to any between storage
the group cg1. FLO_SUM). cg1 level
and cg2 may be also (VAR_STGLVL)
single commodities. and the a related
commodity flow
(VAR_FLO) in
the overall storage
equation
(EQ_STG).
FLO_FUNCX FLO_FUNC, • Default • Provided when shaping Age-based shaping • Applied to the
(r,datayear,p,cg1,cg2 FLO_SUM, extrapolation: based upon age is curve (SHAPE) to flow variable
) COEF_PTRAN none desired. be applied to the (VAR_FLO) in
• Vintaged processes only flow parameters transformation
(FLO_FUNC/ equation
FLO_SUM) (EQ_PTRANS) to
account for
changes in the
operating
characteristics of a
process due to the
age (number of
years since
installation) of a
process.

62
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
FLO_MARK • Decimal fraction • The same given fraction Process-wise market • The individual
(r,datayear,p,c,bd) • [0,1]; default is applied to all time- share in total process flow
value: none slices of the commodity commodity variables
• Default i/e: production.
(this could be generalized (VAR_FLO,
standard to allow time-slice- VAR_IN,
specific fractions, if VAR_STGIN/OU
deemed useful). T) are constrained
(EQ(l)_FLMRK)
to a fraction of the
total production of
a commodity
(VAR_COMPRD)
.
• Forces the
commodity
production
variable
(VAR_COMPRD)
to be included in
the equality
balance constraint
(EQE_COMBAL)
.
FLO_PKCOI COM_PKRSV, • Scalar • FLO_PKCOI is specified Factor that permits • Applied to the
(r,datayear,p,c,s) COM_PKFLX, • [open]; default for individual processes attributing less of flow variable
com_peak, value: 1 p consuming the peak the average demand (VAR_FLO) to
com_pkts to the peaking

63
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
• Default i/e: commodity c. equation adjust the amount
standard • Direct inheritance. (EQ_PEAK) in of a commodity
• Weighted aggregation. situations where the consumed when
demand is assumed considering the
to not necessary average demand
occur coincident contributing to the
with the peak. peaking constraint
(EQ_PEAK).

FLO_SHAR • Decimal fraction • Direct inheritance. Share of flow • When the


(r,datayear,p,c,cg,s,b • [0,1]; default • Weighted aggregation. commodity c based commodity is an
d) value: none • A common example for upon the sum of input an
• I/e over pastyears the use of FLO_SHAR is individual flows EQ(l)_INSHR
but not to specify the power to defined by the equation is
milestoneyears heat ratio of CHP plants commodity group cg generated.
in the backpressure point. belonging to process • When the
For example for a heat p. commodity is an
commodity c=‘DH’ of a output an
CHP plant p=‘CHP1’ and EQ(l)_OUTSHR
a commodity group equation is
cg=‘CG_CHP’ generated.
containing the heat and
electricity commodity,
the FLO_SHAR
parameter will contain
the value 1/(1+REH)

64
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
with REH being the
power to heat ratio. For a
backpressure power plant
FLO_SHAR is a fixed
bound (bd = ’FX’), for an
extraction
condensing/pass-out
CHP plant FLO_SHAR
is specified as an upper
bound (bd = ’UP’).
FLO_SUB OBJ_FSUB, • Monetary unit per • Direct inheritance. Subsidy on a process • Applied with a
(r,datayear,p,c,s,cur) CST_FLOV, commodity unit • Weighted aggregation. flow. minus sign to the
PAR_OBJFLO, • [open]; default: flow variable
TOT_FLO none (VAR_FLO) when
• Default i/e: entering the
standard objective function
(EQ_OBJVAR).
• May appear in
user constraints
(EQ_UC*) if
specified in
UC_NAME.
FLO_SUM FLO_FUNC • Commodity unit • A common example for Multiplier applied The FLO_SUM
(r,datayear,p,cg1,c,c FLO_FUNCX of cg2/commodity the use of FLO_SUM is for commodity c of multiplier is applied
g2,s) COEF_PTRANS, unit of c to describe the electricity group cg1 along with
fs_emis, • [open]; default loss per heat unit gained corresponding to the FLO_FUNC
rpc_emis, flow rate based upon parameter in the

65
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
rpc_ffunc, value: see next when describing the the sum of transformation
rpcg_ptran column constant fuel input line of individual flows coefficient
• Default i/e: extraction defined by the (COEF_PTRANS),
standard condensing/pass-out commodity group which is applied to
CHP plants. cg2 of process p. the flow variable
• If a FLO_SUM is Most often used to (VAR_FLO) in the
specified and no define the emission transformation
corresponding rate, or to adjust the equation
FLO_FUNC, the overall efficiency of (EQ_PTRANS).
FLO_FUNC is set to 1. a technology based
• FLO_FUNC is specified upon fuel consumed.
for a true commodity
group cg1, and no
FLO_SUM is specified
for the commodities in
cg1, these FLO_SUM are
set to 1.
• The derived parameter
COEF_PTRANS is
inherited/aggregated to
the timeslice level of the
flow variable of the
commodity c.
FLO_TAX OBJ_FTAX, • Monetary unit per • Direct inheritance. Tax on a process • Applied to the
(r,datayear,p,c,s,cur) CST_FLOV, commodity unit • Weighted aggregation. flow. flow variable
PAR_OBJFLO, • [open]; default: (VAR_FLO) when

66
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
TOT_FLO none entering the
• Default i/e: objective function
standard (EQ_OBJVAR).
• May appear in
user constraints
(EQ_UC*) if
specified in
UC_NAME.
G_DRATE OBJ_DISC, • Decimal fraction • A value must be provided System-wide • The discount rate
(r,allyear,cur) OBJ_DCEOH, • [0,1]; default for each region and discount rate in is taken into
NCAP_DRATE, value = none period. region r for each consideration
COR_SALVI, • Default i/e: time-period. when constructing
COR_SALVD, standard the objective
VDA_DISC function
discounting
multiplier
(OBJ_DISC),
which is applied in
each components
of the objective
function
(EQ_OBJVAR,
EQ_OBJINV,
EQ_OBJFIX,
EQ_OBJSALV,
EQ_OBJELS).

67
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
G_DYEAR OBJ_DISC, • Year Base year for • The year to which
TOT_OBJ • [open]; default discounting. all costs are to be
value = 1990 discounted is
taken into
consideration
when constructing
the objective
function
discounting
multiplier
(OBJ_DISC),
which is applied in
each of the
components of the
objective function
(EQ_OBJVAR,
EQ_OBJINV,
EQ_OBJFIX,
EQ_OBJSALV,
EQ_OBJELS).
G_ILEDNO NCAP_ILED • Decimal fraction • Only provided when the If the ratio of lead- • Prevents the
• [0,1]; default costs associated with the time (NCAP_ILED) investment costs
value 0.1 lead-time for new to the period associated with
capacity (NCAP_ILED) duration (D) is investment lead-
are not to be included in below this threshold times from energy
the objective function. then the lead-time the investment
consideration will be component of the

68
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
ignored in the objective function
objective function (EQ_OBJINV).
costs.
G_NOINTERP All parameters that • Binary indicator • Only provide when Switch for generally
are normally • [0 or 1]; default interpolation / turning-on (= 0 ) and
subjected to value = 0 extrapolation is to be turning-off (= 1 )
interpolation / turned off for all sparse inter- /
extrapolation parameters. extrapolation.
• Interpolation of cost
parameters is always
done.
G_TLIFE NCAP_TLIFE • Scalar Default value for the
• [open]; default technical lifetime of
value = 10 a process if not
provided by the
user.
G_YRFR RTCS_TSFR, • Fraction • Must be provided for Duration of • Applied to various
(all_r,s) RS_STGPRD • [0,1]; default each region and timeslice s as variables
value = none; only timeslice. fraction of a year. (VAR_NCAP+PA
for the ANNUAL Used for shaping the STI,
timeslice a value load curve and VAR_COMX,
of 1 is predefined lining up timeslice VAR_IRE,
duration for inter- VAR_FLO,
regional exchanges. VAR_SIN/OUT)
in the commodity
balance equation

69
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
(EQ(l)_COMBAL
).
IRE_BND top_ire • Commodity unit • Only applicable for inter- Bound on the total • Controls the
(r,datayear,c,s,all_r,i • [open]; default regional exchange import (export) of instances for
e,bd) value = none processes (IRE). commodity (c) from which the trade
• Default i/e: none • If the bound is specified (to) region all_r in bound constraint
for a timeslice (s) being (out of) region r. (EQ(l)_IREBND)
above the commodity (c) is generated, and
timeslice resolution, the the RHS.
bound is applied to the
sum of the
imports/exports
according to the timeslice
tree.
• Standard aggregation.
IRE_FLO top_ire • Commodity unit • Only applicable for inter- Efficiency of • Applied to the
(r1,datayear,p,c1,r2,c c2/commodity regional exchange exchange process exchange flow
2,s2) unit c1 processes (IRE) between from commodity c1 variable
• [open]; default two internal regions. in region r1 to (VAR_IRE) in the
value = 1 • Note that for each commodity c2 in the inter-regional
• Default i/e: direction of trade a region2 in timeslice trade equation
standard separate IRE_FLO needs s2; the timeslice s2 (EQ_IRE).
to be specified. refers to the r2 • Applied to the
• Similar to FLO_FUNC region. exchange flow
for standard processes. variable
• Direct inheritance. (VAR_IRE) when

70
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
• Weighted aggregation. a bound on inter-
regional trade is to
be applied
(EQ(l)_IREBND).

IRE_FLOSUM top_ire • Commodity unit • Only applicable for inter- Auxiliary • The multiplier is
(r,datayear,p,c1,s,ie, c2/commodity regional exchange consumption (io = applied to the flow
c2,io) unit c1 processes (IRE). IN, owing to the variable
• [open]; default • Since the efficiency commodity entering (VAR_IRE)
value = 1 IRE_FLO can only be the process) or associated with an
• Default i/e: used for exchange production/ emission inter-reginal
standard between internal regions, (io = OUT, owing to exchange in the
IRE_FLOSUM may be the commodity commodity
used to define an leaving the process) balance constraint
efficiency for an of commodity c2 (EQ(l)_COMBAL
import/export with an due to the IMPort / ).
external region by EXPort (index ie) of • If a flow share
specifying the same the commodity c1 in (FLO_SHAR) is
region r 28

28
The indexing of auxiliary consumption flows or emissions of inter-regional exchange processes is illustrated in the figure below.

71
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
commodity for c1 and c2 provided for an
and the value 1- inter-regional
efficiency as auxiliary exchange process
consumption. then the multiplier
• Direct inheritance. is applied to the
• Weighted aggregation. flow variable
(VAR_IRE) in the
share constraint
(EQ(l)_IN/OUTS
HR).
• If a cost is provide
for the flow
(FLO_COST or
FLO_DELIV)
then the factor is
applied to the flow
variable
(VAR_IRE) in the

72
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
variable
component of the
objective function
(EQ_OBJVAR).
IRE_PRICE OBJ_IPRIC, • Monetary unit / • Only applicable for inter- IMPort/EXPort price • The price of the
(r,datayear,p,c,s,all_r CST_COMV, commodity unit regional exchange (index ie) for exchange
,ie,cur) PAR_OBJCOM, • [open]; default processes (IRE). to/from an internal commodity is
TOT_COM, value: none • Ignored if all_r is an region of a applied to the
top_ire • Default i/e: internal region. commodity (c) trade flow variable
standard • Direct inheritance. originating (VAR_IRE) in the
• Weighted aggregation. from/heading to an variable costs
external region component of the
all_r. objective function
(EQ_OBJVAR).

IRE_XBND top_ire • Commodity unit • Only applicable for inter- Bound on the total • The trade limit
(all_r,datayear,c,s • [open]; default regional exchange IMPort (EXPort) equation
ie,bd) value: none processes (IRE). (index ie) of EQ(l)_XBND
• Default i/e: none • Provide whenever a trade commodity c in generated either
flow is to be constrained. region all_r with all sums lower flow
• Note that the limit is sources variables
either imposed by (destinations). (VAR_IRE) or
summing lower or splits (according
splitting higher flow to the timeslice
variables (VAR_IRE) tree) coarser
when specified at other variables.

73
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
than the actual flow level
(as determined by the
commodity and process
levels (COM_TSL/
PRC_TSL ).
IRE_CCVT IRE_TSCVT, • Scalar • Required for mapping Conversion factor • The conversion
(r1,c1,r2,c2)) top_ire • Default value = 1 commodities involved in between commodity factor is applied to
if commodity inter-regional exchanges units in region r1 the flow variable
names are the between two regions and region r2. (VAR_IRE) in the
same in both whenever commodities Expresses the inter-regional
regions traded are in different amount of balance constraint
• I/e: none units in the regions. commodity c2 in (EQ_IRE).
region r2 equivalent • Similarly, applied
to 1 unit of to the the flow
commodity c1 in variable
region r1. (VAR_IRE) when
an inter-regional
exchange is
bounded in the
limit constratint
(EQ(l)_IREBND).
• Similarly, applied
to the the flow
variable
(VAR_IRE) when
an exchange with

74
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
an external region
is bounded
(EQ(l)_XBND).
IRE_TSCVT IRE_CCVT, • Scalar • Used for mapping Matrix for mapping • The conversion
(r1,s1,r2,s2) top_ire • [open]; default timeslices in different timeslices; the value factor is applied to
value = 1 if regions. for (r1,s1,r2,s2) the flow variable
timeslice tree and • Required if timeslice gives the fraction of (VAR_IRE) in the
names are the definitions are different timeslice s2 in inter-regional
same in both in the regions. region r2 that falls balance constraint
regions in timeslice s1 in (EQ_IRE).
• I/e: none region r1. • Similarly, applied
to the the flow
variable
(VAR_IRE) when
an inter-regional
exchange is
bounded in the
limit constratint
(EQ(l)_IREBND).
• Similarly, applied
to the the flow
variable
(VAR_IRE) when
an exchange with
an external region
is bounded

75
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
(EQ(l)_XBND).
MULTI NCAP_AFM, • Scalar • Only provided when the Multiplier table used {See Related
(j,allyear) NCAP_FOMM, • [open]; default related shaping for any shaping Parameters}
NCAP_FSUBM, value = none parameters are to be parameters (*_*M)
NCAP_FTAXM used. to adjust the
corresponding
technical data as
function of the year;
the table contains
different multiplier
curves identified by
the index j.
NCAP_AF NCAP_AFA, • Decimal fraction • NCAP_AF, NCAP_AFA Availability factor • The
(r,datayear,p,s,bd) NCAP_AFS, • [0,1]; default and NCAP_AFS can be relating a unit of corresponding
NCAP_AFM, value = 1 applied simultaneously. production (process capacity-activity
NCAP_AFX, • Default i/e: • Direct inheritance. activity) in timeslice constraint
COEF_AF standard • Weighted aggregation. s to the current (EQ(l)_CAPACT
installed capacity. ) will be
generated for any
timeslice s.
• If the process
timeslice level
(PRC_TSL) is
below said level,
the activity
variables will be
summed.

76
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
NCAP_AFA NCAP_AFA, • Decimal fraction • Provided when Annual availability • The
(r,datayear,p,bd) NCAP_AFS, • [0,1]; default ‘ANNUAL’ level process factor relating the corresponding
NCAP_AFM, value = 1 operation is to be annual activity of a capacity-activity
NCAP_AFX, • Default i/e: controlled. process to the constraint
COEF_AF standard • NCAP_AF, NCAP_AFA installed capacity. (EQ(l)_CAPACT
and NCAP_AFS can be ) will be
applied simultaneously. generated for the
• NCAP_AFA is always ‘ANNUAL’
assumed to be non- timeslice.
vintage depedent, even if • If the process
the process is defined as timeslice level
a vintaged one; for (PRC_TSL) is
vintage-dependent annual below said level,
availability NCAP_AFS the activity
with s=’ANNUAL’ can variables will be
be used. summed.
NCAP_AFS • Decimal fraction • NCAP_AF, NCAP_AFA Availability factor • The
(r,datayear,p,s,bd) • [0,1]; default and NCAP_AFS can be relating the activity corresponding
value = 1 applied simultaneously. of a process in a capacity-activity
• Default i/e: • NCAP_AFS being timeslice s being at constraint
standard specified for timeslices s or above the process (EQ(l)_CAPACT
being below the process timeslice level ) will be
timeslice level are (prc_tsl) to the generated for a
ignored. installed capacity. If timeslice s being
• No inheritance. for example the at or above the
• No aggregation. process timeslice process timeslice

77
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
level is ‘DAYNITE’ level (prc_tsl).
and NCAP_AFS is • If the process
specified for timeslice level is
timeslices on the below said level,
‘SEASONAL’ level, the activity
the sum of the variables will be
‘DAYNITE’ summed.
activities within a
season are restricted,
but not the
‘DAYNITE’
activities directly.
NCAP_AFM NCAP_AF, • Integer number • If more than one Period sensitive {See Related
(r,datayear,p) NCAP_AFA, • Default value: multiplier curve are multiplier curve Parameters}
NCAP_AFS, 0 (no multiplier specified by the user, (MULTI) to be
MULTI, applied) only one is used (the one applied to the
COEF_AF • I/e not possible having the highest availability factor
number). parameters
(NCAP_AF/AFA/A
FS) of a process.
NCAP_AFX NCAP_AF, • Integer number • Provided when shaping Age-based shaping {See Related
(r,datayear,p) NCAP_AFA, • Default value: 0 based upon age is curve (SHAPE) to Parameters}
NCAP_AFS, (no shape curve desired. be applied to the
SHAPE, applied) • NCAP_AFX is applied to availability factor
COEF_AF • Default NCAP_AF and parameters
extrapolation none NCAP_AFS, but not the (NCAP_AF/AFA/A
annual availabiliy FS) of a process.

78
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
NCAP_AFA.
• If the process is not-
vintaged, the SHAPE
parameter is applied to
NCAP_AF(S) of the
vintage period, i.e., for
the availability factor it is
assumed that the process
behaves as a vintaged
one.
NCAP_BND • Capacity unit • Provided for each Bound on the • Imposes an
(r,datayear,p,bd) • [open]; default process to have its permitted level on indirect limit on
value: none overall installed capacity investment in new the capacity
• Default i/e: none (VAR_NCAP) limited in capacity transfer equation
a period. (EQ_CPT) by
• As default inter- means of a direct
/extrapolation is turned- bound on the new
off, so the bound must be investments
explicitly specified for capacity variable
milestoneyear, unless an (VAR_NCAP).
inter-/extrapolation • May appear in
option is given, e.g. user constraints
NCAP_BND(R,’0’,P) (EQ_UC*) if
=2, which turns on (‘NCAP_BNDLO/
interpolation for FX/ UP’)
NCAP_BND for all specified in

79
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
processes (see Table 7). UC_NAME.
NCAP_CLED NCAP_ICOM • Years • Provided when a Lead time • Applied to the
(r,datayear,p,c) COEF_ICOM • [open]; default commodity must be requirement for a investment
value: = available prior to commodity during variable
NCAP_ILED availability of a process. construction (VAR_NCAP) in
• Default i/e: So, if the process is (NCAP_ICOM), the commodity
standard available in the year B(v) prior to the initial balance
+NCAP_ILED-1, the availability of the (EQ(l)_COMBAL
commodity is produced capacity. ) of the investment
during the time span period or previous
[B(v)+ILED-CLED, B(v) periods.
+NCAP_ILED-1].
• Usually used when
modelling the need for
fabrication of reactor fuel
the period before a
reactor goes online.
NCAP_COM rpc_capflo, • Commodity unit • Provided when the Emission (or land- • Applied to the
(r,datayear,p,c,io) rpc_conly per capacity unit consumption or use) of commodity c capacity variable
• [open]; default production of a associated with the (VAR_CAP) in
value: none commodity is tied to the capacity of a process the commodity
• Default i/e: level of the installed for each year said balance
standard capacity. capacity exists. (EQ_COMBAL).
NCAP_COST OBJ_ICOST, • Monetary unit per • Provided whenever there Investment costs of • Applied to the
(r,datayear,p) OBJSCC, capacity unit is a cost associated with new installed investment
CST_INVV, • [open]; default putting new capacity in capacity according variable

80
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
PAR_OBJINV, value: none place. to the installation (VAR_NCAP)
TOT_INV • Default i/e: year. when entering the
standard objective function
(EQ_OBJNV).
• May appear in
user constraints
(EQ_UC*) if
specified in
UC_NAME.
NCAP_DCOST NCAP_DLAG, • Monetary unit per • Provided when there are Cost of dismantling • Applied to the
(r,datayear,p,cur) COR_SALVD, capacity unit decommissioning costs a facility after the current capacity
OBJ_DCOST, • [open]; default associated with a process. end of its lifetime. subject to
CST_DECV, value: none • Decommissioning of a decommissioning
PAR_OBJDEC, • Default i/e: process and the payment (VAR_NCAP+NC
TOT_DEC standard of decommissioning AP_PASTI) when
costs may be delayed by entering the
a lag time objective function
(NCAP_DLAG). (EQ_OBJNV).
NCAP_DELIF NCAP_DLIFE, • Years • Provided when the Economic lifetime • Applied to the
(r,datayear,p) COR_SALVD, • [open]; default timeframe for paying for of the investment
DUR_MAX, value: decommission is decommissioning variable
OBJ_CRFD, NCAP_DLIFE different from that of the activity. (VAR_NCAP)
SALV_DEC • Default i/e: actual decommissioning. when entering the
standard salvage portion of
the objective
function

81
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
(EQ_OBJSALV).
NCAP_DISC rp_dscncap • Capacity unit • Used for lumpy Size of capacity • Applied to the
(r,datayear,p,unit) • [open]; default investments. units that can be lumpy investment
value: none • Requires MIP. added. integer variable
• No i/e (VAR_DNCAP)
in the discrete
investment
equation
(EQ_DSCNCAP)
to set the
corresponding
standard
investment
variable level
(VAR_NCAP).
NCAP_DLAG COEF_OCOM, • Years • Provided when there is a Number of years • Delay applied to a
(r,datayear,p) DUR_MAX, • [open]; default lag in the delay before decommissioning
OBJ_DLAGC value: decommissioning of a decommissioning flow (VAR_FLO)
NCAP_DLIFE process (e.g., to allow the can begin after the in the balance
• Default i/e: nuclear core to reduce its lifetime of a equation
standard radiation). technology has (EQ(l)_COMBAL
ended. ) as production.
• Delay applied to
the current
capacity subject to
decommissioning

82
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
(VAR_NCAP+NC
AP_PASTI) when
entering the
objective function
components
(EQ_OBJINV,
EQ_OBJFIX,
EQ_OBJSALV).
NCAP_DLAGC NCAP_DLAG, • Monetary unit per • Provided when there is a Cost occurring • Cost during delay
(r,datayear,p,cur) OBJ_DLAGC, capacity unit cost during any lag in the during the lag time applied to the
CST_FIXV, • [open]; default decommissioning (e.g., after the technical current capacity
PAR_OBJFIX, value: none security). lifetime of a process subject to
TOT_FIX • Default i/e: has ended and decommissioning
standard before its (VAR_NCAP+NC
decommissioning AP_PASTI) when
starts. entering the
objective function
components
(EQ_OBJFIX,
EQ_OBJSALV).
NCAP_DLIFE DUR_MAX • Years • Provided when a process Technical time for • Decommissioning
(r,datayear,p) • [open]; default has a decommissioning dismantling a time impacting
value: none phase. facility after the end (VAR_NCAP+NC
• Default i/e: its technical lifetime, AP_PASTI) when
standard plus any lag time entering the
(NCAP_DLAG). objective function
components

83
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
(EQ_OBJINV,
EQ_OBJSALV).
NCAP_DRATE G_DRATE, • Percent • Provided if the cost of Technology specific • Discount rate
(r,datayear,p) COR_SALVI, • [open]; default borrowing for a process discount rate. applied to
COR_SALVD value: G_DRATE is different from the investments
• Default i/e: standard discount rate. (VAR_NCAP+NC
standard AP_PASTI) when
entering the
objective function
components
(EQ_OBJINV,
EQ_OBJSALV).
NCAP_ELIFE NCAP_TLIFE, • years • Provided only when the Economic lifetime • Economic lifetime
(r,datayear,p) COR_SALVI, • [open]; default economic lifetime differs of a process. of a process when
OBJ_CRF value: from the technical costing investment
NCAP_TLIFE lifetime (NCAP_TLIFE). (VAR_NCAP+NC
• Default i/e: AP_PASTI) or
standard capacity in the
objective function
components
(EQ_OBJINV,
EQ_OBJSALV,
EQ_OBJFIX).
NCAP_FOM OBJ_FOM, • Monetary unit per • Provided when there is a Fixed operating and • Fixed operating
(r,datayear,p,cur) CST_FIXV, capacity unit fixed cost associated with maintenance cost and maintenance
PAR_OBJFIX, • [open]; default the installed capacity. per unit of capacity costs associated

84
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
TOT_FIX value: none according to the with total installed
• Default i/e: installation year. capacity
standard (VAR_NCAP+NC
AP_PASTI) when
entering the
objective function
components
(EQ_OBJFIX).
NCAP_FOMM NCAP_FOM, • Integer number • Provided when shaping Period sensitive {See Related
(r,datayear,p) MULTI • Default value: based upon the period is multiplier curve Parameters}
0 (no multiplier desired. (MULTI) applied to
curve applied) • If more than one the fixed operating
• I/e: not possible multiplier curve are and maintenance
specified by the user, costs
only one is used (the one (NCAP_FOM).
having the highest
number).
NCAP_FOMX NCAP_FOM, • Integer number • Provided when shaping Age-based shaping {See Related
(r,datayear,p) SHAPE • Default value: 0 based upon age is curve (SHAPE) to Parameters}
(no shape curve desired. be applied to the
applied) fixed operating and
• Default i/e: none maintenance cost.
NCAP_FSUB OBJ_FSB, • Monetary unit per • Provided when there is a Subsidy per unit of • Fixed subsidy
(r,datayear,p,cur) CST_FIXV, capacity unit subsidy for associated installed capacity. associated with
PAR_OBJFIX, • [open]; default with the level of installed total installed
TOT_FIX value: none capacity. capacity

85
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
• Default i/e: (VAR_NCAP+NC
standard AP_PASTI) when
entering the
objective function
component
(EQ_OBJFIX)
with a minus sign.
NCAP_FSUBM NCAP_FSUB, • Integer number • Provided when shaping Period sensitive {See Related
(r,datayear,p) MULTI • Default value: based upon the period is multiplier curve Parameters}
0 (no multiplier desired. (MULTI) applied to
curve applied) • If more than one the subsidy
• I/e: not multiplier curve are (NCAP_FSUB).
possible specified by the user,
only one is used (the one
having the highest
number).
NCAP_FSUBX NCAP_FSUB, • Integer number • Provided when shaping Age-based shaping {See Related
(r,datayear,p) SHAPE • Default value: 0 based upon age is curve (SHAPE) to Parameters}
(no shape curve desired. be applied to the
applied) fixed subsidy
• Default i/e: none (NCAP_FSUB).
NCAP_FTAX OBJ_FTAX, • monetary unit per • Provided when there is a Tax per unit of • Fixed subsidy
(r,datayear,p,cur) CST_FIXV, capacity unit fixed tax based upon the installed capacity. associated with
PAR_OBJFIX, • [open]; default level of the installed total installed
TOT_FIX value: none capacity. capacity
• Default i/e: (VAR_NCAP+NC

86
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
standard AP_PASTI) when
entering the
objective function
components
(EQ_OBJFIX).
NCAP_FTAXM NCAP_FTAX, • Integer number • Provided when shaping Period sensitive {See Related
(r,datayear,p) MULTI • Default value: 0 based upon the period is multiplier curve Parameters}
(no multiplier desired. (MULTI) applied to
curve applied) • If more than one the tax
• I/e not possible multiplier curve are (NCAP_FTAX).
specified by the user,
only one is used (the one
having the highest
number).
NCAP_FTAXX NCAP_FTAX, • Integer number • Provided when shaping Age-based shaping {See Related
(r,datayear,p) SHAPE • Default value: 0 based upon age is curve (SHAPE) to Parameters}
(no shape curve desired. be applied to the
applied) fixed subsidy
• Default i/e: none (NCAP_FSUB).
NCAP_ICOM NCAP_CLED, • Commodity unit • Provided when a Amount of • Applied to the
(r,datayear,p,c) rpc_capflo, per capacity unit commodity is needed in commodity (c) investment
rpc_conly • [open]; default the period in which the required for the variable
value: none new capacity is to be construction of new (VAR_NCAP) in
• Default i/e: available, or before capacity. the appropriate
standard NCAP_CLED commodity
• If NCAP_CLED is constraints

87
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
provided, the commodity (EQ(l)_COMBAL
is required during the ) as part of
years consumption.
[B(v)+NCAP_CLED,B(v
)+NCAP_ILED-
NCAP_CLED]. If this
time spans more than one
period, the commodity
flow is split up
proportionally between
the periods.
• For the commodity
balance the commodity
requirement in a period is
converted in an average
annual commodity flow
for the entire period,
although the construction
may take place only for a
few years of the period
• Negative value describes
production (e.g.
emissions) at the time of
a new investment
NCAP_ILED COEF_CPT, • Years • Provided when there is a Lead time between • Applied to the
(r,t,p) COEF_ICOM, • [open]; default delay between when the investment decision investment
DUR_MAX and actual

88
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
value: none investment decision availability of new variable
• Default i/e: occurs (NCAP_ILED-1) capacity (= (VAR_NCAP)
standard and when the capacity construction time) balance
(new capacity or past constraints
investment) is initially (EQ(l)_COMBAL
available. ) as part of
• For past investment the consumption, if
investment costs are there is an
taken from the associated flow.
PASTYEAR. • In combination
• Impacts the timing of the with the period
shaping parameters. duration D used as
indicator to
distinguish small
and large
investments
(VAR_NCAP)
and thus
influences the way
the investment and
fixed costs are
treated in the
objective function
(EQ_OBJINV,
EQ_OBJFIX,
EQ_OBJSALV).
NCAP_ISUB OBJ_ISUB, • monetary unit per • Provided when there is a Subsidy per unit of • Applied to the

89
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
(r,datayear,p,cur) OBJSCC, capacity unit subsidy for new new installed investment
CST_INVV, • [open]; default investments in a period. capacity. variable
CST_SALV, value: none (VAR_NCAP)
PAR_OBJINV, • Default i/e: when entering the
PAR_OBJSAL, standard objective function
TOT_INV, (EQ_OBJNV)
TOT_SAL with a minus sign.
• May appear in
user constraints
(EQ_UC*) if
specified in
UC_NAME.
NCAP_ITAX OBJ_ITAX, • monetary unit per • Provided when there is a Tax per unit of new • Applied to the
(r,datayear,p,cur) OBJSCC, capacity unit tax associated with new installed capacity investment
CST_INVV, • [open]; default investments in a period. variable
CST_SALV, value: none (VAR_NCAP)
PAR_OBJINV, • Default i/e: when entering the
PAR_OBJSAL, standard objective function
TOT_INV, (EQ_OBJNV).
TOT_SAL • May appear in
user constraints
(EQ_UC*) if
specified in
UC_NAME.
NCAP_OCOM NCAP_VALU, • Commodity unit • Provided when there is a Amount of • Applied to the
(r,datayear,p,c) OBJ_LATV, per capacity unit commodity release commodity c per investment

90
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
PAR_OBJLAT, • [open]; default associated with the unit of capacity variable
TOT_LAT, value: none decommissioning. released during the (VAR_NCAP) in
rpc_capflo, • Default i/e: • The year index of the dismantling of a the appropriate
rpc_conly standard parameter corresponds to process. commodity
the vintage year. constraints
• If the decommissioning (EQ(l)_COMBAL
time (NCAP_DLIFE) ) as part of
falls in more than one production in the
period, is split up appropriate
proportionally among the period.
periods.
• For the commodity
balance the commodity
release in a period is
converted in an average
annual commodity flow
for the entire period,
although the dismantling
may take place only for a
few years of the period.
NCAP_PASTI NCAP_PASTY, • capacity unit • Past investment can also Investment in new EQ(l)_COMBAL
(r,v,p) OBJ_PASTI, • [open]; default be specified for capacity made EQ_CPT
PAR_PASTI value: none milestoneyears, e.g. if the before the beginning EQ_OBJINV,
• No i/e milestoneyear is a of the model horizon EQ_OBJSALV,
historic year, so that (in the year specified EQ_OBJFIX
capacity additions are by pastyear).

91
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
known or if planned
future investments are
already known.
NCAP_PASTY NCAP_PASTI • Years • Provided to spread a Number of years to {See NCAP_PASTI}
(r,pastyear,p) • [open]; default single past investment go back to calculate
value: none (NCAP_PASTI) back a linear build-up of
• No i/e over several years (e.g., past investments
cars in the period before
the 1st milestoneyr were
bought over the previous
15 years).
• If overlaps with other
past investments, the
capacity values are
added.
NCAP_PKCNT com_peak, • Decimal fraction • If the indicator Fraction of capacity • Applied to
(r,datayear,p,s) com_pkts, • [0,1]; default PRC_PKAF is specified, that can contribute investments in
prc_pkaf, value: 1 the NCAP_PKCNT is set to peaking capacity
prc_pkno • Default i/e: equal to the availabilities equations. (VAR_NCAP,
standard NCAP_AF. NCAP_PASTI) in
• Direct inheritance. the peaking
• Weighted aggregation. constraint
(EQ_PEAK).

NCAP_TLIFE NCAP_ELIFE, • Years • Expected for all Technical lifetime of • Impacts all
(r,datayear,p) COEF_CPT, • [open]; default technologies. a process. calculations that

92
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
COEF_RPTI, value: G_TLIFE are dependent
DUR_MAX • Default i/e: upon the
standard availability of
investments
(VAR_NCAP)
including capacity
transfer
(EQ_CPT),
commodity flow
(EQ(l)_COMBAL
), costs
(EQ_OBJINV,
EQ_OBJFIX,
EQ_OBJVAR,
EQ_OBJSALV).
NCAP_VALU NCAP_OCOM, • Monetary unit / • Provided when a released Value of a • Applied to the
(r,datayear,p,c,cur) OBJ_LATV, commodity unit commodity has a value. commodity released investment related
PAR_OBJLAT, • [open]; default at decommissioning (VAR_NCAP,
TOT_LAT value: none (NCAP_OCOM). NCAP_PASTI)
• Default i/e: release flow at
standard decommissioning
in the objective
function
(EQ_OBJSALV).
PRAT PBT • Scalar • Provided for learning Progress ratio • Fundamental
(r,teg) PAT • [0,1]; default technologies (teg) when indicating the drop factor to describe
CCOST0 ETL is used. in the investment the learning curve

93
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
CCAPK value none cost each time there and thus effects
BETA is a doubling of the nearly all
ALPH installed capacity. equations and
variables related
to endogenous
technology
learning (ETL).
PRC_ACTFLO PRC_CAPACT, • Commodity unit / • Only (rarely) provided Conversion factor • Applied to the
(r,datayear,p,cg) prc_actunt, activity unit when the activity and from units of primary
prc_spg, rpc_aire • [open]; default flow variables of a activity to units of commodity
value: 1 process are in different those flow variables (prc_pcg) flow
• Default i/e: units. that define the variables
standard activity (primary (VAR_FLO,
commodity group). VAR_IRE) to
relate overall
activity
(VAR_ACT in
EQ_ACTFLO).
• When the
Reduction
algorithm
activated it is
applied to the
activity variable
(VAR_ACT) in
those cases where
the flow variable

94
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
(VAR_FLO) can
be replaced by the
activity variable
(e.g. the activity is
defined by one
commodity flow).
PRC_CAPACT PRC_ACTFLO, • Activity unit / Conversion factor • Applied along
(r,p) prc_actunt capacity unit from capacity unit to with the
• [open]; default activity unit availability factor
value: 1 assuming that the (NCAP_AF) to
• Default i/e: capacity is used for the investment
standard one year. (VAR_NCAP +
NCAP_PASTI) in
the utilization
equation
(EQ(l)_CAPACT)
.
• Applied to the
investment
(VAR_NCAP +
NCAP_PASTI) in
the peak constraint
(EQ_PEAK).
• Applied to the
investment
(VAR_NCAP +

95
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
NCAP_PASTI) in
the commodity
specific capacity
utilization
constraint
(EQL_CAFLAC)
in the VTT
extension (see
Table 16).
• Applied to the
investment or
(VAR_NCAP +
NCAP_PASTI) in
the capacity
utilization
constraint for
extraction
condensing CHP
plants for
condensing mode
(ECT_AFCON)
and backpressure
mode
(ECT_AFCHP) in
the IER extension
(see Table 16).
• Applied to the

96
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
investment
(VAR_NCAP +
NCAP_PASTI) of
extraction
condension CHP
plants in the peak
constraint
(EQ_PEAK) with
a converison
factor converting
the input-oriented
capacity definition
into electricity
terms in the IER
extension (see
Table 16).
SC0 • Monetary unit / • For learning technologies Initial specific • Defines together
(r,teg) capacity unit teg when ETL is used. investment costs. with CCAP0
• [open]; default initial point of
value none learning curve and
affects thus the
core equations
and variables of
endogenous
technological
learning (ETL).
SEG • Integer • For learning technologies Number of • Influences the

97
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
(r,teg) • [open]; teg when ETL is used. segments. piecewise linear
• Currently limited to six approximation of
segments by set kp. the cumulative
cost curve
(EQ_COS,
EQ_LA1,
EQ_LA2).
SHAPE FLO_FUNC, • Scalar • Provided for each age Multiplier table used {See Related
(j,age) FLO_SUM, • [open]; default dependent shaping curve for any shaping Parameters}
NCAP_AFX, value = none that is to be applied. parameters (*_*X)
NCAP_FOMX, to adjust the
NCAP_FSUBX, corresponding
NCAP_FTAXX technical data as
function of the age;
the table can contain
different multiplier
curves that are
identified by the
index j.
STG_EFF prc_nstts, • Decimal fraction • Only applicable to Efficiency of storage • Applied to the
(r,datayear,p) prc_stgips, • [open]; default storage processes (STG): process. storage output
prc_stgtss value: 1 timeslice storage, inter- flow
• Default i/e: period storage or night (VAR_SOUT) in
standard storage devices. the commodity
balance
(EQ(l)_COMBAL
) for the stored

98
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
commodity.
STG_CHRG prc_nstts, • Scalar • Only applicable to Annual exogenous • Exogenous
(r,datayear,p,s) prc_stgips, • [open]; default storage processes (STG): charging of a storage charging of
prc_stgtss value: none timeslice storage, inter- technology in a storage enters
• Default i/e: period storage or night particular timeslice storage equations
standard storage devices. s. (EQ_STGTSS,
EQ_STGIPS) as
right-hand side
constant.
STG_LOSS prc_nstts, • Scalar • Only applicable to Annual energy loss • Storage process
(r,datayear,p,s) prc_stgips, • [open]; default storage processes (STG): of a storage process between
prc_stgtss value: none timeslice storage, inter- per unit of average timeslices
• Default i/e: period storage or night energy stored. (EQ_STGTSS):
standard storage devices. applied to the
average storage
level
(VAR_ACT)
between two
consecutive
timeslices.
• Storage process
between periods
(EQ_STGIPS):
applied to the
average storage
level from the

99
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
preperiod
(VAR_ACT) and
the net inflow
(VAR_SIN-
VAR_SOUT) of
the current period.
STGIN_BND prc_nstts, • Commodity unit • Only applicable to Bound on the input • Storage input
(r,datayear,p,c,s,bd) prc_stgips, • [open]; default storage processes (STG): flow of a storage bound constraint
prc_stgtss value: none timeslice storage, inter- process in a (EQ(l)_STGIN)
• Default i/e: none period storage or night timeslice s. when s is above
storage devices. prc_tsl of the
storage process.
• Direct bound on
storage input flow
(VAR_STGIN)
when at the
prc_tsl level.
STGOUT_BND prc_nstts, • Commodity unit • Only applicable to Bound on the output • Storage output
(r,datayear,p,c,s,bd) prc_stgips, • [open]; default storage processes (STG): flow of a storage bound constraint
prc_stgtss value: none timeslice storage, inter- process in a (EQ(l)_STGIN)
• Default i/e: none period storage or night timeslice s. when s is above
storage devices. prc_tsl of the
storage process.
• Direct bound on
storage output
flow variable

100
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
(VAR_STGOUT)
when at the
prc_tsl level.
UC_ACT uc_n, uc_gmap_p • None • Used in user constraints. Coefficient of the EQ(l)_UCXXX
(uc_n,side,r,datayear • [open]; default • Direct inheritance. activity variable
,p,s) value: none • Weighted aggregation. VAR_ACT in a user
• Default: i/e: constraint.
standard
UC_FLO uc_n • None • Used in user constraints. Coefficient of the EQ(l)_UCXXX
(uc_n,side,r,datayear • [open]; default • Direct inheritance. flow VAR_FLO
,p,c,s) value: none • Weighted aggregation. variable in a user
• Default: i/e: constraint.
standard
UC_IRE uc_n • None • Used in user constraints. Coefficient of the EQ(l)_UCXXX
(uc_n,side,r,datayear • [open]; default • Direct inheritance. trade variable
,p,c,s) value: none • Weighted aggregation. VAR_IRE in a user
• Default: i/e: constraint.
standard
UC_COMCON uc_n, uc_gmap_c • None • Used in user constraints. Coefficient of the EQ(l)_UCXXX
(uc_n,side,r,datayear • [open]; default • No commodity
,c,s) value: none inheritance/aggregation consumption
• Default: i/e: (might be changed in the variable
standard future). VAR_COMCON in
a user constraint.
UC_COMPRD uc_n, uc_gmap_c • None • Used in user constraints. Coefficient of the EQ(l)_UCXXX
(uc_n,side,r,datayear • [open]; default • No net commodity

101
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
,c,s) value: none inheritance/aggregation production variable
• Default: i/e: (might be changed in the VAR_COMPRD in
standard future). a user constraint.
UC_CAP uc_n, uc_gmap_p • None • Used in user constraints. Coefficient of the EQ(l)_UCXXX
(uc_n,side,r,datayear • [open]; default activity variable
,p) value: none VAR_CAP in a user
• Default: i/e: constraint.
standard
UC_NCAP uc_n, uc_gmap_p • None • Used in user constraints. Coefficient of the EQ(l)_UCXXX
(uc_n,side,r,datayear • [open]; default activity variable
,p) value: none VAR_NCAP in a
• Default: i/e: user constraint.
standard
UC_RHS uc_n, uc_r_sum, • None • Used in user constraints. RHS constant with • RHS (right-hand
(uc_n,bd) uc_t_sum, • [open]; default bound type of bd of side) constant of a
uc_ts_sum value: none a user constraint. user constraint,
• Default i/e: none which is summing
over regions
(uc_r_sum),
periods
(uc_t_sum) and
timeslices
(uc_ts_sum)
(EQ(l)_UC).
UC_RHSR uc_n, uc_r_each, • None • Used in user constraints. RHS constant with • RHS constant of
(r,uc_n,bd) uc_t_sum, • [open]; default bound type of bd of user constraints,

102
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
uc_ts_sum value: none a user constraint. which are
• Default i/e: none generated for each
specified region
(uc_r_each) and
are summing over
periods
(uc_t_sum) and
timeslices
(uc_ts_sum)
(EQ(l)_UCR).
UC_RHST uc_n, uc_r_sum, • None • Used in user constraints. RHS constant with • RHS constant of
(uc_n,datayear,bd) uc_t_each, • [open]; default bound type of bd of user constraints,
uc_t_succ, value: none a user constraint. which are
uc_ts_sum • Default i/e: none generated for each
specified period
(uc_t_each) and
are summing over
regions
(uc_r_sum) and
timeslices
(uc_ts_sum)
(EQ(l)_UCT).
• If uc_t_succ
instead of
uc_t_each is
specified the
constraints will be

103
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
generated as
dynamic
constraint between
the two successive
periods
(EQ(l)_UCSU).
UC_RHSRT uc_n, uc_r_each, • None • Used in user constraints. RHS constant with • RHS constant of
(r,uc_n,datayear,bd) uc_t_each, • [open]; default bound type of bd of user constraints,
uc_t_succ, value: none a user constraint. which are
uc_ts_sum • Default i/e: none generated for each
specified region
(uc_r_each) and
period
(uc_t_each) and
are summing over
timeslices
(uc_ts_sum)
(EQ(l)_UCRT).
• If uc_t_succ
instead of
uc_t_each is
specified the
constraints will be
generated as
dynamic
constraint between
the two successive

104
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
periods
(EQ(l)_UCRSU).
UC_RHSTS uc_n, uc_r_sum, • None • Used in user constraints. RHS constant with • RHS constant of
(uc_n,datayear,s,bd) uc_t_each, • [open]; default • No bound type of bd of user constraints,
uc_t_succ, value: none inheritance/aggregation. a user constraint. which are
uc_ts_each • Default i/e: none generated for each
specified period
(uc_t_each) and
timeslice
(uc_ts_each) and
are summing over
regions
(uc_r_sum)
(EQ(l)_UCTS).
• If uc_t_succ
instead of
uc_t_each is
specified the
constraints will be
generated as
dynamic
constraint between
the two successive
periods
(EQ(l)_UCSUS).
UC_RHSRTS uc_n, uc_r_each, • None • Used in user constraints. RHS constant with • RHS constant of
(r,uc_n,datayear,s,bd uc_t_each, bound type of bd of

105
Units / Ranges & Instances 24 Description Affected equations
Input parameter Related Default values & (Required / Omit / Special or variables 25
(Indexes) 21 sets/parameters 22 Default inter- conditions)
/extrapolation 23
) uc_t_succ, • [open]; default • No a user constraint. user constraints,
uc_ts_each value: none inheritance/aggregation. which are
• Default i/e: none generated for each
specified region
(uc_r_each),
period
(uc_t_each) and
timeslice
(uc_ts_each)
(EQ(l)_UCRTS).
• If uc_t_succ
instead of
uc_t_each is
specified the
constraints will be
generated as
dynamic
constraint between
the two successive
periods
(EQ(l)_UCRSUS)
.

106
3.2 Internal parameters
Table 13 gives an overview of internal parameters generated by the TIMES preprocessor. Similar to the description of the internal
sets, not all internal parameters used within TIMES are discussed. The list given in Table 13 focuses mainly on the parameters used in
the preparation and creation of the equations in Chapter 5. In addition to the internal parameters listed here, the TIMES preprocessor
computes additional internal parameters which are either used only as auxiliary parameters being valid only in a short section of the
code or which are introduced to improve the performance of the code regarding computational time.

Table 13: Internal parameters in TIMES


Internal Instances Description
parameter 29 (Required / Omit / Special conditions)
(Indexes)
ALPH • For learning technologies teg when Axis intercept on cumulative cost axis for description of linear
(r,kp,teg) ETL is used. equation valid for segment kp.
BETA • For learning technologies teg when Slope of cumulative cost curve in segment kp ( = specific investment
(r,kp,teg) ETL is used. cost).
CCAPK • For learning technologies teg when Cumulative capacity at kinkpoint kp.
(r,kp,teg) ETL is used.
CCOST0(r,teg) • For learning technologies teg when Initial cumulative cost of learning technology teg.
ETL is used.
CCOSTK • For learning technologies teg when Cumulative investment cost at kinkpoint kp.
(r,kp,teg) ETL is used.
CCOSTM • For learning technologies teg when Maximum cumulative cost based on CCAPM.
(r,teg) ETL is used.

29
The first row contains the parameter name, the second row contains in brackets the index domain, for which the parameter is
defined.

107
Internal Instances Description
parameter 29 (Required / Omit / Special conditions)
(Indexes)
COEF_AF • For each technology, at the level of Availability coefficient of the capacity (new investment variable
(r,v,t,p,s,bd) process operation (PRC_TSL). VAR_NCAP plus still existing past investments NCAP_PASTI) in
EQ(l)_CAPACT; COEF_AF is derived from the availability input
parameters NCAP_AF, NCAP_AFA and NCAP_AFS taking into
account any specified MULTI or SHAPE multipliers.
COEF_CPT • For each technology the amount of Fraction of capacity built in period v that is available in period t;
(r,v,t,p) an investment (VAR_NCAP) might be smaller than 1 due to NCAP_ILED in vintage period or the
available in the period. fact that the lifetime ends within a period.
COEF_ICOM • Whenever there is a commodity Coefficient for commodity requirement during construction in period
(r,v,t,p,c) required during construction, the t due to investment decision in period v (see also NCAP_ICOM).
consuming being taken from the
balance constraint
(EQ(l)_COMBAL).
• Applied to the investment variable
(VAR_NCAP) of period v in the
commodity balance
(EQ(l)_COMBAL) of period t.
• The duration during which the
commodity is produced starts in the
year B(v)+NCAP_ILED(v)-
NCAP_CLED(v) and ends in the
year B(v)+NCAP_ILED(v)-1.

108
Internal Instances Description
parameter 29 (Required / Omit / Special conditions)
(Indexes)
COEF_OCOM • Whenever there is a commodity Coefficient for commodity release during decommissioning time in
(r,v,t,p,c) released during decomissioning, the period t due to investment made in period v.
production being added to the
balance constraint
(EQ(l)_COMBAL).
• Applied to the investment variable
(VAR_NCAP) of period v in the
commodity balance
(EQ(l)_COMBAL) of period t.
• The release occurs during the
decommissioning lifetime
NCAP_DLIFE.
COEF_PTRAN • For each flow through a process. Coefficient of flow variable of commodity c belonging to commodity
(r,v,t,p,cg,c,com_grp) group cg in EQ_PTRANS equation between the commodity groups
cg and com_grp.
COEF_RPTI • For each technology whose Number of repeated investment of process p in period v when the
(r,v,p) technical life (NCAP_TLIFE) is technical lifetime minus the construction time is shorter than the
shorter than the period. period duration; Rounded to the next largest integer number.
COR_SALVD • For each technology existing past Correction factor for decommissioning costs taking into account
(r,v,p,cur) the end of the modelling horizon technical discount rates and economic decommissioning times.
with decommissioning costs,
adjustment in the objective function.
COR_SALVI • For each process extending past the Correction factor for investment costs taking into account technical
(r,v,p,cur) end of the modelling horizon discount rates, economic lifetimes and a user-defined discount shift
adjustment in the objective function. (triggered by the control switch MIDYEAR (see Table 15).
D • For each period, D(t) = E(t)–B(t)+1. Duration of period t.
(t)

109
Internal Instances Description
parameter 29 (Required / Omit / Special conditions)
(Indexes)
DUR_MAX • For the model. Maximum of NCAP_ILED + NCAP_TLIFE + NCAP_DLAG +
NCAP_DLIFE + NCAP_DELIF over all regions, periods and
processes.
M • For each period, if the duration of Middle year of period t.
(v) the period is even, the middle year
of the period is B(t) + D(t)/2 – 1, if
the period is uneven, the middle year
is B(t) + D(t)/2 –0.5 .
MINYR • For the model Minimum year over t = M(t) – D(t) +1; used in objective function.
MIYR_V1 • For the model First year of model horizon.
MIYR_VL • For the model Last year of model horizon.
NTCHTEG • For learning technologies teg when Number of processes using the same key technology teg.
(r,teg) ETL with technology clusters is
used.
OBJ_ACOST • For each process with activity costs. Inter-/Extrapolated variable costs (ACT_COST) for activity variable
(r,y,p,cur) • Enters the objective function (VAR_ACT) for each year.
(EQ_OBJVAR).
OBJ_CNCST • For each commodity with costs on Inter-/Extrapolated cost on net production (COM_CSTNET) of
(r,y,c,s,cur) the net production. commodity (c) for each year associated with the variable
• Enters the objective function VAR_COMNET.
(EQ_OBJVAR).
OBJ_CNSUB • For each commodity with subsidies Inter-/Extrapolated subsidy on net production (COM_SUBNET) of
(r,y,c,s,cur) on the net production. commodity (c) for each year associated with the variable
• Enters the objective function VAR_COMNET.
(EQ_OBJVAR).

110
Internal Instances Description
parameter 29 (Required / Omit / Special conditions)
(Indexes)
OBJ_CNTAX • For each commodity with taxes on Inter-/Extrapolated tax on net production (COM_TAXNET) of
(r,y,c,s,cur) the net production. commodity (c) for each year associated with the variable
• Enters the objective function VAR_COMNET.
(EQ_OBJVAR).
OBJ_CPCST • For each commodity with costs on Inter-/Extrapolated cost on production (COM_CSTPRD) of
(r,y,c,s,cur) the cumulative production. commodity (c) for each year associated with the variable
• Enters the objective function VAR_COMPRD.
(EQ_OBJVAR).
OBJ_CPSUB • For each commodity with subsidies Inter-/Extrapolated subsidy on production (COM_SUBPRD) of
(r,y,c,s,cur) on the cumulative production. commodity (c) for each year associated with the variable
• Enters the objective function VAR_COMPRD.
(EQ_OBJVAR).
OBJ_CPTAX • For each commodity with taxes on Inter-/Extrapolated tax on production (COM_TAXPRD) of
(r,y,c,s,cur) the cumulative production. commodity (c) for each year associated with the variable
• Enters the objective function VAR_COMPRD.
(EQ_OBJVAR).
OBJ_CRF • For each technology with Capital recovery factor of investment in technology p in objective
(r,y,p,cur) investment costs. function taking into account the economic lifetime (NCAP_ELIFE)
• Enters objective function and the technology specific discount rate (NCAP_DRATE) or, if the
(EQ_OBJINV). latter is not specified, the general discount rate (G_DRATE).
OBJ_CRFD • For each technology with Capital recovery factor of decommissioning costs in technology p
(r,y,p,cur) decommissioning costs. taking into account the economic lifetime (NCAP_DELIF) and the
• Enters objective function technology specific discount rate (NCAP_DRATE) or, if the latter is
(EQ_OBJINV). not specified, the general discount rate (G_DRATE).
OBJ_DCEOH • Enters objective function Discount factor for the year EOH + 1 based on the general discount
(r,cur) (EQ_OBJSALV). rate (G_DRATE).

111
Internal Instances Description
parameter 29 (Required / Omit / Special conditions)
(Indexes)
OBJ_DCOST • For each technology with Inter-/Extrapolated decommissioning costs (NCAP_DCOST) for
(r,y,p,cur) decommissioning costs. each year related to the investment (VAR_NCAP) of process p.
• Enters objective function
(EQ_OBJINV).
OBJ_DISC • Enters objective function Annual discount factor based on the general discount rate
(r,y,cur) (EQ_OBJINV, EQ_OBJVAR, (G_DRATE) to discount costs in the year y to the base year
EQ_OBJFIX, EQ_OBJSALV, (G_DYEAR).
EQ_OBJELS).
OBJ_DIVI • Enters objective function Divisor for investment costs (period duration, technical lifetime or
(r,v,p) (EQ_OBJINV). investment lead time depending on the investment cases 1a, 1b, 2a,
2b).
OBJ_DIVIII • Enters objective function Divisor for decommissioning costs and salvaging of
(r,v,p) (EQ_OBJINV). decommissioning costs (period duration, technical lifetime or
decommissioning time depending on the investment cases 1a, 1b, 2a,
2b).
OBJ_DIVIV • Enters objective function Divisor for fixed operating and maintenance costs and salvaging of
(r,v,p) (EQ_OBJFIX). investment costs.
OBJ_DLAGC • Enters objective function Inter-/Extrapolated fixed capacity (VAR_NCAP+NCAP_PASTI)
(r,y,p,cur) (EQ_OBJFIX). costs between the end of the technical lifetime and the beginning of
the decommissioning for each year.
OBJ_FCOST • For each flow variable with flow Inter-/Extrapolated flow costs (FLO_COST) for each year for the
(r,y,p,c,s,cur) related costs. flow or trade variable (VAR_FLO, VAR_IRE) as well as capacity
• Enters objective function related flows (specified by NCAP_COM, NCP_ICOM,
(EQ_OBJVAR). NCAP_OCOM).

112
Internal Instances Description
parameter 29 (Required / Omit / Special conditions)
(Indexes)
OBJ_FDELV • For each flow with delivery costs. Inter-/Extrapolated delivery costs (FLO_DELIV) for each year for
(r,y,p,c,s,cur) • Enters objective function the flow or trade variable (VAR_FLO, VAR_IRE) as well as
(EQ_OBJVAR). capacity related flows (specified by NCAP_COM, NCP_ICOM,
NCAP_OCOM).
OBJ_FOM • For each process with fixed Inter-/Extrapolated fixed operating and maintenance costs
(r,y,p,cur) operating and maintenance costs. (NCAP_FOM) for the installed capacity
• Enters the objective function (VAR_NCAP+NCAP_PASTI) for each year.
(EQ_OBJFIX).
OBJ_FSB • For each process with subsidy on Inter-/Extrapolated subsidy (NCAP_FSUB) on installed capacity
(r,y,p,cur) existing capacity. (VAR_NCAP+NCAP_PASTI) for each year.
• Enters objective function
(EQ_OBJFIX).
OBJ_FSUB • For each flow variable with Inter-/Extrapolated subsidy (FLO_SUB) for the flow or trade
(r,y,p,c,s,cur) subsidies. variable (VAR_FLO, VAR_IRE) for each year as well as capacity
• Enters objective function related flows (specified by NCAP_COM, NCP_ICOM,
(EQ_OBJVAR). NCAP_OCOM).
OBJ_FTAX • For each flow variable with taxes. Inter-/Extrapolated tax (FLO_TAX) for flow or trade variable
(r,y,p,c,s,cur) • Enters objective function (VAR_FLO, VAR_IRE) for each year as well as capacity related
(EQ_OBJVAR). flows (specified by NCAP_COM, NCP_ICOM, NCAP_OCOM).
OBJ_FTX • For each process with taxes on Inter-/Extrapolated tax (NCAP_FTAX) on installed capacity
(r,y,p,cur) existing capacity. (VAR_NCAP+NCAP_PASTI) for each year.
• Enters objective function
(EQ_OBJFIX).
OBJ_ICOST • For each process with investment Inter-/Extrapolated investment costs (NCAP_COST) for investment
(r,y,p,cur) costs. variable (VAR_NCAP) for each year.
• Enters objective function
(EQ_OBJINV).

113
Internal Instances Description
parameter 29 (Required / Omit / Special conditions)
(Indexes)
OBJ_IPRIC • For each import/export flow with Inter-/Extrapolated import/export prices (IRE_PRICE) for
(r,y,p,c,s,all_r,ie,cur) prices assigned to it. import/export variable (VAR_IRE) for each year.
• Enters objective function
(EQ_OBJVAR).
OBJ_ISUB • For each process with subsidy on Inter-/Extrapolated subsidy (NCAP_ISUB) on new capacity
(r,y,p,cur) new investment. (VAR_NCAP) for each year.
• Enters objective function
(EQ_OBJINV).
OBJ_ITAX • For each process with taxes on new Inter-/Extrapolated tax (NCAP_ITAX) on new capacity
(r,y,p,cur) investment. (VAR_NCAP) for each year.
• Enters objective function
(EQ_OBJINV).
OBJ_PASTI • Enters objective function Correction factor for past investments.
(r,v,p,cur) (EQ_OBJINV).
OBJSIC • For learning technologies. Investment cost related salvage value of learning technology teg with
(r,v,teg) • Enters objective function vintage period v at year EOH+1.
(EQ_OBJINV).
OBJSSC • For processes with investment costs. Investment cost related salvage value of process p with vintage
(r,v,p,cur) • Enters objective function period v at year EOH+1.
(EQ_OBJSALV).
PAT • For learning technologies teg when Learning curve coefficient in the relationship:
(r,teg) ETL is used. SC = PAT * VAR_CCAP^(-PBT).
PBT • For learning technologies teg when Learning curve exponent PBT(r,teg) = LOG(PRAT(r,teg))/LOG(2).
(r,teg) ETL is used.
PYR_V1 • For the model Minimum of pastyears and MINYR .

114
Internal Instances Description
parameter 29 (Required / Omit / Special conditions)
(Indexes)
RS_STGPRD • Only applicable to storage processes Number of storage periods in a year for each timeslice.
(r,s) (STG): timeslice storage, inter-
period storage or night storage
devices.
RTP_FFCX • The efficiency parameter Average SHAPE multiplier of the parameter FLO_FUNC and
(r,v,t,p,cg,c,cg) COEF_PTRAN is multiplied by the FLO_SUM efficiencies in the EQ_PTRANS equation in the period
factor (1+RTP_FFCX). (t) for capacity with vintage period (v). The SHAPE curve, which
• Enters EQ_PTRANS equation. should be used, is specified by the user parameter FLO_FUNCX.
The SHAPE feature allows to alter technical parameter given for the
vintage period as a function of the age of the installation.

115
Internal Instances Description
parameter 29 (Required / Omit / Special conditions)
(Indexes)
RTCS_TSFR • You modified the description of The effective handling of timeslice aggregation/disaggregation. If ts
(r,t,c,s,ts) COM_FR by saying that it "Affects is below s in the timeslice tree, the value is 1, if s is below ts the
timeslice resolution at which a value is COM_FR(r,s) / COM_FR(r,ts) for demand commodities
commodity is tracked with COM_FR given and G_YRFR(r,s) / G_YRFR(r,ts) for all other
(RTCS_TSFR), and thereby may commodities.
affect when a process can operate The parameter is used to match the timeslice resolution of flow
(RTPS_OFF)". Actually COM_FR variables (VAR_FLO/VAR_IRE) and commodities. RTCS_TSFR is
affects the timeslice fractions the coefficient of the flow variable, which is producing or consuming
(RTCS_TSFR) of any commodity commodity c, in the commodity balance of c. If timeslice s
for which COM_FR has been corresponds to the commodity timeslice resolution of c and timeslice
provided. For example, if a process ts to the timeslice resolution of the flow variable two cases may
operates at the SEASON level but occur:
produces a DAYNITE level The flow variables are on a finer timeslice level than the
commodity, COM_FR will commodity balance: in this case the flow variables with timeslices s
determine the DAYNITE fractions being below ts in the timeslice tree are summed to give the
produced within each SEASON! As aggregated flow within timeslice ts. RTCS_TSFR has the value 1.
I have tried to say, this applies to all 1) The flow variables are on coarser timeslice level than the
commodities (this is not my design commodity balance: in this case the flow variable is split-up
at all, but might be useful). Thus, I on the finer timeslice level of the commodity balance
think that the previous description according to the ratio of the timeslice duration of s to ts:
was more correct ("affects all RTCS_TSFR has the value = COM_FR(r,s) / COM_FR(r,s1)
commodities through for demand commodities and G_YRFR(r,s) / G_YRFR(r,s1)
RTCS_TSFR"). otherwise. When COM_FR is used, the demand load curve is
moved to the demand process. Thus, it is possible to model
demand processes on an ANNUAL level and ensure at the
same time that the process follows the given load curve
COM_FR.

116
Internal Instances Description
parameter 29 (Required / Omit / Special conditions)
(Indexes)
SALV_DEC • For those technology with salvage Salvage proportion of decommissioning costs made at period v with
(r,v,p,k,ll) costs incurred after the model commissioning year k.
horizon the contribution to the
objective function.
SALV_INV • For those technology with salvage Salvage proportion of investment made at period v with
(r,v,p,k) costs incurred after the model commissioning year k.
horizon the contribution to the
objective function.
YEARVAL • A value for each year. Numerical value of year index (e.g. YEARVAL(‘1984’) equals
(y) 1984).

117
3.3 Report parameters
The parameters generated internally by TIMES to document the results of a model run are listed in Table 14. These parameters can be
imported into the VEDA-BE tool for further result analysis. The list of report parameters that are converted out of the GDX 30 file via
the gdx2veda GAMS utility into a VEDA-BE compatible format according to the file times2veda.vdd 31. Note that some of the
results are not transferred into parameters, but are directly accessed through the times2veda.vdd file (namely: shadow price of
commodity balance, of peaking equation, total discounted value of objective function). The following naming conventions apply to the
prefixes of the report parameters:
• CST_: detailed annual undiscounted cost parameters; note that also the costs of past investments, which are constants in the
objective function, are being reported;
• DPAR_: shadow prices;
• PAR_: primal solution;
• TOT_: Annual undiscounted costs by type.

Table 14: Report parameters in TIMES


Report parameter 32 Description
(Indexes)
CST_ACTV Annual undiscounted variable costs (caused by ACT_COST) in period (t) associated with the
(r,v,t,p,s) operation (activity) of a process (p) with vintage period (v).

30
GDX stands for GAMS Data Exchange. A GDX file is a binary file that stores the values of one or more GAMS symbols such
as sets, parameters variables and equations. GDX files can be used to prepare data for a GAMS model, present results of a GAMS
model, store results of the same model using different parameters etc. A GDX file does not store a model formulation or executable
statements.
31
The use of the gdx2veda tool together with the times2veda.vdd control file as well as the VEDA-BE software are described in
a separate document.
32
The first row contains the parameter name, the second row contains in brackets the index domain, for which the parameter is
defined.

118
Report parameter 32 Description
(Indexes)
CST_COMV Annual undiscounted commodity (c) related costs (caused by IRE_PRICE, COM_CSTNET,
(r,t,c,s) COM_TAXNET, COM_SUBNET, COM_CSTPRD, COM_TAXPRD, COM_SUBPRD) in
period (t).
CST_DECV Annual undiscounted decommissioning costs (caused by NCAP_DCOST) in period (t)
(r,v,t,p) associated with the dismantling of process (p) with vintage period (v).
CST_FIXV Annual undiscounted fixed operating and maintenance costs (caused by NCAP_FOM,
(r,v,t,p) NCAP_FTAX, NCAP_FSUB, NCAP_DLAGC) in period (t) associated with the installed
capacity of process (p).
CST_FLOV Annual undiscounted flow related costs (caused by FLO_COST, FLO_DELV, FLO_TAX,
(r,v,t,p,c,s) FLO_SUB) in period (t) associated with a commodity (c) flow in/out of a process (p) with
vintage period (v) as well as capacity related commodity flows (specified by NCAP_COM,
NCAP_ICOM, NCAP_OCOM).
CST_INVV Annual undiscounted investment costs (caused by NCAP_COST) in period (t) spread over the
(r,v,t,p) economic lifetime (NCAP_ELIFE) of a process (p) with vintage period (v).
CST_LATV Annual undiscounted late revenues, which are caused by sunk materials (NCAP_OCOM) in
(r,t,p) period (t) having a salvage value (NCAP_VALU), associated with process (p) with vintage
period (v).
CST_SALV Undiscounted salvage value of costs (NCAP_COST, NCAP_DLAGC, NCAP_DCOST)
(r,v,p) associated with investments (VAR_NCAP, NCAP_PASTI), of which the technical lifetime
exceeds the end of the model horizon; the total salvage value associated with the investment of
process (p) is reported for the vintage year (v).
F_IN Input flow (consumption) of commodity (c) in period (t) and timeslice (s) into process (p) with
(r,v,t,p,c,s) vintage period (v), including exchange processes.
F_OUT Output flow (production) of commodity (c) in period (t) and timeslice (s) into process (p) with
(r,v,t,p,c,s) vintage period (v), including exchange processes.
PAR_ACTL Level value of activity variable (VAR_ACT) in period (t) and timeslice (s) of process (p) with
(r,v,t,p,s) vintage period (v).

119
Report parameter 32 Description
(Indexes)
PAR_ACTM Undiscounted annual reduced costs of activity variable (VAR_ACT) in period (t) and timeslice
(r,v,t,p,s) (s) of process (p) with vintage period (v); the reduced costs describe in the case, that the activity
variable is at its lower (upper) bound, the cost increase (decrease) of the objective function
caused by an increase of the lower (upper) bound by one unit; the reduced costs can also be
interpretated as the necessary decrease=subsidy (increase=tax) of the cost coefficient of the
activity variable in the objective function, so that the activity variable will leave its lower
(upper) bound.
PAR_CAPL Existing capacity of process (p) in period (t) (derived from VAR_NCAP in previous periods and
(r,t,p) still existing past investments NCAP_PASTI).
PAR_CAPLO Lower bound on capacity variable (CAP_BND(‘LO’)), only reported, if the lower bound is
(r,t,p) greater than zero.
PAR_CAPM Undiscounted reduced costs of capacity variable (VAR_CAP); only reported in those cases, in
(r,t,p) which the capacity variabel is generated (bound CAP_BND specified or endogenous technology
learning is used); the reduced costs describe in the case, that the capacity variable is at its lower
(upper) bound, the cost increase (decrease) of the objective function caused by an increase of the
lower (upper) bound by one unit; the reduced costs can also be interpretated as the necessary
decrease=subsidy (increase=tax) of the cost coefficient of the capacity variable in the objective
function, so that the capacity variable will leave its lower (upper) bound.
PAR_CAPUP Upper bound on capacity variable (CAP_BND(‘UP’)), only reported; if the upper bound is
(r,t,p) smaller than infinity.
PAR_COMBALEM Undiscounted annual shadow price of commodity balance (EQE_COMBAL) being a strict
(r,t,c,s) equality. The marginal value describes the cost increase in the objective function, if the
difference between production and consumption is increased by one unit. The marginal value
can be determined by the production side (increasing production), but can also be set by the
demand side (e.g., decrease of consumption by energy saving or substitution measures).

120
Report parameter 32 Description
(Indexes)
PAR_COMBALGM Undiscounted annual shadow price of commodity balance (EQG_COMBAL) being an
(r,t,c,s) inequality (production being greater or equal consumption); positive number, if production
equals consumption; the marginal value describes the cost increase in the objective function, if
the difference between production and consumption is increased by one unit. The marginal value
can be determined by the production side (increasing production), but can also be set by the
demand side (e.g., decrease of consumption by energy saving or substitution measures).
PAR_COMNETL Level value of the variable corresponding the net level of a commodity (c) (VAR_COMNET).
(r,t,c,s) The net level of a commodity is equivalent to the total production minus total consumption of
said commodity. It is only reported, if a bound, cost is specified for it or it is used in a user
constraint.
PAR_COMNETM Undiscounted annual reduced costs of the VAR_COMNET variable of commodity (c). It is only
(r,t,c,s) reported, if a bound, cost is specified for it or it is used in a user constraint.
PAR_COMPRDL Level value of the commodity production variable (VAR_COMPRD). The variable describes the
(r,t,c,s) total production of a commodity. It is only reported, if a bound, costs is specified for it or it is
used in a user constraint.
PAR_COMPRDM Undiscounted annual reduced costs of the commodity production variable (VAR_COMPRD). It
(r,t,c,s) is only reported, if a bound, costs is specified for it or it is used in a user constraint.
PAR_FLO Flow of commodity (c) entering or leaving process (p) with vintage period (v) in period (t).
(r,v,t,p,c,s)
PAR_FLOM Discounted reduced costs of flow variable of commodity (c) in period (t) of process (p) with
(r,v,t,p,c,s) vintage period period (v); the reduced costs describe in the case, that the flow variable is at its
lower (upper) bound, the cost increase (decrease) of the objective function caused by an increase
of the lower (upper) bound by one unit; the reduced costs can also be interpretated as the
necessary decrease=subsidy (increase=tax) of the cost coefficient of the flow variable in the
objective function, so that the flow will leave its lower (upper) bound.
PAR_IRE Inter-regional exchange flow of commodity (c) in period (t) via exchange process (p) entering
(r,v,t,p,c,s,ie) region (r) as import (ie=’IMP’) or leaving region (r) as export (ie=’EXP’).

121
Report parameter 32 Description
(Indexes)
PAR_IREM Discounted reduced costs of inter-regional exchange flow variable of commodity (c) in period
(r,v,t,p,c,s,ie) (t) of exchange process with vintage period (v); the reduced costs describe in the case, that the
flow variable is at its lower (upper) bound, the cost increase (or decrease) of the objective
function caused by an increase of the lower (upper bound) by one unit; the reduced costs can
also be interpretated as the necessary decrease=subsidy (increase=tax) of the cost coefficient of
the flow variable in the objective function, so that the flow will leave its lower (upper) bound.
PAR_NCAPL Level value of investment variable (VAR_NCAP) of process (p) in period (v).
(r,v,p)
PAR_NCAPM Undiscounted reduced costs of investment variable (VAR_NCAP) of process (p); only reported,
(r,v,p) when the capacity variable is at its lower or upper bound; the reduced costs describe in the case,
that the investment variable is at its lower (upper) bound, the cost increase (decrease) of the
objective function caused by an increase of the lower (upper) bound by one unit; the reduced
costs can also be interpretated as the necessary decrease=subsidy (increase=tax) of the cost
coefficient of the investment variable in the objective function, so that the investment variable
will leave its lower (upper) bound.
PAR_OBJACT Annual discounted variable costs (caused by ACT_COST) in year (y) associated with the
(r,v,y,p,s,cur) operation (activity) of a process (p) with vintage period (v).
PAR_OBJCOM Annual discounted commodity (c) related costs (caused by IRE_PRICE, COM_CSTNET,
(r,y,c,s,cur) COM_TAXNET, COM_SUBNET, COM_CSTPRD, COM_TAXPRD, COM_SUBPRD) in year
(y).
PAR_OBJDEC Annual discounted decommissioning costs (caused by NCAP_DCOST) in year (y) associated
(r,v,y,p,cur) with the dismantling of process (p) with vintage period (v).
PAR_OBJELS Annual discounted changes in the objective function due to elastic demand changes of
(r,y,c,cur) commodity (c). When elastic demands are used the objective function describes the utility ( =
consumer surplus plus producer surplus), which reaches its maximum in the equilibrium of
demand and supply.

122
Report parameter 32 Description
(Indexes)
PAR_OBJFIX Annual discounted fixed operating and maintenance costs (caused by NCAP_FOM,
(r,v,y,p,cur) NCAP_FTAX, NCAP_FSUB, NCAP_DLAGC) in year (y) associated with the installed
capacity of process (p).
PAR_OBJFLO Annual discounted flow related costs (caused by FLO_COST, FLO_DELV, FLO_TAX,
(r,v,y,p,c,s,cur) FLO_SUB) in year (y) associated with a commodity (c) flow in/out of a process (p) with vintage
period (v) as well as capacity related commodity flows (specified by NCAP_COM,
NCAP_ICOM, NCAP_OCOM).
PAR_OBJINV Annual discounted investment costs (caused by NCAP_COST) in year (y) spread over the
(r,v,y,p,cur) economic lifetime (NCAP_ELIFE) of a process (p) with vintage period (v).
PAR_OBJLAT Annual discounted late revenues (see section 5.2 on objective function), which are caused by
(r,y,p,cur) sunk materials (NCAP_OCOM) released in year (y) having a salvage value (NCAP_VALU),
associated with process (p) with vintage period (v).
PAR_OBJSAL Discounted salvage value of costs (NCAP_COST, NCAP_DLAGC, NCAP_DCOST) associated
(r,v,p,cur) with investments (VAR_NCAP, NCAP_PASTI), of which the technical lifetime exceeds the end
of the model horizon; the total salvage value associated with the investment of process (p) is
reported for the vintage year (v).
PAR_PASTI Residual capacity of past investments (NCAP_PASTI) of process (p) still existing in period (t).
(r,t,p)
PAR_PEAKM Undiscounted annual shadow price of peaking equation (EQ_PEAK) associated with commodity
(r,t,c,s) (c); since the peaking equation is at most only binding for one timeslice (s), a shadow price only
exists for one timeslice. The shadow price can be interpretated as an additional premium to the
shadow price of the commodity balance, which consumers of commodity (c) have to pay for
consumption during peak times, the premium is used (besideds other sources) to cover the
capacity related costs (e.g., investment costs) of capacity contributing reserve capacity during
peak times.
REG_OBJ Discounted objective value (EQ_OBJ) for each region (r).
(r)

123
Report parameter 32 Description
(Indexes)
TOT_ACT Total annual discounted variable costs of all processes in a region (r).
(r,y,cur)
TOT_COM Total annual discounted commodity costs (incl. import/export prices) in region (r) over all
(r,y,cur) commodities.
TOT_DEC Total annual discounted decommissioning costs of all processes in region (r).
(r,y,cur)
TOT_FIX Total annual discounted fixed and operating maintenance costs of all processes in region (r).
(r,y,cur)
TOT_FLO Total annual discounted flow related costs of all commodity flows in region (r).
(r,y,cur)
TOT_INV Total annual discounted investment costs of all processes in region (r).
(r,y,cur)
TOT_LAT Total annual discounted late revenues of all processes in region (r).
(r,y,cur)
TOT_OBJ Total annual discounted objective function for each region (r).
(r,y,cur)
TOT_SAL Total annual discounted salvage costs of all processes in region (r).
(r,y,cur)
VDA_DISC Sum of annual present value factors OBJ_DISC over years within period t. The effect of one
(r,t) unit of variable cost on the objective coefficient of a variable in period t is the sum of annual
present value factors in that period. Thus, the sum of the annual present value factors is used for
period costs/shadow prices.

124
4 Variables

This chapter describes each variable name, definition, and role in the TIMES Linear
Program. To facilitate identification of the variables when examining the model’s source
code, all variable names start with the prefix VAR_. The value assigned to each variable
indexed by some time period, represents the average value in that time period, but the
case of VAR_NCAP(v) is an exception, since that variable represents a point-wise
investment decided at time period v. VAR_NCAP is discussed in detail below.
Table 4.1 is a list of TIMES variables by category, with brief decription of each variable.

Remarks on Table 4.1


• Many variables that are related to a process have two period indexes: t represents
the current period, and v represents the vintage of a process, i.e. the period when
the investment in that process was decided. For the VAR_NCAP variable, t is by
definition equal to v. For other variables, t ≥ v, if the process is vintaged
(prc_vint), i.e., the characteristics of the process depend on the vintage year. If
the process is non-vintaged, the characteristics of the capacity of a process are not
differentiated by its vintage structure, so that the vintage index is actually not
needed for the variables of a non-vintaged process. In these cases, the vintage
index v is by convention set equal to the period index t.
• In Table 4.1, the variables are listed according to five categories, depending on
what TIMES entity they represent. In the rest of the chapter, the variables are
listed and fully described in alphabetical order.
• Table 4.1 does not list the variables used in the two extensions of TIMES, ETL
and Climate Module, which are fully documented in chapters 6 and 7
respectively.
• In the Objective function category, table 4.1 also lists several parameters that
stand for certain portion of the objective functions. These are not bona fide
GAMS variables, but mostly serve as convenient placeholders for this
documentation, and also as useful parameters that may be reported in the solution.

125
Table 4.1. List of TIMES variables by category

Category Variable name Brief description


Process related
VAR_ACT Annual activity of a process
VAR_CAP Current capacity of a process, all vintages
together
VAR_NCAP Investment (new capacity) in a process
VAR_DNCAP Binary variable used with the discrete
investment option (see sections 5.3.11, 5.3.12)
Commodity related
VAR_BLND Blending variable (for oil refining)
VAR_COMNET Net amount of a commodity
VAR_COMPRD Gross production of a commodity
VAR_ELAST Variables used to discretize demand curves
Flow (Process and Commodity) related
VAR_FLO Flow of a commodity in or out of a process
VAR_IRE Flow of a commodity in or out of an exchange
process (trade variable)
VAR_SIN/OUT Flow of a commodity in or out of a storage
process
Objective function related
VAR_OBJ Variable representing the overall objective
function (all regions together)
The following 10 parameters are not true variables of the LP matrix
OBJR Parameter representing a regional component of
the objective function.
INVCOST Parameter representing the investments portion
of a regional component of the objective
function
INVTAXSUB Parameter representing the taxes and subsidies
attached to the investments portion of a regional
component of the objective function
INVDECOM Parameter representing the capital cost attached
to the dismantling (decommissioning) portion of
a regional component of the objective function
FIXCOST Parameter representing the fixed annual costs
portion of a regional component of the objective
function
FIXTAXSUB Parameter representing the taxes and subsidies
attached to fixed annual costs of a regional
component of the objective function
VARCOST Parameter representing the variable annual cost
portion of a regional component of the objective
function

126
Category Variable name Brief description
ELASTCOST Variable representing the demand loss portion
of a regional component of the objective
function
LATEREVENUES Parameter representing the late revenue portion
of a regional component of the objective
function.
SALVAGE Parameter representing the salvage value portion
of a regional component of the objective
function
33
User Constraint related
VAR_UC Variable representing the LHS expression of a
user constraint summing over regions
(uc_r_sum), periods (uc_t_sum) and timeslices
(uc_ts_sum).
VAR_UCR Variable representing the LHS expression of a
user constraint summing over periods
(uc_t_sum) and timeslices (uc_ts_sum) and
being generated for the regions specified in
uc_r_each.
VAR_UCT Variable representing the LHS expression of a
user constraint summing over regions
(uc_r_sum) and timeslices (uc_ts_sum) and
being generated for the periods specified in
uc_t_each.
VAR_UCRT Variable representing the LHS expression of a
user constraint summing over timeslices
(uc_ts_sum) and being generated for the
regions specified in uc_r_each and periods in
uc_t_each.
VAR_UCTS Variable representing the LHS expression of a
user constraint summing over regions
(uc_r_sum) and being generated for the periods
specified in uc_t_each and timeslices in
uc_ts_each.
VAR_UCRTS Variable representing the LHS expression of a
user constraint summing over periods being
generated for the regions specified in
uc_r_each, the periods in uc_t_each and
timeslices in uc_ts_each.
VAR_UCSU Variable representing the LHS expression of a

33
In case the dollar control parameter VAR_UC is set to YES, the user constraints are
always strict equalities (l=E) with the RHS constants replaced by the user constraint
variables given in the table. The RHS bound parameter (UC_RHS(R)(T)(S)) are then
applied to these user constraint related variables.

127
Category Variable name Brief description
dynamic user constraint summing over regions
(uc_r_sum) and timeslices (uc_ts_sum) and
being generated for the periods specified in
uc_t_succ.
VAR_UCSUS Variable representing the LHS expression of a
dynamic user constraint summing over regions
(uc_r_sum) and being generated for the periods
specified in uc_t_succ and timeslices in
uc_ts_each.
VAR_UCRSUS Variable representing the LHS expression of a
dynamic user constraint summing over periods
being generated for the regions specified in
uc_r_each, the periods in uc_t_succ and
timeslices in uc_ts_each.
VAR_UCRSU Variable representing the LHS expression of a
dynamic user constraint summing over
timeslices (uc_ts_sum) and being generated for
the regions specified in uc_r_each and periods
in uc_t_succ.

Notation for indexes: The following indexes are used in the remainer of this chapter:

r, r’ = region; v = vintage; t, t’ = time period; y = year; p = process; c, c’ = commodity;


s, s’ = timeslice; ie = import or export; l = sense of a constraint (≥, =, or ≤). In addition,
some indexes (u; ble; opr; j; uc_n) are used for specific variables only and are defined
in their context.

4.1 VAR_ACT(r,v,t,p,s)
Definition: the overall activity of a process. VAR_ACT is defined by the
EQ_ACTFLO equation either as the sum of outflows or as the sum of inflows of a
particular (user selected) group of commodities, adequately normalized. If the
process is not vintaged, the vintage index v is by convention set equal to the
period index t.

Role: reports the activity of a process and implicitly defines how the capacity
is measured, since the activity is bounded by the available capacity in the
constraint EQ(l)_CAPACT, e.g. if the activity of a coal power plant is defined
over its electricity output, the capacity is measured in terms of the output
commodity, e.g. MWelectric. Similarly, if the activity variable represents the input
flow of coal, the capacity of the coal plant is measured in terms of the input
commodity, e.g. MWcoal.

128
4.2 VAR_BLND(r,ble,opr)
Definition: amount of the blending stock opr in energy, volume or weight
units needed for the production of the blending product ble in oil refinery
modeling.

Role: used for specifying constraints on quality of the various refined


petroleum products.

4.3 VAR_CAP(r,t,p)
Definition: the installed capacity in place in any given year t, of all vintages
of a process determined by the equation EQ(l)_CPT. The variable is equal to the
sum of all previously made investments in new capacity, plus any remaining
residual capacity installed before the modeling horizon, that has not yet reached
the end of their technical lifetime.

Role: Its main purpose is to allow the total capacity of a process to be


bounded. The variable is only created when
o a capacity (CAP_BND) of total capacity in place is specified. In case that
only one lower or one upper capacity bound is specified, the capacity
variable is not generated, but the bound is directly used in the EQ(l)_CPT
constraint.
o the capacity variable is needed in a user constraint, or
o the process is a learning technology (teg) in case that endogenous
technological learning is used.

4.4 VAR_COMNET(r,t,c,s)
Definition: the net amount of a commodity at period t, timeslice s. It is equal
to the difference between amount procured (produced plus imported) minus
amount disposed (consumed plus exported).

Role: The variable is only created, if a bound is imposed, or a cost is explicitly


associated with the net level of a commodity.

4.5 VAR_COMPRD(r,t,c,s)
Definition: the amount of commodity c procured at time period t, timeslice s.

Role: this variable is only created if a bound is imposed on total production of


a commodity, or a cost is explicitly associated with production level of a
commodity. The variable is defined through the equation EQE_COMPRD.

4.6 VAR_DNCAP(r,t,p,u)

129
Definition: this variable is used only for processes selected by the user as being
discrete, i.e. for which investment at period t may only be equal to one of a set of
discrete sizes, specified by the user. For such processes, VAR_DNCAP is a binary
decision variable equal to 1 if the investment is equal to size ‘u’ and 0 otherwise.
Thanks to an additional constraint, only one of the various potential sizes allowed
for the investment at period t is indeed allowed.

Role: useful to mathematically express the fact that investment in process p at


period t may only be done in discrete sizes. See equation EQ_DSCNCAP in
chapter 5.

4.7 VAR_ELAST(r,t,c,s,j,l)
Definition: these variables are defined whenever a demand is declared to be
price elastic. These variables are indexed by j, where j runs over the number of
steps used for discretizing the demand curve of commodity c (c = energy service
only). The jth variable stands for the portion of the demand that lies within
discretization interval j, on side l (l indicates either increase or decrease of demand
w.r.t. the reference case demand). Each ELAST variable is bounded upward via
equation EQ_BNDELAS.

Role: Each elastic demand is expressed as the sum of these variables. In the
objective function, these variables are used to bear the cost of demand losses as
explained in PART I, chapter 6.

4.8 VAR_FLO(r,v,t,p,c,s)

• Definition: these variables stand for the individual commodity flows in and
out of a process. If the process is not vintaged, the vintage index v is by
convention set equal to the period index t.
• Role: The flow variables are the fundamental quantities defining the detailed
operation of a process. They are used to define the activity of a process
(VAR_ACT) in a user chosen manner. They are also essential for expressing
various constraints that balance the flows of a commodity, or that control the
flexibility of processes.

4.9 VAR_IRE(r,v,t,p,c,s,ie)

• Definition: the inter-regional exchange variable (i=IMPort, e=EXPort) that


tracks import (ie=i)or export (ie=e) of a commodity between region r and
other regions. The region(s) r’ trading with r is (are) not specified via this
variable, but rather via the process(es) p through which the import/export is
accomplished. The topology set top_ire(r,c,r’,c’,p) of an exchange process
indicates the (single) region r’ with which region r is trading commodity c
(which may have the different name c’ in region r’). Each trade process may
trade more than one commodity. Otherwise, VAR_IRE operates in a manner

130
similar to VAR_FLO for conventional processes. An option exists for trading
with an external region that is not modeled explicitly (exogenous trading). If
the process is not vintaged, the vintage index v is by convention set equal to
the period index t.
• Role: the role of an IRE variable is to embody the amount of a commodity in
or out of a trading process.

4.10 VAR_NCAP(r,v,p)

• Definition: the amount of new capacity (or what has traditionally been called
“investment” in new capacity, or capacity build-up) at period v. As already
mentioned, VAR_NCAP represents the total investment in technology p at
period v only when ILED+TLIFE ≥ D(v). When ILED+TLIFE < D(v), the
model assumes that the investment is repeated as many times as necessary
within the period so that the life of the last repetition is beyond the end of
period v. In this case VAR_NCAP represents the capacity level of the single
investments. Figure 1 illustrates a case where the investment is made twice in
period v (and some capacity still remains after period v). The average capacity
in period v resulting from the investment VAR_NCAP(v) is less than
VAR_NCAP(v), due to the delay ILED (it is equal to VAR_NCAP(v)*
D(v)/TLIFE). The average capacity in period v+1 due to VAR_NCAP(v) is also
less than VAR_NCAP(v) because the end of life of the second round of
investment occurs before the end of period v+1. These adjustments are made in
every equation involving VAR_NCAP by the internal parameter COEF_CPT.

VAR_NCAP

Resulting average capacity in period v

Resulting average capacity in period v+1

TLIFE TLIFE
ILED

D(v) D(v+1)

Figure 1: Example of a repeated investment in same period

131
• Role: The new capacity (i.e. investment) variables are fundamental in defining
the investment decisions, and many other quantities derived from it (for instance
process capacities). They play a key role in the model structure and intervene in
the majority of constraints. They are notably used in equations that define the
conservation of capacity and those that tie the activity of a process to its capacity.
The omnipresence of VAR_NACP is in part due to the fact that the VAR_CAP
variable is not always defined in TIMES, by design. Note that residual capacity,
or capacity in place prior to the initial model year, is handled as a constant in
place of VAR_NCAP given by the input parameter NCAP_PASTI(y), which
describes the investment made prior to the first period in the pastyear y.

4.11 VAR_OBJ(y0) and related variables


Definition: equal to the objective function of the TIMES LP, i.e. the total cost
of all regions, discounted to year y0.

Role: this is the quantity that is minimized by the TIMES optimizer.


Remark: The next 10 ‘variables’ do not directly correspond to GAMS
variables. They are used in the documentation (especially section 5.2) as
convenient intermediate placeholders that capture certain portions of the cost
objective function. The reader is invited to look at section 5.2, which explains
how these various costs enter the composition of the objective function. Most of
these ‘variables’ are defined as reporting parameters that are made available to the
VEDA-BE result analyser, as shown in section 3.2.

4.11.1 VAR_OBJR(r, y0)


Definition: equal to the sum of the various pieces of the total cost of region r
discounted to year y0.
Role: this is not a true variable in the GAMS code. It is used only as a convenient
place holder for writing the corresponding portion of the objective function in this
documentation. It may also be reported in VEDA-BE.

4.11.2 INVCOST(r,y)
Definition: equal to the portion of the cost objective for year y, region r, that
corresponds to investments.
Role: it is used mainly as a convenient place holder for writing the corresponding
portion of the objective function. It may also be reported in VEDA-BE.

4.11.3 INVTAXSUB(r,y)
Definition: equal to the portion of the cost objective for year y, region r, that
corresponds to investment taxes and subsidies.
Role: it is used mainly as a convenient place holder for writing the corresponding
portion of the objective function. It may also be reported in VEDA-BE.

132
4.11.4 INVDECOM(r,y)
Definition: equal to the portion of the cost objective for year y, region r, that
corresponds to capital costs linked to decommissioning of a process.
Role: it is used mainly as a convenient place holder for writing the corresponding
portion of the objective function. It may also be reported in VEDA-BE.

4.11.5 FIXCOST(r,y)
Definition: equal to the portion of the cost objective for year y, region r, that
corresponds to fixed annual costs.
Role: it is used mainly as a convenient place holder for writing the corresponding
portion of the objective function. It may also be reported in VEDA-BE.

4.11.6 FIXTAXSUB(r,y)
Definition: equal to the portion of the cost objective for year y, region r, that
corresponds to taxes and subsidies attached to fixed annual costs.
Role: it is used mainly as a convenient place holder for writing the corresponding
portion of the objective function. It may also be reported in VEDA-BE.

4.11.7 VARCOST(r,y)
Definition: equal to the portion of the cost objective for year y, region r, that
corresponds to variable annual costs.
Role: it is used mainly as a convenient place holder for writing the corresponding
portion of the objective function. It may also be reported in VEDA-BE.

4.11.8 ELASTCOST(r,y)
Definition: equal to the portion of the cost objective for year y, region r, that
corresponds to the cost incurred when demands are reduced due to their price
elasticity.
Role: it is used mainly as a convenient place holder for writing the corresponding
portion of the objective function. It may also be reported in VEDA-BE.

4.11.9 LATEREVENUES(r,y)
Definition: equal to the portion of the cost objective for year y, region r, that
corresponds to certain late revenues from the recycling of materials from
dismantled processes that occur after the end-of-horizon.
Role: this is not a true variable in the GAMS code. It is used only as a
convenient place holder for writing the corresponding portion of the objective
function in this documentation. It may also be reported in VEDA-BE.convenient as
a replacement for the sum of the components of the total cost.

4.11.10 SALVAGE(r,y0)
Definition: equal to the portion of the cost objective for region r, that
corresponds to the salvage value of investments and other one-time costs. It is
discounted to some base year y0
Role: it is used mainly as a convenient place holder for writing the corresponding
portion of the objective function. It may also be reported in VEDA-BE.

133
4.12 VAR_SIN/SOUT(r,v,t,p,c,s)
Definition: flow entering/leaving at period t a storage process p, storing
commodity c. The process may be vintaged. If the process is not vintaged, the vintage
index v is by convention set equal to the period index t. For storages between
timeslices (prc_stgtss) and night-storage devices (prc_nsttss) the timeslice index s of
the storage flows is determined by the timeslice resolution of the storage (e.g.
DAYNITE for a day storage). For a storage operating between periods (prc_stgips),
the storage flows are always on an annual level and hence the timeslice s is then
always set to ANNUAL.

Role: to store some commodity so that it may be used in a time slice or period
different from the one in which it was procured; enters the expressions for the storage
constraints.

The remaining TIMES variables are all attached to user constraints. User constraints
are quite flexible, and may involve any of the usual TIMES variables. Two variants of
formulating a user constraints exist. In the first case a LHS expression, containing
expressions involving the different TIMES variables, are bounded by a RHS constant
(given by the input parameter UC_RHS(R)(T)(S)). In the second case, the constant on
the RHS is replaced by a variable. The bound UC_RHS(R)(T)(S) is then applied to
this variable. In the latter case, the user constraints are always generated as strict
equalities, while in the first case the equation sign of the user constraint is determined
by the bound type. The user constraint related variables are in fact redundant, but
quite useful in providing streamlined expressions for the user constraints (see chapter
5). By setting the dollar control parameter VAR_UC to YES in the run-file, the
variable based formulation is activated (second case). As a default, the formulation
without user constraint variables will be generated.

Each of the listed variables is related to a specific class of user constraint depending
on whether the user constraint is created for each period, region or time slice or only a
subset of these indices. In addition, some user constraints are defined for pair of
successive time periods (dynamic user constraint or growth constraint). Each variable
has at least one index (representing the user constraint uc_n for which this variable is
defined), and may have up to three additional indexes among r, t, and s.

4.13 Variables used in User Constraints


4.13.1 VAR_UC(uc_n)
Variable representing the LHS expression of the user constraint EQE_UC(uc_n)
summing over regions (uc_r_sum), periods (uc_t_sum) and timeslices (uc_ts_sum).

134
4.13.2 VAR_UCR(uc_n,r)
Variable representing the LHS expression of the user constraint EQE_UCR(r,uc_n)
summing over periods (uc_t_sum) and timeslices (uc_ts_sum) and being generated for
the regions specified in uc_r_each.

4.13.3 VAR_UCT(uc_n,t)
Variable representing the LHS expression of the user constraint EQE_UCT(uc_n,t)
summing over regions (uc_r_sum) and timeslices (uc_ts_sum) and being generated for
the periods specified in uc_t_each.

4.13.4 VAR_UCRT(uc_n,r,t)
Variable representing the LHS expression of the user constraint EQE_UCRT(r,uc_n,t)
summing over timeslices (uc_ts_sum) and being generated for the regions specified in
uc_r_each and periods in uc_t_each.

4.13.5 VAR_UCTS(uc_n,t,s)
Variable representing the LHS expression of the user constraint
EQE_UCTS(uc_n,t,s) summing over regions (uc_r_sum) and being generated for the
periods specified in uc_t_each and timeslices in uc_ts_each.

4.13.6 VAR_UCRTS(uc_n,r,t,s)
Variable representing the LHS expression of the user constraint
EQE_UCRTS(r,uc_n,t,s) summing over periods being generated for the regions specified
in uc_r_each, the periods in uc_t_each and timeslices in uc_ts_each.

4.13.7 VAR_UCSU(uc_n,t)
Variable representing the LHS expression of a dynamic user constraint or a growth
constraint EQE_UCSU(uc_n,t) summing over regions (uc_r_sum) and timeslices
(uc_ts_sum) and being generated for the periods specified in uc_t_succ.

4.13.8 VAR_UCSUS(uc_n,t,s)
Variable representing the LHS expression of a dynamic user constraint or a growth
constraint EQE_UCSUS(uc_n,t,s) summing over regions (uc_r_sum) and being
generated for the periods specified in uc_t_succ and timeslices in uc_ts_each.
4.13.9 VAR_UCRSUS(r,uc_n,r,t,s)

Variable representing the LHS expression of a dynamic user constraint or a growth


constraint EQE_UCRSUS(r,uc_n,t,s) summing over periods being generated for the
regions specified in uc_r_each, the periods in uc_t_succ and timeslices in uc_ts_each.

4.13.10 VAR_UCRSU(uc_n,r,t)
Variable representing the LHS expression of a dynamic user constraint or a growth
constraint EQE_UCRSU(uc_n,r,t) summing over timeslices (uc_ts_sum) and being
generated for the regions specified in uc_r_each and periods in uc_t_succ.

135
5 Equations
This chapter is divided into four sections: the first section describes the main
notational conventions adopted in writing the mathematical expressions of the entire
chapter. The next two sections treat respectively the TIMES objective function and the
linear constraints of the model. The third section is devoted to the additional constraints
and objective function additions that are required for the two MIP options of the model,
Discrete (lumpy) Investments and Endogenous Technology Learning.

Each equation has a unique name and is described in a separate subsection. The
equations are listed in alphabetical order in each section. Each subsection contains
successively the name, list of indices, and type of the equation, the related variables and
other equations, the purpose of the equation, any particular remarks applying to it, and
finally the mathematical expression of the constraint or objective function.

The mathematical formulation of an equation starts with the name of the equation in
the format: EQ_XXXi,j,k,l , where XXX is a unique equation identifier, and i,j,k,.., are the
equation indexes, among those described in chapter 2. Some equation names also include
an index l controlling the sense of the equation. Next to the equation name is a logical
condition that the equation indexes must satisfy. That condition constitutes the domain of
definition of the equation. It is useful to remember that the equation is created in multiple
instances, one for each combination of the equation indexes that satisfies the logical
condition, and that each index in the equation’s index list remains fixed in the expressions
constituting each instance of the equation.

5.1 Notational conventions


We use the following mathematical symbols for the mathematical expressions and
relations constituting the equations:
The conditions that apply to each equation are mathematically expressed using the
∋ symbol (meaning “such that” or “only when”), followed by a logical expression
involving the usual logic operators: ∧ (AND) , ∨ (OR), and NOT.
Within the mathematical expressions of the constraints, we use the usual symbols for
the arithmetic operators ( +, − , × , / , Σ , etc).
However, in order to improve the writing and legibility of all expressions, we use
some simplifications of the usual mathematical notation concerning the use of multiple
indexes, which we describe in the next two subsections.

5.1.1 Notation for summations

When an expression A(i,j,k,…) is summed, the summation must specify the range over
which the indexes are allowed to run. Our notational conventions are as follows:
When a single index j runs over a one-dimensional set A, the usual notation is used,
as in: ∑ Expression j where A is a single dimensional set.
j∈A

136
When a summation must be done over a subset of a multi-dimensional set, we use a
simplified notation where some of the running indexes are omitted, if they are not active
for this summation.
Example: consider the 3-dimensional set top consisting of all quadruples {r,p,c,io}
such that process p in region r, has a flow of commodity c with orientation io (see table 3
of chapter 2). If is it desired to sum an expression Ar,p,c,io over all commodities c, keeping
the region (r), process (p) and orientation (io) fixed respectively at r1, p1 and ‘IN’, we will
write, by a slight abuse of notation: ∑ A(r1 , p1 , c, ' IN ' ) , or even more simply:
c∈top ( r1 , p1 ,' IN ')

∑ A(r , p , c, ' IN ' ) , if the context is unambiguous. Either of these notations clearly
c∈top
1 1

indicates that r, p and io are fixed and that the only active running index is c.
(The traditional mathematical notation would have been: ∑ A(r1 , p, c1 , ' IN ' ) ,
{r1 , p1 , c , ' IN '}∈top

but this may have hidden the fact that c is the only running index active in the sum).

5.1.2 Notation for logical conditions

We use similar simplifying notation in writing the logical conditions of each equation.
A logical condition usually expresses that some parameter exists (i.e. has been given a
value by the user), and/or that some indexes are restricted to certain subsets.
A typical example of the former would be written as: ∋ ACTBNDr,t,p,s,bd, which reads:
“the user has defined an activity bound for process p in region r, time-period t, timeslice s
and sense bd”. The indexes may sometimes be omitted, when they are the same as those
attached to the equation name.
A typical example of the latter is the first condition for equation EQ_ACTFLOr,v,t,p,s
(see section 5.3.1), which we write simply as: rtp_vintyr , which is short for:
{r , v, t , p} ∈ rtp_vintyr , with the meaning that “some capacity of process p in region r,
created at period v, exists at period t”. Again here, the indices have been omitted from the
notation since they are already listed as indices of the equation name.

5.1.3 Using Indicator functions in arithmetic expressions

There are situations where an expression A is either equal to B or to C, depending on


whether a certain condition holds or not, i.e.:
A = B if Cond
A = C if NOT Cond

This may also be written as:


A = B × (Cond ) + C × ( NOT Cond )
where it is understood that the notation (Cond) is the indicator function of the logical
condition, i.e. (Cond)=1 if Cond holds, and 0 if not.

This notation often makes equations more legible and compact. A good example
appears in EQ_CAPACT.

137
5.2 Objective function EQ_OBJ
Equation EQ_OBJ Indices: region (r); state of the world (w);
process (p); time-slice (s); and perhaps
others ...
Type = Non Binding (MIN)

Related Variables: All

Purpose: the objective function is the criterion that is minimized by the TIMES model. It
represents the total discounted cost of the entire, possibly multi-regional system over the
selected planning horizon. It is also equal to the negative of the discounted total surplus
(plus a constant), as discussed in PART I, chapters 3 and 6.

5.2.1 Introduction and notation

The TIMES objective function includes a number of innovations compared to those of


more traditional energy models such as MARKAL, EFOM, MESSAGE, etc. The main
design choices are as follows:
- The objective function may be thought of as the discounted sum of net annual
costs (i.e. costs minus revenues), as opposed to net period costs 34. Note that some
costs and revenues are incurred after the end of horizon (EOH). This is the case
for instance for some investment payments and more frequently for payments and
revenues attached to decommissioning activities. The past investments (made
before the first year of the horizon) may also have payments within horizon years
(and even after EOH !). These are also reflected in the objective function.
However, it should be clear that such payments are shown in OBJ only for
reporting purposes, since such payments are entirely sunk, i.e. they are not
affected by the model’s decisions.
- The model uses a general discount rate d(y) (year dependent), as well as
technology specific discount rates ds(t) (period dependent). The former is used to:
a) discount fixed and variable operating costs, and b) discount investment cost
payments from the point of time when the investment actually occurs to the base
year chosen for the computation of the present value of the total system cost. The
latter are used only to calculate the annual payments resulting from a lump-sum
investment in some year. Thus, the only place where ds(t) intervenes is to compute
the Capital Recovery Factors (CRF) discussed further down.

34
The actual implementation of OBJ in the GAMS program is different from the one
described in the documentation, since the annualizing of the various cost components is
not performed in the GAMS code of the OBJ equation, but rather in the reporting section
of the program, for improved code performance. However, despite the simplification, the
GAMS code results in an objective function that is fully equivalent to the one in this
documentation.

138
For convenience, we repeat below that notation which is more especially used in the
objective function (see chapter 3 for the complete TIMES notation)

5.2.1.1 Notation relative to time

MILESTONEYEARS: the set of all milestone years (by convention: middle years, see
below M(t) )
PASTYEARS: Set of years prior to start of horizon, for which there is a past investment
(after interpolation of user data).
MODELYEARS: any year within the model’s horizon
FUTUREYEARS: set of years posterior to EOH
YEARS set of years before during and after planning horizon
t any member of MILESTONEYEARS or PASTYEARS. By convention, a
period t is represented by its middle year (see below M(t)). This convention
can be changed without altering the expressions in this document.
B(t) : the first year of the period represented by t
E(t) : the last year of the period represented by t
D(t) : the number of years in period t . By default, D(t)=1 for all past
years. Thus, D(t)=E(t)-B(t)+1
M(t): the “middle” year or milestone year of period t. Since period n may have
an even or an odd number of years, M(t) is not always exactly centered at
the middle of the period. It is defined as follows: M(t) = [B(t)+(D(t)-1)/2],
where [x] indicates the largest integer less than or equal to x. For example,
period from 2011 to 2020 includes 10 years, and its “middle year” is
[2011+4.5] or 2015 (slightly left of the middle), whereas the period from
2001 to 2015 has 15 years, and its “middle year” is : [2001+7] or 2008
(i.e. the true middle in this example)
y : running year, ranging over MODELYEARS, from B0 to EOH.
k : dummy running index of any year, even outside horizon
v: running index for a year, used when it represents a vintage year for some
investment.
v(p) vintage of process p (defined only if p is vintaged)
B0 : initial year (the single year of first period of the model run)
EOH : Last year in horizon for a given model run.

Similarly, by a slight abuse of notation, the above entities are extended as follows, when the
argument is a particular year, rather than a model year (I think that notation is not needed):

B(y) : first year of the period containing year y (instead of B(T(y)) )


T(y) the milestone year of the period containing year y (same as M(y) in our
present convention)
M(y) : “middle year” of the period containing year y (instead of M(T(y)) )
D(y) : number of years of the period containing year y (instead of D(T(y))

139
5.2.1.2 Other notation

d(y) : general (social) discount rate (time dependent, although not shown in
notation)
r(y) : general discount factor: r(y)=1/(1+d(y)) (time dependent, although not
shown in notation)
ds(t) : technology specific discount rate (model year dependent)
rs(t) : technology specific discount factor: rs(t)=1/(1+ds(t))
DISC(y,z): Value, discounted to the beginning of year z, of a $1 payment made at
beginning of year y, using general discount factor. DISC(y,z) = Πu=z to y-1 r(u)
CRFs(t): Capital recovery factor, using a (technology specific) discount rate and an
economic life appropriate to the payment being considered. This quantity
is used to replace an investment cost by a series of annual payments
spread over some span of time CRFs={1-rs(t)}/{1-rs(t)ELIFE}. Note that
a CRF using the genberal discount rate is also defined and udsed in the
SALVAGE portion of the objective function.
OBJ(z): Total system cost, discounted to the beginning of year z
INDIC(x): 1 if logical expression x is true, 0 if not
E is the smallest integer larger than of equal to E

5.2.1.3 Reminder of some technology attribute names (each is indexed by t)

TLIFE Technical life of a technology


ELIFE Economic life of a technology, i.e. period over which investment
payments are spread (default = TLIFE)
DLAG Lag after end of technical life, after which decommissioning may start
DLIFE duration of decommissioning for processes with ILED>0, (otherwise =1)
DELIF Economic life for decommissioning purposes (default DLIFE).
ILED Lead-time for the construction of a process. TLIFE starts after the end of
ILED
ILEDMin =Min {1/10 * D(t), 1/10 * TLIFE.} This threshold serves to distinguish small
from large projects; it triggers a different treatment of investment timing.

5.2.1.4 Discounting option

There are two alternate discounting methods in TIMES. The default method is to assume
that all payments occur at the beginning of some year. The alternate method (activated by
a switch, see PART III) assumes that investments are incurred at the beginning of some
year, but that all annual (or annualized) payments occur at the middle of some year.
Section 5.1.11 explains the two methods.

5.2.1.5 Components of the Objective function

The objective function is the sum of all regional objectives, all of them discounted to the
same user-selected base year, as shown in equation (A) below

140
EQ_OBJ(z) ∋ z ∈ MODELYEARS

VAR _ OBJ ( z ) = ∑ REG _ OBJ ( z, r )


r∈REG
( A)

Each regional objective OBJ(z,r) is decomposed into the sum of nine components, to
facilitate exposition, as per expression (B) below.

EQ_OBJ(z,r) ∋ z ∈ MODELYEARS , r ∈ REG

 INVCOST ( y ) + INVTAXSUB( y ) + INVDECOM ( y ) + FIXCOST ( y ) 


REG _ OBJ ( z , r ) = ∑ DISC ( y, z ) × 
+ + + −

y ∈( −∞ , +∞ )  FIXTAXSUB ( y ) VARCOST ( y ) ELASTCOST ( y ) LATEREVENUES ( y ) 
− SALVAGE ( z ) (B )

The regional index r is omitted from the nine components for simplicity of notation.

The first and second terms are linked to investment costs. The third term is linked to
decommissioning capital costs, the fourth and fifth terms to fixed annual costs, the sixth
term to all variable costs (costs proportional to some activity), the seventh to demand loss
costs. The eight cost (actually a revenue) accounts for commodity recycling occurring
after EOH, and the ninth term is the salvage value of all capital costs of technologies
whose life extends beyond EOH. The 9 components are presented in the nine subsections
5.1.2 to 5.1.10..

5.2.2 Investment costs: INVCOST(y)

This subsection presents the components of the objective function related to


investment costs, which occur in the year an investment is decided and/or during the
construction lead-time of a facility.

Remarks
a) The investment cost should be the overnight investment cost (excluding any interests
paid during construction) whenever the construction lead time is explicitly modeled
(i.e. cases 2 are used, see below). In such a case, the interests during construction are
endogenously calculated by the model itsef, as will be apparent in the sequel. If no
lead-time is specified (and thus cases 1 are used), the full cost of investments should
be used (including interests during construction, if any) 35.
b) Each individual investment physically occurring in year k, results in a stream of
annual payments spread over several years in the future. The stream starts in year
k and covers years k, k+1, …, k+ELIFE-1, where ELIFE is the economic life of

35
Ideally, it would be desirable that cases 1 be used only for those investments that
have no lead time (and thus no interests during construction). However, if a user employs
cases 1 for projects even though there are significant IDC’s, the latter should be included
in the investment cost.

141
the technology. Each yearly payment is equal to a fraction CRF of the investment
cost (CRF = Capital Recovery Factor). Note that if the technology discount rate is
equal to the general discount rate, then the stream of ELIFE yearly payments is
equivalent to a single payment of the whole investment cost located at year k,
inasmuch as both have the same discounted present value. If however the
technology’s discount rate is chosen different from the general one, then the
stream of payments has a different present value than the lump sum at year k. It is
the user’s responsibility to choose technology dependent discount rates, and
therefore to decide to alter the effective value of investment costs.
c) In addition to spreading the payments resulting from investment costs, a major
TIMES refinement is that the physical investment itself does not occur in a single
year, but rather as a series of annual increments. For instance, if the model invests
3 GW of electric capacity in a period extending from 2011 to 2020, the physical
capacity increase may be delayed and/or may be spread over several years. The
exact way the delaying and spreading are effected depends on several conditions,
which are specified further down as four separate cases, and which are function
both of the nature of the technology and of the length of the period in which the
investment takes place relative to the technology’s technical life. The spreading of
investments and the spreading of payments described in the previous paragraph,
help guarantee a smooth trajectory for most investment payments, a more realistic
representation than what happens in other models. Example I.1.a of figure 5.1
shows a case where the physical investment is spread over four years, and each
increment’s capital payments are further spread over 3 years.
d) The above two remarks entail that payments of investment costs may well extend
beyond the horizon. We shall also see that some investment payments occur in
years prior to the beginning of the planning horizon (cases 1 only).
e) Taxes and subsidies on investments are treated exactly as investment costs in the
objective function.
f) Since the model has the capability to represent sunk materials and energy carriers
(i.e. those embedded in a technology at construction time, such as the uranium
core of a nuclear reactor, or the steel imbedded in a car), these sunk commodities
have an impact on cost. Two possibilities exist: if the material is one whose
production is explicitly modeled in the RES, then there is no need to indicate the
cost corresponding to the sunk material, which will be implicitly accounted for by
the model just like any other flow. If on the other hand the material is not
specifically modeled in the RES, then the cost of the sunk material should be
included in the technology’s investment cost, and will then be handled exactly as
investment costs.

The four investment cases

As mentioned above, the timing of the various types of payments and revenues is
made as realistic and as smooth as possible. All investment decisions result in increments
and/or decrements in the capacity of a process, at various times. These increments or
decrements may occur, in some cases, in one large lump, for instance in the case of a
large project (hydroelectric plant, aluminum plant, etc.), and, in other cases, in small

142
additions or subtractions to capacity (e.g. buying or retiring cars, or heating devices).
Depending on which case is considered, the assumption regarding the corresponding
streams of payments (or revenues) differs markedly. Therefore, the distinction between
small and large projects (called cases 1 and 2 below) will be crucial for writing the capital
cost components of the objective function. A second distinction comes from the relative
length of a project’s technical life vs. that of the period when the investment occurs.
Namely, if the life of an investment is less than the length of the period, then it is clear
that the investment must be repeated all along the period. This is not so when the
technical life extends beyond the period’s end. Altogether, these two distinctions result in
four mutually exclusive cases, each of which is treated separately. In what follows, we
present the mathematical expression for the INVCOST component and one graphical
example for each case.

Case 1.a If ILEDt ≤ ILEDMin , t and TLIFEt + ILEDt ≥ D(t )


(Small divisible projects, non-repetitive, progressive investment in period)

Here, we make what appears to be the most natural assumption, i.e. that the
investment occurs in small yearly increments spread linearly over D(t) years. Precisely,
the capacity additions start at year M(t)-D(t)+1, and end at year M(t), which means that
payments start earlier than the beginning of the period, and end at the middle of the
period, see example. This seems a more realistic compromise than starting the payments
at the beginning of the period and stopping them at the end, since that would mean that
during the whole period, the paid for capacity would actually not be sufficient to cover
the capacity selected by the model for that period.

Investment
Case 1.a Example: D(t) and payment:

T LIFE
D(t)=4, T LIFE=5,ELIFE=3
M(t)=B(t)+1 Payment:
ELIFE only

B(t) M(t)

143
EQ_INVCOST(y) deals with linear investment buildup, over a span equal to
period length, ending at middle of period

Min{ M ( t ), y}
 VAR _ NCAPt 
INVCOST ( y ) = ∑ INDIC (1.a) × ∑ 
v = Max{ M ( t ) − D ( t ) +1, y − ELIFEt +1} 
+ NCAP _ PASTI t 
t∈MILESTONE ∪ PASTYRS D(t ) 

× CRFs × NCAP _ COSTv ensures that payments stop after ELIFE

Useful Range for y :

{M (t ) − D(t ) + 1 , M (t ) + ELIFEt − 1}
(I.1.a)

Comments: The summand represents the payment effected in year y, due to the
investment increment that occurred in year v (recall that investment payments are spread
over ELIFE). The summand consists of three factors: the first is the amount of investment
in year v, the second is the capital recovery factor, and the third is the unit investment
cost.
The outer summation is over all periods (note that periods later than T(y) are
relevant, because when y falls near the end of a period, the next period’s investment may
have already started). The inner summation is over a span of D(t) centered at B(t), but
truncated at year y. Also, the lower summation bound ensures that an investment
increment which occurred in year v has a payment in year y only if y and v are less than
ELIFE years apart.

Case 1.b if ILEDt ≤ ILEDMin , t and TLIFE t + ILED < D(t )


Small projects, repeated investments in period

Note that in this case the investment is repeated as many times as necessary to cover the
period length (see figure). In this case, the assumption that the investment is spread over
D(t) years is not realistic. It is much more natural to spread the investment over the
technical life of the process being invested in, because this ensures a smooth, constant
stream of small investments during the whole period (any other choice of the time span
over which investment is spread, would lead to an uneven stream of incremental
investments). The number of re-investments in the period is called C, and is easily
computed so as to cover the entire period. As a result of this discussion, the first investment
cycle starts at year B (t ) − TLIFEt / 2 (meaning the smallest integer not less than the
operand), and ends TLIFE years later, when the second cycle starts, etc, as many times as
necessary to cover the entire period. The last cycle extends over the next period(s), and that
is taken into account in the capacity transfer equations of the model. As before, each
capacity increment results in a stream of ELIFE payments at years v, v+1, etc.

144
Case 1.b Example D(t)
Investment
D=5, TLIFE=4, ELIFE=3 TLIFE and payment:

ELIFE
Payment
only:

B(t)

Min{ y , B ( t ) − TLIFEt / 2 + C ×TLIFEt −1}


VAR _ NCAPt
INVCOST ( y ) = ∑ INDIC (1.b) ×
t∈MILESTONE

v = Max{ B ( t ) − TLIFEt / 2 , y − ELIFEt +1 TLIFE t
× CRFs × NCAP _ COSTv

Relevant range for y:

{B(t ) − TLIFEt / 2 , B(t ) − TLIFEt / 2 + C × TLIFEt + ELIFEt − 2}


(I.1.b)

Comments: the expression is similar to that in case 1.a., except that i) the investment
is spread over the technical life rather than the period length, and ii) the investment cycle
is repeated more than once.

Case 2.a: ILEDt > ILEDMin , t and ILEDt + TLIFEt ≥ D(t )


(Large, indivisible projects, unrepeated investment in period)

Here, it is assumed that construction is spread over the lead-time (a very realistic
assumption for large projects), and capacity becomes available at the end of the lead time,
in a lump quantity (see figure).

145
Investment:
and payment
D(t)
Payment
Case 2a Example: ILED
TLIFE only:
D(t)=8, ILED=4
TLIFE=6,ELIFE=3 ELIFE

B(t)

deals with linear investment buildup, over a span


of ILED, starting at beginning of period

Min ( B ( t ) + ILEDt −1, y )


 VAR _ NCAPt 
INVCOST ( y ) = ∑ INDIC (2.a) × ∑ 
k = Max { B ( t ), y − ELIFEt +1}
 × CRFs × NCAP _ COSTB ( t ) + ILEDt
t∈MILESTONEYEARS
t ≤T ( y )
ILEDt 
Min ( t −1, y )
 NCAP _ PASTI t 
+ ∑ INDIC (2.a) × ∑ 
k = Max {t − ILEDt , y − ELIFEt +1}
 × CRFs × NCAP _ COSTt
t∈PASTYEARS ILEDt 

Useful Range for y :


{B(t ) , B(t ) + ILEDt + ELIFEt − 2}
(I.2.a)

Comment: the main difference with case I.1.a) is that the investment’s construction
starts at year B(t) and ends at year B(t)+ILEDt-1 (see example). As before, payments for
each year’s construction spread over ELIFE years.

146
Case 2.b: ILED > ILEDMin , t and TLIFE t + ILEDt < D(t )
(Large, indivisible Projects, repeated investments in period)

Investment
2b Example : and payment:

D(t)=13, ILED=4
T LIFE=5,ELIFE=3 Investment
Payment only
C=2

D(t)

ILED
T LIFE T LIFE

B(t)

This case is similar to case I.2.a, but the investment is repeated more than once over
the period, each cycle being TLIFE years long. As in case I.2.a, each construction is
spread over one lead time, ILED. In this case, the exact pattern of yearly investments is
complex, so that we have to use an algorithm instead of a closed form summation.

ALGORITHM (Output: the vector of payments Pt(y) at each year y, due to


VAR_NCAPt)

Step 0: Initialization (NI(u) represents the amount of new investment made in year u)

NI t (u ) := 0 ∀B(t ) ≤ u ≤ B(t ) + ILEDt + (C − 1) × TLIFEt − 1

Step 1: Compute number of repetitions of investment

D (t ) − ILEDt
C=
TLIFEt

Step 2: for each year u in range:

147
B(t ) ≤ u ≤ B(t ) + ILEDt + (C − 1) ⋅ TLIFEt − 1
Compute:

For I = 1 to C
For u = B (t ) + ( I − 1) ⋅ TLIFEt to B (t ) + ( I − 1) ⋅ TLIFEt + ILEDt − 1
NCAP _ COSTB ( t ) + ( I −1) ×TLIFEt + ILEDt
NI t (u ) := NI t (u ) +
ILEDt
Next u
Next I

Step 3: Compute payments incurred in year y, and resulting from variable VAR_NCAPt
For each y in range:

B (t ) ≤ y ≤ B (t ) + (C − 1) ⋅ TLIFEt + ILEDt + ELIFEt − 2


(I.2.b)
Compute:
y
Pt ( y ) = ∑ NI (u ) × VAR _ NCAPt × CRFs
t
u = Max {B ( t ), y − ELIFEt +1}

END ALGORITHM

INVCOST ( y ) = ∑ INDIC (2.b) × P ( y)


t∈MILESTONES , t ≤T ( y )
t

5.2.3 Taxes and subsidies on investments


EQ _ INVTAXSUB( y ) ∋ y ∈ MODELYEARS
We assume that taxes/subsidies on investments occur at precisely the same time as the
investment. Therefore, expressions for taxes/subsidies are identical to those for
investment costs, with NCAP_COST replaced by: (NCAP_ITAX - NCAP_ISUB).

5.2.4 Decommissioning (dismantling) capital costs: COSTDECOM(y)

Remarks
a) Decommissioning physically occurs after the end-of-life of the investment, and may
be delayed by an optional lag period (e.g. a “cooling off” of the process before
dismantling may take place). The decommissioning costs follow the same patterns
and rules as those for investment costs. In particular, the same four cases that were
defined for investment costs are still applicable.
b) The same principles preside over the timing of payments of decommisioning costs as
were defined for investment costs, namely, the decomposition of payments into a
stream of payments extending over the economic life of decommissioning, DELIF.

148
c) At decommissioning time, the recuperation of embedded materials is allowed by the
model. This is treated as explained for investment costs, i.e. either as an explicit
commodity flow, or as a credit (revenue) subtracted by the user from the
decommissioning cost.
g) Decommissioning activities may also receive taxes or subsidies which are
proportional to the corresponding decommissioning cost.

EQ _ COSTDECOM ( y ) ∋ y ∈ MODELYEARS

Case 1.a) If ILEDt ≤ ILEDMin , t and TLIFEt + ILEDt ≥ D(t )


(Small divisible projects, non-repetitive, progressive investment in period)

In this case, decommissioning occurs exactly TLIFE+DLAG years after investment.


For small projects (cases 1.a and 1.b), it is assumed that decommissioning takes exactly
one year, and also that its cost is paid that same year (this is the same as saying that
DLIFE=DELIF=1). This is a normal assumption for small projects. As shown in the
example below, also payments made at year y come from investments made at period
T(y) or earlier. Hence the summation stops at T(y).

 VAR _ NCAPt 
DECOMCOST ( y ) = ∑ INDIC (1.a ) ×  + NCAP _ PASTI t  × NCAP _ DCOST y −TLIFEt
t∈MILESTONES ∪ PASTYEARS  D (t ) 
t ≤T ( y )

1 if M (t ) − D (t ) + 1 + TLIFE t ≤ y ≤ M (t ) + TLIFE t
×
0 otherwise
(III.1.a)
Comment: Note that the cost attribute is indexed at the year when the investment
started to operate. We have adopted this convention throughout the objective function.

149
Example III.1.a: Investment:
D(t)=4, TLIFE=5
M(t)=B(t)+1 D(t) Decommissioning
DLIFE=DELIF=1 and payment
TLIFE

B(t) M(t)

Case 1.b) if ILEDt ≤ ILEDMin , t and TLIFE t + ILED < D(t )


Small projects, repeated investments in period

This cost expression is similar to I.1.b, but with payments shifted to the right by
TLIFE (see example). The inner summation disappears because of the assumption that
DELIF=1. Note also that past investments have no effect in this case, because this case
does not arise when D(t)=1, which is always the case for past periods.

 VAR _ NCAPt 
DECOMCOST ( y ) = ∑ INDIC (1.b) ×   × NCAP _ DCOST y −TLIFEt
t∈MILESTONES
t ≤T ( y )
 TLIFE t 

  TLIFE t   TLIFE t 
1 if B(t ) +   ≤ y ≤ B(t ) +   + C ⋅ TLIFE t − 1
×  2   2 
0 otherwise

D(t )
where C =
TLIFE t
(III.1.b)

150
Example III.1.b D(t)

D=5, TLIFE=4 Investment:


DLIFE=DELIF=1
TLIFE
C=2
Decommiss

Both

B(t)

Case 2.a: ILEDt > ILEDMin , t and ILEDt + TLIFEt ≥ D(t )


(Large, indivisible projects, unrepeated investment in period)

In this situation, it is assumed that decommissioning of the plant occurs over a period
of time called DLIFE, starting after the end of the technical process life plus a time
DLAG (see example). DLAG is needed e.g. for a reactor to “cool down” or for any other
reason. Furthermore, the payments are now spread over DELIF which may be lareger
than one year..

Min{ y , B ( t ) + ILEDt +TLIFEt + DLAGt + DLIFEt −1}


 VAR _ NCAPt 
DECOMCOST ( y ) = ∑ INDIC (2.a) × ∑ 
k = Max {B ( t ) + ILEDt +TLIFEt + DLAGt , y − DELIFt +1}
 × CRFs × NCAP _ DCOSTB ( t ) + ILEDt
t∈MILESTONES
t ≤T ( y )
DLIFEt 

Min{ y ,t +TLIFEt + DLAGt + DLIFEt −1}


 NCAP _ PASTI t 
+ ∑ INDIC (2.a) × ∑ 
k = Max {t +TLIFEt + DLAGt , y − DELIFt +1}
 × CRFs × NCAP _ DCOSTt
t∈PASTYEARS DLIFEt 

(III.2.a)

Useful Range for y :


{B(t ) + ILEDt + TLIFEt + DLAGt − 1, same + DELIFt − 1}

151
Investment:

Example II.2.a:

D(t)=8, ILED=4 Decommissioning


TLIFE=6, and payments
DLAG=2, DLIFE=3
DELIF=2

Decommissioning
Payments only:

D(t)

ILED
TLIFE DLAG DLIFE

B(t)

Case 2.b: ILEDt > ILEDMin , t and TLIFE t + ILEDt < D(t )
(Big projects, repeated investments in period)

Here too, the decommissioning takes place over DLIFE, but now, contrary to case 2.a,
the process is repeated more than once in the period. The last investment has life
extending over following periods, as in all similar cases. The resulting stream of yearly
payments is complex, and therefore, we are forced to use an algorithm rather than a
closed form summation. See also example below.

ALGORITHM (apply to each t such that t≤T(y) )

Step 0: Initialization

Pt ( y ) := 0 ∀ B (t ) + ILEDt + TLIFEt + DLAGt ≤ y ≤ same + (C − 1) × TLIFEt + DLIFE t + DELIFt − 2

Where:

D(t ) − ILEDt
C=
TLIFEt

Step 1: Compute payment vector

152
For I = 1 to C
For J =1 to DLIFEt
For L = 1 to DELIFt
Pt (B(t ) + ILEDt + I × TLIFE t + DLAGt + J + L − 2 ) :=
NCAP _ DCOSTB (t ) + ILEDt + ( I −1)×TLIFEt
same +
DLIFEt
Next L
Next J
Next I

END ALGORITHM

DECOMCOST ( y ) = ∑ INDIC ( III .2.b) × P ( y) × VAR _ NCAP × CRF


t∈MILESTONES , t ≤T ( y )
t t

III.2.b

Example III.2.b:

D(t)=13, ILED=4 Construction


TLIFE=5,DLAG=2
DLIFE=3, DELIF=2
Decommissioning
C=2 and Payment

Decommissioning
Payment only
D(t)

ILED
TLIFE TLIFE

B(t)
DLAG DLIFE DLAG DLIFE

5.2.5 Fixed annual costs: FIXCOST(y), SURVCOST(y)

The fixed annual costs are assumed to be paid in the same year as the actual operation
of the facility. However, the spreading of the investment described in subsection 5.1.1

153
results in a tapering in and a tapering out of these costs. Taxes and subsidies on fixed
annual costs are also accepted by the model.

There are two types of fixed annual costs, FIXCOST(y), which is incurred each year
for each unit of capacity still operating, and SURVCOST(y), which is incurred each year
for each unit of capacity in its DLAG state (this is a cost incurred for surveillance of the
facility during the lag time defore its demolition). Again here, the same classification of
cases is adopted as in previous subsections on capital costs. Note that by assumption,
SURVCOST(y) occurs only in cases 2. DLAG is allowed to be positive even in case 1a,
but that in this case the surveillance costs are assumed to be negligible. Finally, note that
FIXCOST(y) need be computed only for years y within the planning horizon, whereas
SURVCOST(y) may exist for years beyond the horizon

154
Case 1.a) If ILEDt ≤ ILEDMin , t and TLIFEt + ILEDt ≥ D(t )
(Small projects, single investment in period)

EQ_ FIXCOST ( y ) , y ≤ EOH

The figure of the example shows that payments made in year y may come from
investments made at periods before T(y), at T(y) itself, or at periods after T(y). Note that
the cost attribute is mutiplied by two factors: the SHAPE, which takes into account the
vintage and age of the technology, and the MULTI parameter, which takes into account
the pure time at which the cost is paid (the notation below for SHAPE and MULTI is
simplified: it should also specify that these two parameters are those pertaining to the
FOM attribute).

 VAR _ NCAPt
Min ( M ( t ), y )

FIXCOST ( y ) = ∑ INDIC ( IV .1.a) × ∑ 
v = Max {M ( t ) − D ( t ) +1, y −TLIFEt +1}
+ NCAP _ PASTI t 
t∈MILESTONES ∪ PASTYEARS D (t ) 
× NCAP _ FOM v × SHAPE (v, y − v) × MULTI ( y ) ( IV .1.a )

The useful range for y is :


{M (t ) − D (t ) + 1, M (t ) + TLIFE t − 1}
and
y ≤ EOH

Example:

Example IV.1.a: D(t) Investment and fixed


cost payment:
D(t)=4, TLIFE=5
M(t)=B(t)+1 TLIFE Fixed Cost
Payment only

B(t) M(t)

155
Case 1.b, if ILEDt ≤ ILEDMin , t and TLIFE t + ILED < D(t )
(Small projects, repeated investments in period)

The figure shows that payments made at year y may come from investments made at,
before, or after period T(y). Note that our expression takes into account the vintage nd
age of the FOM being paid, via the SHAPE parameter, and also the pure time via MULTI,
both pertaining to the FOM attribute.

Min ( y , B ( t ) − TLIFEt / 2 + C ×TLIFEt −1}


 VAR _ NCAPt 
FIXCOST ( y ) = ∑ INDIC ( IV .1.b) × ∑ 
v = Max {B ( t ) − TLIFEt / 2 , y −TLIFEt +1} 
 × NCAP _ FOM v
t∈MILESTONES TLIFE t 

× SHAPE (t , y − v) × MULTI ( y )
(IV.1.b)
where
D (t )
C=
TLIFE t

Useful Range for y :

 TLIFE t TLIFE t 
 B (t ) − , B (t ) − + (C + 1) × TLIFE t 
 2 2 
and
y ≤ EOH

Example:

Example IV.1.b D(t)

D=5, TLIFE=4 TLIFE Investment


and Fixed cost
C=2 payment

Fixed cost
Payments only

B(t)

156
Case 2.a: ILEDt > ILEDMin , t and ILEDt + TLIFE t ≥ D(t )
(Large, indivisible projects, unrepeated investment in period)

i) FIXCOST(y)

The figure of the example shows that payments made in year y may come from
investments made at period T(y) or earlier, but not later. Again here the SHAPE has the
correct vintage year and age, as its two parameters, whereas MULTI has the current year
as its parameter. Both pertain to FOM.

FIXCOST ( y ) = ∑ INDIC (2.a) × (VAR _ NCAP ) × NCAP _ FOM


t∈MILESTONES , t ≤T ( y )
t B ( t ) + ILEDt

1 if B (t ) + ILEDt ≤ y ≤ B (t ) + ILEDt + TLIFE t − 1


×  × SHAPE (t , y − B(t ) + ILEDt ) × MULTI ( y )
0 otherwise 

+ ∑ INDIC (2.a) × (NCAP _ PASTI ) × NCAP _ FOM


t∈PASTYEARS
t t

 1 if t ≤ y ≤ t + TLIFE t − 1
× × SHAPE (t , y − t ) × MULTI ( y )
 0 otherwise
(IV.2.a)

Useful Range for y:

{B (t ) + ILEDt , B (t ) + ILEDt + TLIFE t − 1}


and
y ≤ EOH

ii) SURVCOST (Surveillance cost for same case 2.a. See same example)

∑ INDIC ( IV .2.a ) ×(VAR _ NCAP )× NCAP _ DLAGC


t∈MILESTONES , t ≤T ( y )
t B ( t ) + ILEDt

1 if B (t ) + ILEDt + TLIFEt ≤ y ≤ B (t ) + ILEDt + TLIFEt + DLAGt − 1


×
0 otherwise

157
+ ∑ INDIC ( IV .2.a ) ×(NCAP _ PASTI )× NCAP _ DLAGC
t∈PASTYEARS
t t

1 if t + TLIFEt ≤ y ≤ t + TLIFEt + DLAGt − 1


×
0 otherwise
(IV.2.a’)

Useful Range for y :


{B(t ) + ILEDt + TLIFE t , same + DLAGt − 1}
note that y may be l arg er than EOH

Example IV.2.a and IV.2.a’: Construction


D(t)=8, ILED=4
TLIFE=6, DLAG=2 Fixed cost
Payment only

Surveillance
Cost payment
only
D(t)

ILED
TLIFE DLAG

B(t)

Remark: again here, the cost attribute is indexed by the year when investment started
its life. Also, note that, by choice, we have not defined the SHAPE or MULTI parameters
for surveillance costs.

158
Case 2.b: ILEDt > ILEDMin , t and TLIFE t + ILEDt < D(t )
(Big projects, repeated investments in period)

i. Fixed O&M cost

The cost expression takes into account the vintage and the age of the FIXOM being
paid at any given year y. See note in formula and figure for an explanation.

∑ INDIC (2.b) × (VAR _ NCAP ) × NCAP _ FOM


t∈MILESTONES , t ≤T ( y )
t B ( t ) + ILEDt + I ⋅TLIFEt

1 if 0 ≤ I ≤ C − 1
× SHAPE (t , y − B(t ) − ILEDt − I ⋅ TLIFE t ) × 
0 otherwise

where :
 y − B(t ) − ILEDt  I is the index of the
I =  investment cycle where y lies. I
 TLIFEt  varies from 0 to C-1

and
D (t ) − ILEDt
C=
TLIFEt

Range for y:

{B(t ) + ILEDt , B(t ) + ILEDt + C × TLIFEt − 1}


and
y ≤ EOH

(IV.2.b)

Remark: same as above, concerning the indexing of the cost attribute

ii. SURVCOST(y) (surveillance cost for same case; the same example applies)

SURVCOST ( y ) = ∑ INDIC (2.b) ×(VAR _ NCAP ) × NCAP _ DLAGC


t∈MILESTONES
t B ( t ) + ILEDt + I ⋅TLIFEt

t ≤T ( y )

1 if B(t ) + ILEDt + ( I + 1) × TLIFE t ≤ y ≤ same + DLAGt − 1 and 0 ≤ I ≤ C − 1


×
 0 otherwise

159
where :
 y − B(t ) − ILEDt − TLIFE t 
I = 
 TLIFE t 
and
D(t ) − ILEDt
C=
TLIFE t
Note that y may exceed EOH
(IV.2.b’)

Construction
Example for IV.2.b and IV.2.b’:

D(t)=13, ILED=4 Fixed cost


TLIFE=5, DLAG=2 Payment only

C=2
Construction
and fixed cost

Surveillance
Cost payments
only

Surveillance
D(t)
and fixed cost
ILED payments
TLIFE TLIFE
DLAG DLAG

B(t)

Remark: same as precedently regarding the indexing of the cost attribute


NCAP_DLAGC

5.2.6 Annual taxes/tubsidies on capacity: FIXTAXSUB(Y)

It is assumed that these taxes (subsidies) are paid (accrued) at exactly the same time
as the fixed annual costs. Therefore, the expressions IV of subsection 5.1.4 are valid,
replacing the cost attributes by NCAP_FTAX - NCAP_FSUB.

5.2.7 Variable annual costs VARCOST(y), y ≤ EOH

Variable operations costs are treated in a straightforward manner (the same as in


MARKAL), assuming that each activity has a constant activity over a given period.

160
In this subsection, the symbol VAR_XXXt is any variable of the model that represents an
activity at period t. Therefore, XXX may be ACT, FLO, COMX, COMT, etc. Note that, if and
when the technology is vintaged, the variable has an index v indicating the vintage year,
whereas T(y) indicates the period when the activity takes place. Similarly, the symbol
XXX_COSTk represents the value in year k of any cost attribute that applies to variable
VAR_XXX.

Finally, the expressions are written only for the years within horizon, since past years do
not have a direct impact on variable costs, and since no variable cost payments occur after
EOH. Note also that the SHAPE and MULTI parameters are not applicable to variable costs.

As stated in the introduction, the payment of variable costs is constant over each
period. Therefore, the expression below is particularly simple.

VARCOST ( y ) = VAR _ XXX v , T ( y ) × XXX _ COST y


(VI)
y ≤ EOH

5.2.8 Cost of demand reductions ELASTCOST(y)

When elastic demands are used, the objective function also includes a cost resulting
from the loss of welfare due to the reduction (or increase) of demands in a given run
compared to the base run. See PART I chapter 6 for a theoretical justification.

 1

 ( j − 1 / 2) × COM _ VOClo ,T ( y )  COM _ ELASTlo ,T ( y ) 
COM _ STEPlo
ELASTCOST ( y ) = ∑ COM _ BPRICET ( y ) × 1 −   × VAR _ ELASTlo , j ,T ( y )
j =1  COM _ STEPlo  
 

 1

COM _ STEPup
 ( j − 1 / 2) × COM _ VOCup ,T ( y )  COM _ ELASTup ,T ( y ) 
− ∑ COM _ BPRICET ( y ) × 1 +
 COM _ STEPup

  × VAR _ ELASTup , j ,T ( y )
j =1   
 
y ≤ EOH

(VII)

5.2.9 Salvage value: SALVAGE (EOH+1)

Investments whose technical lives exceed the model’s horizon, receive a SALVAGE
value for the unused portion of their technical lives. Salvage applies to several types of costs:
investment costs, sunk material costs, as well as decommissioning costs and surveillance

161
costs. SALVAGE is reported as a single lump sum revenue accruing precisely at the end of
the horizon (and then discounted to the base year like all other costs).

The salvaging of a technology’s costs is an extremely important feature of any dynamic


planning model with finite horizon. Without it, investment decisions made toward the end of
the horizon would be seriously distorted, since their full value would be paid, but only a
fraction of their technical life would lie within the horizon and produce useful outputs.

What are the costs that should trigger a salvage value? The answer is: any costs that are
directly or indirectly attached to an investment. These include investment costs and
decommissioning costs. Fixed annual costs and variable costs do not require salvage values,
since they are paid each year in which they occur, and their computation involves only years
within the horizon. However, surveillance costs should be salvaged, because when we
computed them in section 5.1.5, we allowed y to lie beyond EOH (for convenience).

Thus, SALVAGE is the sum of three salvage values

SALVAGE ( EOH + 1) = SALVINV ( EOH + 1) + SALVDECOM ( EOH + 1) + SALVSURV ( EOH + 1)

We treat each component separately, starting with SALVINV.

A). Salvaging investment costs (from subsections 5.1.1 and 5.1.2)

The principle of salvaging is simple, and is used in other technology models such as
MARKAL, etc: a technology with technical like TLIFE, but which has only spent x years
within the planning horizon, should trigger a repayment to compensate for the unused
portion TLIFE-x of its active life. The computation of the salvage value obeys a simple
rule, described by the following result:

162
Result 1

The salvage value (calculated at year k) of a unit investment made in year k,


and whose technical life it TL, is:

S ( k , TL ) = 0 if k + TL ≤ EOH

S ( k , TL ) = 1 if k > EOH

(1 + d ) TL − EOH −1+ k − 1
S ( k , TL ) = otherwise
(1 + d ) TL − 1

where d is the general discount rate

Note that the second case may indeed arise, because some investments will occur
even after EOH.

Since we want to calculate all salvages at the single year (EOH+1), the above
expressions for S(k,TL) must be discounted (multiplied) by:
(1 + d )EOH +1−k
Finally, another correction must be made to these expressions, whenever the user
chooses to utilize a technology specific discount rate. The correction factor which must
multiply every investment (and of course every salvage value) is:

 1   1 
1 −  × 1 − ELIFE 
CRFs  1 + is   (1 + i ) 
=
CRF  1   1 
1 −  × 1 − 

 1+ i   (1 + i s ) ELIFE 

where i is the general discount rate


i s is the techno log y specific discount rate
and ELIFE is the economic life of the investment

Note: the time indexes have been omitted for clarity of the expression.

The final result of these expressions is Result 2 expressing the salvage value
discounted to year EOH+1, of a unit investment with technical life TL made in year k as
follows. Result 2 will be used in salvage expressions for investments and taxes/subsidies
on investments.

163
Result 2

SAL(k , TL) = 0 if k + TL ≤ EOH

CRFs
SAL(k , TL) = if k ≥ EOH + 1
CRF

1 − (1 + d ) EOH +1− k −TL CRFs


SAL(k , TL) = × otherwise
1 − (1 + d ) −TL CRF

where d is the general discount rate


and d s is the technology specific discount rate

These expressions may now be adapted to each case of investment (and


taxes/subsidies on investments). We enumerate these cases below. Note that to simplify
the equations, we have omitted the second argument in SAL (it is always TLIFEt in the
expressions).

Case 1.a ILEDt ≤ ILEDMin , t and TLIFEt + ILEDt ≥ D(t )


(Small divisible projects, non-repetitive, progressive investment in period)

M (t )
 VAR _ NCAPt 
SALVINV ( EOH + 1) = ∑ INDIC ( I .1.a ) × ∑  + NCAP _ PASTI t  × NCAP _ COSTv × SAL(v)
t v = M ( t ) − D ( t ) +1  D(t ) 

where SAL(v) is equal to SAL(v,TLIFEt ) defined in Result 2.

Note that SAL(v) = 0 whenever v + TLIFE t ≤ EOH + 1 (see Result 2)


(VIII.1.a)

Case 1.b ILEDt ≤ ILEDMin , t and TLIFE t + ILED < D(t )


Small Projects, repeated investments in period

B ( t ) − TL / 2 + C ×TLIFEt −1
VAR _ NCAPt
SALVINV ( EOH + 1) = ∑ INDIC ( I .1.b) × ∑ × NCAP _ COSTv × SAL(v)
t v = B ( t ) − TL / 2 + ( C −1)×TLIFEt TLIFE t

Note again here that SAL(v) equals 0 if v + TLIFE ≤ EOH + 1


(VIII.1.b)

164
Case 2.a: ILEDt > ILEDMin , t and ILEDt + TLIFE t ≥ D(t )
(Large, indivisible projects, unrepeated investment in period)

SALVINV ( EOH + 1) = ∑VAR _ NCAP × NCAP _ COST


t∈MILESTONESYEARS
t B ( t ) + ILEDt × SAL( B(t ) + ILEDt )

Note that SAL ( B(t ) + ILEDt ) = 0 whenever B(t ) + ILEDt + TLIFE t ≤ EOH + 1
(VIII.2.a)

Case 2.b: ILED > ILEDMin , t and TLIFE t + ILEDt < D(t )
(Large, indivisible Projects, repeated investments in period)

SALVINV ( EOH + 1) = ∑ VAR _ NCAPt × NCAP _ COSTB (t ) + (C −1)×TLIFEt + ILEDt × SAL(B(t ) + (C − 1) × TLIFE t + ILEDt )
t

Note again that SAL(B(t ) + (C − 1) × TLIFE t + ILEDt ) = 0 whenever B(t ) + (C − 1) × TLIFE t + ILEDt + TLIFE t ≤ EOH + 1
(VIII.2.b)

NOTE: salvage cost of taxes/subsidies on investment costs are identical to the above,
replacing NCAP_COST by {NCAP_ITAX – NCAP_ISUB}.

B). Savage value of decommissioning costs (from subsection 5.1.3)

For decommissioning costs, it should be clear that the triggering of salvage is still the
fact that some residual life of the investment itself exists at EOH+1. What matters is not
that the decommissioning occurs after EOH, but that some of the investment life extends
beyond EOH. Therefore, Result 1 derived above for investment costs, still applies to
decommissioning. Furthermore, the correction factor due to the use of technology
specific discount rates is also still applicable (with ELIFE replaced by DELIF).

However, the further discounting of the salvage to bring it to EOH+1, is now


different from the one used for investments. The discounting depends on the year l when
the decommissioning occurred and is thus equal to:

(1 + d ) EOH +1−l where l is the year when decommissioning occurs.

l depends on each case and will be computed below

In cases 1.a and 1.b, l=TLIFE + k

165
In case 2.a k is fixed at B(t)+ILED+TLIFE, but l varies from
(B(t)+ILED +TLIFE+DLAG) to (same +DLIFE-1)

In case 2.b k is fixed at B(t)+ILED+(C-1)TLIFE, but l varies


from (B(t)+ILED+C x TLIFE+DLAG) to
(same + DLIFE-1)

It is helpful to look at the examples for each case in order to understand these
expressions.

Finally, the equivalent of Result 2 is given as Result 3, for decommissioning.

Result 3

The Salvage Value of a decommissioning cost occuring at year l , for


an investment taking place at year k , is :

SAL( k , l ) = 0 if k + TL ≤ EOH

CRFs
SAL( k , l ) = × (1 + i ) EOH +1−l if k ≥ EOH + 1
CRF

(1 + d ) TLIFE + k −l − (1 + d ) EOH +1−l CRFs


SAL( k , l ) = × otherwise
(1 + d ) TLIFE − 1 CRF

where d is the general discount rate


and d s is the technology specific discount rate

We are now ready to write the salvage values of decommissioning cost in each case.

166
Case 1.a ILEDt ≤ ILEDMin , t and TLIFEt + ILEDt ≥ D(t )
(Small divisible projects, non-repetitive, progressive investment in period)

SALVDECOM ( EOH + 1) =
M (t )
 VAR _ NCAPt 
∑ INDIC (1.a) × ∑ 
v = M ( t ) − D ( t ) +1 
+ NCAP _ PASTI t  × NCAP _ DCOSTv × SAL(v, v + TLIFE t )
t D(t ) 

where SAL(k , l ) is defined in Re sult 3.

Note that SAL(v, x) is always 0 whenever v + TLIFE ≤ EOH + 1 ( IX.1.a)

Case 1.b ILEDt ≤ ILEDMin , t and TLIFE t + ILED < D(t )


Small Projects, repeated investments in period

SALVDECOM ( EOH + 1) =
B ( t ) − TL / 2 + C ×TLIFEt −1
VAR _ NCAPt
∑ INDIC (1.b) ×
t

v = B ( t ) − TL / 2 + ( C −1)×TLIFEt TLIFE t
× NCAP _ DCOSTv × SAL(v, v + TLIFE t )

Note again here that SAL(k , l ) equals 0 if k + TLIFE ≤ EOH + 1


(IX.1.b)

Case 2.a: ILEDt > ILEDMin , t and ILEDt + TLIFE t ≥ D(t )


(Large, indivisible projects, unrepeated investment in period)

SALVDECOM ( EOH + 1) =
same + DLIFE −1


t∈MILESTONESYEARS
INDIC (2.a ) × VAR _ NCAPt × NCAP _ COSTB (t ) + ILEDt × ∑ SAL( B(t ) + ILED , l )
l = B ( t ) +TLIFE + DLAG
t

Note that SAL is 0 whenever B(t ) + ILEDt + TLIFE t ≤ EOH + 1


(IX.2.a)

167
Case 2.b: ILEDt > ILEDMin , t and TLIFE t + ILEDt < D(t )
(Large, indivisible Projects, repeated investments in period)

SALVDECOM ( EOH + 1) = ∑
t∈MILESTONYEARS
INDIC (2.b) × VAR _ NCAPt × NCAP _ DCOSTB ( t ) + ( C −1)×TLIFEt + ILEDt
same + DLIFE −1
× ∑ SAL[B(t ) + ILEDt + (C − 1) × TLIFE t , l ]
l = B ( t ) + ILEDt + C ×TLIFEt + DLAGt

where
D(t ) − ILEDt
C=
TLIFE t

Note again that SAL is 0 whenever B(t ) + C × TLIFE t + ILEDt ≤ EOH + 1


(IX.2.b)

C) Salvage Value of Surveillance Costs

Similarly to the salvaging of decommissioning costs, the basic salvage value fractions
S(k,m) defined in Result 1 at the beginning of Section 5.1.9 are used as the basis for the
salvage value of surveillance costs. However, unlike with decommissioning costs, there is
no need to make corrections for technology-specific discount rates, as the costs do not
represent capital costs. In addition, the discounting to EOH+1 must be made separately
for each surveillance year. Note that only Cases 2 have surveillance costs.

Case 2.a: ILEDt > ILEDMin , t and ILEDt + TLIFEt ≥ D(t )


(Large, indivisible projects, unrepeated investment in period)

SALVSURV ( EOH + 1) =
∑ INDIC (2.a) × S ( B(t ) + ILED , TLIFE ) ×
t∈MILESTONESYEARS
t t

same + DLAGt −1
VAR _ NCAPt × NCAP _ DLAGC B (t ) + ILEDt × ∑ DISC (l , EOH + 1)
l = B ( t ) + ILEDt +TLIFEt

Note that S (k , m) = 0 whenever k + m ≤ EOH + 1.


(X.2.a)

168
Case 2.b: ILEDt > ILEDMin , t and TLIFEt + ILEDt < D(t )
(Large, indivisible projects, repeated investments in period)

SALVSURV ( EOH + 1) =

∑ INDIC (2.b) × S [ B (t ) + ILEDt + (C − 1) × TLIFE t , TLIFE t ] × VAR _ NCAPt ×

same + DLAGt −1
NCAP _ DLAGC B ( t ) + ILED + ( C −1)×TLIFE × ∑ DISC (l , EOH + 1)
l = B ( t ) + ILEDt + C ×TLIFEt

D(t ) − ILEDt
where : C =
TLIFE t

Note again that S (k , m) = 0 whenever k + m ≤ EOH + 1.


(X.2.b)

5.2.10 Late revenues from endogenous commodity recycling after EOH


LATEREVENUE(y)

Late revenues consist of revenues from any materials and energy which had been
embedded in some processes, and which are released after EOH. Such revenues exist
only if an exogenous salvage value was declared by the user for the sunk material.

Note: For materials released within the horizon, the revenue is either explicit (and then
it is the user’s responsibility to indicate a negative cost –credit-- at dismantling time), or the
revenue is implicit, and then the user must specify a physical release of the material at
dismantling time, and the model will correctly ‘price’ this material within the RES.

LATEREVENUES(y) y ≥ EOH+1

The late revenues come only from the resale at dismantling time, of materials and/or
energy that were sunk at construction time. Therefore, the LATEREVENUES expressions
are identical to the decommissioning cost expressions, with the NCAP_DCOST attribute
replaced by

∑ − NCAP_ VAL(c ) × NCAP_ OCOM (c )


c

where the summation extends over all commodities c for which an NCAP_OCOM
attribute is defined (defaults to zero if undefined)

LATEREVENUES(y) is reported as a lump sum discounted to the user selected base


year.

169
5.2.11 The two discounting methods for annual payments

In the objective function of TIMES, all costs and payments are assumed to occur at
the beginning of each year. In the case of investment costs, this means that the
annualized payments made in the beginning of each year within the economic lifetime are
equivalent to a lump-sum investment cost paid at the beginning of the first operation
year, if the annual payments are discounted back to that point by the technology-specific
discount rate (for instance, in case 1a, each lump sum is equal to NCAP_COST/D(t)).
Similarly, in the case of operation costs (e.g. NCAP_FOM), the total annual costs are
assumed to occur at the beginning of each operating year.

Because the operating costs can nevertheless be assumed to be spread continuously


throughout the year, this kind of 'beginning-of-year' discounting method introduces a
small bias in the discounting of different cost components. For example, the operating
costs in the first year of operation should be assumed to occur about half a year later in
time compared to the investment, and not at the same time, as assumed in TIMES. This
time-difference should be reflected in the discounting applied, but it is ignored in TIMES.

In TIMES, there is an option to correct this small bias by using so-called mid-year
discounting. The option is activated by the switch MID_YEAR (see Part II, Control variables).

The corrections that are needed in order to use mid-year discounting in TIMES can be
made in the following two steps:
1. First, simply assume that instead of the beginning of each year, all payments are
made in the mid-point of each year in TIMES. As such, this assumption doesn't
change the objective function in any way; it is only a change in thinking.
However, it also means that instead of the beginning of the base year, all costs are
assumed to be discounted to the mid-point of the base year.
2. Second, make the necessary corrections to the discounting of all those cost
components that cannot be assumed to be actually paid at the mid-point of the year.

By going through the various cost components, the following conclusions hold for step 2:
• All variable costs and fixed operation and surveillance costs can be assumed to be
paid in the mid-point of each year. Therefore, no change is needed in the
discounting of these payments.
• The lump-sum investment costs in Cases 1 (NCAP_COST/D(T)) should be
assumed to occur at the beginning of the investment year instead of the mid-point
of that year.
• All the lump-sum investment costs in Cases 2 (NCAP_COST/ILED) can be
assumed to occur in the mid-point of each construction year. Therefore, no change
is needed in the discounting of the annualized investment payments.
• The decommissioning costs in Cases 1 can be assumed to be paid in the mid-point
of the year, because in these cases it is assumed that decommissioning takes
exactly one year, and it is therefore only natural to assume that, on the average,
the costs occur at the mid-point.

170
• The lump-sum decommissioning costs in Cases 2 (NCAP_DCOST/DLIFE) can be
assumed to occur at the mid-point of each year within the decommissioning lifetime.
Therefore, no change is needed in the discounting of the annualized payments.

Consequently, the overall conclusion is that the only correction needed in the
discounting of various cost components is related to the investment costs in Cases 1. If
we assume that the Capital Recovery Factor used in the beginning-of-year discounting
(CRFbeg) is still valid for mid-year discounting, we should simply shift the position of
both the lump-sum investment and the annualized payments half a year backwards. In
terms of discounting, this means that in Cases 1 the annualized investment payments
should be multiplied by the factor (1+d(y))0.5, where d(y) is the general discount rate.
Perhaps the simplest way to apply this correction in the objective function is to make the
adjustment to the Capital Recovery Factor. Thus, for Cases 1 we could define a 'CRF
corrected for mid-year discounting' (CRF1,mid) as follows:

CRF1,mid = CRFbeg × (1+d(T(y)))0.5

However, one could additionally argue that the Capital Recovery Factor CRFbeg is no
longer valid for mid-year discounting. The annualized investment payments can also be
assumed to represent a continuous stream of costs, which should thus be assumed to be
paid at the mid-point of each year. The shortcoming of the original CRFbeg can be seen by
calculating its value for an investment with an economic lifetime of just one year. The
value of CRFbeg is in this case exactly 1, although it seems obvious that some interest
should be involved as well. Assuming that the single payment represents a continuous
stream of costs, the payment can be assumed to occur at the mid-point of the year, and
would thus include interest for half-year's time.

Accordingly, we should correct the definition of the CRF proper by assuming that the
annualized payments occur half a year forward in time with respect to the lump-sum
investment, which means that we must increase the nominal size of the payments by the
corresponding interest for the half-year's time. Combining these corrections together, the
general discount rate d(y) should be simply replaced by the technology-specific discount
rate dS(T(y)) in the expression above, because in addition to the nominal change in the
CRF, the time of the annualized payments has been restored back to original. However,
to maintain consistency between Cases 1 and 2, the same basic correction to the CRF
proper should be applied to all cases. Therefore, the total adjustments needed when
taking into account the correction to the CRF proper are the following:

0.5 (X
proper
CRFmid = CRFbeg × (1+dS(T(y)))
I.1)
0.5 –0.5
proper
CRF1,mid = CRFmid × (1+d(T(y))) × (1+d(T(y))) = CRFbeg × (X
0.5
(1+dS(T(y))) I.2)
–0.5 –0.5
proper
CRF2,mid = CRFmid × (1+d(T(y))) = CRFbeg × (1+d(T(y))) × (X
0.5
(1+dS(T(y))) I.3)

171
Consequently, in both cases the annualized investment payments are then assumed to
occur at the mid-point of each fiscal year starting at the time of the lump-sum investment, and
the annual payments are equivalent to the lump-sum investment when discounted back to that
point by the technology-specific discount rate. The implementation of the optional
corrections for mid-year discounting corresponds to equations (XI.1 to XI.3). To be
consistent, the expression (XI.3) for CRF2,mid should also be used for decommissioning costs.

5.3 Constraints
The constraints available in TIMES are shown in table 5.1 below, and later fully
described in the following subsections. The constraints rekated to the implementation of
Endogenous Technology Learning (ETL) and those related to the Climate Module are
shown and described in two separate chapters (chapters 6 and 7 respectively)

Table 5.1. List of TIMES equations


Equation Name Short description
EQ_ACTFLO Equality relationship that defines the activity of a process in terms of its flow
variables
EQ(l)_ACTBND Bound on the activity of a process
EQ(l)_BLND Special blending constraints used to specify the composition of refined oil
products
BND_ELAST Upper bound on each of the step variables used to discretize the demand
when elastic demand feature is used
EQ(l)_BNDNET Bound on the net amount (production minus consumption) of a commodity
EQ_BNDPRD Bound on the total production of a commodity
EQ(l)_CAPACT Relates the activity of a process to its available capacity. May be rigid (=) or
flexible (<=)
EQ(l)_CPT Calculates the current capacity of a process in terms of all past and current
investments in that process.
EQ(l)_COMBAL Balance equation of a commodity
EQE_COMPRD Definition of the total production of a commodity
EQ(l)CUMNET Bound on the cumulative production of a commodity over a time interval
EQ(l)CUMPRD Bound on the cumulative net quantity of a commodity over atime interval
EQ_DSCNCAP and These two constraints ensure that some investments may only be made in
EQ_DSCONE certain discrete sizes
EQ(l)_FLMRK Expresses for a given commodity, that the amount produced/consumed by a
process is tied to the total amount produced/consumed of that commodity
EQ(l)_FLOBND Bound on the sum over a commodity group, of the commodity flows of a
process
EQ(l)_FLOFR Relationship between a flow in one timeslice and the annual flow, for a
given process
EQ_IRE Expresses that imports of a commodity by region r must be equal to all
exports by other regions to region r

172
Equation Name Short description
EQ_IREBND Bound on exchange of a commodity between two regions
EQ_XBND Bound on total exchanges of a commodity by one region
EQ(l)_INSHR For a given process, expresses that the inflow of a commodity is tied to the
total inflows of all commodities in a certain group
EQ(l)_OUTSHR For a given process, expresses that the outflow of a commodity is tied to the
total outflows of all commodities in a certain group
EQ_PEAK Expresses that capacity available must exceed demand of a selected
commodity in any time slice by a certain margin
EQ_PTRANS Establishes an equality relationship between (groups of) inputs and certain
(groups of) outputs of a process
EQ_STGTSS Ensures the storage of a commodity between two timeslices
EQ_STGIPS Ensures the storage of a commodity between two time periods
EQ(l)_STGIN Bounds the input into a storage process
EQ(l)_STGOUT Bounds the output of a storage process
User Constraints of User defined constraints that have a user defined RHS
the LHS type
User Constraints of User defined constraints that involve more than one period
the Dynamic type
User Constraints of User defined constraints that express a limit on the growth
the Growth type

173
5.3.1 Equation: EQ_ACTFLO

Indices: region (r); investment year (v); model year (t), process (p), time slice (s)

Type: =

Related variables: VAR_ACT; VAR_FLO

Related equations: EQ_COMBAL; EQ_CAPACT; EQ_PTRANS

Purpose: This equation defines the VAR_ACT activity variable in terms of the “primary
flows” of a process. The primary flows are defined by the user through the prc_actunt
set attribute.

Remarks:
• The internal set rtp_vintyr ensures that (v,t) expressions are generated for the
vintaged processes and (t,t) for the non-vintaged ones.
• The constraint defines the activity of a process. The activity of a process is limited in
the equation EQ(l)_CAPACT by the available capacity.
• rtp_vara(r,t,p) controls valid periods, in which the process can operate.
• If the activity of a process is defined by a single flow, the flow variable is replaced by
the activity variable in case that the reduction algorithm is activated. Then, in all
equations, where the flow occurs, the activity variable is used instead. In this case the
equation EQ_ACTFLO is not generated.

Equation:

EQ _ ACTFLOr ,v ,t , p , s ∋ rtp_vintyrr, v,t,p ∧ prc_ts r,p,s ∧ rtp_vara r,t,p

IF NOT rpc_ire The process is not an inter-


regional process
VAR _ FLOr ,v ,t , p ,c , s
VAR _ ACTv ,t = ∑
c∈prc_actunt PRC _ ACTFLOr ,v , p ,c

The process is an inter-


IF rpc_ire regional trade process.
VAR _ IRE r ,v ,t , p ,c , s ,imp + VAR _ IRE r ,v ,t , p ,c , s ,exp
VAR _ ACTt ,v = ∑
c∈prc_actunt PRC _ ACTFLOr ,v , p ,c

174
5.3.2 Equation EQ(l)_ACTBND
Indices: region (r); model year (t), process (p), time slice (s)
Type: Any type, as determined by the index bd of ACT_BND:
• l = ’G’ for bd = ‘LO’ (lower bound) yields ≥ .
• l = ’E’ for bd = ‘FX’ (fixed bound) yields = .
• l = ’L’ for bd = ‘UP’ (upper bound) yields ≤ .
Related variables: VAR_ACT
Related equations: EQ_COMBAL; EQ_ACTFLO; EQ_PTRANS
Purpose: This equation bounds the total activity of a process in a period independently of
the vintage years of the installed capacities. The equation will either be generated when the
activity bound is specified for a timeslice being at a timeslice level above the timeslice
level of the process (prc_tsl), e.g. ACT_BND is specified for an ANNUAL timeslice but
the process operates on a DAYNITE timeslice level, or irrespectively of the timeslices
when the process is characterized as a vintaged one (prc_vint). If activity bounds are
specified for timeslices below the process timeslice level (prc_tsl), the bounds will be
aggregated to the process timeslice level by standard aggregation (see para 3.1.2) and then
directly applied to the activity variable for non-vintaged processes. The same is true for
activity bounds specified at the process timeslice level of non-vintaged processes.
Remarks:
• The equation is required because for the two cases described above (bound specified
for a timelslice above the process timeslice level or process is characterized as a
vintaged one), no single variable exists which can be bounded directly.
• The bound is only directly applied to VAR_ACT for non-vintaged processes, when
ACT_BND is applied at the level prc_ts(r,p,s).
Interpretation of the results:
Primal: The level value of the equation describes the activity of the process in the
considered period t and timeslice s.
Dual: The dual variable describes in the case of a lower (upper) bound the cost
increase (decrease) caused by an increase of the activity bound by one unit.

Activity must exist and All timeslices at or above prc_tsl


process is available in period t
Equation:

EQ(l ) _ ACTBNDr ,t , p , s ∋ ACT _ BNDr ,t , p , s ,bd ∧ rtp_vara r,t,p ∧ rps_prcts r,p,s ∧ ( p ∈ prc_vint r,p ∨ s ∉ prc_ts r,p,s )

∑ ∑VAR _ ACT r , v ,t , p , s 2 {=; ≤; ≥} ACT _ BNDr ,t , p , s ,l either p is vintaged or


the bound is applied for
v∈rtp_vintyr s 2∈prc_ts
a n exact slice of p
s2: all timeslices on process timeslice level(prc_ts)
that are descendents of s in the timeslice tree;
determined by the internal set ts_map(r,s,s2).

175
5.3.3 Equation: EQ(l)_BLND

Indices: region (r); year (t); refinery product (ble); specification (spe)

Type: Any type, as determined by the value of the input parameter BL_TYPE(r,ble,spe):
• l = ’L’ for a value of 1 yields ≤ .
• l = ’G’ for a value of 2 yields ≥ .
• l = ’E’ for a value of 3 yields = .

Related variables: VAR_BLND

Related equations: EQ_COMBAL

Purpose: The blending equations ensure that the characteristics of petroleum products
(e.g. sulfur content, density, octane number, etc.) lie within specified limits, if desired.

Remarks:
• Parameter BL_COM contains the values of the blending specifications spe for the
blending streams opr.
• Parameter BL_SPEC contains the value of the specification spe of the blending
product ble.
• The blending variables VAR_BLND are expressed in volume units. If the
characteristics of the blending streams opr and the product ble are not given in volume
units (indicated by input parameter REFUNIT), the user has to provide a conversion
parameter CONVERT which contains the density and energy content (by weight or by
volume) of each blending stream. The conversion parameters are used to derive the
coefficients RU_CVT of the blending streams in the blending equation.

Equation:

EQ(l ) _ BLNDr ,t ,ble ,spe ∋ bl _ typer ,ble ,spe

∑ BL _ COM
opr ∈ ble _ oprr ,ble ,opr
r ,ble ,opr ,spe ⋅ RU _ CVTr ,ble ,spe ,opr ⋅ VAR _ BLNDr ,t ,ble ,opr

{≤; =; ≥}

∑ BL _ SPEC
opr ∈ ble _ oprr ,ble ,opr
r ,ble ,opr ,spe ⋅ RU _ CVTr ,ble ,spe ,opr ⋅ VAR _ BLNDr ,t ,ble ,opr

176
5.3.4 Bound: BND_ELAST

Indices: region (r); year (t); commodity (c); time slice (s); linearization step (j);
direction of elastic demand change (l)

Type: ≤

Related variables: VAR_ELAST

Related equations: EQ(l)_COMBAL, EQ_OBJELS, EQ_OBJ

Purpose: Upper Bounds on the step variables used to represent the demand when the
elasticity is non zero.

Remarks:

• These bounds are applied whenever a demand is price elastic, i.e. when the
COM_ELAST (elasticity) and COM_VOC (total range) parameters are specified and
not zero.
• If COM_ELAST and COM_VOC are specified, and COM_STEP (number of steps) is
not, the latter defaults to 1 (single step discretization)
• Attributes COM_VOC and COM_STEP do not have a timeslice index. The user can
still control elasticities in each time slice through COM_ELASTs.

Bound:

BND _ ELASTr ,t ,c , s , j ,l ∋ COM _ STEPr ,c ,l ∧ ( s ∈ com_ts r,c,s )

COM _ PROJ r ,t ,c × COM _ FRr ,t ,c , s × COM _ VOC r ,t ,c ,l


VAR _ ELASTr ,t ,c , s , j ,l ≤
COM _ STEPr ,c ,l

177
5.3.5 Equation: EQ(l)_BNDNET/PRD

Indices: region (r), period (t), commodity (c), timeslice (s)

Type: Any type, as determined by the bound index bd of COM_BNDNET/PRD:


• l = ’G’ for bd = ‘LO’ (lower bound) yields ≥ .
• l = ’E’ for bd = ‘FX’ (fixed bound) yields = .
• l = ’L’ for bd = ‘UP’ (upper bound) yields ≤ .

Purpose: If the bound on the net or gross production of a commodity is specified for a
timeslice being above the timeslice level of the commodity, the equation described here is
generated. The bound on the net or gross production of a commodity is directly applied to
the variable (VAR_COMNET, VAR_COMPRD), if the bound parameter is specified for
a commodity timeslice (com_ts).

Remarks:
• The internal set rcs_comts used in the equation contains all timeslices at or above the
timeslice level being defined for the commodity.
• The internal set rtcs_varc used in the summation part of the equation contains all
timeslices (out of com_ts) and periods for which the commodity is available.
• The internal set ts_map(r,s,ts) used in the summation part of the equation contains for
a given timeslice (s) all timeslices (ts) being at or below s in the timeslice tree.

Interpretation of the results:


Primal: Value of the net production of a commodity (production minus consumption)
Dual: marginal cost of increasing the bound by one unit

Equation

EQ( I ) _ BND ( NET / PRD) r ,t ,c , s


∋ {rcs_comts r,c,s ∧ ( NOT com_ts r,c,s ) ∧ COM _ BND ( NET / PRD) r ,t ,c , s ,bd }

∑VAR _ COM ( NET / PRD) r ,t , c ,ts

ts∈rtcs_varcr,t,c,ts ∩ ts_map r,s,ts

(≤ / ≥ / = ) Sign according to the l equation index


(must coincide with the bd index in
COM _ BND ( NET / PRD) r ,t ,c , s ,bd parameter COM_BNDNET/PRD).

178
5.3.6 Equation: EQ(l)_CAPACT

Indices: region (r); vintage year (v), year (t); process (p); time slice (s)

Type: Determined by the bound index bd of NCAP_AF, NCAP_AFS or NCAP_AFA:


• l = ’E’ for bd = ‘FX’ (fixed bound) yields = .
• l = ’L’ for bd = ‘UP’ (upper bound) yields ≤ .

Related variables: VAR_ACT; VAR_NCAP; VAR_FLO

Related equations: EQ_ACTFLO; EQ_COMBAL; EQ_INSHR; EQ_OUTSHR;


EQ_PTRANS

Purpose: The capacity-activity equation relates the activity of a process to its available
existing capacity of a process in a period t. The existing capacity consists of investments
made in the current period (VAR_NCAP), investments made in previous periods
(VAR_NCAP) and investments that have been made before the beginning of the model
horizon (NCAP_PASTI). The availability of the existing capacity in a specific period t
and timeslice s is specified by the availability factor. Three availability factors exist:
• NCAP_AF(r,v,p,s,bd):
Availability factor specified for a specific period and timeslice. If this availability
factor is not specified for the process timeslices (prc_ts), the availabilities are
aggregated/inherited according to the timeslice tree. Thus, for a process operating on
the DAYNITE level it is sufficient to specify only one availability for the ANNUAL
timeslice, which is then inherited to the DAYNITE timeslices.
• NCAP_AFS(r,v,p,s,bd):
Availability factor specified for a specific period and timeslice. In contrast to
NCAP_AF, this availability is not inherited/aggregated along the timeslice tree. If
this availability is specified for a seasonal timeslice for a process operating on the
DAYNITE level, the capacity-activity constraint is generated for the seasonal
timeslice and sums over the DAYNITE activities. This gives the process
flexibility how to operate within the seasonal timeslice as long as the overall
seasonal availability restriction is fulfilled.
• NCAP_AFA(r,v,p,bd):
Annual availability factor similar to NCAP_AFS being specified for the
ANNUAL timeslice with the difference that NCAP_AFA is always applied in
such a way as if the process is non-vintage dependent, even if it is specified as a
vintaged one (prc_vint). Thus the annual availability factor is especially useful to
calibrate the activity of a process in the first period(s) to the statistics
irrespectively of its vintage structure and the vintage dependent activities
(NCAP_AFS), which can be specified in addition to NCAP_AFA.

If the process is defined as a vintages one (prc_vint), for each vintage year (v) of the
existing capacity stock in period (t) a separate capacity-activity constraint will be
generated (exception NCAP_AFA), while for a non-vintaged process one capacity-

179
activity constraint is generated that sums over all vintage years. In the latter case the
vintage index of the equation (EQ(l)_CAPACT(r,v,t,p,s)) always equals the period index
(v = t). The capacity-activity constraint

Remarks:
• For all process timeslices (prc_ts), NCAP_AF(r,t,p,s,’UP’) is by default set to 1.
Thus, it is ensured that the activity of a process can never exceeds its capacity. If
for example only NCAP_AFA is specified by the modeler as annual availability
for a process with a DAYNITE timeslice resolution, in addition to the annual
activity-capacity constraint activity-capacity constraints with an availability of
100% are generated for the process timeslices.
• An average value of the availability factors (NCAP_AF/S/A) is used when a
‘Shape’ is specified.
• rtp_cptyr identifies the capacities installed in period v still available in period t.
This set takes into account that investments may be turned-off for certain periods
(by PRC_NOFF). The condition is as under:
v,t such that
B(v) ≥ B(t) - (COEF_RPTI*TL) - IL + 1
and
B(v) ≤ E(t) - IL
• prc_vint is a set of processes for which attribute are changing over time and
vintaging is required.
• Entries in rtp_vintyr are controlled by the same logic as applied to COEF_CPT
combined with the vintaging consideration. Note v = t when no vintaging is
required, or vintaging is turned off for a particular processes, where the sum over
the previous investments is used instead of individual variables.
• COEF_AFr,v,t,p,s,bd will be read off a pre-processed table, after application of
SHAPE and MULTI to the user provided availabilities (NCAP_AF/A/S).
• COEF_AF is calculated in the following manner:
1) apply MULTI to NCAP_AF/A/S
2) aggregate if possible (pp_lvlbd.mod), otherwise inherit (in
ppmain.mod)
3) apply SHAPE
• For storage processes, the capacity describes the volume of the storage and the
activity the storage content. For storage processes between timeslices (prc_tgtss,
prc_nstts) parameter RS_STGPRD is used instead of G_YRFR.
RS_STGPRD(r,s) equals the number of storage periods for the timeslice s in a
year multiplied with the duration of its parent timeslice ts, which is the duration
of one storage period. Thus, the storage level VAR_ACT (and indirectly the
storage in- and output flows VAR_SIN and VAR_SOUT) are scaled-up for the
entire year.
RS_STGPRD(r,s) is:
o 1 for a seasonal storage,
o 365/7*G_YRFR(r,ts) for a weekly storage, where ts is the parent node of s,
o 365*G_YRFR(r,ts) for a weekly storage, where ts is the parent node of s.

180
Interpretation of the results:
Primal: In case of an inequality constraint and no past investments (i.e. RHS is zero), the
primal value describes the difference between the activity level and the
maximum possible activity due to the installed capacity in the considered period
and timeslice. If the primal value is negative, it means that the capacity is not
fully utilized. In case of past investments, the RHS is not zero 36, but has a
positive value and corresponds to the possible activity due to the past
investments. If the primal value equals the RHS value, the capacity is fully
utilized. If not the difference (RHS minus primal value), where the primal value
may also be negative, describes the possible unused activity production.
Dual: The dual value is in case of an inequality constraint a negative number, when the
constraint is binding. It describes the cost reduction caused by an additional
capacity unit and can thus be interpreted as the value of the capacity. For a
power plant for example it can be viewed as the part of the electricity price that
can be used for covering the fixed operating and investment costs of the capacity
(multiplied by the according coefficient in the dual equation of the electricity
flow variable). If NCAP_AFS or NCAP_AFA are applied for timeslices being
above the process timeslice level, in addition capacity-activity constraints (with
a default value for NCAP_AF of 1 as upper bound) are generated for the process
timeslices. The dual value of the constraints related to NCAP_AFS or
NCAP_AFA serve as benchmark value of the capacity between the process
timeslices. If for example NCAP_AFA is given for a power plant with a
DAYNITE timeslice resolution (e.g. WD, WN, SD, SN), the NCAP_AF related
capacity constraints with an availability of 1 are usually binding only in one
process timeslice level, e.g. WD. Now the dual variable of NCAP_AFA can be
seen as rent that must be covered in other process timeslices (WN, SD, SN) by
the then prevailing electricity price, so that the model would decide to shift the
scarce annual capacity from WD to another timeslice.

36
GAMS moves all constants (e.g. past investments) on the RHS and the variables on
the LHS of the equation. In the listing file the primal value of the equation can be found
in the solution report under the LEVEL column. The RHS value is given under the
column UPPER column in case of a <= inequality and in the LOWER column for a >=
inequality. For an equality LOWER, LEVEL and UPPER value are the same.

181
Equation:

EQ(l ) _ CAPACTr ,v ,t , p , s ∋ rtp_vintyrr, v,t,p ∧ prc_ts r,p,s ∧ rtp_vara r,t,p ∧


(NCAP _ AF r ,t , p , s ∨ NCAP _ AFS r ,t , p , s ∨ NCAP _ AFAr ,t , p )

(
∑VAR _ ACT
)
ts∈ prc_tsr,p, ts ∩ts_map r,s, ts
r ,v ,t , p ,ts

{≤; =; ≥}

 
∑[COEF _ AFr ,v 2,t , p,s,bd × COEF _ CPTr ,v 2,t , p × PRC _ CAPACTr , p ×
v 2∈rtp_cptyr 

r, v, t, p
 × ( p ∉ prc_vint r,p )
(VAR _ NCAPr ,v 2, p + NCAP _ PASTI r ,v 2, p )]  
   
(in this case the vintage index v of EQ(l)_CAPACT is equal to the period index t ) 
 
 
+ 
 
 
COEF _ AF 
r ,v ,t , p , s ,bd × COEF _ CPTr ,v ,t , p × PRC _ CAPACTr , p ×
 
 × ( p ∈ prc_vint r,p ) 
(VAR _ NCAPr ,v , p + NCAP _ PASTI r ,v , p )  

[
× G _ YRFRr , s × ( p ∉ prc_map r,'STG',p ) + RS _ STGPRDr , s × ( p ∈ prc_map r,'STG',p ) ]

182
COEF _ CPTr ,v ,t , p :

if v = t
 D(t ) − NCAP _ ILED 
 
= Max D(t )  If v has been a long time period, and t
0 
  is close enough to encounter a capacity
created at the end of v.

else
if t ≥ v ∧ D(v) > IL + TL ∧ B(t ) < E (v) + TL

 Min(B(v) + IL + COEF _ RPTI r ,v , p × TL, E (t ) + 1) − B(t ) 


 
= Max D(t ) 
0 
 
Number of years of existence within
else
period t, divided by the period duration
 Min(B(v) + IL + TL, E (t )+1) − Max(B(v) + IL, B(t ) ) 
 
= Max D(t ) 
0 
 
endif
endif This step blocks out the investments that have already retired,
which may be evaluated with a negative remaining life

Where, Simply counts the number of investments


in a long time period.
D(v) − IL
COEF _ RPTI r ,v , p =
TL
Expression a is equal to the
smallest integer ≥ a.

where:
IL = NCAP_ILEDr,v,p
TL = NCAP_TLIFEr,v,p
B(t) = 1st year of the period containing t
E(t) = Last year of the period containing t
D(t) = Duration of the period containing t

183
5.3.7 Equation: EQ(l)_CPT

Indices: region (r); year (t); process (p)

Type: Any type, as determined either by the bound index bd of CAP_BND or the need to
have a capacity variable (learning technology or capacity variable used in user
constraint):
• l = ’G’ for bd = ‘LO’ (lower bound) yields ≥ , if no upper bound at the same time
• l = ’E’ for bd = ‘FX’ (fixed bound), or for lower and upper capacity bound at the
same time, or for learning technology or for capacity variable used in user
constraint yields = .
• l = ’L’ for bd = ‘UP’ (upper bound) yields ≤ , if no lower bound at the same time.

Related variables: VAR_NCAP, VAR_CAP

Related equations: EQ(l)_CAPACT

Purpose: This equation adds up the investments (VAR_NCAP), which have been made
in the current and previous periods and still exist in the current period, and past
investments being made before the beginning of the model horizon and either assigns it to
the capacity variable VAR_CAP or applies directly lower or upper capacity bounds to it.

Remarks:
• It is generated only for those milestone year & process combinations that have a
corresponding CAP_BND specification, for processes where there is a user constraint
involving a capacity variable, and for processes being a learning technology (teg).
• In case that only a lower or an upper capacity bound is specified the capacity bounds
are directly used as RHS constants. In the other cases, the capacity variable is used
instead.
• The set rtp_varp(r,t,p) describes the cases where a capacity variable is needed:
• Capacity variable is used in a user constraint,
• Lower and upper capacity bound are specified for the same period. In this case it is
more efficient to generate one capacity variable by one EQE_CPT equation and
bound the variable instead of generating the two equations EQL_CPT and
EQG_CPT.

184
Equation:

EQ(l ) _ CPTr ,t , p ∋ CAP _ BNDr ,t , p ,bd ∨ tegp ∨ rtp_varpr, t,p

VAR _ CAPr ,t , p × (rtp_varpr, t,p ∨ CAP _ BNDr ,t , p , ' FX ' ∨ tegp )


[
+ CAP _ BNDr ,t , p , ' LO ' × (NOT rtp_varpr, t,p ) ∧ CAP _ BNDr ,t , p , ' LO ' ]
+ CAP _ BNDr ,t , p , 'UP ' × [(NOT rtp_varp ) ∧ CAP _ BND
r, t, p r , t , p , 'UP ' ]
{≤; =; ≥}

VAR _ NCAPv × (v ∈ MILESTONYR) × (v ∉ PASTYEAR) 


∑ COEF _ CPT ×  
 + NCAP _ PASTI v × (v ∈ PASTYEAR)
r ,v ,t , p
v∈rtp_cptyrr, v,t,p 

where

COEF _ CPTr , v ,t , p as defined in equation EQ(l ) _ CAPACT

185
5.3.8 Equation: EQ(l)_COMBAL

Indices: region (r); year (t), commodity (c); timeslice (s)

Type: Determined by the user-supplied set com_lim.


Defaults are:
• l = ’G’ (lim = ‘LO’ in com_lim) for energy carriers (com_tmap(r,c,’NRG’)),
demands (com_tmap(r,c,’DEM’))and emissions (com_tmap(r,c,’ENV’));
yields ≥ type of equation; production has to be greater or equal consumption
if no upper bound at the same time
• l = ’E’ (lim = ‘FX’ in com_lim) for materials (com_tmap(r,c,’MAT’)) and
financial commodities (com_tmap(r,c,’FIN’)); yields = type of equation;
production has to be equal consumption if no upper bound at the same time

Related variables: VAR_ACT; VAR_FLO; VAR_COMNET; VAR_COMPRD;


VAR_IRE; VAR_NCAP; VAR_SIN/OUT; VAR_BLND; VAR_ELAST

Purpose: This equation ensures that at each period and time-slice, the total procurement
of a commodity balances its total disposition. A commodity may be procured in several
different ways: imported, produced by technologies (activity and capacity based),
released at retirement of some investments. A commodity may be disposed of in several
other ways: exported, consumed by technologies (activity or capacity based) or by a
demand, or “sunk” at investment time of a process. The default type for the balance
constraint of an energy carrier and for an emission is ≥, which allows procurement to
exceed disposition. This may be important in order to avoid some infeasibilities dues to
rigid processes with many outputs or inputs. The default sign is = for materials. Both
defaults may be modified by the user by the set com_lim.

Remarks:
• The commodity balance is generated for the timeslices (s) according to the user
defined sets com_tsl or com_ts.
• When there are one or more of the attributes BND/CST/SUB/TAX/CUM relating to
production of the commodity, EQE_COMPRD is generated in addition to this equation.
EQE_COMPRD simply creates a new variable (VAR_COMPRD) equal to the
production part of the LHS of the balance constraint (see expression COMSUP below)
• Similarly, if there are relevant coefficients for the net production of the commodity,
the expression VAR_COMNET is created, containing the net production, and used in
the RHS (see below).
• Note that CAL_FLOFLO(r,t,p,c,s,io) table stores the complete expressions
(coefficients and variables) giving the flow of each commodity.
• The investment related input flows are assumed to be spread uniformly throughout the
commodity lead-time, NCAP_CLED, ending exactly at the end of NCAP_ILED
(default value for NCAP_CLED is NCAP_ILED).
• Commodity output flows related to dismantling are assumed to occur uniformly over
NCAP_DLIFE, and to start right after NCAP_DLAG (default value: NCAP_DLIFE =1).

186
• NCAP_COM have an 'io' or should it be just on the supply side for accounting
purpose? Examples exist for (physical) consumption as well as release, land use by
hydro dams and methane emissions from them, respectively.

EQ_COMBAL reads schematically as follows:


Procurement – Disposition {≥ or = } COEF_FBRHS

Where COEF_FBRHS is 0 for all balance equations, except for demand balances where it
is equal to a positive parameter. In addition, COEF_FBRHS is equal to a variable when
the equation is used to define the variables VAR_COMPRD or VAR_COMNET.

This is expressed mathematically as the following equation, whose coefficients will be


further developed in what follows.

Interpretation of the results:


Primal: In case of an inequality constraint of the commodity balance the primal value
corresponds to the value which is obtained, when all terms with variables are
moved to the LHS of the equation and all constants, e.g. terms with the demand
parameter COM_PROJ or fixed flow variables VAR_FLO, are moved to the
RHS side. The primal value equals the value of the LHS side. Thus, the
commodity balance is binding when its primal value equals its RHS constant, it
is non-binding, i.e., production exceeds consumption if the primal value is
greater than the RHS constant 37.
Dual: The dual variable (shadow price) of the commodity balance describes the
internal value of the commodity. If the commodity balance is binding, i.e.,
consumption equals production, the shadow price describes the cost change in
the objective function induced by an increase of the commodity demand by one
unit. Since the LHS of the commodity balance describes the difference between
production and consumption, this additional demand may be covered by an
increase in production or by a decrease in consumption. In the first case the
shadow price is determined by activities on the supply side of the commodity,
while in the latter case saving measures on the demand side of the commodity
are setting the shadow price. Note, that when a peaking constraint (EQ_PEAK)
for the considered commodity exists, the price consumers must pay during peak
hours depends not only on the shadow price of the commodity balance but also
on the shadow of the peaking constraint (in the case, that the flow variable of the
consuming technology has the same timeslice resolution as the commodity and
that the peaking parameters COM_PKFLX=0 and FLO_PKCOI=1, it is simply
the sum of the two shadow prices; in other cases the dual constraint of the flow
variable should be inspected to identify the correct coefficients for the two
shadow prices).

37
The primal value and the RHS constant of an equation can be found in the GAMS
listing file in solution report part. The LEVEL value column corresponds to the primal
value, the LOWER level value equals the RHS of a constraint of type >= and the UPPER
level value equals the RHS of a constraint of a type <=.

187
Equation:

EQ (l ) _ COMBALr ,t ,c , s ∋ [rcs_combal r, t,c, s, bd ]

 ∑ ∑ CAL _ FLOFLOr,v,t , p,c,s,'OUT ' Output flow of ordinary 


 p∈topr,p,c,'OUT' v∈rtp_vintyr
 r, v, t, p
processes 
 
 
+ ∑ ∑ CAL _ IRE r ,v ,t , p ,c ,c 2, s ,' IMP ' + AUX _ IRE r ,t ,c , s ,'OUT ' Import of the 
 p∈rpc_ire r,p,c,'IMP' v∈rtp_vintyrr,v,t,p commodity 
 
 
  1 if ts_mapr, s,s1  
   
+ 
∑ s1∈prc_ts
 ( p ,v )∈rtp_vintyr ∑  VAR _ SOUT ×  G _ YRFR  × STG _ EFF r ,v , p 

r,s
r,p,s1   G _ YRFR otherwise 
r ,v ,t , p ,c ,s 1

 r, v, t, p

  r , s1  
 
 Output of blending
+
∑ (BLE _ BALr,t ,c,opr × VAR _ BLNDr,t ,c,opr × RTCS _ TSFRr,t ,c,s,' ANNUAL' ) parameter 
process; the
 opr∈ble_opr 
COM _ IE r ,t ,c ×  r,c,opr
BLE_BAL 
 converts the 
 blending streams 
   to energy units 
   NCAP _ COM × COEF _ CPT ×   
   r , v , p , c ,'OUT ' r , v ,t , p
 
+  ∑
v )∈rpc_capflor, v,p,c 
 VAR _ NCAPr ,v , p ∋ v ∈ MILESTONYR +   × G _ YRFRr , s
  

 if( p(,rtp_cptyr   NCAP _ PASTI ∋ v ∈ PASTYEAR  
 ∧
r, v, t, p
 r ,v , p   
  NCAP _ COM r ,v , p ,c ,'OUT ' )  Flow produced by
Technology 
 Capacity 
 
   COEF _ OCOM r ,v ,t , p ,c ×  
    
+  ∑
, v )∈rpc_capflor, v,p,c  
 VAR _ NCAPr ,v , p ∋ v ∈ MILESTONYR +   × G _ YRFRr , s
  
 if( pCOEF 
_ OCOM r ,v ,t , p ,c  NCAP _ PASTI r , v , p ∋ v ∈ PASTYEAR
  
     
 Flow produced by 
 Technology

Invstment/Dismantling
COM _ STEPl
+ ∑VAR _ ELAST
j =1
r ,t , c . s , j ,l (∀l = lo)
Net reduction in
demand
COM _ STEPl
− ∑VAR _ ELAST
j =1
r ,t , c , s , j ,l (∀l = up )

This entire expression


( continued on next page) is denoted: COMSUP

188
This internal set gives the periods, at which
the commodity is available (usually all periods,
but the user can turn-off periods by the set
com_off), and the timeslices as defined by the user
in com_tsl or com_ts.

 ∑ ∑ CAL _ FLOFLOr ,v ,t , p,c,s,' IN ' 


 p∈topr,p,c,'OUT' v∈rtp_vintyr Input flow of ordinary


r, v, t, p

processes

 
 
+ ∑ ∑ CAL _ IRE r ,v ,t , p ,c ,c 2, s ,' EXP ' + AUX _ IRE r ,t ,c , s ,' IN '  of the
Export
 p∈rpc_ire r,p,c,'EXP' v∈rtp_vintyrr,v,t,p 
commodity
Storage of  
commodity  
  1 if ts_mapr, s,s1   
+
   

 ( p ,v )∈rtp_vintyr s1∈prc_ts  ∑ VAR _ SIN r ,v ,t , p ,c ,s1 ×  G _ YRFRr , s  
 r, v, t, p r,p,s1  otherwise  
  G _ YRFRr , s1 
 Input flow into
  processes
storage
+
 ble∈ble_opr∑ (BLE _ BALr ,t ,ble,c × VAR _ BLNDr ,t ,ble,c × RTCS _ TSFRr ,t ,c,s,' ANNUAL' )  di
−
r,ble,c
 process; the
Output of blending
 
parameter BLE_BAL converts the
 blending streams to energy units
   
   NCAP _ COM × COEF _ CPT ×   
   r , v , p , c ,' IN ' r , v ,t , p
 
+  ∑
v )∈rpc_capflo r, v,p,c  
 VAR _ NCAPr ,v , p ∋ v ∈ MILESTONYR +   × G _ YRFRr , s 

 if( p(,rtp_cptyr   NCAP _ PASTI r ,v , p ∋ v ∈ PASTYEAR   
 ∧
r, v, t, p
    
  NCAP _ COM r ,v , p ,c ,'IN ' )  Input flow oftechnology
 capacvity 
 
   COEF _ ICOM ×   
 
r , v ,t , p , c
  
+  ∑
, v )∈rpc_capflo r, v,p,c  
 VAR _ NCAPr ,v , p ∋ v ∈ MILESTONYR +   × G _ YRFRr , s 
 
 if( pCOEF 
_ ICOM r ,v ,t , p ,c  NCAP _ PASTI r , v , p ∋ v ∈ PASTYEAR
 
     
 
 Commodity consumed by 
Technology
Invstment/Dismantling
{≥; =} COEF _ FBRHS

'=' sign if (com_type = MAT or FIN) or if user–


defined equation type by com_lim is given

189
We now show the detailed calculation of the Right-hand-side

COEF _ FBRHS :

Do Case
Case ∋ COM _ BNDNET ∨ COM _ CUMNET
∨COM _ CSTNET ∨ COM _ SUBNET ∨ COM _ TAXNET

COEF _ FBRHS = VAR _ COMNET

Case ∋ COM _ BNDPRD ∨ COM _ CUMPRD


∨COM _ CSTPRD ∨ COM _ SUBPRD ∨ COM _ TAXPRD

COEF _ FBRHS = VAR _ COMPRD

Case COM _ PROJ

COEF _ FBRHS = COM _ PROJ × COM _ FR

Otherwise

COEF _ FBRHS = 0
Endcase

190
Flow Coefficients related to process activity (VAR_FLO)
The process has regular
CAL _ FLOFLOr ,v ,t , p ,c ,s ,io ∋ rp_flo r,p ∧ NOT rpc_conly r,t,p,c flow variables (VAR_FLO).

= ∑ VAR _ FLO
s1∈rtpcs_varfr,t,p,c,s1
r ,v ,t , p ,c , s1 ×RTCS _ TSFRr ,t ,c ,s ,s1 RPC_CONLY contains
commodities ONLY involved
in NCAP_I/O/COM

The TS resolution of VAR_FLO is determined


with RTCS_TSFR defined in the following way: by the process-commodity combination, and not by
the commodity alone (see EQ_PTRANS). The set
rtpcs_varf contains the valid periods (t) and
timeslices (s1) for which the flow variable exists.

RTCS _ TSFR (r , t , c, s, s1)


IF ts_map r,s,s1
=1
ELSE
COM _ FRr ,t , c , s
= if c is a demand commodity and COM_FR is specified,
COM _ FRr ,t , c , s1
G _ YRFRr ,t , c , s
= otherwise.
G _ YRFRr ,t , c , s1

The parameter RTCS_TSFR is used to match the timeslice resolution of flow


variables (VAR_FLO/VAR_IRE) and commodities. RTCS_TSFR is the coefficient of the
flow variable, which is producing or consuming commodity (c), in the commodity
balance of c. If timeslice s corresponds to the commodity timeslice resolution of c and
timeslice s1 to the timeslice resolution of the flow variable two cases may occur:
1) The flow variables are on a finer timeslice level than the commodity balance (first
case in the formula above, ts_map(r,s,s1) is true): in this case the flow variables with
timeslices s being below ts in the timeslice tree are summed to give the aggregated
flow within timeslice s1. RTCS_TSFR has the value 1.
2) The flow variables are on coarser timeslice level than the commodity balance: in this
case the flow variable is split-up on the finer timeslice level of the commodity
balance according to the ratio of the timeslice duration of s to s1: RTCS_TSFR has
the value = COM_FR(r,s) / COM_FR(r,s1) for demand commodities and
G_YRFR(r,s) / G_YRFR(r,s1) otherwise. When COM_FR is used, the demand load
curve is moved to the demand process. Thus, it is possible to model demand
processes on an ANNUAL level and ensure at the same time that the process follows
the given load curve COM_FR.

Inter-regional Flow Coefficients

191
CAL _ IRE r ,v ,t , p ,c , s ,ie ∋ rpc_ire r, p,c, ie ∧ NOT rpc_conly r, t, p,c
Internal set indicating that commodity
(c) is imported/exported (ie) via
= ∑VAR _ IRE
s1∈rtpcs_varf r, t,p,c,s1
r , v ,t , p , c , s1,ie ×RTCS _ TSFRr ,t ,c , s , s1 process (p) in/from region (r).

Adjusts the time-slice of IRE for


COM_BAL

AUX _ IRE r ,t ,c , s ,io Computes the Auxiliary flows associated


with an inter-regional process
=

 
 
 IRE _ FLOSUM r ,t , p ,com , s1,ie,c ,io × VAR _ IRE r ,v ,t , p ,c , s1,ie 
 if ts_map 
 r, s, s1

= ∑ ∑ ∑  ×1 The timeslice (s1) of the flow 
 rpc_ire r,p,com,ie  v∈rtp_vintyrr, v, t,p s1∈rtpcs_varf r, t,p,com,s1  
( p , com ,ie )∈  else variable VAR_IRE is below
 ∧ IRE _ FLOSUM


r ,t , p ,com ,s ,ie ,c ,io 
 (s) in the timeslice tree.

 G _ YRFRr , s 
× 
 G _ YRFRr , s1 

Since the timeslice (s1) of the


flow variable VAR_IRE is above
(s) in the timeslice tree, VAR_IRE
is apportioned according to the
timeslice durations.

192
Investment Related Flow Coefficients

Intermediate Notation:
BCF = B( v ) + NCAP _ ILED − NCAP _ CLED Beginning year of commodity flow
ECF = B( v ) + NCAP _ ILED − 1 Ending year of commodity flow

Note that these flows never need to be


carried across ‘long’ periods, because
the construction never exceeds the end of
period v if v is ‘long’

COEF _ ICOM :

if (v = t ) ∧ ( IL + TL < D(t ))
NCAP _ ICOM v Case IV
= COEF _ RPTINV ×
D(t )
D(t ) − ILEDt Counts the number of
where COEF _ RPTINV = investments in a long period
TLIFE t
else
 1 + Min(ECF , E (t ) ) − Max(BCF , B(t ) ) NCAP _ ICOM v  Cases I, II, III
= Max × ,0 
 D (t ) NCAP _ CLED v 
endif

Case I Case II

NCAP_CLED

t t

Case III Case IV

t t

193
Dismantling Related Flow Coefficients

Intermediate Notation:
BCF = B(v) + NCAP _ ILED + NCAP _ TLIFE + NCAP _ DLAG Start year of
commodity flow.
ECF = B( v ) + NCAP _ ILED + NCAP _ TLIFE + NCAP _ DLAG + NCAP _ DLIFE − 1
End year of commodity flow.
Either the current period is ‘long’ or there was
a long period that could have investments late
COEF _ OCOM : enough to be dismantled in ‘t’.

if t ≥ v ∧ D(v) > IL + TL ∧ B(t ) < E (v) + TL + DLAG + DLIFE


   Min(B(v) + IL + (i × TL) + DLAG + DLIFE − 1, E (t ) )   
  
COEF _ RPTINV
   D (t ) 
  Max(B(v) + IL + (i × TL) + DLAG, B(t ) )    × NCAP _ OCOM v
= ∑i =1

Max 
 −    NCAP _ DLIFE v
  D(t ) 
 0 
  
else

 1 + Min( ECF , E (t )) − Max( BCF , B(t )) NCAP _ OCOM v 


 × 
= Max D(t ) NCAP _ DLIFE v 
0 
 
endif

194
5.3.9 Equation: EQE_COMPRD

Indices: region (r); year (t), commodity (c); timeslice (s)

Type: =

Related variables: VAR_ACT; VAR_FLO; VAR_COMNET; VAR_COMPRD;


VAR_IRE; VAR_NCAP; VAR_SOUT; VAR_BLND; VAR_ELAST

Related equations: EQ(l)_COMBAL; EQ(l)_BNDPRD; EQ(l)_CUMPRD;


EQ_OBJVAR

Purpose: This equation generates a variable VAR_COMPRD equal to the total supply of
the commodity, i.e. import + production (activity and capacity based) + investment-time
outflow + dismantling related outflows, in each period and time slice. Note that this
excludes demand reduction (in the case of a demand commodity)

Remarks:
• Enables the application of bounds to the annual or cumulative production of
commodities. This is also needed to incorporate cost/sub/tax attributes on commodity
production.

Equation:

EQE _ COMPRDr ,t ,c , s ∋ COM _ BNDPRD ∨ COM _ CUMPRD


∨COM _ CSTPRD ∨ COM _ SUBPRD ∨ COM _ TAXPRD

COMSUP = VAR _ COMPRDr ,t ,c , s

This refers to the term marked


“COM_SUP”, on equation
EQ_COMBAL

195
5.3.10 Equation: EQ(l)_CUMNET/PRD

Indices: region (r); year1 (y1); year2 (y2); commodity (c)

Type: Any type, as determined by the bound index bd of COM_CUMNET/PRD:


• l = ’G’ for bd = ‘LO’ (lower bound) yields ≥ .
• l = ’E’ for bd = ‘FX’ (fixed bound) yields = .
• l = ’L’ for bd = ‘UP’ (upper bound) yields ≤ .

Related variables: VAR_COMNET/PRD

Related equations: EQ(l)_COMBAL; EQE_COMPRD

Purpose: This equation generates a cumulative bound for net release or total gross
production of a commodity. The constraint concerns net release/production over an
arbitrary number of consecutive years between the year (y1) and year (y2) as given in the
bound parameter COM_CUMNET/PRD.

Remarks:
• It is possible to have multiple cumulative bounds of any type.
• The total time span for calculating the cumulative production needs not consist of an
exact number of periods.
• The cumulative bounds are expressed annually only.
• The sign of the bound is indicated by the l equation index.

Interpretation of the results:


Primal: The primal value describes the cumulative net release/the cumulative production
of commodity c between the years y1 and y2.
Dual: The dual value of the constraint describes the change in the objective function if
the bound parameter is increased by one unit. The increase of an upper bound
yields a reduction of the total costs (dual value is negative), since the systems
wants to use more of this commodity. The increase of a lower bound yields an
increase of the total costs (dual value is positive), since the system has to be
forced to use more of an uncompetitive commodity (the commodity itself or the
technologies utilizing it maybe too expensive). The dual value of a cumulative
production constraint can also be interpreted as a tax/subsidy that is applied
between the years y1 and y2 to reach the same cumulative productions as
specified in the bound (the tax/subsidy has to be adjusted by the discount rate).

196
Equation:

EQ(l ) _ CUMNETr , y1, y 2, c ∋ COM _ CUMNETr , y1, y 2, c ,l

t =T ( y 2 )

∑ ∑ [Min{E (t ), y 2} − Max{B(t ), y 2} + 1]× VAR _ COMNET


t = T ( y1) s∈rtcs_varc r,t,c,s
r ,t ,c , s {=; ≤; ≥} COM _ CUMNETr , y1, y 2,c,l

The internal set rtcs_varc gives the periods, at


which the commodity is available (usually all
periods, but the user can turn-off periods by the
set com_off), and the timeslices as defined by the
user in com_tsl or com_ts.
EQ(l ) _ CUMPRDr , y1, y 2,c ,s ∋ COM _ CUMPRDr , y1, y 2,c ,l

t =T ( y 2 )

∑ ∑ [Min{E (t ), y 2}− Max{B(t ), y 2}+ 1]× VAR _ COMPRD


t =T ( y1) s∈rtcs_varcr,t,c,s
r ,t ,c ,s {=; ≤; ≥} COM _ CUMPRDr , y1, y 2,c,l

197
5.3.11 Equation EQ_DSCNCAP

Indices: region (r), milestoneyear (t), process (p)

Type: =

Related variables: VAR_DNCAP, VAR_NCAP

Related equations: EQ_DSCONE

Purpose: The investment variable of the technology p in period t and region r can take
only specific unit sizes given by the parameter NCAP_DISC. This equation defines the
investment variable to be equal to the sum over the different unit sizes each multiplied by
the corresponding decision variable VAR_DNCAP. However, the sister equation
EQ_DSCONE restricts this sum to a single term only (i.e. a single unit –of a specific size,
is allowed to be invested in at period t).

Remarks:
• The set unit contains the names of capacity blocks/units that can be added, the set
contain integer numbers going from ‘0’ to ‘100’. The unit name ‘0’ is used to
describe the decision that no capacity should be added.
• The set rp_dscnap(r,p) contains the processes p (in region r) for which the
discrete capacity formulation should be used
• The parameter NCAP_DISC(r,t,p,u) is the allowed capacity size of unit u; e.g.
the size of unit ‘1’ could be 50 MW, unit ‘2’ 100 MW and unit ‘3’ 500 MW. The
size of unit ‘0’ is automatically set to zero (EPS). If all unit sizes are taken equal,
the formulation allows the repeated investment of a basic unit (as many as 100
times, in integer numbers).
• VAR_DNCAP(r,t,p,u) is a binary decision variable describing whether the
capacity unit unit of technology p should be added in period t or not. Some
solvers for mixed-integer problems, as CPLEX or XPRESS, allow the definition
of variables as so-called SOS1 sets (special ordered sets) in order to improve the
solution process. A SOS1 set is defined as a set of variables of which only one
variable can take a non-zero value. VAR_DNCAP is currently defined as SOS1
variable. Not all solvers support this option, in these cases the variable type
should be changed to a binary variable in the file mod_vars.dsc.

Equation

EQ _ DSCNCAPr ,t , p ∋ rp_dscncap r,p ∧ rtp r,t,p

VAR _ NCAPr ,t , p = ∑ (VAR _ DNCAP


u∈unit
r ,t , p ,u × NCAP _ DSCr ,t , p ,u )

198
5.3.12 Equation: EQ_DSCONE

Indices: region (r), milestoneyear (t), process (p)

Type: =

Related variables: VAR_DNCAP, VAR_NCAP

Related equations: EQ_DSCNCAP

Purpose: The equation ensures that only one of the multiple unit sizes allowed for
technology p (described by NCAP_DSC(r,t,p,u)) can be added in period t.

Equation

EQ _ DSCONE r ,t , p ∋ rp_dscncap r,p ∧ rtp r,t,p

∑ VAR _ DNCAP
u∈unit
r ,t , p ,u =1

Note that VAR _ DNCAP must be declared as a binary var iable (taking values 0 or 1 only )

199
5.3.13 Equation: EQ(l)_FLMRK

Indices: region (r); period (t); process (p); commodity (c), time-slice (s)

Type: Any type, as determined by the bound index bd of FLO_MARK:


• l = ’G’ for bd = ‘LO’ (lower bound) yields ≥ .
• l = ’E’ for bd = ‘FX’ (fixed bound) yields = .
• l = ’L’ for bd = ‘UP’ (upper bound) yields ≤ .

Related variables: VAR_FLO; VAR_COMPRD

Related equations: EQ(l)_COMBAL; EQE_COMPRD

Purpose: Relationship to facilitate constraints on the market share of process (p) in the
total production of commodity (c). Indicates that the flow of commodity (c) from/to
process (p) is bounded by the given fraction of the total production of commodity (c).
The time-slice level of the constraint is that of the commodity (c). In the present
implementation, the same given fraction is applied to all timeslices (this could be
generalized to allow time-slice-specific fractions, if deemed useful).

Variables involved

• VAR_FLO(r,v,t,p,com,s) – the average flow to/from a process built in period v,


during time-slice s, during each year of period t. The variable for an input flow
appears on the consumption side of the balance equation without any coefficients, and
the variable for an output flow on the production side multiplied with the commodity
efficiency (COM_IE).
• VAR_IRE(r,v,t,p,com,s,ie) – the average flow to/from an exchange process built in
period v, during time-slice s, during each year of period t. The export variable appears on
the consumption side of the balance equation without any coefficients, and the import
variable on the production side multiplied by the commodity efficiency (COM_IE).
• VAR_SIN/SOUT(r,v,t,p,c,s) – flows entering/leaving a storage process p storing a com-
modity c. The variable for charging appears on the consumption side of the balance
equation without any coefficients; the import variable on the production side multiplied
by both the storage efficiency and commodity efficiency (SGT_EFF, COM_IE).
• VAR_COMPRD(r,t,com,s) – variable equal to the total import + production
(activity and capacity based) + investment retirement related flows in each period
and time slice. This balance is defined by the equation EQE_COMPRD, which is
automatically generated for all commodities used in FLO_MARK parameters.

Parameters

• FLO_MARK(r,t,p,c,l) – Market share of process in total commodity production.

Remarks

200
1. Market-share constraints can be specified for ordinary processes, as well as for exchange and
storage processes. For ordinary processes, the FLO_MARK parameter value should always be
non-negative. However, because exchange and storage processes can have both input and
output flows of the same commodity, for these processes negative values can also be specified.
Depending on the parameter value, the constraint is in these cases applied either to the input or
output flow by using the following simple conventional rules:
• Value > 0: Constraint is applied to the output flow (imports or storage discharge)
• Value < 0: Constraint is applied to the negative of input flow (exports or storage
charge)
• Value=EPS: Constraint is applied to the net output flow (output–input flow)
These simple rules provide reasonable flexibility for specifying market share bounds also for
exchange and storage processes, in addition to ordinary processes. Although these rules preclude
individually bounding the input or output flow to zero, this could always be accomplished by
using the IRE_BND, STG_OUTBND, and STG_INBND parameters when necessary.

2. In most cases, the commodity c to be specified in the FLO_MARK parameter is directly the
commodity of the process flow. All commodities defined in the topology can always be
directly used in the FLO_MARK parameter, when satisfactory. However, the commodity used
in the parameter does not actually need to be in the topology, but it should contain some
commodity that does exist in the process topology. This feature can be utilized for defining
market-share equations at the ANNUAL level for seasonal commodities. For example, if ELC
is a seasonal commodity, the user could define a new commodity ELC_ANN that includes
ELC as a group member (through COM_GMAP membership), and use the ELC_ANN
commodity in the FLO_MARK parameter insetad of ELC. If no timeslice level is defined for
ELC_ANN, the constraint will then by default be defined at the ANNUAL level.

Examples:
• Define an upper market share bound of 5% for technology WIND1 in total ELC
production in the 2010 period.
• Define an upper market share of 25% for diesel export (through exchange process
DSLXHG) of total DSL production in the 2010 period. Note that because the
bound is for exports, in this case the parameter value should be negative and the
bound type LO instead of UP.

PARAMETER FLO_MARK /
REG.2010.WIND1.ELC.UP 0.05
REG.2010.DSLXHG.DSL.LO –0.25
/;

Interpretation of the results:


Primal: If the primal value is zero, the constraint is binding. If the primal value is
positive for a lower FLO_MARK bound or negative for an upper bound, the
constraint is non-binding.
Dual: The dual value describes for example for a lower bound, the subsidy needed to
guarantee the market share of the technology being forced into the market. The
subsidy is needed, since the production of the technology is too expensive
compared to other competing technologies. The value of the subsidy, which the
technology receives, is equal to (1-FLO_MARK)*(dual variable). This subsidy

201
has to be paid by the other technologies producing the same commodity. Thus,
the costs of these technologies are increased by the amount FLO_MARK*(dual
variable). The constraint can therefore be interpreted as a quote system for the
production of a specific technology, e.g. a certificate system for electricity by a
wind technology: each non-wind producer has to buy certificates according to
the quota. The price of the certificates equals the dual value of the constraint.

Equation:

EQ (l ) _ FLMRK r ,t , p ,c ,s ∀( r, t , p, c, s )∈ RTPr ,t , p ∩ FLO _ MARK r ,t , p ,c ,s ,l ∩ COM _ TS r ,c ,s

  COM _ IE r ,com ,ts if output 


∑ 

VAR _ FLO r ,v ,t , p ,com ,ts ×  +
( com ,v ,ts ) ∈   1 if input 
RPC p ∩COM _ GMAPc
∩ RTP _ VINTYR p , t
∩ RPCS _ VAR p

 VAR _ IRE r ,v ,t , p ,com ,ts ,imp  COM _ IE r ,com ,ts if FLO _ MARK r ,t , p ,c ,s ,l ≥ 0 
  ×  −
VAR _ SOUTr ,v ,t , p ,com ,ts × STG _ EFFv , p   0 if FLO _ MARK r ,t , p ,c ,s ,l < 0
VAR _ IRE r ,v ,t , p ,com ,ts ,exp  1 if FLO _ MARK r ,t , p ,c ,s ,l ≤ 0 
  × 0 if FLO _ MARK  ×
 VAR _ SIN r , v , t , p , com , ts   r , t , p , c , s , l > 0 
 1 if ts ∈ TS _ MAP ( r, s ) 
 FR( s ) 
 
if ts ∈ RS _ BELOW ( r, s ) 
 FR(ts )  
{=; ≤; ≥}

 FLO _ MARK r ,t , p ,c ,s ,l × VAR _ COMPRDr ,t ,com ,ts 


 
  1 if ts ∈ TS _ MAP ( r, s )  
∑ ∑    
com ∈ ts∈  ×  FR( s ) if ts ∈ RS _ BELOW ( r, s ) 
RPC ∩COM _ GMAPc
 
RHS _ COMPRDt , com
 FR(ts ) 

202
5.3.14 Equation: EQ(l)_FLOBND

Indices: region (r), period (t), process (p), commodity group (cg), timeslice (s)

Type: Any type, as determined by the bound index bd of FLO_BND:


• l = ’G’ for bd = ‘LO’ (lower bound) yields ≥ .
• l = ’E’ for bd = ‘FX’ (fixed bound) yields = .
• l = ’L’ for bd = ‘UP’ (upper bound) yields ≤ .

Purpose: Bound on the sum of process flows in a given commodity group (cg) for a
particular process (p) in period (t) and timeslice (s).

Remarks:
• The constraint bounds the flows in a specific period (t) irrespectively of the
vintage years of the process capacity.
• The bound can be defined for a single commodity or a group of commodities
linked to the process (p). In the latter case, a commodity group (cg) must be
defined by the user (through com_gmap).
• The constraint is generated, if one of the following conditions is true:
o Process (p) is vintaged, or
o the sum of several process flows given by the commodity group (cg), and
not only a single process flow, should be bounded, or
o the timeslice resolution of the flow variables are below the timeslice (s) of
the bound parameter.
In the other cases, the bound can be directly applied to the corresponding flow
variable, so that no extra equation is needed.
• The timeslice level (s) of the bound must be at or higher than the timeslice level
of the process flows (rtpcs_varf).

Interpretation of the results:


Primal: If the primal value equals the bound parameter, the constraint is binding.
Dual: The dual value describes for a lower/upper bound the cost increase/decrease in
the objective function, if the bound is increased by one unit. It may also be
interpreted as subsidy/tax needed to reach the given bound value.

203
Equation

The bound is applied to a


sum of process flows.
The process is vintaged.

rtpr,t,p ∧ FLO _ BNDr ,t , p ,cg ,s ,bd ∧ 


 
EQ(l ) _ FLOBNDr ,t , p ,cg ,s ∋   cg is a group of commodities and  

 prc_vint r,p ∨  not only a single commodity  ∨ ∑ ∑ rs_below r,s,ts 

   c∈com_gmapr,cg,c ts∈rtpcs_varfr,t,p,c,ts 

∑ ∑ ∑VAR _ FLO
c∈com_gmapr,cg,c ts∈rtpcs_varfr,t,p,c,ts v∈rtp_vintyrr, v,t,p
r ,v ,t , p ,c ,ts The timeslice resolution (ts) of
the process flow(s) is below the
timeslice resolution (s) of the
(≤ / ≥ / = ) FLO _ BNDr ,t , p ,cg ,s ,bd
bound.

where the equation sign is indicated by equation index l based on the bound type bd.

204
5.3.15 Equation: EQ(l)_FLOFR

Indices: region (r), period (t), process (p), commodity (c), timeslice (s)

Type: Any type, as determined by the bound index bd of FLO_FR:


• l = ’G’ for bd = ‘LO’ (lower bound) yields ≥ .
• l = ’E’ for bd = ‘FX’ (fixed bound) yields = .
• l = ’L’ for bd = ‘UP’ (upper bound) yields ≤ .

Purpose: Relationship in period (t) between the total annual flow and the flow in a
particular timeslice (s) for a specific process (p). The parameter FLO_FR may be used to
define a load curve for a process flow.

Remarks:
The sign of the equation determines whether the flow in a given timeslice is rigidly
(=) or flexibly (≥ ; ≤) linked to the annual flow. The constraint bounds the flows
irrespectively of the vintage years of the process capacity.

Equation

 
EQ(l ) _ FLOFRr ,t , p , c , s ∋ ∑ ts_map r,s, ts ∧ FLO _ FRr ,t , p , c , s ,bd 
ts∈rpcs_varr,p,c,ts 
The timeslices of the process

∑ ∑ (VAR _ FLO × RTCS _ TSFRr ,t , c , s ,ts )


flow (ts) have to be below the
r , v , t , p , c , ts timeslice (s) of the bound.
ts∈rtpcs_varf r,t,p,c,ts v∈rtp_vintyrr, v,t,p

(≤ / ≥ / = )

∑ [VAR _ FLO ]
See under EQ(l)_COMBAL for

ts∈rtpcs_varf r,t,p,c,ts v∈rtp_vintyrr, v,t,p
r , v , t , p , c , ts × FLO _ FRr ,t , p , c , s ,bd the definition of the internal
parameter RTCS_TSFR .

where the equation sign is indicated by equation index l.

205
5.3.16 Equations related to exchanges (EQ_IRE, EQ_IREBND, EQ_XBND)

The three equations in this section concern trade between regions. Since these equations
involve (directly or indirectly) more than one region, we start their presentation by a
complete description of the modeling approach used, which, as we shall see, involves
various schemes for representing different types of trade. The description already given
in chapter 2 is also relevant to these equations.

Structure and types of endogenous trade

In TIMES, the inter-regional trading structure of a given commodity basically


consists of one or several exchange processes (called IRE processes), each of which
defines a portion of the trading network for the commodity. The individual sub-networks
can be linked together through common intermediating regions. As an example,
electricity trade can be conveniently described by bi-lateral exchange processes (figure
5.2). But bi-lateral trading between all pairs of regions may become onerous in terms of
data and model size. It is therefore useful to consider the other trade structure of TIMES,
called multi-lateral trade, where regions trade with a common market (figure 5.3). For
either structure, the topology of the trading possibilities are all defined via the set top_ire
of quintuples {r1,c1,r2,c2,p}, where r1, r2 are the exporting and importing regions
respectively, c1, c2 are the names of the traded commodity in regions r1 and r2
respectively, and p is the process identifier. Process p is a process in both regions. It has
to be defined only once, but one can add parameters to it in both regions (e.g. costs,
bounds, etc.). (Nearly every piece of information in TIMES has to be assigned to a
region.)

TIMES provides considerable flexibility in the definition of trading structures. Each


sub-network defined for a single exchange process can have the general structure shown
in Figure 5.1, a trading structure that involves both several supply (export) regions and
several demand (import) regions cannot be defined without introducing an intermediating
'market' region (RM). Whenever such an intermediate region is defined between (at least)
two different regions, the model generator will assume that the structure is actually meant
to ignore the intermediate node-region shown in Figure 5.1. If the intermediate step
should nonetheless be included, this can be accomplished by dividing the sub-network
into two parts, by using two exchange processes. Consequently, depending on the user's
choice, the trading relationships shown in Figure 5.1 can be modeled both with and
without the intermediate transportation step shown in the Figure.

206
Supply Demand
regions regions

RS1 Export Import RD1

RS2 Import/Export RD2

RS3 RM RD3

RSm Supply and demand sets may RDn


contain same regions;
one of them may also
be empty

Figure 5.1. General structure of the pair-wise specification of the trading sub-
network allowed in TIMES for a single exchange process.

The general structure allowed for the trading sub-networks can be further divided into
four cases, which will be discussed below in more detail:

Case 1: Bi-lateral trading.


Case 2: Unidirectional trade from some export regions into a single importing region
Case 3: Multi-directional trade from a single export region to several importing
regions
Case 4: General multi-lateral trading structure

Trading without need for explicit marketplace definition


Cases 1, 2 and 3 fall in this category. Bi-lateral trade takes place between pairs of
regions. An ordered pair of regions together with an exchange process is first identified,

Export Import
R1 R2
Import Export

R1 R2=RM R1

Figure 5.2. Case 1: Bi-lateral trade (both R1 and R2 qualify as RM).

207
and the trade through the exchange process is balanced between these two regions.
Whatever amount is exported from region i to region j is imported by region j from
region i (possibly with an adjustment for transportation losses). The basic structure is
shown in Figure 5.2. Bi-lateral trading can be fully described in TIMES by specifying the
two pair-wise connections in top_ire. The capacity and investment costs of the exchange
process can be described individually for both regions. For Cases 2 and 3, the general
structure of the trade relationships is shown in Figure 5.4. Also in these cases the
definition of the trading structure is easy, because the relationships can be unambiguously
described by pair-wise top_ire specifications between two regions.

Trading based on marketplace


Case 4 is covered by the generic structure shown in Figure 5.1. Trading occurs in this
case between at least three regions, and involves both several exporting regions and
several importing regions. In this type of trade, the commodity is ‘put on the market’ by
each region participating in the supply side of the market and may be bought by any
region participating in the demand side of the market. This case is convenient for global
commodities such as emission permits or crude oil where the transportation cost from ri
to rj may be approximated by Costi+Costj (rather than a more accurate cost such as Cij).
When the exact cost (or losses) are strictly dependent on the pair i,j of trading regions, it
may be more accurate to use bilateral trade.
In general, there are many different possibilities for defining the multi-lateral structure by
using the pair-wise top_ire specifications. In order to comply with the structure allowed in
TIMES, the user has to decide which of the regions represents the 'marketplace', i.e. is chosen
to be the RM shown in Figure 5.2. Note that the market region will participate both in the
supply and demand side of the market. The TIMES model generator automatically identifies
this general type of trading on the basis of the top_ire topology defined by the user.
Therefore, the user only needs to define the possible trading relationships between regions

Supply regions Demand regions

RS1 Export Import RD1

RS2 Import Export RD2

RS3 RM RM RD3

RSm RDn

Figure 5.3. General structure of unidirectional trade into a single import


region (Case 2, on the left) and multidirectional trade from a single export
region (Case 3, on the right).

208
into the top_ire set. If there are n supply regions and m demand regions, the total number of
entries needed in top_ire for defining all the trade possibilities is n+m–2 (counting the
market region to be included in both the supply and demand regions. Although the market
region has to be defined to be an intermediate node in the structure, the model generator will
actually not introduce any intermediate step between the export and import regions.

The timeslice levels of the traded commodity may be different in each region (as well as the
commodity name). However, some appropriate common timeslice level must be chosen for
writing the market balance equation. That common level is the level attached to the exchange
process in the market region. In all other respects, the market region is not treated in any
way differently from the other regions participating in the market. Nevertheless, the user can
of course provide different data for the different regions, for example investment costs or
efficiencies for the exchange process can be differentiated by region.

If the sets of supply and demand regions participating in the market should actually be
disjoint, even in that case the user has to choose one of the regions to be used as the
intermediate market region. The imports to or exports from the market region can then
be switched off by using an IRE_XBND parameter, if that is considered necessary.

Remarks on flexibility
1. Any number of exchange processes can be defined for describing the total trade
relationships of a single commodity (but see warning 1 below).
2. The names of traded commodities can be different in each region participating in
the trade. In addition, also the import and export names of the traded commodities
can be different (but see warning 2 below). This could be useful e.g. in the case of
electricity, for which it is common to assume that the export commodity is taken
from the system after grid transport, while the import commodity is introduced
into the system before the grid.
3. Any number of commodities can be, in general imported to a region or exported
from a region through the same process (but see warning 2 below).

Warnings
1. For each exchange process of any traded commodity, the total structure of the
trading sub-network, as defined in top_ire, must comply with one of the basic
structures supported by TIMES (Cases 1–4). If, for example, several bi-lateral
trading relationships are defined for the same commodity, they should, of course,
not be defined under the same process, but each under a different process.
2. If the export and import names for a market-based commodity (c) are different in
the market region, no other commodities should be imported to the market region
through the same exchange process as commodity c.
3. The model generator combines the trading relationships of a single process into a
single market whenever there is an intermediate region between two different
regions. If, however, the intermediate exchange step should be explicitly included in
the model, the trading sub-network should be divided between two different
exchange processes.

209
Example
Assume that we want to set up a market-based trading where the commodity CRUD
can be exported by regions A, B, C, and D, and that it can be imported by regions C, D, E
and F. First, the exchange process and marketplace should be defined. For example, we
may choose (C,XP,CRUD) as the marketplace, where XP has been chosen to be the name
of the exchange process (recall that process XP is declared only once but exists in all
trading regions, possibly with different parameters). The trade possibilities can then be
defined simply by the following six top_ire entries:

SET PRC / XP /;
SET TOP_IRE /
A .CRUD .C .CRUD .XP
B .CRUD .C .CRUD .XP
D .CRUD .C .CRUD .XP
C .CRUD .D .CRUD .XP
C .CRUD .E .CRUD .XP
C .CRUD .F .CRUD .XP
/;

To complete the RES definition needed for the exchange process, in addition only the
set prc_actunt(r,p,c,u) needs be defined for the exchange process XP:

SET PRC_ACTUNT /
A .XP .CRUD .PJ
B .XP .CRUD .PJ
C .XP .CRUD .PJ
D .XP .CRUD .PJ
E .XP .CRUD .PJ
F .XP .CRUD .PJ
/;

These definitions are sufficient for setting up of the market-based trade. Additionally,
the user can of course specify various other data for the exchange processes, for example
investment and distribution costs, and efficiencies.
TIMES SETs related to endogenous trade

top_ire(r1,c1,r2,c2,p): For bi-lateral trade, unidirectional trade into a single destination


region, and multidirectional trade from a single source region, top_ire should contain the
corresponding entries from the exporting region(s) r1 to the importing region(s) r2.
For market-based trade, top_ire must contain entries for each exporting region to the
intermediate market region, and from the market region to each importing region. Each
region may be both exporting and importing.
rpc_market(r,p,c): This set specifies the marketplace(s) for the commodities that are traded
through market-based trade. The marketplaces are automatically set by the model generator
for any trade that involves an intermediate region between two different regions for the same
exchange process (p) and same commodity (c), or if there are multiple destination

210
(importing) regions for the same exporting region. However, the user can also manually
specify a marketplace even for a bidirectional bi-lateral exchange. This can be done manually
by specifying one of the two demand regions to be the marketplace for the exported
commodity. Instead of two trade balance equations, only one market balance equation is then
generated.
prc_aoff(r,p,y1,y2): Override used to control in what years (not periods) a process is not
available. This set is not specifically related to exchange processes. However, in the case of
market-based trading it can be used to switch off the entire commodity market for periods
that fall within the range of years given by prc_aoff. The market will be closed for all
commodities exchanged through the process (p). It is also possible to specify multiple entries
of prc_aoff, if, for example trading should be possible only between selected years.

Remark
In market-based trade, the export regions participating in the market consist of all
those regions that export commodity c into region r through process p (as defined in
top_ire). Similarly, the import regions participating in the market consist of those regions
that import commodity c from region r through process p (as defined in top_ire). In
addition, the market region r by itself always participates in the market both as an import
and export region. However, the imports/exports of commodity (c) to/from the market
region (r) can be switched off by using an IRE_XBND parameter, if necessary.

Parameters

IRE_FLO(r1,v,p,c1,r2,c2,s2): Coefficient that represents the efficiency of exchange from r1


to r2, inside an inter-regional process where both regions are internal. Note that separate
IRE_FLOs are required for import and export. Default =1 for each top_ire direction
specified. Time slice s2 refers to the region where the commodity arrives. Units: none
IRE_FLOSUM(r,t,p,c1,s,ie,c2,io): Special attribute to represent auxiliary consumption (io =
IN, owing to the commodity entering the process) or production/ emission (io = OUT, owing
to the commodity leaving the process) of commodity c2 due to the IMPort / EXPort (index
ie) of the commodity c1 in region r by an inter-regional process 38. It is a fixed FLO_SUM
with (one of) the pcg in that region. These relate commodities on the same side of the
process.

38
The indexing of auxiliary consumption flows or emissions of inter-regional
exchange processes is illustrated in the figure below.

211
IRE_BND(r1,t,c,s,r2,ie,l): To bound the total import/export in internal region r1, to/from
region r2, where region r2 may be internal or external 39; c is the name of commodity in
region r1. Default none.
IRE_XBND(r,t,c,s,ie,l): Limit on total import/export of commodity c in region r, to/from all
destinations/sources, where r may be an internal or external region (Default: none
IRE_CCVT(r1,c1,r2,c2) Conversion of commodities as part of inter-regional exchanges, both
internal and external. Default = 1 when exchange permitted. Units: none
IRE_TSCVT(r1,s1,r2,s2): A matrix that transforms time slices of region r1 to region r2 as
part of inter-regional exchanges, including both internal and external. Default = 1 when
exchange permitted. Units: none

Remarks:
In market-based trading the IRE_FLO parameter is taken into account on the export
side only (representing the efficiency from the export region to the common
marketplace). By using this convention, any bi-lateral exchange can be represented by a
fully equivalent market-based exchange simply by choosing one of the two regions to be
the marketplace, and adding the corresponding entry to the set rpc_market(r,p,c). The
efficiency of the exports from the market region itself to the marketplace should also be
specified with an IRE_FLO parameter, when necessary (r1=r2=market region).

If the user wants to specify efficiency on the import side of a market-based exchange,
this can be done by using an IRE_FLOSUM parameter on the import side.

Similarly to any other pair of regions, the total amount of commodity imported to a
region from the commodity market can be constrained by the IRE_BND parameter, by
specifying the market region as the export region. Correspondingly, the total amount of
commodity exported from a supply region to the marketplace can be constrained by the
IRE_BND parameter by specifying the market region as the import region.

Variables

VAR_IRE(r, v, t, p, c, s, ie)

Description: The total amount of traded commodity (c) imported/exported (ie) to/from
region (r), through process (p) vintage (v) in each time period (t)

Purpose: The trade variables facilitate trade of commodities between exporting and
importing regions

Bounds: The amount of commodity imported to a region from each exporting region can
be directly constrained by the IRE_BND parameter.

Remarks:

39
The equation EQ(l)_XBND may have an external regional as region index (bounding the import
from one external regions to all other regions).

212
• Note that there is a one-to-one correspondence between the VAR_IRE variables
and the m+n arcs shown in Figure 5.1 (one variable for each supply region and
one variable for each demand region).
• In market-based trade, the VAR_IRE variables for the market region still only
describe the net imports to, and exports from, the market region, not the total
market volume.
• There is no variable for the total volume of the commodity market in market-
based trade. The total volume can only be addressed by means of UC_IRE
parameters (summing over all imports to or exports from the market).
• In market-based trade, only the amount of commodity imported to a region from
the market, or exported from the region to the market, can be constrained by the
IRE_BND parameter. The imports and exports thus cannot be attributed to a
specific supply or demand region on the other side of the trade.
• The amount of commodity exported from / imported to a region may also be
limited by bounds specified on growth rates between periods (dynamic UC_IRE
with GROWTH attribute), as well as cumulative limits imposed on the resource
over the entire time horizon (cumulative UC_IRE). However, in these cases the
bounds can only apply to the total exports from or imports to a region, and cannot
apply to e.g. imports from a specific region.

There are only three trade equations, namely a generic trade balance equation
EQ_IRE, and two bounds, EQ(l)_IREBND and EQ(l)_XBND. The generic balance
equation, EQ_IRE, can be further divided into two flavors:

A. Balance equations for bilateral and other unidirectional trade into a single
destination region (Cases 1 and 2).
B. Balance equations for multidirectional trade from single export region and multi-
lateral market-based trade (Cases 3 and 4).

5.3.16.1 Equation EQ_IRE

Indices: region (r), year (t), process (p), commodity (c), timeslice (s)
Type: =
Related variables: VAR_IRE

Related equations: EQ(l)_IREBND; EQ(l)_XBND; EQ(l)_COMBAL; EQ_ACTFLO

Purpose: This equation defines the balance between the imports of each traded
commodity (c) into region (r) and the corresponding exports trough each exchange
process (p) in each time period (t) and timeslice (s) of the process.

Units: Units of commodity traded. Normally PJ for energy, Mton or kton for materials
or emissions.

213
Remarks:
• Flows into individual regions may be limited by the IRE_BND and IRE_XBND
parameters.
• The equation has two flavors: The first one is for bilateral and unidirectional
trade with a single destination region, and the second is for market-based trade
and multidirectional trade from a single source region.

5.3.16.1.1 Case A. Bi-lateral or multilateral unidirectional trade to a single import


region

Equation
EQ _ IRE ∋ {r , t , p, c, s ∈ (rtpr,t,p ∧ rpcs_varr,p,c,s ∧ rpc_eqirer,p,c )}:
r , t , p , c, s

∑VAR _ IRE
v ∈rtp_vintyrr, v,t,p
r ,v ,t , p ,c ,s ,'IMP ' = This is the efficiency of process p for
the pair of regions and commodity c.

VAR _ IREr 2,v ,t , p ,c 2,ts ,'EXP ' × IRE _ FLOr 2,v , p ,c 2,r ,c ,s × 
 
∑ ∑ ∑ ∑  IRE _ TSCVTr 2,s 2,r ,s × IRE _ CCVTr 2,c 2,r ,c ×
 rtpcs_varfr2,t,p,c2,ts  


  RTCS _ TSFR
( r 2 ,c 2 ) ∈ top_irer2,c2,r,c,p v ∈rtp_vintyrr2, v,t,p s 2∈IRE _ TSCVTr 2 , s 2 , r , s
ts∈
 ∩ rs_treer,s2,ts  ´r 2 ,t ,c ,s 2 ,ts 
s2 is the timeslice in region
r2 that corresponds to This converts
timeslice s in region r. The the units.
conversion table IRE_TSCVT
contains the conversion
coefficients. Coefficients for mapping
timeslices ts of VAR_IRE
with the timeslices s2. See
EQ(l)_COMBAL for the
The timeslices (ts) of the export flow in region
definition of RTCS_TSFR.
r2 are described by the set rtpcs_varf.

Remarks:
• The IRE_TSCVT conversion coefficients are in practice provided only for some pairs
of mapped timeslices between r2 and r. Therefore, the timeslice conversion is
actually done in two stages: First, the timeslices of the VAR_IRE variables are
converted to the mapped timeslices, and then the mapped timeslices in r2 to those in r
as follows:
• The mapping coefficients IRE_TSCVT do not have to be provided by the user, if
the timeslice definitions in both regions are identical.
• If the timeslice definitions are different, the user provides the mapping
coefficients IRE_TSCVT to convert the timeslice s2 in region r2 to the timeslice
s in region r. Since the timeslice level of s2 maybe different to the timeslice

214
level ts of the exchange variable in region r2, the parameter RTCS_TSFR is
used to match ts and s2.
• Note that the equation is generated for each period in rtp only, not for each vintage in
rtp_vintyr as in the original code. This is because prc_vint is region-specific. If
prc_vint is set to YES in one region and to NO in another, that would create serious
sync problems, if the equation were generated for each vintage in rtp_vintyr. In
addition, differences in e.g. NCAP_PASTI, NCAP_TLIFE, and NCAP_AF could
create sync problems, even if prc_vint would be set to YES in all regions.

5.3.16.1.2 Case B. Multidirectional and market-based trade between regions.

Equation:
EQ _ IRE r ,t , p ,c , s ∋ {r, t , p, c, s ∈ (rtp r, t, p ∧ rpcs_varr, p,c, s ∧ rpc_eqire r, p,c )}:

VAR _ IRE r 2,v ,t , p ,c 2, s 2,' IMP ' × IRE _ CCVTr ,c1, r ,c 


 
∑ ∑ ∑ ∑  × IRE _ CCVTr 2,c 2, r ,c1 × IRE _ TSCVTr 2, s 2, r , s  ×
( r 2 , c1, c 2 )∈ v ∈rtp_vintyrr2, v, t,p s 2∈IRE _ TSCVTr 2 ,s 2 ,r ,s  rtpcs_varf r2, t,p,c2, ts   
ts∈  × RTCS _ TSFR
( top_ire r,c1,r2,c2,p ∩ top_ire r,c1,r,c,p ∩rpc_market r,p,c1 )  ∩ rs_tree r,s2, ts  ´ r 2 , t , c , s 2 , ts 

VAR _ IRE r 2,v ,t , p ,c 2,ts ,' EXP ' × IRE _ FLOr 2,v , p ,c 2, r ,c , s × 
 
∑ ∑ ∑ ∑  IRE _ TSCVTr 2, s 2, r , s × IRE _ CCVTr 2,c 2, r ,c × 
( r 2 , c 2 )∈top_ire r2,c2,r,c,p v ∈rtp_vintyrr2, v, t,p s 2∈IRE _ TSCVTr 2 ,s 2 ,r ,s  rtpcs_varf r2, t,p,c2, ts   
ts∈ 
 ∩ rs_tree r,s2, ts   RTCS _ TSFR´ r 2 ,t , c , s 2 ,ts 

Remarks:
• The IRE_TSCVT conversion coefficients are in practice provided only for some pairs
of mapped timeslices between r2 and r. Therefore, the timeslice conversion is actually
done in two stages: First, the timeslices of the VAR_IRE variables are converted to
the mapped timeslices, and then the mapped timeslices in r2 to those in r.
• In the case of market-based trading, prc_aoff can be used to switch off the entire
commodity market for periods that fall within a range of years. It is also possible to
specify multiple entries of prc_aoff, if, for example trading should be possible only
between selected years.
• The top_ire entry between the export and import commodity in the market region
itself is automatically defined by the TIMES model generator when necessary, i.e.
there is no need to provide it by the user.

215
5.3.16.2 Equation: EQ(l)_IREBND

Indices: region (r), year (t), commodity (c), timeslice (s), region2 (all_r),
import/export (ie)

Type: Any type, as determined by the bound index bd of IRE_BND:


• l = ’G’ for bd = ‘LO’ (lower bound) yields ≥ .
• l = ’E’ for bd = ‘FX’ (fixed bound) yields = .
• l = ’L’ for bd = ‘UP’ (upper bound) yields ≤ .

Related variables: VAR_IRE

Related equations: EQ_IRE; EQ(l)_XBND; EQ(l)_COMBAL

Description: Sets a bound for the amount of commodity (c) imported/exported (ie)
to/from region (r), from/to another region (all_r) in time period (t) and timeslice (s).

Purpose: The equation is optional and can be used to sets a bound for a pair-wise inter-
regional exchange. The generation of the equation is triggered by the user-specified
parameter IRE_BND.

Units: Units of commodity traded. Normally PJ for energy, Mton or kton for materials
or emissions.

Type: Set according to the 'l' index in IRE_BND.

Remarks:
• Total trade flows into/from individual regions may be limited by using the
IRE_XBND parameter.

Interpretation of the results:


Primal: If the primal value equals the bound parameter, the constraint is binding.
Dual: The dual value describes for a lower/upper bound the cost increase/decrease in
the objective function, if the bound is increased by one unit. It may also be
interpreted as subsidy/tax needed to reach the given bound value.

216
Equation:

Case A. Imports from an external region or market region


r, t , c, s, all _ r, ie : ( RCS _ COMTSr , c , s ∧ 
EQ (l ) _ IREBNDr ,t , c , s , all _ r ,ie ∀ :
(∃p : RPC _ IEr , p , c ,ie ) ∧ IRE _ BNDr ,t , c , s , all _ r ,ie ) 

∑ ∑ ∑VAR _ IRE
p :( ∃c 2 : TOP _ IRE all _ r ,c 2 ,r ,c , p ) v ∈RTP _ VINTYR r ,v ,t , p s 2
r , v , t , p , c , s 2 , exp ×

 1 if s 2 ∈ TS _ MAP ( r, s, s 2) 
 FR( s ) 
 if s 2 ∈ RS _ BELOW ( r, s 2, s ) 
 FR( s 2) 

{≤; =; ≥} IRE _ BNDr ,t ,c, s ,all _ r ,ie

Case B. Imports from an internal non-market region

r, t , c, s, all _ r, ie : ( RCS _ COMTSr , c , s ∧ 


EQ (l ) _ IREBNDr ,t , c , s , all _ r ,ie ∀ :
(∃p ∈ RPC _ IEr , p , c ,ie ) ∧ IRE _ BNDr ,t , c , s , all _ r ,ie ) 

∑ ∑ ∑VAR _ IRE
( c 2 , p ) ∈TOP _ IRE all _ r ,c 2 ,r ,c , p v ∈RTP _ VINTYRall _ r ,v ,t , p s 2
all _ r , v , t , p , c 2 , s 2 , exp × IRE _ FLOall _ r , v , p , c 2, r , c , s1 ×
s1∈RPCS _ VAR r , p ,c ,s 1

 1 if s1 ∈ TS _ MAP ( r, s, s1) 
 FR ( s ) 
IRE _ CCVTall _ r , c 2, r , c × IRE _ TSCVTall _ r , s 2, r , s1 × 
 FR ( s1) if s1 ∈ RS _ BELOW ( r, s1, s ) 
 

{≤; =; ≥} IRE _ BNDr ,t ,c, s ,all _ r ,ie

217
Case C. Exports from a non-market region to an internal or external region
r, t , c, s, all _ r, ie : ( RCS _ COMTSr , c , s ∧ 
EQ (l ) _ IREBNDr ,t , c , s , all _ r ,ie ∀ :
(∃p : RPC _ IEr , p , c ,ie ) ∧ IRE _ BNDr ,t , c , s , all _ r ,ie ) 

∑ ∑ ∑VAR _ IRE
p :( ∃c 2:TOP _ IRE r ,c ,all _ r ,c 2 , p ) v ∈RTP _ VINTYR r ,v ,t , p s 2
r , v , t , p , c , s 2 , exp ×

 1 if s 2 ∈ TS _ MAP ( r, s, s 2) 
 FR ( s ) 
 if s 2 ∈ RS _ BELOW ( r, s 2, s ) 
 FR( s 2) 

{≤; =; ≥} IRE _ BNDr ,t ,c, s ,all _ r ,ie

Case D. Exports from a market region to an internal region

r, t , c, s, all _ r, ie : ( RCS _ COMTSr , c , s ∧ 


EQ (l ) _ IREBNDr ,t , c , s , all _ r ,ie ∀ :
(∃p : RPC _ IEr , p , c ,ie ) ∧ IRE _ BNDr ,t , c , s , all _ r ,ie ) 

∑ ∑ ∑VAR _ IRE
( c 2 , p ) ∈TOP _ IRE r ,c ,all _ r ,c 2 , p v ∈RTP _ VINTYRall _ r ,v ,t , p s 2
all _ r , v , t , p , c 2 , s 2 , exp ×

 1 if s 2 ∈ TS _ MAP ( r, s, s 2) 
 FR( s ) 
IRE _ CCVTall _ r , c 2, r , c × IRE _ TSCVTall _ r , s 2, r , s ×  
 if s 2 ∈ RS _ BELOW ( r , s 2, s )
 FR( s 2) 

{≤; =; ≥} IRE _ BNDr ,t ,c, s ,all _ r ,ie

Remarks:
• The IRE_TSCVT conversion coefficients are in practice provided only for some pairs of
mapped timeslices between all_r and r. Therefore, the timeslice conversion is actually
done in two stages: First, the timeslices of the VAR_IRE variables are converted to the
mapped timeslices, and then the mapped timeslices in all_r to those in r.

218
5.3.16.3 Equation: EQ(l)_XBND

Indices: region (r), year (t), commodity (c), timeslice (s), imp/exp (ie)

Type: Any type, as determined by the bound index bd of IRE_XBND:


• l = ’G’ for bd = ‘LO’ (lower bound) yields ≥ .
• l = ’E’ for bd = ‘FX’ (fixed bound) yields = .
• l = ’L’ for bd = ‘UP’ (upper bound) yields ≤ .

Related variables: VAR_IRE

Related equations: EQ(l)_IRE; EQ(l)_IREBND; EQ(l)_COMBAL

Description: Bound on the total amount of traded commodity (c) imported/exported (ie)
to/from region (all_r) in a period (t) and timeslice (s).

Purpose: This equation bounds inter-regional or exogenous exchanges in a


particular region, across all other regions.

Units: Units of commodity traded. Normally PJ for energy, Mton or kton for
materials or emissions.

Remarks: Flows into/from individual regions may be limited by the IRE_BND


parameter.

Interpretation of the results:


Primal: If the primal value equals the bound parameter, the constraint is binding.
Dual: The dual value describes for a lower/upper bound the cost increase/decrease in
the objective function, if the bound is increased by one unit. It may also be
interpreted as subsidy/tax needed to reach the given bound value.

219
Equation:

EQ (l ) _ XBNDall _ r ,t,c,s,ie ∋ IRE _ XBNDall _ r,t,c,s,ie,bd

all_r is an internal
 
VAR _ IRE 
all _ r , v ,t , p , c , s 2 ,ie ×
 

p∈rpc_ire all_r,p,c,ie
∑ ∑ 
s 2∈(rtpcs_varf all_r, t,p,c,s2 ∩rs_tree all_r,s,s2 ) v∈rtp_vintyrall_r, v, t,p 
1 if s 2 ∈ ts_map all_r, s, s2 

 G _ YRFR ( s ) if s 2 ∈ rs_below all_r,s2,s 
 G _ YRFR ( s 2) 
{=; ≤; ≥} IRE _ XBNDall _ r,t,c,s,ie,bd
all_r is an external

VAR _ IRE r ,v ,t , p ,com , s 2,imp exp × IRE _ CCVTr ,com ,all _ r ,c 


∑ ∑ ∑ 
(ts , s 2 )∈(rs_tree r,ts,s2 ∩rtpcs_varfr,t,p,com,s2 ∩ IRE _ TSCVTr ,ts ,all _ r ,s ) v∈rtp_vintyrr,v,t,p × IRE _ TSCVT ( r , ts, all _ r, s )

p∈rpc_ire r,p,com,impex 

All regions r with impex ≠ ie


{=; ≤; ≥} IRE _ XBNDall _ r,t,c,s,ie,bd Having import/export from/to all_r

220
5.3.17 Equations: EQ(l)_INSHR, EQ(l)_OUTSHR

Indices: region (r); year (t); process (p); commodity (c); commodity group (cg);
time-slice (s)

Type: Any type, as determined by the bound index bd of FLO_SHAR:


• l = ’G’ for bd = ‘LO’ (lower bound) yields ≥ .
• l = ’E’ for bd = ‘FX’ (fixed bound) yields = .
• l = ’L’ for bd = ‘UP’ (upper bound) yields ≤ .

Related variables: VAR_FLO; VAR_ACT

Related equations: EQ(l)_COMBAL; EQ_PTRANS; EQ_ACTFLO

Purpose: A market/product allocation constraint equation is generated for each process


(p) for each time period (t) and each time-slice (s) in each region (if desired). It ensures
that the share of an inflow/outflow of a commodity (c) is lower/higher/equal a certain
percentage of the total consumption/production of this process for a specified commodity
group (cg).

Quality Control Checks:

∑ FLO _ SHAR
c∈cg
r , v , p , c , cg , s ,' LO ' ∀( FLO _ SHARr ,v , p ,c ,cg , s ,' LO ' ∋ l =" ≥" ) ≤ 1 − ∑ FLO _ SHARr ,v , p ,c ,cg , s ,' FX '
c∈cg

∑ FLO _ SHAR
c∈cg
r , v , p , c , cg , s ,'UP ' ∀( FLO _ SHARr ,v , p ,c ,cg , s ,'UP ' ∋ l =" ≤" ) ≥ 1 − ∑ FLO _ SHARr ,t , p ,c ,cg , s ,' FX '
c∈cg

∀FLO _ SHAR > 0

Remarks:
• Exchanging top(r,p,c,’IN’)=Input vs. top(r,p,c’OUT’) = Output in this equation
yields EQ(l)_OUTSHR since c is only member of one cg.
• The period index of the parameter FLO_SHAR is related to the vintage period (v) of
the process, i.e., if the process is vintaged (prc_vint), a constraint will be generated
for each period (t) the installation made in the vintage period (v) still exists (these
period pairs are internally provided by the set rtp_vintyr).

Interpretation of the results:


Primal: If the primal value is zero, the constraint is binding. If the primal value is
positive for a lower FLO_SHAR bound or negative for an upper bound, the
constraint is non-binding.
Dual: The dual value describes for a lower bound, the subsidy needed to guarantee that
the flow is at the given lower bound. The subsidy is needed, since for an output

221
flow the shadow price of the produced commodity is too low to cover the
production costs of the flow variable (for an input flow the opposite is true, the
commodity is too expensive to be used in the process). The value of the subsidy,
which the flow receives, is equal to (1-FLO_SHAR)*(dual variable). This
subsidy has to be paid by the other flows forming the denominator in
FLO_SHAR constraint, thus, the costs for these flows are increased by the
amount FLO_SHAR*(dual variable). In a similar way, an upper bound
FLO_SHAR can be interpreted as a tax being added to the costs of a flow.

Equation:

EQ (l ) _ IN / OUTSHRr ,v ,t , p ,c ,cg , s ∋ ( c ∈ cg ) ∧ (t ∈ rtp_vintyrr, v, t, p ) ∧ top r, p,c, 'IN ' / 'OUT ' ∧


( s ∈ rps_s1r, p,s ) ∧ FLO _ SHARr ,v , p ,c ,cg , s ,bd

FLO _ SHARr ,v , p ,c ,cg , s ,bd × ∑ ∑ [VAR _ FLO


com∈cg s 2∈rtpcs_varf r, t,p,com,s2
r , v ,t , p , com , s 2 × RTCS _ TSFRr ,t , p ,com , s , s 2 ]

{=; ≤; ≥}

∑VAR _ FLO
s 2∈rtpcs_varf r, t,p,c,s2
r , v ,t , p , c , s 2 × RTCS _ TSFRr ,t , p ,c , s , s 2
See EQ(l)_COMBAL
for the definition of
RTCS_TSFR.

The set rps_s1 contains the timeslices of the


timeslice level, which is defined to be the finest
timeslice level of the process (prc_tsl)and all
commodities (com_tsl) linked to the process.

222
5.3.18 Equation: EQ_PEAK

Type: ≥

Related variables: VAR_ACT; VAR_NCAP; VAR_FLO

Related equations: EQ(l)_COMBAL; EQ(l)_CAPACT

Purpose: The commodity peaking constraint ensures that the capacity installed is enough
to meet the highest demand in any timeslice, taking into consideration both adjustments
to the average demands tracked by the model and a reserve margin requiring excess
capacity to be installed.

Remarks:
• In the description below reference is made to existing components of the production
and consumption parts of the EQ(l)_COMBAL commodity balance equation, where a
peak contribution/co-incident factor is applied to the terms. These factors are process
dependent and as such are actually applied within the referenced expression during
the summing operation.
• COMBALsup refers to all the components of production, other than those related
to capacity as releases from the capacity are not to be taken into consideration for
satisfying the peaking constraint.

New sets and parameters:

• com_peak(r,cg) is a flag that a peaking constraint is desired. It is optional if


com_pkts(r,cg,s) is provided
• com_pkts(r,cg,s) are the explicit time slices for which peaking constraints are to be
constructed. A post-optimization QC check will be done to ensure that the timeslice
with highest demand is in said list. Default is all com_ts(r,c,s).
• COM_PKRSV(r,t,c) is the peak reserve margin. Default 0.
• COM_PKFLX(r,t,c,s) is the difference (fluctuation) between the average calculated
demand and the actual shape of the peak. Default 0
• FLO_PKCOI(r,t,p,c,s) is a factor that permits increasing the average demand
calculated by the model to handle the situation where peak usage is typically higher
due to coincidental usage at peak moment (e.g., air condition). Default 1 for each
process consuming c. User can prevent a process from contributing to the calculation
of the peak by specifying = 0
• NCAP_PKCNT(r,t,p,s) is the amount of capacity (activity) to contribute to the peak.
Default 1 for each process producing commodity c. User can prevent a process from
contributing to the peak by specifying = EPS
• rp_peak(r,p,c) are those processes which contribute to create/satisfying the peak.
Derived by the preprocessor from all those process consuming/producing commodity
c, with non-zero FLO_PKCOI/NCAP_PKCNT.

223
• prc_pkaf(r,t,p,s) switch to set NCAP_PKCNT=NCAP_AF/1 as default. Default: no

Interpretation of the results:


Primal:
Dual: The dual value of the peaking equation describes the premium consumers have
to pay in addition to the commodity price (dual variable of EQ(l)_COMBAL)
during the peak timeslice. The premium equals
(1+COM_PKFLX)*FLO_PKCOI*RTCS_TSFR*(dual variable).

Equation:

EQ _ PEAK r ,t ,cg , s ∋ com_peak r, cg ∧ s ∈ com_pktsr, cg, s

 ∑1 /(1 + COM _ PKRSVr ,t ,c ) × COM _ IE r ,t ,c × ∑ 


c∈cg p∈(top r,p,c,'OUT' ∪rpc_ire r,p,c,'IMP' )∧ (NOT prc_pknor,p ) 
 
 if rp_pg r, p,c 
 
   NCAP _ PKCNTr ,v , p × COEF _ CPTr ,v ,t , p   
   
 if (NOT rpc_ire
r, p, c, 'IMP' ) G _ YRFR r , s × × (VAR _ NCAPr ,v , p + NCAP _ PASTI r ,v , p ) 
  ∑   
   v∈rtp_cptyrr, v, t,p
 PRC _ CAPACT × PRC _ ACTFLO   
  r ,v , p ,c 
 
   r, p 
 
 + 
  if rpc_ire 
 r, p, c, 'IMP' ∑ CAL _ IRE r ,v ,t , p,c,s,' IMP ' 
 v∈ rtp_vintyr r, v, t, p 

 else 
 
 ∑ CAL _ FLOFLOr ,v ,t , p,c,s,'OUT ' × NCAP _ PKCNTr ,v , p 
  v∈rtp_vintyrr, v, t, p 
  + 
 
 ∑ CAL _ IREr ,v ,t , p,c,s,' IMP ' 
 
  v∈rtp_vintyrr,v,t,p
 
 
 

224

∑ (1 + COM _ PKFLX
c∈cg
r ,t , c , s )×



 ∑ CAL _ FLOFLOr,v,t , p,c,s,'OUT ' × FLO _ PKCOI r,t , p,c,s  
 
v∈rtp_vintyrr,v,t,p
   
  +  
  ∑ ∑ CAL _ IREr,v,t , p,c,s,' EXP' × FLO _ PKCOI r,t , p,c,s  
  p∈rpc_ire r,p,c,'EXP' v∈rtp_vintyrr,v,t,p  
   
 +  
     
    
    NCAP _ COM r ,v , p ,c ,' IN ' × COEF _ CPTr ,v ,t , p ×   
 


+
  ∑  VAR _ NCAPr ,v , p ∋ v ∈ MILESTONYR +   × G _ YRFRr , s  + 
    
 p∈(topr,p,c,'IN' ∪rpc_ire r,p,c,'EXP' )∧(NOT prc_pknor,p )  if ( rtp_cptyrr,v,t,p r,v,p,c   NCAP _ PASTI r ,v , p ∋ v ∈ PASTYEAR    
( p , v )∈rpc_capflo

  ∧    
  
 NCAP _ COM r ,v , p ,c ,' IN ' ) 
  
   
   
    COEF _ ICOM r ,v ,t , p ,c ×   
      
 +  ∑
, v )∈rpc_capflor, v,p,c  
 VAR _ NCAPr ,v , p ∋ v ∈ MILESTONYR +   × G _ YRFRr , s  
 
  if( pCOEF _ ICOM r ,v ,t , p ,c   NCAP _ PASTI r , v , p ∋ v ∈ PASTYEAR   
  
     
  
   
 
 
 
 Case 
 
 Case COM _ DM c 
 COM _ PROJ c × COM _ FRc , s 
 
 COM _ STEPl COM _ STEPl 
 − ∑VAR _ ELAST j ,l , s (∀l = lo) + ∑VAR _ ELAST j ,l , s (∀l = up ) 
 j =1 j =1 
 
 
Otherwise 
 0 
 
 Endcase 

225
5.3.19 Equation: EQ_PTRANS

Indices: region (r); year (y); process (p); commodity group1 (cg1); commodity
group2 (cg2) time-slice (s)

Type: "="

Related variables: VAR_FLO; VAR_ACT

Related equations: EQ(l)_COMBAL; EQ(l)_INSHR; EQ(l)_OUTSHR;


EQ_ACTFLO

Purpose: Allows specifying an equality relationship between certain inputs and


certain outputs of a process e.g. efficiencies at the flow level, or the modeling of
emissions that are tied to the inputs. It is generated for each process for each time period
and each time-slice in each region.

Remarks:
• Internal set rps_s1(r,p,s): The finer of (set of time slices of the most finely divided
member of the the commodities within the shadow primary group (commodities
being not part of primary commodity group and are on the process site opposite to the
primary commodity group) and the process timeslice level (prc_tsl)).
• The flow variables of the commodities within the primary commodity group are
modelled on the process level (prc_tsl). All other flow variables on the timeslice
level of rps_s1.
• The internal parameter COEF_PTRAN(r,v,t,p,cg1,c,cg2) is the coefficient of the flow
variables of commodity c belonging to the commodity group cg2. While
FLO_FUNC(r,v,p,cg1,cg2,s) establishes a relationship between the two commodity
groups cg1 and cg2, FLO_SUM(r,v,p,cg1,c,cg2,s) can be in addition specified as
multiplier for the flow variables of c in cg2.
COEF_PTRAN is derived from the user specified FLO_FUNC and FLO_SUM
parameters based on the following rules:
o If FLO_FUNC is given between cg1 and cg2 but no FLO_SUM for the
commodities c in cg2, it is assumed that the FLO_SUMs are 1.
o If FLO_SUM is specified but no FLO_FUNC, the missing FLO_FUNC is set to 1.
o If FLO_SUM(r,v,p,cg1,c,cg2) and FLO_FUNC(r,v,p,cg2,cg1,s) are specified,
the reciprocal of FLO_FUNC is taken to calculate COEF_PTRAN.
• FLO_SUMs can only be specified for the flows within one commodity group cg1 or
cg2 of EQ_PTRANS between these two commodity groups, but not for both
commodity groups at the same time.
• By specifying a SHAPE curve through the parameter FLO_FUNCX(r,v,p,cg1,cg2)
the efficiencies FLO_FUNC and FLO_SUM can be described as function of the age
of the installation. The internal parameter RTP_FFCX contains the average SHAPE
multiplier for the relevant years in a period (those years in which the installed
capacity exists).

226
Interpretation of the results:
Primal: The primal value of the transformation is usually zero.
Dual: Due to the flexibility of the transformation equation the interpretation of its dual
value depends on the specific case. For a simple case, a process with one input
flow c1 and one output flow c2 being linked by an efficiency
FLO_FUNC(c1,c2), the dual variable, which is being defined as the cost change
when the RHS is increased by one unit, can be interpreted as cost change when
the efficiency of the process is increased by 1/VAR_FLO(r,v,t,p,c1,s):

VAR _ FLOr ,v ,t , p ,c 2, s − FLO _ FUNC r ,v ,t , p ,c1,c 2, s × VAR _ FLOr ,v ,t , p ,c1, s = 1


VAR _ FLOr ,v ,t , p ,c 2, s − FLO _ FUNC r ,v ,t , p ,c1,c 2, s × VAR _ FLOr ,v ,t , p ,c1, s − 1 = 0
 1 
VAR _ FLOr ,v ,t , p ,c 2, s −  FLO _ FUNC r ,v ,t , p ,c1,c 2, s +  × VAR _ FLOr ,v ,t , p ,c1, s = 0
 VAR _ FLOr ,v ,t , p ,c1, s 
 
.

Equation:

EQ _ PTRANSr , v ,t , p , cg1, cg 2, s1 ∋ ( r, v, t , p ) ∈ (rp_flor, p ∩ rtp_vintyrr, v, t, p ) ∧ s1∈ rps_s1r, p, s1


  FLO _ SUM r ,t , p , cg1, c , cg 2, s 2 ∨ 
∧  s 2 ∈ ts_mapr, s2, s1 ∧  

  FLO _ FUNC r , t , p , cg 1, cg 2 , s 2 ∧ NOT (FLO _ SUM r , t , p , cg 1, c , cg 2 , s 2 ∨ FLO _ SUM r , t , p , cg 2 , c , cg 1, s 2 )


∑ (
∑VAR _ FLO
)
c∈cg 2 s∈ ts_mapr,s,s1 ∩ rtpcs_varf r, t,p,c,s
r ,v ,t , p ,c , s × RTCS _ TSFRr ,t ,c , s1, s =

∑ ( ∑ (COEF _) PTRAN × VAR _ FLO


c∈cg 1 s∈ ts_mapr,s,s1 ∩ rtpcs_varf r, t,p,c,s
r , v , t , p , cg 1, c , cg 2 , s r ,v ,t , p ,c , s × RTCS _ TSFRr ,t ,c , s1, s )

× (1 + RTP _ FFCX × (if prc_vint ))


r , v , t , p , cg 1, cg 2 r, p

227
COEF _ PTRAN r ,v,t , p,cg1,c,cg 2,ts ts ∈ rpcs_varc r, p,c, ts
=
 
1 × (if ts_mapr, ts,s ) + ( )
G _ YRFRr ,ts
∑  G _ YRFRr , s
× if rs_below r, s, ts


s∈prc_ts r,p,s  
 if FLO _ FUNCr ,v,t , p,cg1,cg 2, s 
 × (1 × (if NOT FLO _ SUM r ,v ,t , p,cg1,c,cg 2, s ) + FLO _ SUM r ,v ,t , p,cg1,c,cg 2, s )
FLO _ FUNCr ,v,t , p,cg1,cg 2, s
× 
FLO _ FUNCr ,v,t , p,cg 2,cg1, s × (if FLO _ SUM r ,v,t , p,cg1,c,cg 2, s )  ∨ FLO _ FUNCr ,v ,t , p,cg 2,cg1, s 

Calculation of SHAPE parameter RTP_FFCX

Case A: Lifetime minus construction time is longer than the construction period
PRC _ YMIN r , v , p = Bv + NCAP _ ILEDr , v , p
PRC _ YMAX r , v , p = PRC _ YMIN r , v , p + NCAP _ TLIFEr , v , p − 1

RTP _ FFCX r , v ,t , p , cg1, c , cg 2 ∋ FLO _ FUNCX r , v , p , cg1, cg 2


=

( [
∑ SHAPE (FLO ]_) FUNCX r , v , p , cg 1, cg 2 ,1 + MIN ( y , PRC _ YMAX r , v , p ) − PRC _ YMIN r , v , p )

y∈ periodyrt, y ∧ y ≤ MAX ( B ( t ), PRC _ YMAX r ,v , p )
−1
v∈rtp_vintyrr, v, t, p MAX [1, MIN ( E (t ), PRC _ YMAX r , v , p ) − MAX ( B (t ), PRC _ YMIN r , v , p ) + 1]

Case B: Lifetime minus construction time is shorter than the construction period =>
Investment is repeated in construction period

PRC _ YMAX r , v , p = NCAP _ TLIFEr , v , p − 1

RTP _ FFCX r , v ,t , p , cg1, c , cg 2 ∋ FLO _ FUNCX r , v , p , cg1, cg 2


=
SHAPE (FLO _ FUNCX r , v , p , cg1, cg 2 , PRC _ YMAX r , v , p )

v∈rtp_vintyrr, v, t, p PRC _ YMAX r , v , p
−1

228
5.3.20 Equation: EQ_STGTSS/IPS

Indices: region (r); year (y); process (p); time-slice (s)

Type: "="

Related variables: VAR_FLO; VAR_ACT

Related equations: EQ(l)_COMBAL; EQ(l)_CAPACT; EQ(l)_STGIN/OUT

Purpose
• The model allows two kinds of storage: inter-period storage (IPS), and storage
across time-slices (or time-slice storage TSS). A special type of the TSS storage is
a night-storage device which may have an input commodity being different from
its output commodity. The input and output commodity of a night-storage device
are being given by the topology set top.
• Storage processes are special, as they have the same commodity as input and
output. Also, all other processes transform energy within their time-slices and
time periods. Since topology (with the exception of night-storage devices) does
not determine in/out, different variables have to be used for this purpose.
Similarly, since the transformation is special, EQ_PTRANS is replaced by new
equations for the two types of storage.

Sets:
• prc_stgips(r,p,c): The set of inter-period storage processes. They are forced to
operate annually.
• prc_stgtss(r,p,c): The set of time-slice storage processes. A storage process can
operate only at one particular time slice level.
• prc_nstts(r,p,s): The set contains the allowed charging timeslices for a night-storage
device.

Variables:
• VAR_SIN(r,v,t,p,c,s) - the average in flow to a process built in period v, during
time-slice s, during each year of period t. This variable would appear on the
consumption side of the balance equation, without any coefficients.
• VAR_SOUT(r,v,t,p,c,s) - the average out flow from a process built in period v,
during time-slice s, during each year of period t. This variable would appear on the
supply side of the balance equation, multiplied by STG_EFF and COM_IE.
• VAR_ACT(r,v,t,p,s) - the energy stored in a storage process at the beginning of
time-slice s (for a timeslice storage)or end of period t (for an interperiod storage).
Note that this is a special interpretation of 'activity', to represent 'storage level.'
Therefore, EQ_ACTFLO will not be generated for storage processes.
• In EQ_STGIPS only annual flows are allowed; the timeslice s index is set to
ANNUAL in this case.

229
Equations:
• EQ_STGTSS(r,t,p,s) - transforms input to output for the timeslice storage processes.
• EQ_STGIPS(r,t,p) - transforms input to output for the interperiod storage processes.

Parameters:
• STG_LOSS(r,v,p,s) - annual energy loss from a storage technology, per unit of
(average) energy stored.
• STG_CHRG(r,t,p,s) - exogenous charging of a storage technology. For timeslice
storage this parameter can be specified for each period, while for interperiod storage
this parameter can only be specified for the first period, to describe the initial content
of the storage.

5.3.20.1 EQ_SRGTSS: Storage between timeslices (including night-storage devices):

EQ _ STGTSS r ,t , p , s ∀(r , p, s ) ∈ (prc_stgtssr,p,c ∨ prc_mapr,'NST',p )∩ prc_tsr,p,s

∑VAR _ ACT r ,v ,t , p , s × PRC _ ACTFLOr , v , p , cg × (cg is the primary commodtiy group ) =


v∈rtp_vintyrr, v, t, p

VAR _ ACTr , v ,t , p , s −1 × PRC _ ACTFLOr , v , p , cg × (cg is the primary commodtiy group ) 


 
 
if p is a night - storage device : 
 
 + VAR _ SIN r , v ,t , p , c , s −1 × (if s − 1 ∈ prc_nsttsr,p,s −1 ∧ topr,p,c,'IN' ) − VAR _ SOUTr , v ,t , p , com, s −1 × (if topr,p,c,'OUT' )
if p is not a night - storage device 
 
∑  + VAR _ SINr ,v,t , p,c, s −1 − VAR _ SOUTr ,v,t , p,c, s −1
v∈rtp_vintyrr, v, t, p

 
 
  VAR _ ACT  
  r , v , t , p , s + VAR _ ACTr , v , t , p , s −1  
 
−  2 
  × STG _ LOSS × G _ YRFR 
  
r , v , p , s r , s

 × PRC _ ACTFLOr , v , p , cg × (cg is the primary commodtiy group ) 

+ STG _ CHRGr ,t , p , s −1

230
5.3.20.2 EQ_STGIPS: Storage between periods

EQ _ STGIPS r ,t , p ∀(r , t , p ) ∈ prc_stgips r,p,c ∩ rtp r,t,p

∑VAR _ ACT r , v ,t , p ,' ANNUAL ' × PRC _ ACTFLOr ,v , p ,c × (cg is the primary commodtiy group ) =
v∈rtp_vintyrr, v, t, p

VAR _ ACTr ,v ,t −1, p ,' ANNUAL ' × PRC _ ACTFLOr ,v , p ,c × (cg is the primary commodtiy group )
∑  
× (1 − STG _ LOSS r ,v , p ,' ANNUAL ' )
D (t )
v∈rtp_vintyrr, v, t −1, p  
 
+ ∑  ∑ (VAR _ SIN r ,v ,t , p ,c ,' ANNUAL ' − VAR _ SOUTr ,v ,t , p ,c ,' ANNUAL ' ) × (1 − STG _ LOSS r ,v , p ,' ANNUAL ' )
v∈rtp_vintyrr, v, t, p 
( E ( t ) − y + 0.5 )

 y∈ periodyrt, y 

+ STG _ CHRGr ,t , p ,' ANNUAL ' ( when ORD(t ) = 1)

231
5.3.21 Equations: EQ(l)_STGIN / EQ(l)_STGOUT
Indices: region (r), period (t), process (p), commodity (c), timeslice (s)
Type: Any type, as determined by the bound index bd of STGIN/OUT_BND:
• l = ’G’ for bd = ‘LO’ (lower bound) yields ≥ .
• l = ’E’ for bd = ‘FX’ (fixed bound) yields = .
• l = ’L’ for bd = ‘UP’ (upper bound) yields ≤ .
Related variables: VAR_SIN; VAR_SOUT
Related equations: EQ_STGTSS; EQ_STGIPS
Purpose: Bound on the input/output flow of a storage process of commodity (c) for a
particular process (p) in period (t) and timeslice (s).
Remarks:
• The constraint bounds the flows in a specific period (t) irrespectively of the
vintage years of the process capacity.
• The constraint is generated, if one of the following conditions is true:
o Process (p) is vintaged, or
o the timeslice resolution of the flow variables (VAR_SIN/OUT) are below
the timeslice (s) of the bound parameter.
In the other cases, the bound can be directly applied to the flow variable
(VAR_SIN/SOUT), so that no extra equation is needed.
• The timeslice level (s) of the bound must be at or higher than the timeslice level at
which the storage operates.
Interpretation of the results:
Primal: If the primal value equals the bound parameter, the constraint is binding.
Dual: The dual value describes for a lower/upper bound the cost increase/decrease in
the objective function, if the bound is increased by one unit. It may also be
interpreted as subsidy/tax needed to reach the given bound value.
Equation:

(r , t , p, c ) ∈ rtpcr,t,p,c ∧ STGIN / OUT _ BNDr ,t , p ,c ,s ,bd ∧ s ∈ rps_prctsr,p,s ∧ 


 
∋ 
EQ(l ) _ STGIN / OUTr ,t , p ,c ,s

(prc_vint r,p ∨ (NOT prc_ts r,p,s )) 

(
∑ )
∑VAR _ SIN / SOUT
ts∈ prc_tsr,p,ts ∧ts_mapr,s,ts v∈rtp_vintyrr, v,t,p
r ,v ,t , p ,c ,ts
All timeslices s at or
above the timeslice level
of the process (prc_tsl).
(≤ / ≥ / = ) STGIN / OUT _ BNDr ,t , p ,c ,s ,bd

where the equation sign is indicated by equation index l based on the bound type bd.

232
5.3.22 User Constraints

Indexes: region (r), time period (t), time slice (s), user constraint (uc_n)

Type: Any type, as determined by the bound index bd of


UC _ RHS ( R)(T )( s )( r ),uc _ n , (t ), ( s ),bd :
• l = ’G’ for bd = ‘LO’ (lower bound) yields ≥ .
• l = ’E’ for bd = ‘FX’ (fixed bound) yields = .
• l = ’L’ for bd = ‘UP’ (upper bound) yields ≤ .

Related variables: VAR_ACT; VAR_CAP; VAR_FLO; VAR_NCAP;


VAR_COMPRD; VAR_COMCON

Related equations: EQ(l)_COMBAL; EQ(l)_CPT

Purpose: The user constraints in TIMES provide a modeler with a flexible framework to
add case-study specific constraints to the standard equation set embedded in TIMES.
With the help of the user constraints virtually any possible linear relationship between
variables in TIMES can be formulated. Examples of user constraints are quotas for
renewables in electricity generation or primary energy consumption, GHG reduction
targets, absolute bounds on the minimum amount of electricity generated by various
biomass technologies, etc.

Three types of user constraints can be distinguished:


• LHS (left hand side) user constraints,
• Dynamic user constraints, and
• Growth constraints.

In the following three subsections, the different types of user constraints are shortly
presented. Their mathematical formulations are then presented in a new section.

LHS user constraints

The so-called LHS user constraints have the following main structure:

UC _ RHS (R )(T )(S )( r ),uc _ n ,(t ),( s ),bd ∧ (r ∈ uc_r_eachr,uc_n )
EQ(l ) _ UC (R )(T )(S )( r ),uc _ n ,(t ),( s ) ∀ 
∧ (t ∈ uc_t_eachr,uc_n,t ) ∧ (s ∈ uc_ts_eachr,uc_n,s ) 

   
 ∑  ∑  ∑  LHS r ,t ,s {= / ≥ / ≤} UC _ RHS (R )(T )(S )( r ),uc _ n ,(t ),( s ),bd
 r∈uc_r_sum  t∈uc_t_sum  s∈uc_ts_sum 
 r,uc_n  r,uc_n, t  r,uc_n,s 

233
To identify the user constraint, the modeller has to give it a unique name uc_n. The
LHS expression LHS r ,t , s consists of the sum of various TIMES variables (VAR_ACT,
VAR_FLO, VAR_COMPRD, VAR_COMNET, VAR_NCAP, VAR_CAP), multiplied
by corresponding coefficients (UC_ACT, UC_FLO, UC_COMPRD, UC_COMCON,
UC_NCAP, UC_CAP). The coefficients are input data given by the modeller and serve
thus also as an indicator of which variables are being components of the user constraint.

With respect to region r, time period t and timeslice s, the user constraint is either
specified for specific regions, periods or timeslices or the expression within the user
constraint is summed over subsets of regions, periods and timeslices. In the first case, the
regions, periods or timeslices, for which the user constraint should be generated, are
given by the sets uc_r_each, uc_t_each or uc_ts_each, while in the latter case,
summation sets are specified by the sets uc_r_sum, uc_t_sum and uc_ts_sum. The
corresponding sets uc_x_each/sum are exclusive, so that for example, if uc_t_each has
been specified, the set uc_t_sum cannot be specified and vice versa. By choosing
uc_x_each/sum also the name and the index domain of the user constraint are specified,
e.g. if uc_r_each, uc_t_each and uc_ts_sum are given, the user constraint has the name
and index domain EQ(l ) _ UCRTr ,uc _ n ,t . It is generated for each region and period
specified by uc_r_each and uc_t_each, respectively, and is summing within the user
constraint over the timeslices given in uc_ts_each. The name of the RHS constraint
depends in the same way on the choice of uc_x_each/sum. In the previous example, the
RHS constant has the name and index domain UC _ RHSRTr ,uc _ n ,t ,bd . The knowledge of
these naming rules is important, since the modeller has to give the correct RHS
parameter names depending on the choice of uc_x_each/sum when defining a user
constraint.

Since for each of the three dimensions (region, period, timeslice), two options (EACH
or SUM) exist, this would result in 8 possible combinations of user constraint equations
(Figure 5.6). However, the combinations EQ(l)_UCS and EQ(l)_UCRS, which would
lead to a constraint being generated for specific timeslices while summing over time
periods at the same time, have been considered unrealistic, so that 6 variants remain. It
should be noted that the sets uc_r_each/sum, uc_t_each/sum and uc_ts_each/sum can
contain an arbitrary combination of elements, e.g. the periods specified in
uc_t_each/sum do not have to be consecutive.

234
User constraint
uc_n

Summing over
Each Region
regions

Summing over Summing over


Each Period Each Period
periods periods
Each timeslice

Each timeslice

Each timeslice

Each timeslice
Summing over

Summing over

Summing over

Summing over
timeslices

timeslices

timeslices

timeslices
EQl_UCRTS

_UCRS
EQl_UCRS
EQl_UCRT

EQl_UCTS
EQl_UCR

_UCS
EQl_UCS
EQl_UCT

EQl_UC
EQl

EQl
Figure 5.6: The allowed combinations of region, period and timeslice for user
constraints.

The RHS (right hand side) of this category of user constraint consists of a constant
UC _ RHS (R )(T )(S )( r ),uc _ n , (t ), ( s ),bd which is provided by the modeller. The RHS constant
also defines the equation type of the user constraint. If the RHS constant has the index
FX, the user constraint is generated as strict equality (=). If the RHS index is LO
(respectively UP), the constraint has ≥ (respectively ≤ ) inequality sign. It should be
noted, that a RHS user constraint is only generated when a RHS constant is specified (this
feature may be used to easily turn-on/off user constraints between different scenarios).

In addition to the coefficients UC_ACT, UC_FLO, etc. also some model input
attributes may be used as coefficient for the variables in a user constraint. The model
attribute being used as coefficient in a user constraint is specified by the set
UC _ ATTRr ,uc _ n ,' LHS ',VAR , ATTR with the indicator VAR for the variable (ACT, FLO, NCAP,
CAP) and the index ATTR representing the attribute being used (ACT_BND,
FLO_COST, FLO_DELIV, FLO_TAX, FLO_SUB, NCAP_COST, NCAP_ISUB,
NCAP_ITAX, CAP_BND).

235
Instead of defining different equality types of user constraints depending on the bound
type of UC _ RHS (R )(T )(S )( r ),uc _ n , (t ), ( s ),bd an alternative formulation can be used in
TIMES. In this formulation a variable VAR _ UC (R )(T )(S )( r ),uc _ n , (t ), ( s ) is created that is set
equal to the LHS expression. The RHS bounds are then applied to these variables.

UC _ RHS (R )(T )(S )( r ),uc _ n ,(t ),( s ),bd ∧ (r ∈ uc_r_eachr,uc_n )
EQE _ UC (R )(T )(S )( r ),uc _ n ,(t ),( s ) ∀ 
∧ (t ∈ uc_t_eachr,uc_n,t ) ∧ (s ∈ uc_ts_eachr,uc_n,s ) 

   
 LHS r ,t ,s = VAR _ UC (R )(T )(S )( r ),uc _ n ,(t ),( s )
 r∈uc _ r∑ ∑ ∑
  
  
 _ sumr ,uc _ n  t∈uc _ t _ sumr ,uc _ n ,t  s∈uc _ ts _ sumr ,uc _ n , s 

VAR _ UC (R )(T )(S ).LO( r ),uc _ n ,(t ),( s ) = UC _ RHS (R )(T )(S )( r ),uc _ n ,(t ),( s ),'LO '
VAR _ UC (R )(T )(S ).UP( r ),uc _ n ,(t ),( s ) = UC _ RHS (R )(T )(S )( r ),uc _ n ,(t ),( s ),'UP '
VAR _ UC (R )(T )(S ).FX ( r ),uc _ n ,(t ),( s ) = UC _ RHS (R )(T )(S )( r ),uc _ n ,(t ),( s ),'FX '

The alternative formulation is created when the dollar control parameter VAR_UC
(see Part III for the use of dollar control parameters) is set to YES by the modeller, while
in the default case the first formulation is used.

236
Dynamic user constraints

Dynamic user constraints establish a relationship between two consecutive periods.


The LHS expression LHS r ,t , s is generated for period t, whereas the RHS expression term
RHSr ,t +1, s corresponds to the period t+1.

UC _ RHS (R )T (S )( r ),uc _ n,t , ( s ),bd ∧ (r ∈ uc_r_eachr,uc_n )


EQ(l ) _ UC (R )SU (S )( r ),uc _ n ,t , ( s ) ∋  
∧ (t ∈ uc_t_succr,uc_n, t ) ∧ (s ∈ uc_ts_eachr,uc_n,s ) 

     
 r∈uc _ r∑
 


 ∑ 

LHS r ,t , s {= / ≥ / ≤} 
 ∑ 


 ∑  RHSr ,t +1, s + UC _ RHS (R )T (S )( r ),uc _ n,t , ( s ),bd

 _ sum r ,uc _ n  s∈uc _ ts _ sum r ,uc _ n , s   r∈uc _ r _ sumr ,uc _ n  s∈uc _ ts _ sumr ,uc _ n ,s 

To build a dynamic user constraint between the periods t and t+1, the modeller
identifies the desired set of time periods that will be used as first periods in the pairs (t,
t+1). This set is named uc_t_succ (note that the sets uc_t_sum and uc_t_each are not
used in the context of dynamic user constraints, and are reserved for the LHS user
constraints described in the previous section). Only four combinations with respect to the
region and timeslice domain are possible:

• EQ(l)_UCSU: dynamic user constraint summing r over uc_r_sum and s over


uc_ts_sum,
• EQ(l)_UCRSU: dynamic user constraint being generated for each region
uc_r_each and summing s over uc_ts_sum,
• EQ(l)_UCRSUS: dynamic user constraint being generated for each region
uc_r_each and timeslice uc_ts_each and
• EQ(l)_UCSUS: dynamic user constraint summing r over uc_r_sum and being
generated for each timeslice s in set uc_ts_each.

The coefficients UC_ACT, UC_FLO, UC_IRE, UC_COMCON, UC_COMPRD,


UC_NCAP and UC_CAP have an index SIDE, which can be either LHS or RHS, to
identify on which side of the user constraint the corresponding variables should appear.
The LHS index corresponds always to the period t, while the RHS index is related to the
t+1 term.

As for LHS user constraints, setting the dollar control parameter VAR_UC to YES
yields a strict equality type of dynamic user constraint (EQE_UCSU, EQE_UCRSU,
EQE_UCRSUS, EQE_UCSUS) with the RHS constant replaced by a user constraint
variable (VAR_UCSU, VAR_UCRSU, VAR_UCRSUS, VAR_UCSUS). The bound
given by the RHS constant is then applied to the user constraint variable.

237
Growth constraints

Growth (or decay) constraints are a special type of dynamic constraints. A growth
constraint may for example express that the capacity increase between two periods is
limited by an annual growth rate. So, growth constraints relate variables in one period to
the ones in the previous or following period as in dynamic constraints described in the
previous section. In growth constraints, however, in addition some of the variable
coefficients UC_ACT, UC_FLO, UC_IRE, UC_COMCON, UC_COMPRD, UC_NCAP,
UC_CAP can represent annual growth (or decay) rates 40 by specifying the set
UC _ ATTRr ,uc _ n ,' LHS ',VAR , ATTR with the index ATTR being set to GROWTH. This will cause
the coefficient of the corresponding variable being interpreted as an annual growth rate. If
for example the input information UC _ ATTR' REG1','G _ 1',' LHS ','CAP ','GROWTH ' is given for the
user constraint G_1, the coefficient UC _ CAP'G _ 1',' LHS ',' REG1',' LHS ',t , P of the capacity variable
of technology p will be interpreted as annual growth rate and the final coefficient of the
variable VAR_CAP in the user constraint will be calculated in the following way:

(UC _ CAP 'G _ 1',' LHS ',' REG1',' LHS ',T , P )


M ( t +1) − M ( t )
.

With the help of the input set UC_ATTR, growth coefficients can be defined for
variables in LHS expression (as in the example) or for variables in RHS expression. If a
growth rate is defined for variables on the LHS, the exponent is M(t+1)-M(t), whereas for
RHS variables the exponent is equal to M(t)-M(t+1).

If at least one growth coefficient is defined for a LHS variable, the structure of the
dynamic constraint is similar to the dynamic constraints described in the previous section.
In these cases, growth constraints are generated for the period pairs t and t+1 for all
periods t of the model horizon with the exception of the last period. These types of
growth constraint are called of type (t,t+1).

If, however, all growth coefficients are specified for RHS variables, the growth
constraints will have the following form:

UC _ RHS (R )T (S )( r ),uc _ n ,t ,( s ),bd ∧ (r ∈ uc_r_eachr,uc_n )


EQ(l ) _ UC (R )T (S )( r ),uc _ n ,t ,( s ) ∀ 
∧ (t ∈ uc_t_succr,uc_n,t ) ∧ (s ∈ uc_ts_eachr,uc_n,s ) 

     
 ∑  ∑  LHS r ,t ,s {= / ≥ / ≤}  ∑  ∑  RHS r ,t −1,s +
 r∈uc_r_sum  s∈uc_ts_sum    
 r,uc_n  r,uc_n,s   R∈UC _ R _ SUM  S∈UC _ TS _ SUM 
UC _ RHS (R )T (S )( r ),uc _ n ,t ,( s ),bd

40
If the coefficient UC_ACT, UC_FLO, etc. is greater than one, it represents an
annual growth rate, while a coefficient smaller than one describes an annual decay rate.

238
The growth constraints are now generated for the period pairs t-1 and t for all periods
of the model horizon. The exponent in the calculation of the growth coefficients on the
RHS is in these cases equal to the term M(t)-M(t-1). In this alternative RHS formulation,
it is possible to introduce boundary conditions, that are usually needed for the first period.
These growth constraints are called of type (t-1,t).

The use of the growth constraint is illustrated by the following example.

Example:

The annual capacity increase of technology E01 between two periods should not
exceed 2% for model covering the three ten-year periods 1990, 2000 and 2010. So one
wants to create user constraints expressing:

1.0210 × VAR _ CAP' REG1', '1990 ', ' E 01' + 1 ≥ VAR _ CAP' REG1', '2000 ', ' E 01'
1.0210 × VAR _ CAP' REG1', '2000 ', ' E 01' + 1 ≥ VAR _ CAP' REG1', '2010 ', ' E 01'

The summand 1 one the LHS expresses an initial capacity value, so that capacity
growth can start from this starting point, e.g. if VAR _ CAP'REG1','1990 ','E 01' is zero, the model
can invest at most 1 capacity unit in the year 2000: 1 ≥ VAR _ CAP'REG1','2000 ','E 01' .
Since growth constraints should be generated for the first two periods, but not the last
one, the growth constraint should be of type (t,t+1). The specification of the growth
constraint called ‘G_1’ in GAMS looks like:

SET UC_N
/
G_1
/

SET UC_R_REACH
/
REG1.G_1
/

SET UC_TS_REACH
/
REG1.G_1.ANNUAL
/

* Specify growth of capacity on LHS


SET UC_ATTR
/
REG1.G_1.LHS.CAP.GROWTH
/

* Specify growth coefficient for E01 on LHS (period 1) and coefficient


* for capacity on RHS (period t+1)
PARAMETER UC_CAP
/
* on LHS
G1.LHS.REG1.1990.E01 1.02

239
G1.LHS.REG1.2000.E01 1.02
* on RHS
G1.RHS.REG1.2000.E01 1
G1.RHS.REG1.2010.E01 1
/

* Specify RHS constant


PARAMETER UC_RHSRTS
/
REG1.G_1.1990.ANNUAL.LO -1
REG1.G_1.2000.ANNUAL.LO -1
/;

One should note that the period index used for the UC_CAP on the LHS is related to
the period t, while the period index on the RHS is related to the period t+1. The RHS
UC_RHSRTS constant is provided for the time period t of the LHS.
Since a growth coefficient is specified for the LHS, the user constraint is
automatically identified as a dynamic growth constraint, so that the set uc_t_succ does
not need to be provided by the user. The constraint will be generated for all periods for
which the RHS parameter UC_RHSRTS is given.

In the following section, we give the full descriptions of the available user constraints
in each category, along with a reminder of the corresponding variables.

Mathematical descriptions of user constraints

List of user constraints and variables

We first show the complete list of user constraints in the three categories.

The following types of LHS user constraints exist:


• EQ(l ) _ UCuc _ n : user constraint summing over regions uc_r_sum, periods
uc_t_sum and timeslices uc_ts_sum,
• EQ(l ) _ UCRr ,uc _ n : user constraint generated for regions uc_r_each and
summing over periods uc_t_sum and timeslices uc_ts_sum,
• EQ(l ) _ UCTuc _ n ,t : user constraint generated for periods uc_t_each and
summing over regions uc_r_sum and timeslices uc_ts_sum,
• EQ(l ) _ UCRTr ,uc _ n ,t : user constraint generated for regions uc_r_each and periods
uc_t_each and summing over timeslices uc_ts_sum,
• EQ(l ) _ UCTS uc _ n ,t , s : user constraint generated for periods uc_t_each, timeslices
uc_ts_each and summing over regions uc_r_sum,
• EQ(l ) _ UCRTS r ,uc _ n ,t , s : user constraint generated for regions uc_r_each, periods
uc_t_each and timeslices uc_ts_each.

The placeholder l reflects the equation type of the user constraint (l=E, G or L)
corresponding to the bound type of the RHS constant. In case the dollar control parameter

240
VAR_UC is set to YES, the user constraints are always strict equalities (l=E) with the
RHS constants replaced by the following user constraint variables:

• VAR _ UCuc _ n : user constraint variable for EQE_UC,


• VAR _ UCRr ,uc _ n : user constraint variable for EQE_UCR,
• VAR _ UCTuc _ n ,t : user constraint variable for EQE_UCT,
• VAR _ UCRTr ,uc _ n ,t : user constraint variable for EQE_UCRT,
• VAR _ UCTSuc _ n ,t ,s : user constraint variable for EQE_UCTS,
• VAR _ UCRTS r ,uc _ n ,t ,s : user constraint variable EQE_UCRTS.

The following types of dynamic user constraints and growth constraints exist:
• EQ(l ) _ UCSU uc _ n ,t : user constraint generated for periods uc_t_succ and
summing over regions uc_r_sum and timeslices
uc_ts_sum,
• EQ(l ) _ UCRSU r ,uc _ n ,t : user constraint generated for regions uc_r_each and periods
uc_t_succ and summing over timeslices uc_ts_sum,
• EQ(l ) _ UCSUS uc _ n ,t , s : user constraint generated for periods uc_t_succ, timeslices
uc_ts_each and summing over regions uc_r_sum,
• EQ(l ) _ UCRSUS r ,uc _ n ,t , s : user constraint generated for regions uc_r_each, periods
uc_t_succ and timeslices uc_ts_each.

The placeholder l reflects the equation type of the user constraint (l=E, G or L)
corresponding to the bound type of the RHS constant. In case the dollar control parameter
VAR_UC is set to YES, the user constraints are always strict equalities (l=E) with the
RHS constants replaced by the following user constraint variables:

• VAR _ UCSU uc _ n ,t : user constraint variable for EQE_UCSU,


• VAR _ UCRSU r ,uc _ n ,t : user constraint variable for EQE_UCRSU,
• VAR _ UCSUS uc _ n ,t ,s : user constraint variable for EQE_UCSUS,
• VAR _ UCRSUS r ,uc _ n ,t ,s : user constraint variable EQE_UCRSUS.

Sets and parameters related to user constraints

The following sets and parameters are related to the user constraint framework in
TIMES.

Sets

Internal sets:
• side : set having the two elements LHS and RHS (elements are fixed and not under
user control),

241
• uc_grptype : set having the elements ACT, FLO, IRE, COMCON, COMPRD, NCAP,
CAP used in the multi-dimensional set UC_ATTR (elements are fixed and not under
user control),
• uc_name : set having the following attribute names as elements: ACT_BNDUP,
ACT_BNDLO, ACT_BNDFX, ACT_COST, FLO_COST, FLO_DELIV, FLO_SUB,
FLO_TAX, NCAP_COST, NCAP_ISUB, NCAP_ITAX, CAP_BNDUP, CAP_BNDLO,
CAP_BNDFX and GROWTH used in the multi-dimensional set UC_ATTR (elements
are fixed and not under user control).

User-specified sets:
• uc_n : unique name of the user constraint,
• uc_r_eachr,uc_n : regions r for which the user constraint uc_n is generated,
• uc_r_sum r,uc_n : regions r being summed over in the user constraint uc_n,
• uc_r_eachr,uc_n : periods t for which the user constraint uc_n is generated,
• uc_t_sum r,uc_n, t : periods t being summed over in the user constraint uc_n,
• uc_ts_eachr,uc_n, ts : timeslices ts for which the user constraint uc_n is generated,
• uc_ts_sum r,uc_n, ts : timeslices ts being summed over in the user constraint uc_n,
• uc_attrr,uc_n, side, uc_grptype,uc_name : indicator that the attribute uc_name on the RHS or
LHS side of the user constraint uc_n as coefficient of
the variable given by uc_grptype.

If neither uc_r_each nor uc_r_sum are given, the default is set to all uc_r_each
containing all internal regions. In a similar fashion uc_t_each being set to all
milestoneyears is the default, if neither uc_t_each or uc_t_sum are specified. The default
for the timeslice dimension is uc_ts_each being set to all timeslices for which the RHS
constants UC_RHSRS or UC_RHSRTS are being specified.

Parameters

User-specified coefficients of variables:

• UC _ ACTuc _ n , side, r ,t , p , s : coefficient of the activity variable VAR _ ACTr ,v ,t , p , s in


the user constraint uc_n on the LHS or RHS side,
• UC _ FLOuc _ n , side, r ,t , p ,c , s : coefficient of the flow variable VAR _ FLOr ,v ,t , p ,c , s in
the user constraint uc_n on the LHS or RHS side,
• UC _ IREuc _ n , side, r ,t , p ,c , s ,ie : coefficient of the inter-regional exchange variable
VAR _ IRE r ,v ,t , p ,c , s ,ie in the user constraint uc_n on the
LHS or RHS side,
• UC _ COMCON uc _ n , side, r ,t ,c , s : coefficient of the commodity consumption variable
VAR _ COMCON r ,t ,c , s in the user constraint uc_n on the
LHS or RHS side,

242
• UC _ COMPRDuc _ n , side, r ,t ,c , s : coefficient of the net commodity production variable
VAR _ COMPRDr ,t ,c , s in the user constraint uc_n on the
LHS or RHS side,
• UC _ NCAPuc _ n , side, r ,t , p : coefficient of the investment variable VAR _ NCAPr ,t , p
in the user constraint uc_n on the LHS or RHS side,
• UC _ CAPuc _ n , side, r ,t , p : coefficient of the capacity variable VAR _ CAPr ,t , p in
the user constraint uc_n on the LHS or RHS side.

User-specified RHS constants:

• UC _ RHS uc _ n ,bd : RHS constant with bound type bd of the user constraint
EQl _ UCuc _ n of type l,
• UC _ RHSRr ,uc _ n ,bd : RHS constant with bound type bd of the user constraint
EQl _ UCRr ,uc _ n of type l,
• UC _ RHSTuc _ n ,t ,bd : RHS constant with bound type bd of the user constraint
EQl _ UCTuc _ n ,t of type l,
• UC _ RHSRTr ,uc _ n ,t ,bd : RHS constant with bound type bd of the user constraint
EQl _ UCRTr ,uc _ n ,t of type l,
• UC _ RHSTS uc _ n ,t , s ,bd : RHS constant with bound type bd of the user constraint
EQl _ UCTSuc _ n ,t , s of type l,
• UC _ RHSRTS r ,uc _ n ,t , s ,bd : RHS constant with bound type bd of the user constraint
EQl _ UCRTS r ,uc _ n ,t , s of type l.

243
Mathematical formulation of LHS user constraints

In the mathematical description of the different variants of LHS user constraints the
following placeholders are used for clarity reasons: ACTr ,t , p , s ,'LHS ' , FLOr ,t , p , s ,' LHS ' ,
IRE r ,t , p , s ,' LHS ' , COMPRDr ,t , s ,' LHS ' , COMCON r ,t , s ,' LHS ' , NCAPr ,t , p ,' LHS ' , CAPr ,t , p ,' LHS ' . For
example the placeholder ACTr ,t , p , s ,'LHS ' includes the part of the user constraint related to
the activity variable.

ACTr ,t , p , s , ' LHS '


=
  
  1 if ts is below s 
  
VAR _ ACTr , v ,t , p ,ts × UC _ ACTuc _ n , ' LHS ', r , v ,t , p ,ts ×  
  G _ YRFR( s ) 
  G _ YRFT (ts ) if ts is above s  
  
× 

v∈rtp_vintyrr, v,t,p
∑ 
ts∈prc_ts r,p,ts  ( ACT _ BNDr , t , p , ts , X ) if UC _ ATTRr , uc _ n , ' LHS ', ' ACT ', ' ACT _ BNDX ' is given


 
× 
  
  ∑ OBJ _ ACOSTr ,t , p , cur  if UC _ ATTRr ,uc _ n , ' LHS ', ' ACT ', ' ACT _ COST ' is given 
  cur∈rdcurr,cur  

 
 

244
FLOr ,t , p , s , ' LHS '
=
∑ ∑
( c , ts )∈rtpcs_varf r,t,p,c,ts v∈rtp_vintyrr, v,t,p

  1 if ts is below s 
  
VAR _ FLOr , v ,t , p , c ,ts × UC _ FLOuc _ n , ' LHS ', r , v ,t , p , c ,ts ×  
  RTCS _ TSFR if ts is above s 
  r , ts , s

× 
 
  OBJ _ FCOSTr ,t , p , c , ts , cur if UC _ ATTRr , uc _ n , ' LHS ', ' FLO ', ' FLO _ COST ' is given  
   
 +  
 

 OBJ _ FDELV
 if UC _ ATTRr , uc _ n , ' LHS ', ' FLO ', ' FLO _ DELIV ' is given  
r , t , p , c , ts , cur


∑ +  
cur∈rdcurr,cur   
  OBJ _ FSUBr ,t , p , c , ts , cur if UC _ ATTRr , uc _ n , ' LHS ', ' FLO ', ' FLO _ SUB ' is given  
   
 +  
  OBJ _ FTAX r , t , p , c , ts , cur if UC _ ATTRr , uc _ n , ' LHS ', ' FLO ', ' FLO _ TAX ' is given  
   

 

IREr , t , p , s , ' LHS '


VAR _ IREr , v , t , p , c , ts , ie × UC _ IREuc _ n , ' LHS ', r , v , t , p , c , ts , ie 
 
 
 
  1 if ts is below s  
= ∑
(c , ts )∈rtpcs_varf r,t,p,c,ts
∑ ∑
v∈rtp_vintyrr, v,t,p ie∈rpc_ire r,p,c,ie
× 

 
   
  RTCS _ TSFRr , ts , s if ts is above s  
 
 

COMPRDr , t , s , ' LHS '


VAR _ COMPRDr , t , c , ts × UC _ COMPRDuc _ n , ' LHS ', r , t , c , s 
 
 
 
  
 
  1 if ts is below s 
= ∑
(c , ts )∈rtcs_varc r,t,c,ts × 

 
  G _ YRFR( s )  
  if ts is above s  
  G _ YRFT (ts )  
 
 

245
COMCON r ,t , s , ' LHS '
VAR _ COMCON r ,t , c ,ts × UC _ COMCON uc _ n , ' LHS ', r ,t , c , s 
 
 
 
  
 
  1 if ts is below s 
= ∑
(c , ts )∈rtcs_varc r,t,c,ts × 

 
  G _ YRFR( s )  
  if ts is above s  
  G _ YRFT (ts )  
 
 

NCAPr ,t , p , ' LHS '


=
VAR _ NCAPr ,t , p × UC _ NCAPuc _ n , ' LHS ', r ,t , p
×

 ∑ OBJ _ ICOSTr ,t , p , cur if UC _ ATTRr ,uc _ n , ' LHS ', ' NCAP ', ' NCAP _ COST ' is given
 cur∈rdcur
 r,cur


∑ OBJ _ ISUB
cur ∈rdcurr,cur
r , t , p , cur if UC _ ATTRr ,uc _ n , ' LHS ', ' NCAP ', ' NCAP _ ISUB ' is given

+

∑ OBJ _ ITAX r ,t , p,cur if UC _ ATTRr ,uc _ n , ' LHS ', ' NCAP ', ' NCAP _ ITAX ' is given 

cur ∈rdcurr,cur 

CAPr ,t , p ,' LHS '


=
VAR _ CAPr ,t , p × UC _ CAPuc _ n ,' LHS ', r ,t , p
×
CAP _ BNDr ,t , p , X if UC _ ATTR r ,uc _ n ,' LHS ','CAP ','CAP _ BNDX ' is given

246
5.3.22.1 Equation: EQ(l)_UC / EQE_UC

Indices: user constraint (uc_n)

Related variables: VAR_FLO; VAR_NCAP; VAR_CAP; VAR_ACT;


VAR_COMPRD; VAR_COMCON; VAR_IRE

Purpose: The user constraint EQ(l)_UC is a user constraint, which is summing over
specified regions (uc_r_sum), periods (uc_t_sum) and timeslices (uc_ts_sum).

Equation:

EQ(l ) _ UCuc _ n ∋ UC _ RHSuc _ n ,bd ∧ uc_ts_sum r,uc_n, s ∧ uc_r_sum r,uc_n


∧ uc_t_sum r,uc_n, t

 ACTr ,t , p , s , ' LHS ' + FLOr ,t , p , s , ' LHS ' + IREr ,t , p , s , ' LHS ' 
∑ ∑ ∑ 

s∈uc_ts_sum  + COMCON r , t , s , ' LHS ' + COMPRDr , t , s , ' LHS '


r ∈uc_r_sum t ∈uc_t_sum 
+
∑ ∑ (NCAP
r ∈uc_r_sum t ∈uc_t_sum
r , t , p , ' LHS ' + CAPr ,t , p , ' LHS ' )

when control parameter VAR_UC is set to NO by the user or is missing:


{≤; =; ≥}
UC _ RHSuc _ n ,l

When control parameter VAR_UC=YES, the user constraint is created as strict


equality and the LHS is set equal to the variable VAR_UC. The bounds UC_RHS are
then applied to the variable VAR_UC.
=
VAR _ UCuc _ n

with
VAR _ UC.LOuc _ n = UC _ RHS uc _ n ,' LO '
VAR _ UC.UPuc _ n = UC _ RHSuc _ n ,'UP '
VAR _ UC.FX uc _ n = UC _ RHSuc _ n ,'FX '

247
5.3.22.2 Equation: EQ(l)_UCR / EQE_UCR

Indices: user constraint (uc_n), region (r)

Related variables: VAR_FLO; VAR_NCAP; VAR_CAP; VAR_ACT;


VAR_COMPRD; VAR_COMCON; VAR_IRE

Purpose: The user constraint EQ(l)_UCR is a user constraint, which is created for each
region of uc_r_each and is summing over periods (uc_t_sum) and timeslices
(uc_ts_sum).

Equation:

EQ(l ) _ UCRr ,uc _ n ∋ UC _ RHSRr ,uc _ n ,bd ∧ uc_ts_sum r,uc_n, s ∧ uc_r_eachr,uc_n


∧ uc_t_sum r,uc_n, t

 ACTr ,t , p , s , ' LHS ' + FLOr ,t , p , s , ' LHS ' + IREr ,t , p , s , ' LHS ' 
∑ ∑ 

s∈uc_ts_sum  + COMCON r , t , s , ' LHS ' + COMPRDr , t , s , ' LHS '


t ∈uc_t_sum 
+
∑ (NCAP
t ∈uc_t_sum
r , t , p , ' LHS ' + CAPr ,t , p , ' LHS ' )

when control parameter VAR_UC=NO:


{≤; =; ≥}
UC _ RHSRr ,uc _ n ,l

When control parameter VAR_UC=YES, the user constraint is created as strict


equality and the LHS is set equal to the variable VAR_UCR. The bounds UC_RHSR are
then applied to the variable VAR_UCR.
=
VAR _ UCRr ,uc _ n

with
VAR _ UCR.LOr ,uc _ n = UC _ RHSRr ,uc _ n ,' LO '
VAR _ UCR.UPr ,uc _ n = UC _ RHSRr ,uc _ n ,'UP '
VAR _ UCR.FX r ,uc _ n = UC _ RHSRr ,uc _ n ,' FX '

248
5.3.22.3 Equation: EQ(l)_UCT / EQE_UCT

Indices: user constraint (uc_n), period (t)

Related variables: VAR_FLO; VAR_NCAP; VAR_CAP; VAR_ACT;


VAR_COMPRD; VAR_COMCON; VAR_IRE

Purpose: The user constraint EQ(l)_UCT is a user constraint, which is created for each
period of uc_t_each and is summing over regions (uc_r_sum) and timeslices
(uc_ts_sum).

Equation:

EQ(l ) _ UCTuc _ n ,t ∋ UC _ RHSTuc _ n ,t ,bd ∧ uc_ts_sum r,uc_n, s ∧ uc_r_sum r,uc_n


∧ uc_t_eachr,uc_n, t

 ACTr ,t , p , s , ' LHS ' + FLOr ,t , p , s , ' LHS ' + IREr ,t , p , s , ' LHS ' 
∑ ∑ 

r ∈uc_r_sum s∈uc_ts_sum  + COMCON + COMPRD


r , t , s , ' LHS ' r , t , s , ' LHS ' 
+
∑ (NCAP
r ∈uc_r_sum
r , t , p , ' LHS ' + CAPr ,t , p , ' LHS ' )

when control parameter VAR_UC=NO:


{≤; =; ≥}
UC _ RHSTuc _ n ,t ,l

When control parameter VAR_UC=YES, the user constraint is created as strict


equality and the LHS is set equal to the variable VAR_UCT. The bounds UC_RHST are
then applied to the variable VAR_UCT.
=
VAR _ UCTuc _ n ,t

with
VAR _ UCT .LOuc _ n ,t = UC _ RHSTuc _ n ,t ,'LO '
VAR _ UCT .UPuc _ n ,t = UC _ RHSTuc _ n ,t ,'UP '
VAR _ UCT .FX uc _ n ,t = UC _ RHSTuc _ n ,t ,'FX '

249
5.3.22.4 Equation: EQ(l)_UCRT / EQE_UCRT

Indices: user constraint (uc_n), region (r), period (t)

Related variables: VAR_FLO; VAR_NCAP; VAR_CAP; VAR_ACT;


VAR_COMPRD; VAR_COMCON; VAR_IRE

Purpose: The user constraint EQ(l)_UCRT is a user constraint, which is created for each
region of uc_r_each and each period of uc_t_each and is summing over timeslices
(uc_ts_sum).

Equation:

EQ(l ) _ UCRTr ,uc _ n ,t ∋ UC _ RHSRTr ,uc _ n ,t ,bd ∧ uc_ts_sum r,uc_n, s ∧ uc_r_eachr,uc_n


∧ uc_t_eachr,uc_n, t

 ACTr ,t , p , s , ' LHS ' + FLOr ,t , p , s , ' LHS ' + IREr ,t , p , s , ' LHS ' 
∑ 

s∈uc_ts_sum  + COMCON r , t , s , ' LHS ' + COMPRDr , t , s , ' LHS '



+
(NCAP r , t , p , ' LHS ' + CAPr ,t , p , ' LHS ' )

when control parameter VAR_UC=NO:


{≤; =; ≥}
UC _ RHSRTr ,uc _ n ,t ,l

When control parameter VAR_UC=YES, the user constraint is created as strict


equality and the LHS is set equal to the variable VAR_UCRT. The bounds UC_RHSRT
are then applied to the variable VAR_UCRT.
=
VAR _ UCRTr ,uc _ n ,t

with
VAR _ UCRT .LOr ,uc _ n ,t = UC _ RHSRTr ,uc _ n ,t ,' LO '
VAR _ UCRT .UPr ,uc _ n ,t = UC _ RHSRTr ,uc _ n ,t ,'UP '
VAR _ UCRT .FX r ,uc _ n ,t = UC _ RHSRTr ,uc _ n ,t ,' FX '

250
5.3.22.5 Equation: EQ(l)_UCRTS / EQE_UCRTS

Indices: user constraint (uc_n), region (r), period (t), timeslice (s)

Related variables: VAR_FLO; VAR_NCAP; VAR_CAP; VAR_ACT;


VAR_COMPRD; VAR_COMCON; VAR_IRE

Purpose: The user constraint EQ(l)_UCRTS is a user constraint, which is created for
each region of uc_r_each, each period of uc_t_each and each timeslice of uc_ts_each.

Equation:

EQ(l ) _ UCRTS r ,uc _ n ,t , s ∋ UC _ RHSRTS r ,uc _ n ,t , s ,bd ∧ uc_ts_eachr,uc_n, s ∧ uc_r_eachr,uc_n


∧ uc_t_eachr,uc_n, t

 ACTr ,t , p , s ,' LHS ' + FLOr ,t , p , s ,' LHS ' + IRE r ,t , p , s ,' LHS ' 
 
 + COMCON + COMPRD 
 r , t , s , ' LHS ' r , t , s , ' LHS ' 
+
(NCAPr ,t , p,'LHS ' + CAPr ,t , p,'LHS ' )
when control parameter VAR_UC=NO:
{≤; =; ≥}
UC _ RHSRTS r ,uc _ n ,t , s ,l

When control parameter VAR_UC=YES, the user constraint is created as strict


equality and the LHS is set equal to the variable VAR_UCRTS. The bounds
UC_RHSRTS are then applied to the variable VAR_UCRTS.
=
VAR _ UCRTS r ,uc _ n ,t , s

with
VAR _ UCRTS .LOr ,uc _ n ,t , s = UC _ RHSRTS r ,uc _ n ,t , s ,' LO '
VAR _ UCRTS .UPr ,uc _ n ,t , s = UC _ RHSRTS r ,uc _ n ,t , s ,'UP '
VAR _ UCRTS .FX r ,uc _ n ,t , s = UC _ RHSRTS r ,uc _ n ,t , s ,' FX '

251
5.3.22.6 Equation: EQ(l)_UCTS / EQE_UCTS

Indices: user constraint (uc_n), period (t), timeslice (s)

Related variables: VAR_FLO; VAR_NCAP; VAR_CAP; VAR_ACT;


VAR_COMPRD; VAR_COMCON; VAR_IRE

Purpose: The user constraint EQ(l)_UCTS is a user constraint, which is created for each
period of uc_t_each and each timeslice of uc_ts_each and is summing over regions
(uc_r_sum).

Equation:

EQE _ UCTSuc _ n ,t , s ∋ UC _ RHSRTSuc _ n ,t , s ,bd ∧ uc_ts_eachr,uc_n, s ∧ uc_r_sum r,uc_n


∧ uc_t_eachr,uc_n, t

 ACTr ,t , p , s , ' LHS ' + FLOr ,t , p , s , ' LHS ' + IREr ,t , p , s , ' LHS ' 
∑ 

r ∈uc_r_sum  + COMCON r , t , s , ' LHS ' + COMPRDr , t , s , ' LHS '



+
∑ (NCAP
r ∈uc_r_sum
r , t , p , ' LHS ' + CAPr ,t , p , ' LHS ' )

when control parameter VAR_UC=NO:


{≤; =; ≥}
UC _ RHSTS uc _ n ,t , s ,l

When control parameter VAR_UC=YES, the user constraint is created as strict


equality and the LHS is set equal to the variable VAR_UCTS. The bounds UC_RHSTS
are then applied to the variable VAR_UCTS.
=
VAR _ UCTS uc _ n ,t , s

with
VAR _ UCTS .LOuc _ n ,t , s = UC _ RHSTS uc _ n ,t , s ,' LO '
VAR _ UCTS .UPuc _ n ,t , s = UC _ RHSTS uc _ n ,t , s ,'UP '
VAR _ UCTS .FX uc _ n ,t , s = UC _ RHSTS uc _ n ,t , s ,' FX '

252
Mathematical formulation of dynamic user constraints and growth constraints of
type (t,t+1)

In the mathematical description of the dynamic user constraints and the growth
constraints of type (t, t+1), the following placeholders are used for variable terms on the
LHS (period t): ACT _ GROWr ,t , p , s ,'LHS ' , FLO _ GROWr ,t , p , s ,'LHS ' , IRE _ GROWr ,t , p , s ,'LHS ' ,
COMPRD _ GROWr ,t , s ,'LHS ' , COMCON _ GROWr ,t , s ,'LHS ' , NCAP _ GROWr ,t , p ,'LHS ' ,
CAP _ GROWr ,t , p ,'LHS '
and on the RHS (period T+1):
ACT _ GROWr ,t +1, p , s ,'RHS ' , FLO _ GROWr ,t +1, p , s ,'RHS ' , IRE _ GROWr ,t +1, p , s ,'RHS ' ,
COMPRD _ GROWr ,t +1, s ,'RHS ' , COMCON _ GROWr ,t +1, s ,'RHS ' , NCAP _ GROWr ,t +1, p ,'RHS ' ,
CAP _ GROWr ,t +1, p ,'RHS ' .

ACT _ GROWr ,t , p , s , ' LHS '


=
   
  1 if ts is below s  
   
VAR _ ACTr , v ,t , p ,ts × UC _ ACTuc _ n , ' LHS ', r , v ,t , p ,ts ×   
  G _ YRFR( s)  
  G _ YRFT (ts ) if ts is above s  
   
× 
 
 (ACT _ BNDr ,t , p ,ts , X ) if UC _ ATTRr ,uc _ n , ' LHS ', ' ACT ', ' ACT _ BNDX ' is given 
∑ ∑ 
ts∈prc_ts r,p,ts  ×

v∈rtp_vintyrr, v,t,p 
  
  ∑ OBJ _ ACOSTr ,t , p , cur  if UC _ ATTRr ,uc _ n , ' LHS ', ' ACT ', ' ACT _ COST ' is given 
  cur∈rdcurr,cur  

 
× 
(
 UC _ ACTuc _ n , ' LHS ', r , v ,t , p ,ts )
M ( t +1) − M ( t ) −1 
if UC _ ATTRr ,uc _ n , ' LHS ', ' ACT ', 'GROWTH ' is given 
 
 

253
FLO _ GROWr ,t , p , s , ' LHS '
=

(c , ts )∈rtpcs_varf r,t,p,c,ts

v∈rtp_vintyrr, v,t,p

  1 if ts is below s 
  
 VAR _ FLO r , v , t , p , c , ts × UC _ FLO uc _ n , ' LHS ', r , v , t , p , c , ts ×  
  RTCS _ TSFRr , ts , s if ts is above s 
  
× 
 
  OBJ _ FCOSTr , t , p , c , ts , cur if UC _ ATTRr , uc _ n , ' LHS ', ' FLO ', ' FLO _ COST ' is given  
   
  +  
  


  OBJ _ FDELVr , t , p , c , ts , cur if UC _ ATTRr , uc _ n, ' LHS ', ' FLO ', ' FLO _ DELIV ' is given  
  
 ∑  +

 
cur∈rdcurr,cur  OBJ _ FSUBr , t , p , c , ts , cur if UC _ ATTRr , uc _ n, ' LHS ', ' FLO ', ' FLO _ SUB ' is given  
 
   
 +  
   
  OBJ _ FTAX r , t , p , c , ts , cur if UC _ ATTRr , uc _ n, ' LHS ', ' FLO ', ' FLO _ TAX ' is given  
× 
 
(UC _ FLOuc _ n, ' LHS ', r , v , t , p , c , ts )M ( t +1) − M ( t ) −1 if UC _ ATTRr , uc _ n, ' LHS ', ' FLO ', 'GROWTH ' is given 
 
 

IRE _ GROWr ,t , p , s , ' LHS '


=

(c , ts )∈rtpcs_varf r,t,p,c,ts
∑ ∑
v∈rtp_vintyrr, v,t,p ie∈rpc_ire r,p,c,ie

VAR _ IREr , v ,t , p , c ,ts ,ie × UC _ IREuc _ n , ' LHS ', r , v ,t , p , c , ts , ie 


 
 
 
  1 if ts is below s 
 
×   
   
  RTCS _ TSFRr , ts , s if ts is above s  
 
 
× (UC _ IRE
uc _ n , ' LHS ', r , v , t , p , c , ts , ie ) if UC _ ATTRr , uc _ n , ' LHS ', ' IRE ', 'GROWTH ' is given
M ( t +1) − M ( t ) −1

254
COMPRD _ GROWr ,t , s , ' LHS '
=
VAR _ COMPRDr ,t , c ,ts × UC _ COMPRDuc _ n , ' LHS ', r ,t , c , s 
 
 
 
   
  1 if ts is below s  
×   
∑    
  G _ YRFR( s ) if ts is above s 
(c , ts )∈rtcs_varc r,t,c,ts

  G _ YRFT (ts )  

 
 
 × (UC _ COMPRD
uc _ n , ' LHS ', r , t , c , s ) if UC _ ATTRr ,uc _ n , ' LHS ', 'COMPRD ', 'GROWTH ' is given 
M ( t +1) − M ( t ) −1

COMCON _ GROWr ,t ,s ,'LHS '


=

(c ,ts )∈rtcs_varcr,t,c,ts

VAR _ COMCON r ,t ,c ,ts × UC _ COMCON uc _ n ,'LHS ',r ,t ,c ,s 


 
 
 
   
  1 if ts is below s  
×   
   
  G _ YRFR( s ) if ts is above s  
  G _ YRFT (ts ) 
 
 
 
 × (UC _ COMCON
uc _ n ,'LHS ',r ,t ,c , s ) if UC _ ATTRr ,uc _ n ,'LHS ','COMCON ','GROWTH ' is given 
M ( t +1)− M ( t )−1

255
NCAP _ GROWr ,t , p , ' LHS '
=
 
VAR _ NCAP × UC _ NCAP 
 r ,t , p uc _ n , ' LHS ', r , t , p

× 
 
  
  ∑ OBJ _ ICOSTr , t , p , cur if UC _ ATTRr , uc _ n , ' LHS ', ' NCAP ', ' NCAP _ COST ' is given 
  cur∈rdcurr,cur 
− 
 
 ∑ OBJ _ ISUBr , t , p , cur if UC _ ATTRr , uc _ n , ' LHS ', ' NCAP ', ' NCAP _ ISUB ' is given 
 cur∈rdcurr,cur 
+ 
 
  
 ∑ OBJ _ ITAX r , t , p , cur if UC _ ATTRr , uc _ n, ' LHS ', ' NCAP ', ' NCAP _ ITAX ' is given  
 cur∈rdcurr,cur  

 
× 
 (UC _ NCAP
uc _ n , ' LHS ', r , t , p ) if UC _ ATTRr , uc _ n, ' LHS ', ' NCAP ', 'GROWTH ' is given 
M ( t +1) − M ( t ) −1

CAP _ GROWr ,t , p ,' LHS '


=
VAR _ CAPr ,t , p × UC _ CAPuc _ n ,' LHS ', r ,t , p 
 
× 
 
 CAP _ BNDr ,t , p , X if UC _ ATTRr ,uc _ n ,' LHS ','CAP ','CAP _ BNDX ' is given 
× 
 
 (UC _ CAP )M ( t +1) − M ( t ) −1
if UC _ ATTR is given 
 uc _ n , ' LHS ', r , t , p r , uc _ n , ' LHS ', 'CAP ', 'GROWTH ' 

256
ACT _ GROWr ,t +1, p , s , ' RHS '
=
   
  1 if ts is below s  
   
VAR _ ACTr ,v ,t +1, p ,ts × UC _ ACTuc _ n , ' RHS ', r , v ,t +1, p ,ts ×   
  G _ YRFR( s)  
  G _ YRFT (ts) if ts is above s  
   
× 
 
 (ACT _ BNDr ,t +1, p ,ts , X ) if UC _ ATTRr ,uc _ n , ' RHS ', ' ACT ', ' ACT _ BNDX ' is given 
∑ ∑ 
ts∈prc_ts r,p,ts  ×

v∈rtp_vintyrr, v,t +1,p 
  
  ∑ OBJ _ ACOSTr ,t +1, p , cur  if UC _ ATTRr ,uc _ n , ' RHS ', ' ACT ', ' ACT _ COST ' is given 
  cur∈rdcurr,cur  

 
× 
(
 UC _ ACTuc _ n , ' RHS ', r , v ,t +1, p ,ts )
M ( t ) − M ( t +1) −1 
if UC _ ATTRr ,uc _ n , ' RHS ', ' ACT ', 'GROWTH ' is given 
 
 

FLO _ GROWr ,t +1, p , s , ' RHS '


=

(c , ts )∈rtpcs_varf r,t +1,p,c,ts

v∈rtp_vintyrr, v,t +1,p

  1 if ts is below s 
  
VAR _ FLOr , v ,t +1, p , c ,ts × UC _ FLOuc _ n , ' RHS ', r , v ,t +1, p , c ,ts ×  
  RTCS _ TSFR if ts is above s 
  r , ts , s

× 
 
  OBJ _ FCOSTr ,t +1, p , c ,ts , cur if UC _ ATTRr ,uc _ n , ' RHS ', ' FLO ', ' FLO _ COST ' is given  
   
 +  
  
  OBJ _ FDELVr ,t +1, p , c ,ts , cur if UC _ ATTRr ,uc _ n , ' RHS ', ' FLO ', ' FLO _ DELIV ' is given  

  
 ∑  +

 
cur∈rdcurr,cur  OBJ _ FSUBr ,t +1, p , c ,ts , cur if UC _ ATTRr ,uc _ n , ' RHS ', ' FLO ', ' FLO _ SUB ' is given  
 
   
 +  
  OBJ _ FTAX r ,t +1, p , c ,ts , cur if UC _ ATTRr ,uc _ n , ' RHS ', ' FLO ', ' FLO _ TAX ' is given  
   
× 
 
(UC _ FLOuc _ n , ' RHS ', r , v ,t +1, p , c ,ts )M (t ) − M ( t +1) −1 if UC _ ATTRr ,uc _ n , ' RHS ', ' FLO ', 'GROWTH ' is given 
 
 

257
IRE _ GROWr , t +1, p , s , ' RHS '
=

(c , ts )∈rtpcs_varf r,t,p,c,ts
∑ ∑
v∈rtp_vintyrr, v,t +1,p ie∈rpc_ire r,p,c,ie

VAR _ IREr , v , t +1, p , c , ts , ie × UC _ IREuc _ n , ' LHS ', r , v , t +1, p , c , ts , ie 


 
 
 
  1 if ts is below s 
 
×   
   
  RTCS _ TSFRr , ts , s if ts is above s  
 
 
× (UC _ IRE )M ( t +1) − M ( t ) −1
if UC _ ATTR is given 
 uc _ n , ' LHS ', r , v , t +1, p , c , ts , ie r , uc _ n , ' LHS ', ' IRE ', 'GROWTH ' 

COMPRD _ GROWr , t +1, s , ' RHS '


=
VAR _ COMPRDr , t +1, c , ts × UC _ COMPRDuc _ n , ' RHS ', r , t +1, c , s 
 
 
 
   
  1 if ts is below s  
×   
∑    
  G _ YRFR( s ) if ts is above s 
(c , ts )∈rtcs_varc r,t +1,c,ts

  G _ YRFT (ts ) 
 
 
 
 × (UC _ COMPRD
uc _ n , ' RHS ', r , t +1, c , s ) if UC _ ATTRr , uc _ n , ' RHS ', 'COMPRD ', 'GROWTH ' is given 
M ( t ) − M ( t +1) −1

COMCON r , t +1, s , ' RHS '


=

(c , ts )∈rtcs_varc r,t,c,ts

VAR _ COMCON r , t +1, c , ts × UC _ COMCON uc _ n , ' RHS ', r , t +1, c , s 


 
 
 
   
  1 if ts is below s  
×   
   
  G _ YRFR( s ) if ts is above s  
  G _ YRFT (ts ) 
 
 
 
 × (UC _ COMCON
uc _ n , ' RHS ', r , t +1, c , s ) if UC _ ATTRr , uc _ n , ' RHS ', 'COMCON ', 'GROWTH ' is given 
M ( t ) − M ( t +1) −1

258
NCAP _ GROWr ,t +1, p , ' RHS '
=
 
VAR _ NCAP 
r , t +1, p × UC _ NCAPuc _ n , ' RHS ', r , t +1, p
 
× 
 
  
  ∑ OBJ _ ICOSTr ,t +1, p , cur if UC _ ATTRr ,uc _ n , ' RHS ', ' NCAP ', ' NCAP _ COST ' is given 
  cur∈rdcurr,cur 
− 
 
 ∑ OBJ _ ISUBr ,t +1, p , cur if UC _ ATTRr ,uc _ n , ' RHS ', ' NCAP ', ' NCAP _ ISUB ' is given 
 cur∈rdcurr,cur 
+ 
 
  
 ∑ OBJ _ ITAX r ,t +1, p , cur if UC _ ATTRr ,uc _ n , ' RHS ', ' NCAP ', ' NCAP _ ITAX ' is given  
 cur∈rdcurr,cur  

 
× 
 (UC _ NCAP
uc _ n , ' RHS ', r , t +1, p )
M ( t ) − M ( t +1) −1 
if UC _ ATTRr ,uc _ n , ' RHS ', ' NCAP ', 'GROWTH ' is given 

CAP _ GROWr ,t , p +1,' RHS '


=
VAR _ CAPr ,t +1, p × UC _ CAPuc _ n ,' RHS ', r ,t +1, p 
 
× 
 
 CAP _ BNDr ,t +1, p , X if UC _ ATTRr ,uc _ n ,' RHS ','CAP ','CAP _ BNDX ' is given 
× 
 
 (UC _ CAP
uc _ n , ' RHS ', r , t +1, p ) if UC _ ATTRr ,uc _ n ,' RHS ','CAP ','GROWTH ' is given 
M ( t +1) − M ( t ) −1

259
5.3.22.7 Equation: EQ(l)_UCSU / EQE_UCSU

Indices: user constraint (uc_n), period (t)

Related variables: VAR_FLO; VAR_NCAP; VAR_CAP; VAR_ACT;


VAR_COMPRD; VAR_COMCON; VAR_IRE

Purpose: The dynamic user constraint or growth constraint of type (t,t+1) EQ(l)_UCSU
establishes a constraint between two successive periods t and t+1. For dynamic user
constraints the period t is specified by the set uc_t_succ, growth constraints are generated
for all periods bur the last. The constraint is summing over regions (uc_r_sum) and
timeslices (uc_ts_sum).

Equation:

EQ(l ) _ UCSU uc _ n ,t ∋ UC _ RHSTuc _ n ,t ,bd ∧ uc_ts_sum r,uc_n, s ∧ uc_r_sum r,uc_n


∧ uc_t_succr,uc_n, t

 ACT _ GROWr ,t , p , s , ' LHS ' + FLO _ GROWr ,t , p , s , ' LHS ' + IRE _ GROWr ,t , p , s , ' LHS ' 
∑ ∑ 

r ∈uc_r_sum s∈uc_ts_sum  + COMCON _ GROWr , t , s , ' LHS ' + COMPRD _ GROWr , t , s , ' LHS '



+
∑ (NCAP _ GROW
r ∈uc_r_sum
r , t , p , ' LHS ' + CAP _ GROWr ,t , p , ' LHS ' )

When control parameter VAR_UC=NO:


{≤; =; ≥}
UC _ RHSTuc _ n ,t ,l
+
 ACT _ GROWr ,t +1, p , s , ' RHS ' + FLO _ GROWr ,t +1, p , s , ' RHS ' + IRE _ GROWr ,t +1, p , s , ' RHS ' 
∑ ∑ 

r ∈uc_r_sum s∈uc_ts_sum  + COMCON _ GROW + COMPRD _ GROW


r , t +1, s , ' RHS ' r , t +1, s , ' RHS ' 
+
∑ (NCAP _ GROW
r ∈uc_r_sum
r , t +1, p , ' RHS ' + CAP _ GROWr ,t +1, p , ' RHS ' )

When control parameter VAR_UC=YES, the user constraint is created as strict


equality and the RHS constant UC_RHST is replaced by the variable VAR_UCT. The
bounds UC_RHST are then applied to the variable VAR_UCT.
=

260
VAR _ UCTuc _ n ,t
+
 ACTr ,t +1, p , s , ' RHS ' + FLOr ,t +1, p , s , ' RHS ' + IREr ,t +1, p , s , ' RHS ' 
∑ ∑ 

r ∈uc_r_sum s∈uc_ts_sum  + COMCON + COMPRD


r , t +1, s , ' RHS ' r , t +1, s , ' RHS ' 
+
∑ (NCAP
r ∈uc_r_sum
r , t +1, p , ' RHS ' + CAPr ,t +1, p , ' RHS ' )

with
VAR _ UCT .LOuc _ n ,t = UC _ RHSTuc _ n ,t ,'LO '
VAR _ UCT .UPuc _ n ,t = UC _ RHSTuc _ n ,t ,'UP '
VAR _ UCT .FX uc _ n ,t = UC _ RHSTuc _ n ,t ,'FX '

261
5.3.22.8 Equation: EQ(l)_UCRSU / EQE_UCRSU

Indices: region (r), user constraint (uc_n), period (t)

Related variables: VAR_FLO; VAR_NCAP; VAR_CAP; VAR_ACT;


VAR_COMPRD; VAR_COMCON; VAR_IRE

Purpose: The dynamic user constraint or growth constraint of type (t,t+1) EQ(l)_UCSU
establishes a constraint between two successive periods t and t+1. For dynamic user
constraints the period t is specified by the set uc_t_succ, growth constraints are generated
for all periods but the last. The constraint is generated for each region of the set
uc_r_each and is summing over timeslices (uc_ts_sum).

Equation:

EQ(l ) _ UCRSU r ,uc _ n ,t ∋ UC _ RHSRTr ,uc _ n ,t ,bd ∧ uc_ts_sum r,uc_n, s ∧ uc_r_eachr,uc_n


∧ uc_t_succr,uc_n, t

 ACT _ GROWr ,t , p , s , ' LHS ' + FLO _ GROWr ,t , p , s , ' LHS ' + IRE _ GROWr ,t , p , s , ' LHS ' 
∑ 

s∈uc_ts_sum  + COMCON _ GROWr , t , s , ' LHS ' + COMPRD _ GROWr , t , s , ' LHS '



+
(NCAP _ GROWr ,t , p,' LHS ' + CAP _ GROWr ,t , p,' LHS ' )
When control parameter VAR_UC=NO:
{≤; =; ≥}
UC _ RHSRTr ,uc _ n ,t ,l
+
 ACT _ GROWr ,t +1, p , s , ' RHS ' + FLO _ GROWr ,t +1, p , s , ' RHS ' + IRE _ GROWr ,t +1, p , s , ' RHS ' 
∑ 

s∈uc_ts_sum  + COMCON _ GROWr , t +1, s , ' RHS ' + COMPRD _ GROWr , t +1, s , ' RHS '



+
(NCAP _ GROWr ,t +1, p,' RHS ' + CAP _ GROWr ,t +1, p,' RHS ' )
When control parameter VAR_UC=YES, the user constraint is created as strict
equality and the RHS constant UC_RHSRT is replaced by the variable VAR_UCRT. The
bounds UC_RHSRT are then applied to the variable VAR_UCRT.
=

262
VAR _ UCRTr ,uc _ n , t
+
 ACTr , t +1, p , s , ' RHS ' + FLOr , t +1, p , s , ' RHS ' + IREr , t +1, p , s , ' RHS ' 
∑ 

s∈uc_ts_sum  + COMCON + COMPRD


r , t +1, s , ' RHS ' r , t +1, s , ' RHS ' 
+
(NCAPr ,t +1, p,' RHS ' + CAPr ,t +1, p,' RHS ' )
with
VAR _ UCRT .LOr ,uc _ n ,t = UC _ RHSRTr ,uc _ n ,t ,' LO '
VAR _ UCRT .UPr ,uc _ n ,t = UC _ RHSRTr ,uc _ n ,t ,'UP '
VAR _ UCRT .FX r ,uc _ n ,t = UC _ RHSRTr ,uc _ n ,t ,' FX '

263
5.3.22.9 Equation: EQ(l)_UCRSUS / EQE_UCRSU

Indices: region (r), user constraint (uc_n), period (t), timeslice (s)

Related variables: VAR_FLO; VAR_NCAP; VAR_CAP; VAR_ACT;


VAR_COMPRD; VAR_COMCON; VAR_IRE

Purpose: The dynamic user constraint or growth constraint of type (t,t+1)


EQ(l)_UCSUS establishes a constraint between two successive periods t and t+1. For
dynamic user constraints the period t is specified by the set uc_t_succ, growth constraints
are generated for all periods but the last. The constraint is generated for each region of
the set uc_r_each and each timeslice of the set uc_ts_each.

Equation:

EQ(l ) _ UCRSUS r ,uc _ n ,t , s ∋ UC _ RHSRTS r ,uc _ n ,t , s ,bd ∧ uc_ts_eachr,uc_n, s ∧ uc_r_eachr,uc_n


∧ uc_t_succr,uc_n, t

 ACT _ GROWr ,t , p , s ,'LHS ' + FLO _ GROWr ,t , p , s ,'LHS ' + IRE _ GROWr ,t , p , s ,'LHS ' 
 
 + COMCON _ GROW + COMPRD _ GROW 
 r ,t , s ,' LHS ' r ,t , s ,' LHS ' 
+
(NCAP _ GROWr ,t , p,'LHS ' + CAP _ GROWr ,t , p,'LHS ' )
When control parameter VAR_UC=NO:
{≤; =; ≥}
UC _ RHSRTS r ,uc _ n ,t , s ,l
+
 ACT _ GROWr ,t +1, p , s ,' RHS ' + FLO _ GROWr ,t +1, p , s ,' RHS ' + IRE _ GROWr ,t +1, p , s ,' RHS ' 
 
 + COMCON _ GROW + COMPRD _ GROW 
 r , t +1, s , ' RHS ' r , t +1, s , ' RHS ' 
+
(NCAP _ GROW r ,t +1, p , ' RHS ' + CAP _ GROWr ,t +1, p ,' RHS ' )

When control parameter VAR_UC=YES, the user constraint is created as strict


equality and the RHS constant UC_RHSRTS is replaced by the variable VAR_UCRTS.
The bounds UC_RHSRTS are then applied to the variable VAR_UCRTS.
=

264
VAR _ UCRTS r ,uc _ n ,t , s
+
 ACTr ,t +1, p , s ,' RHS ' + FLOr ,t +1, p , s ,' RHS ' + IRE r ,t +1, p , s ,' RHS ' 
 
 + COMCON + COMPRD 
 r ,t +1, s , ' RHS ' r ,t +1, s , ' RHS ' 
+
(NCAPr ,t +1, p,'RHS ' + CAPr ,t +1, p,'RHS ' )
with
VAR _ UCRTS .LOr ,uc _ n ,t , s = UC _ RHSRTS r ,uc _ n ,t , s ,'LO '
VAR _ UCRTS .UPr ,uc _ n ,t , s = UC _ RHSRTS r ,uc _ n ,t , s ,'UP '
VAR _ UCRTS .FX r ,uc _ n ,t , s = UC _ RHSRTS r ,uc _ n ,t , s ,'FX '

265
5.3.22.10 Equation: EQ(l)_UCSUS / EQE_UCSUS

Indices: user constraint (uc_n), period (t), timeslice (s)

Related variables: VAR_FLO; VAR_NCAP; VAR_CAP; VAR_ACT;


VAR_COMPRD; VAR_COMCON; VAR_IRE

Purpose: The dynamic user constraint or growth constraint of type (t,t+1)


EQ(l)_UCSUS establishes a constraint between two successive periods t and t+1. For
dynamic user constraints the period t is specified by the set uc_t_succ, growth constraints
are generated for all periods but the last. The constraint generated for each timeslice
uc_ts_each and is summing over regions (uc_r_sum).

Equation:

EQ(l ) _ UCSUSuc _ n ,t , s ∋ UC _ RHSTSuc _ n ,t , s ,bd ∧ uc_ts_eachr,uc_n, s ∧ uc_r_sum r,uc_n


∧ uc_t_succr,uc_n, t

 ACT _ GROWr ,t , p , s , ' LHS ' + FLO _ GROWr ,t , p , s , ' LHS ' + IRE _ GROWr ,t , p , s , ' LHS ' 
∑ 

r ∈uc_r_sum  + COMCON _ GROW + COMPRD _ GROW


r , t , s , ' LHS ' r , t , s , ' LHS ' 
+
∑ (NCAP _ GROW
r ∈uc_r_sum
r , t , p , ' LHS ' + CAP _ GROWr ,t , p , ' LHS ' )

When control parameter VAR_UC=NO:


{≤; =; ≥}
UC _ RHSTSuc _ n ,t , s ,l
+
 ACT _ GROWr ,t +1, p , s , ' RHS ' + FLO _ GROWr ,t +1, p , s , ' RHS ' + IRE _ GROWr ,t +1, p , s , ' RHS ' 
∑ 

r ∈uc_r_sum  + COMCON _ GROWr , t +1, s , ' RHS ' + COMPRD _ GROWr , t +1, s , ' RHS '



+
∑ (NCAP _ GROW
r ∈uc_r_sum
r , t +1, p , ' RHS ' + CAP _ GROWr ,t +1, p , ' RHS ' )

When control parameter VAR_UC=YES, the user constraint is created as strict


equality and the RHS constant UC_RHSTS is replaced by the variable VAR_UCTS. The
bounds UC_RHSTS are then applied to the variable VAR_UCTS.
=

266
VAR _ UCTSuc _ n , t , s
+
 ACTr , t +1, p , s , ' RHS ' + FLOr , t +1, p , s , ' RHS ' + IREr , t +1, p , s , ' RHS ' 
∑ 

r ∈uc_r_sum  + COMCON r , t +1, s , ' RHS ' + COMPRDr , t +1, s , ' RHS '



+
∑ (NCAP
r ∈uc_r_sum
r , t +1, p , ' RHS ' + CAPr , t +1, p , ' RHS ' )

with
VAR _ UCTS .LOuc _ n ,t , s = UC _ RHSTS uc _ n ,t , s ,'LO '
VAR _ UCTS .UPuc _ n ,t , s = UC _ RHSTS uc _ n ,t , s ,'UP '
VAR _ UCTS .FX uc _ n ,t , s = UC _ RHSTS uc _ n ,t , s ,'FX '

Mathematical formulation of growth constraints of type (t-1, t)

In the mathematical description of growth constraints of type (t-1, t), the following
placeholders are used for variable terms on the RHS (period t-1):
ACT _ GROWr ,t −1, p , s ,'RHS ' , FLO _ GROWr ,t −1, p , s ,'RHS ' , IRE _ GROWr ,t −1, p , s ,'RHS ' ,
COMPRD _ GROWr ,t −1, s ,'RHS ' , COMCON _ GROWr ,t −1, s ,'RHS ' , NCAP _ GROWr ,t −1, p ,'RHS ' ,
CAP _ GROWr ,t −1, p ,'RHS ' .
For the LHS terms, the placeholders are the same ones as defined for the LHS user
constraints.

ACT _ GROWr , t −1, p , s , ' RHS '


=
   
  1 if ts is below s  
   
VAR _ ACTr , v , t −1, p , ts × UC _ ACTuc _ n , ' RHS ', r , v , t −1, p , ts ×   
  G _ YRFR( s )  
 G if ts is above s  
  _ YRFT (ts )  
× 
 
 (ACT _ BNDr , t −1, p , ts , X ) if UC _ ATTRr , uc _ n , ' RHS ', ' ACT ', ' ACT _ BNDX ' is given 
∑ ∑ 
ts∈prc_ts r,p,ts  ×

v∈rtp_vintyrr, v,t −1,p 
  
  ∑ OBJ _ ACOSTr , t −1, p , cur  if UC _ ATTRr , uc _ n , ' RHS ', ' ACT ', ' ACT _ COST ' is given 
  cur∈rdcurr,cur 
 
 
× 
(
 UC _ ACTuc _ n , ' RHS ', r , v , t −1, p , ts )
M ( t ) − M ( t −1) −1 
if UC _ ATTRr , uc _ n , ' RHS ', ' ACT ', 'GROWTH ' is given 
 
 

267
FLO _ GROWr ,t −1, p , s , ' RHS '
=

(c , ts )∈rtpcs_varf r,t −1,p,c,ts

v∈rtp_vintyrr, v,t −1,p

  1 if ts is below s 
  
 VAR _ FLO r , v , t −1, p , c , ts × UC _ FLO uc _ n , ' RHS ', r , v , t −1, p , c , ts ×  
  RTCS _ TSFRr ,ts , s if ts is above s 
  
× 
 
  OBJ _ FCOSTr ,t −1, p , c ,ts , cur if UC _ ATTRr , uc _ n , ' RHS ', ' FLO ', ' FLO _ COST ' is given  
   
  +  
  


  OBJ _ FDELVr ,t −1, p , c ,ts , cur if UC _ ATTRr , uc _ n , ' RHS ', ' FLO ', ' FLO _ DELIV ' is given  
  
 ∑  +

 
cur∈rdcurr,cur  OBJ _ FSUBr ,t −1, p , c , ts , cur if UC _ ATTRr , uc _ n , ' RHS ', ' FLO ', ' FLO _ SUB ' is given  
 
   
 +  
   
  OBJ _ FTAX r , t −1, p , c , ts , cur if UC _ ATTRr , uc _ n , ' RHS ', ' FLO ', ' FLO _ TAX ' is given  
× 
 
(UC _ FLOuc _ n , ' RHS ', r , v , t −1, p , c , ts )M ( t ) − M ( t −1) −1 if UC _ ATTRr , uc _ n, ' RHS ', ' FLO ', 'GROWTH ' is given 
 
 

IRE _ GROWr ,t −1, p , s , ' RHS '


=

(c , ts )∈rtpcs_varf r,t −1,p,c,ts
∑ ∑
v∈rtp_vintyrr, v,t −1,p ie∈rpc_ire r,p,c,ie

VAR _ IREr , v ,t −1, p , c ,ts ,ie × UC _ IREuc _ n , ' RHS ', r , v ,t −1, p , c ,ts ,ie 
 
 
 
  1 if ts is below s 
 
×   
   
  RTCS _ TSFRr ,ts , s if ts is above s  
 
 
× (UC _ IRE )M ( t ) − M ( t −1) −1
if UC _ ATTR is given 
 uc _ n , ' RHS ', r , v , t −1, p , c , ts , ie r , uc _ n , ' LHS ', ' IRE ', 'GROWTH ' 

268
COMPRD _ GROWr ,t −1, s , ' RHS '
=
VAR _ COMPRDr ,t −1, c ,ts × UC _ COMPRDuc _ n , ' RHS ', r ,t −1, c , s 
 
 
 
   
  1 if ts is below s  
×   
∑    
  G _ YRFR( s ) if ts is above s 
(c , ts )∈rtcs_varc r,t −1,c,ts

  G _ YRFT (ts )  

 
 
 × (UC _ COMPRD
uc _ n , ' RHS ', r , t −1, c , s ) if UC _ ATTRr ,uc _ n , ' RHS ', 'COMPRD ', 'GROWTH ' is given 
M ( t ) − M ( t −1) −1

COMCON _ GROWr ,t −1, s , ' RHS '


=

(c , ts )∈rtcs_varc r,t −1,c,ts

VAR _ COMCON r ,t −1, c ,ts × UC _ COMCON uc _ n , ' RHS ', r ,t −1, c , s 


 
 
 
   
  1 if ts is below s  
×   
   
  G _ YRFR( s ) if ts is above s  
  G _ YRFT (ts ) 
 
 
 
 × (UC _ COMCON
uc _ n , ' RHS ', r , t −1, c , s ) if UC _ ATTRr ,uc _ n , ' RHS ', 'COMCON ', 'GROWTH ' is given 
M ( t ) − M ( t −1) −1

269
NCAP _ GROWr ,t −1, p , ' RHS '
=
 
VAR _ NCAP × UC _ NCAP 
 r , t −1, p uc _ n , ' RHS ', r , t −1, p

× 
 
  
  ∑ OBJ _ ICOSTr ,t −1, p , cur if UC _ ATTRr ,uc _ n , ' RHS ', ' NCAP ', ' NCAP _ COST ' is given 
  cur∈rdcurr,cur 
− 
 
 ∑ OBJ _ ISUBr ,t −1, p , cur if UC _ ATTRr ,uc _ n , ' RHS ', ' NCAP ', ' NCAP _ ISUB ' is given 
 cur∈rdcurr,cur 
+ 
 
  
 ∑ OBJ _ ITAX r ,t −1, p , cur if UC _ ATTRr ,uc _ n , ' RHS ', ' NCAP ', ' NCAP _ ITAX ' is given  
 cur∈rdcurr,cur  

 
× 
 (UC _ NCAP
uc _ n , ' RHS ', r , t −1, p ) if UC _ ATTRr ,uc _ n , ' RHS ', ' NCAP ', 'GROWTH ' is given 
M ( t ) − M ( t −1) −1

CAP _ GROWr ,t −1, p ,' RHS '


=
VAR _ CAPr ,t −1, p × UC _ CAPuc _ n ,' RHS ', r ,t −1, p 
 
× 
 
 CAP _ BNDr ,t −1, p , X if UC _ ATTRr ,uc _ n ,' RHS ','CAP ','CAP _ BNDX ' is given 
× 
 
 (UC _ CAP )M ( t +1) − M ( t ) −1
if UC _ ATTR is given 
 uc _ n , ' RHS ', r , t −1, p r , uc _ n , ' RHS ', 'CAP ', 'GROWTH ' 

270
5.3.22.11 Equation: EQ(l)_UCSU / EQE_UCSU

Indices: user constraint (uc_n), period (t)

Related variables: VAR_FLO; VAR_NCAP; VAR_CAP; VAR_ACT;


VAR_COMPRD; VAR_COMCON; VAR_IRE

Purpose: The growth constraint of type (t-1,t) EQ(l)_UCSU establishes a constraint


between two successive periods t-1 and t. The growth constraint is generated for all
periods t. The constraint is summing over regions (uc_r_sum) and timeslices
(uc_ts_sum).

Equation:

EQ(l ) _ UCSU uc _ n ,t ∋ UC _ RHSTuc _ n ,t ,bd ∧ uc_ts_sum r,uc_n, s ∧ uc_r_sum r,uc_n


∧ uc_t_succr,uc_n, t

 ACT _ GROWr ,t , p , s , ' LHS ' + FLO _ GROWr ,t , p , s , ' LHS ' + IRE _ GROWr ,t , p , s , ' LHS ' 
∑ ∑ 
r ∈uc_r_sum s∈uc_ts_sum  + COMCON _ GROWr , t , s , ' LHS ' + COMPRD _ GROWr , t , s , ' LHS '



+
∑ (NCAP _ GROW
r ∈uc_r_sum
r , t , p , ' LHS ' + CAP _ GROWr ,t , p , ' LHS ' )

When control parameter VAR_UC=NO:


{≤; =; ≥}
UC _ RHSTuc _ n ,t ,l
+
 ACT _ GROWr ,t −1, p , s , ' RHS ' + FLO _ GROWr ,t −1, p , s , ' RHS ' + IRE _ GROWr ,t −1, p , s , ' RHS ' 
∑ ∑ 

r ∈uc_r_sum s∈uc_ts_sum  + COMCON _ GROWr , t −1, s , ' RHS ' + COMPRD _ GROWr , t −1, s , ' RHS '



+
∑ (NCAP _ GROW
r ∈uc_r_sum
r , t −1, p , ' RHS ' + CAP _ GROWr ,t −1, p , ' RHS ' )

When control parameter VAR_UC=YES, the user constraint is created as strict


equality and the RHS constant UC_RHST is replaced by the variable VAR_UCT. The
bounds UC_RHST are then applied to the variable VAR_UCT.

271
VAR _ UCTuc _ n ,t
+
 ACTr ,t −1, p , s , ' RHS ' + FLOr ,t −1, p , s , ' RHS ' + IREr ,t −1, p , s , ' RHS ' 
∑ ∑ 

r ∈uc_r_sum s∈uc_ts_sum  + COMCON + COMPRD


r , t −1, s , ' RHS ' r , t −1, s , ' RHS ' 
+
∑ (NCAP
r ∈uc_r_sum
r , t −1, p , ' RHS ' + CAPr ,t −1, p , ' RHS ' )

with
VAR _ UCT .LOuc _ n ,t = UC _ RHSTuc _ n ,t ,'LO '
VAR _ UCT .UPuc _ n ,t = UC _ RHSTuc _ n ,t ,'UP '
VAR _ UCT .FX uc _ n ,t = UC _ RHSTuc _ n ,t ,'FX '

272
5.3.22.12 Equation: EQ(l)_UCRSU / EQE_UCRSU

Indices: region (r), user constraint (uc_n), period (t)

Related variables: VAR_FLO; VAR_NCAP; VAR_CAP; VAR_ACT;


VAR_COMPRD; VAR_COMCON; VAR_IRE

Purpose: The growth constraint of type (t-1,t) EQ(l)_UCSU establishes a constraint


between two successive periods t-1 and t. The growth constraint is generated for all
periods t. The constraint is generated for each region of the set uc_r_each and is
summing over timeslices (uc_ts_sum).

Equation:

EQ(l ) _ UCRSU r ,uc _ n ,t ∋ UC _ RHSRTr ,uc _ n ,t ,bd ∧ uc_ts_sum r,uc_n, s ∧ uc_r_eachr,uc_n


∧ uc_t_succr,uc_n, t

 ACT _ GROWr ,t , p , s , ' LHS ' + FLO _ GROWr ,t , p , s , ' LHS ' + IRE _ GROWr ,t , p , s , ' LHS ' 
∑ 
s∈uc_ts_sum  + COMCON _ GROWr , t , s , ' LHS ' + COMPRD _ GROWr , t , s , ' LHS '



+
(NCAP _ GROWr ,t , p,' LHS ' + CAP _ GROWr ,t , p,' LHS ' )
When control parameter VAR_UC=NO:
{≤; =; ≥}
UC _ RHSRTr ,uc _ n ,t ,l
+
 ACT _ GROWr ,t −1, p , s , ' RHS ' + FLO _ GROWr ,t −1, p , s , ' RHS ' + IRE _ GROWr ,t −1, p , s , ' RHS ' 
∑ 

s∈uc_ts_sum  + COMCON _ GROW + COMPRD _ GROW


r , t −1, s , ' RHS ' r , t −1, s , ' RHS ' 
+
(NCAP _ GROWr ,t −1, p,' RHS ' + CAP _ GROWr ,t −1, p,' RHS ' )
When control parameter VAR_UC=YES, the user constraint is created as strict
equality and the RHS constant UC_RHSRT is replaced by the variable VAR_UCRT. The
bounds UC_RHSRT are then applied to the variable VAR_UCRT.
=

273
VAR _ UCRTr ,uc _ n ,t
+
 ACTr ,t −1, p ,s ,'RHS ' + FLOr ,t −1, p ,s ,'RHS ' + IREr ,t −1, p ,s ,'RHS ' 
∑ 

s∈uc_ts_sum  + COMCON + COMPRD


r ,t −1, s ,'RHS ' r ,t −1, s ,'RHS ' 
+
(NCAPr ,t −1, p,'RHS ' + CAPr ,t −1, p,'RHS ' )
with
VAR _ UCRT .LOr ,uc _ n ,t = UC _ RHSRTr ,uc _ n ,t ,' LO '
VAR _ UCRT .UPr ,uc _ n ,t = UC _ RHSRTr ,uc _ n ,t ,'UP '
VAR _ UCRT .FX r ,uc _ n ,t = UC _ RHSRTr ,uc _ n ,t ,' FX '

274
5.3.22.13 Equation: EQ(l)_UCRSUS / EQE_UCRSU

Indices: region (r), user constraint (uc_n), period (t), timeslice (s)

Related variables: VAR_FLO; VAR_NCAP; VAR_CAP; VAR_ACT;


VAR_COMPRD; VAR_COMCON; VAR_IRE

Purpose: The growth constraint of type (t-1,t) EQ(l)_UCSUS establishes a constraint


between two successive periods t-1 and t. The growth constraint is generated for all
periods t. The constraint is generated for each region of the set uc_r_each and each
timeslice of the set uc_ts_each.

Equation:

EQ(l ) _ UCRSUS r ,uc _ n ,t , s ∋ UC _ RHSRTS r ,uc _ n ,t , s ,bd ∧ uc_ts_eachr,uc_n, s ∧ uc_r_eachr,uc_n


∧ uc_t_succr,uc_n, t

 ACT _ GROWr ,t , p , s ,'LHS ' + FLO _ GROWr ,t , p , s ,'LHS ' + IRE _ GROWr ,t , p , s ,'LHS ' 
 
 + COMCON _ GROW 
 r ,t , s ,' LHS ' + COMPRD _ GROWr ,t , s ,' LHS ' 
+
(NCAP _ GROW r ,t , p ,' LHS ' + CAP _ GROWr ,t , p ,'LHS ' )

When control parameter VAR_UC=NO:


{≤; =; ≥}
UC _ RHSRTS r ,uc _ n ,t , s ,l
+
 ACT _ GROWr ,t −1, p , s ,'RHS ' + FLO _ GROWr ,t −1, p , s ,'RHS ' + IRE _ GROWr ,t −1, p , s ,'RHS ' 
 
 + COMCON _ GROW + COMPRD _ GROW 
 r ,t −1, s ,' RHS ' r ,t −1, s ,' RHS ' 
+
(NCAP _ GROW r ,t −1, p ,' RHS ' + CAP _ GROWr ,t −1, p ,'RHS ' )

When control parameter VAR_UC=YES, the user constraint is created as strict


equality and the RHS constant UC_RHSRTS is replaced by the variable VAR_UCRTS.
The bounds UC_RHSRTS are then applied to the variable VAR_UCRTS.
=

275
VAR _ UCRTS r ,uc _ n ,t , s
+
 ACTr ,t −1, p , s ,'RHS ' + FLOr ,t −1, p , s ,'RHS ' + IRE r ,t −1, p , s ,'RHS ' 
 
 + COMCON + COMPRD 
 r ,t −1, s ,' RHS ' r ,t −1, s ,' RHS ' 
+
(NCAPr ,t −1, p,'RHS ' + CAPr ,t −1, p,'RHS ' )
with
VAR _ UCRTS .LOr ,uc _ n ,t , s = UC _ RHSRTS r ,uc _ n ,t , s ,'LO '
VAR _ UCRTS .UPr ,uc _ n ,t , s = UC _ RHSRTS r ,uc _ n ,t , s ,'UP '
VAR _ UCRTS .FX r ,uc _ n ,t , s = UC _ RHSRTS r ,uc _ n ,t , s ,'FX '

276
5.3.22.14 Equation: EQ(l)_UCSUS / EQE_UCSUS

Indices: user constraint (uc_n), period (t), timeslice (s)

Related variables: VAR_FLO; VAR_NCAP; VAR_CAP; VAR_ACT;


VAR_COMPRD; VAR_COMCON; VAR_IRE

Purpose: The growth constraint of type (t-1,t) EQ(l)_UCSUS establishes a constraint


between two successive periods t-1 and t. The growth constraint is generated for all
periods t. The constraint generated for each timeslice uc_ts_each and is summing over
regions (uc_r_sum).

Equation:

EQ(l ) _ UCSUSuc _ n ,t , s ∋ UC _ RHSTSuc _ n ,t , s ,bd ∧ uc_ts_eachr,uc_n, s ∧ uc_r_sum r,uc_n


∧ úc_t_succr,uc_n, t

 ACT _ GROWr ,t , p , s , ' LHS ' + FLO _ GROWr ,t , p , s , ' LHS ' + IRE _ GROWr ,t , p , s , ' LHS ' 
∑ 
r ∈uc_r_sum  + COMCON _ GROWr , t , s , ' LHS ' + COMPRD _ GROWr , t , s , ' LHS '



+
∑ (NCAP _ GROW
r ∈uc_r_sum
r , t , p , ' LHS ' + CAP _ GROWr ,t , p , ' LHS ' )

When control parameter VAR_UC=NO:


{≤; =; ≥}
UC _ RHSTSuc _ n ,t , s ,l
+
 ACT _ GROWr ,t −1, p , s , ' RHS ' + FLO _ GROWr ,t −1, p , s , ' RHS ' + IRE _ GROWr ,t −1, p , s , ' RHS ' 
∑ 

r ∈uc_r_sum  + COMCON _ GROWr , t −1, s , ' RHS ' + COMPRD _ GROWr , t −1, s , ' RHS '



+
∑ (NCAP _ GROW
r ∈uc_r_sum
r , t −1, p , ' RHS ' + CAP _ GROWr ,t −1, p , ' RHS ' )

When control parameter VAR_UC=YES, the user constraint is created as strict


equality and the RHS constant UC_RHSTS is replaced by the variable VAR_UCTS. The
bounds UC_RHSTS are then applied to the variable VAR_UCTS.
=

277
VAR _ UCTSuc _ n ,t , s
+
 ACTr ,t −1, p , s , ' RHS ' + FLOr ,t −1, p , s , ' RHS ' + IREr ,t −1, p , s , ' RHS ' 
∑ 

r ∈uc_r_sum  + COMCON + COMPRD


r , t −1, s , ' RHS ' r , t −1, s , ' RHS ' 
+
∑ (NCAP
r ∈uc_r_sum
r , t −1, p , ' RHS ' + CAPr ,t −1, p , ' RHS ' )

with
VAR _ UCTS .LOuc _ n ,t , s = UC _ RHSTS uc _ n ,t , s ,'LO '
VAR _ UCTS .UPuc _ n ,t , s = UC _ RHSTS uc _ n ,t , s ,'UP '
VAR _ UCTS .FX uc _ n ,t , s = UC _ RHSTS uc _ n ,t , s ,'FX '

278
6 The Endogenous Technological Learning (ETL) option
As discussed in chapter 8 of PART I, there are situations in which the rate at which a
technology’s unit investment cost changes over time is a function of cumulative
investment in the technology. In these situations, technological learning is called
endogenous.

Mixed Integer Programming (MIP) is employed in order to model Endogenous


Technological Learning (ETL) in TIMES. As has already been noted in the case of
Lumpy Investments (see section 5.3.11), MIP problems are much more difficult to solve
than standard LP problems, and so the ETL feature should be applied only where it is
deemed necessary to model a limited number of technologies as candidates for
Endogenous Technological Learning. This caution is especially required for large scale
TIMES instances. Another important caveat is that ETL is relevant when the modeling
scope is broad e.g. when a large portion of (or perhaps the entire) world energy system is
being modeled, since the technological learning phenomenon rests on global cumulative
capacity of a technology, and not on the capacity implemented in a small portion of the
world.

In this chapter we provide the data and modeling details associated with modeling
Endogenous Technological Learning (ETL) in TIMES. The implementation of ETL in
TIMES is based on the realization in the MARKAL model generator. The major part of
the MARKAL code for ETL could be transferred to TIMES. Accordingly the description
of ETL presented here follows the MARKAL documentation of ETL. To this end the
next three sections will address the Sets, Parameters, Variables, and Equations related to
the Endogenous Technological Learning option, including the special clustered learning
ETL option where a component common to several technologies learns, thereby
benefiting all the related (clustered) technologies.

6.1 Sets, Switches and Parameters


Like all other aspects of TIMES the user describes the ETL components of the energy
system by means of a Set and the Parameters and Switches described in this chapter.
Table 6.1 and Table 6.2 below describe the User Input Parameters, and the Matrix
Coefficient and Internal Model Sets and Parameters, respectively, that are associated with
the Endogenous Technological Learning option. Note that the special clustered learning
ETL option requires one additional User Input Parameter (ETL-CLUSTER), and two
additional Matrix Coefficient/Internal Model Parameters (CLUSTER and NTCHTEG).

Besides the basic data described in Table 6.1 the user controls whether or not the ETL
component is activated by means of the $SET ETL ‘YES’ switch. This switch is provided
by the data handling system when the user indicates that the ETL option is to be included
in a run. This permits the easy exclusion of the feature if the user does not want to
perform a MIP solve without having to remove the ETL data.

279
Table 6.1. Definition of ETL user input parameters
Input Parameter Alias/Internal Related Units/Range & Instance Description
(Indexes) Name Parameters Defaults (Required/Omit/
Special Conditions)
CCAP0 CCAP0 PAT • Units of capacity • Required, along The initial cumulative capacity (starting point on the
(r,p) CCOST0 (e.g., GW, PJa). with the other learning curve) for a (non-resource) technology that is
• [open]; no ETL input modeled as one for which endogenous technology
default. parameters, for learning (ETL) applies. Learning only begins once this
each learning level of installed capacity is realized.
technology • The CCAP0 parameter appears as the right-hand-side
(TEG). of the cumulative capacity definition constraint
(EQ_CUINV).
• Note that if the NCAP_PASTI parameter is specified
for an ETL technology, then its value in the first
period should match the value of CCAP0, otherwise
an infeasibility will occur.
CCAPM CCAPM CCOSTM • Units of capacity • Required, along The maximum cumulative capacity (ending point on
(r,p) (e.g., GW, PJa). with the other the learning curve) for a (non-resource) technology that
• [open]; no default ETL input is modeled as one for which endogenous technology
parameters, for learning (ETL) applies.
each learning • The parameter CCAPM does not appear in any of the
technology ETL constraints, but its value affects the values of a
(TEG). number of internal parameters that directly
contribute to one or more of the ETL constraints.
TEG TEG ETL-CUMCAP0 • Indicator. • Required to An indicator (always 1) that a process is modeled as
(p) ETL- • [1]; no default. identify the one for which endogenous technology learning (ETL)
CUMCAPMAX learning applies.
ETL-INVCOST0 technologies. • The set TEG controls the generation of the ETL
ETL-NUMSEG • For each TEG constraints. Each of the ETL constraints is generated
ETL- the other ETL only for those technologies that are in set TEG.
PROGRATIO input parameters
are required.

280
Input Parameter Alias/Internal Related Units/Range & Instance Description
(Indexes) Name Parameters Defaults (Required/Omit/
Special Conditions)
SC0 SC0 PAT • Base year • Required, along The investment cost corresponding to the starting
(r,p) monetary units with the other point on the learning curve for a technology that is
per unit of ETL input modeled as one for which endogenous technology
capacity (e.g., parameters, for learning (ETL) applies.
2000 M$/GW or each learning • The parameter SC0 does not appear in any of the
PJa). technology ETL constraints, but its value affects the values of a
• [open]; no (TEG).. number of internal parameters that directly
default. contribute to one or more of the ETL constraints.
SEG SEG ALPH • Number of steps. • Required, along The number of segments to be used in approximating
(r,p) BETA • [1-6]; no default. with the other the learning curve for a technology that is modeled as
CCAPK ETL input one for which endogenous technology learning (ETL)
CCOSTK parameters, for applies.
each learning • The SEG parameter appears in all of the ETL
technology constraints that are related to piecewise linear
(TEG).. approximation of the learning curve (EQ_CC,
EQ_COS, EQ_EXPE1, EQ_EXPE2, EQ_LA1,
EQ_LA2).
PRAT PRAT CCAPK • Decimal fraction. • Required, along The “progress ratio” for a technology that is modeled
(r,p) CCOST0 • [0-1]; no default. with the other as one for which endogenous technology learning (ETL)
CCOSTM ETL input applies. The progress ratio, which is referred to as the
PAT parameters, for learning rate, is defined as the ratio of the change in unit
PBT each learning investment cost each time cumulative investment in an
technology ETL technology doubles. That is, if the initial unit
(TEG). investment cost is SC0 and the progress ratio is PRAT,
then after cumulative investment is doubled the unit
investment cost will be PRAT * SC0.
• The parameter PRAT does not appear in any of the
ETL constraints, but its value affects the values of a
number of internal parameters (ALPH, BETA,
CCAPK, CCOST0) that directly contribute to one or

281
Input Parameter Alias/Internal Related Units/Range & Instance Description
(Indexes) Name Parameters Defaults (Required/Omit/
Special Conditions)
more of the ETL constraints.
CLUSTER CLUSTER • Decimal fraction. • Provided to The “cluster mapping and coupling factor” for a
(r,p,p) NCLUSTER • [0-1]; no default. model clustered technology that is modeled as a clustered technology is
endogenous associated with a key learning technology to which
technology endogenous technology learning (ETL) applies.
learning. Clustered technologies use the key ETL technology, and
• Each of the are subject to learning via the key technology.
learning • The first index of the CLUSTER parameter is a key
parameters must learning technology.
also be specified • The second index of the CLUSTER parameter is a
for the key clustered technology that is associated with this key
learning learning technology.
technology. • In general there may be several clustered
technologies each of which is associated with the
same key learning technology, and hence there may
be several instances of the CLUSTER parameter
each of which has the same key learning technology
as its first index.
• The numerical value of the CLUSTER parameter
indicates the extent of coupling between the
clustered technology and the key learning technology
to which it is associated.

282
Table 6.2. ETL-specific matrix coefficient and internal model parameters 41
Matrix Controls &
Coefficients Type Description & Calculations
(indexes)
ALPH I ALPH are the intercepts on the vertical axis of the line segments in the piecewise linear approximation of the
(r,k,p) cumulative cost curve. They are calculated in COEF_ETL.ETL from the starting and ending points of the cumulative
cost curve, its assumed form, the number of segments used in its piecewise linear approximation, and the choice of
successive interval lengths on the vertical axis to be such that each interval is twice as wide as the preceding one. The
parameter ALPH occurs in the ETL equation EQ_COS that defines the piecewise linear approximation to the
cumulative cost curve.
BETA I BETA are the slopes of the line segments in the piecewise linear approximation of the cumulative cost curve.
(r,k,p) They are calculated in COEF_ETL.ETL from the starting and ending points of the cumulative cost curve, its assumed
form, the number of segments used in its piecewise linear approximation, and the choice of successive interval
lengths on the vertical axis to be such that each interval is twice as wide as the preceding one. The parameter BETA
occurs in the ETL equation EQ_COS that defines the piecewise linear approximation to the cumulative cost curve.
CCAP0 A CCAP0 is the initial cumulative capacity (starting point on the learning curve). The parameter CCAP0 occurs in
(r,p) the ETL equation EQ_CUINV that defines cumulative capacity in each period.
CCAPK I CCAPK are the break points on the horizontal axis in the piecewise linear approximation of the cumulative cost
(k,p) curve. They are calculated in COEF_ETL.ETL from the starting and ending points of the cumulative cost curve, its
assumed form, the number of segments used in its piecewise linear approximation, and the choice of successive
interval lengths on the vertical axis to be such that each interval is twice as wide as the preceding one. The parameter
CCAPK occurs in the ETL equations EQ_LA1 and EQ_LA2 whose role is to ensure that variable R_LAMB(r,t,k,p)
lies in the kth interval, i.e., between CCAPK(r,k-1,p) and CCAPK(r,k,p), when its associated binary variable
R_DELTA(r,t,k,p) = 1.
CCOST0 I CCOST0 is the initial cumulative cost (starting point on the learning curve). It is calculated in COEF_ETL.ETL
(r,p) from the initial cumulative capacity (CCAP0) and corresponding initial investment cost (user input parameter SC0)
and the progress ratio (user input parameter PRAT). The parameter CCOST0 occurs in the ETL equation EQ_IC1
that defines first period investment costs (prior to discounting).

41
Parameters that occur in the ETL-specific equations but that also occur in non-ETL equations (e.g., TCH_LIFE) are not listed in this table.

283
Matrix Controls &
Coefficients Type Description & Calculations
(indexes)
SEG A The user input parameter SEG is the number of segments in the cumulative cost curve. The parameter SEG
(r,p) occurs in all of those ETL equations that are related to the piecewise linear approximation of the cumulative cost
curve.
TEG S TEG is the set of technologies to which endogenous technology learning (ETL) applies. Each of the ETL
(p) equations has set TEG as an index.
CLUSTER I The “cluster mapping and coupling factor” user input parameter CLUSTER is only relevant when modeling
(r,p,p) clustered endogenous technology learning. The parameter CLUSTER occurs in the special ETL cluster equation
EQ_CLU that defines investment in new capacity (VAR_NCAP) in the key learning technology as the weighted sum
of investments in new capacity of the clustered technologies that are attached to the key technology. (The weights
used are the numeric values of the CLUSTER parameter.)
NTCHTEG I The parameter NTCHTEG is only relevant when modeling clustered endogenous technology learning. If TEG is
(r,p) an ETL technology, then NTCHTEG(R,TEG) is the number of clustered technologies that are attached to key
technology TEG. NTCHTEG is calculated in COEF_ETL.ETL from the “cluster mapping and coupling factor”
(CLUSTER). It occurs in the special ETL cluster equation EQ_CLU.
PBT The learning index PBT is an internal parameter calculated in COEF_ETL.ETL. It is derived from the progress
(r,p) ratio PRAT using the formula: PBT(r,p) = -log(PRAT(r,p))/log(2). PBT does not occur directly in the equations, but
is used in the calculation of equation coefficients.
PAT The internal parameter PAT describes the specific investment costs of the first unit. It is derived in
(r,p) COEF_ETL.ETL using PBT, SC0 and CCAP0. PAT does not occur directly in the equations, but is used in the
calculation of equation coefficients.
K The set K has the members ‘1’-‘6’ and is used as indicator for the kink points of the piecewise linear
approximation of the cumulative cost curve. The number of elements can be changed in the *run file if desired.
WEIG I The internal parameter WEIG is calculated in COEF_ETL.ETL and is used as a factor in the calculation of the
(r,k,prc) length of the intervals being used in the piecewise linear approximation of the cumulative cost curve. The interval
lengths on the vertical axis are chosen in such a way that each interval is twice as wide as the preceding one.
SAL_ETLINV I This parameter credits back to the regional objective function (MR_PRICE) the discounted salvage cost of
(r,t,p) learning technology investments that remain available past the end of the modeling horizon. [Note that this
parameter does not specifically exist in the code, but rather the expression is explicitly written in MMEQTEG.ML.
See MR_SV in the equation section.]

284
6.2 Variables
The variables that are used to model the Endogenous Technological Learning option
in TIMES are presented in Table 6.3 below. As is the case with the modeling of lumpy
investments, the primary role of the variables and equations used to model ETL is to
control the standard TIMES investment variable (VAR_NCAP) and the associated
dynamic cost of these investments, so ETL is rather self-contained. That is the
VAR_NCAP variable links the ETL decisions to the rest of the model, and the VAR_IC
investment cost variable determines the associated contribution to the regional investment
costs (VAR_OBJINV). Note that the special clustered learning ETL option does not
require any additional variables, as compared with the modeling of endogenous
technology learning when there are no clusters.

Table 6.3. ETL-specific model variables


Variable Variable Description
(Indexes)
VAR_CC The cumulative investment in capacity for an ETL technology. This
AP variable represents the initial cumulative capacity (CCAP0) plus investments
(r,t,p) in new capacity made up to and including the current period. This variable
differs from the total installed capacity for a technology (VAR_CAP) in that it
includes all investments in new capacity made up to and including the current
period, whereas the latter only includes investments that are still available (i.e.
whose life has not expired yet).
VAR_CC The cumulative cost of investment in capacity for an ETL technology. The
OST cumulative cost is interpolated from the piecewise linear approximation of the
(r,t,p) cumulative cost curve.
VAR_DE Binary variable (takes the value 0 or 1) used for an ETL technology to
LTA indicate in which interval of the piecewise linear approximation of the
(r,t,p,k) cumulative cost curve the cumulative investment in capacity (VAR_CCAP)
lies. A value of 1 for this variable for exactly one interval k indicates that
VAR_CCAP lies in the kth interval.
VAR_IC The portion of the cumulative cost of investment in capacity for an ETL
(r,t,p) technology (VAR_CCOST) that is incurred in period t, and so subject to the
same discounting that applies to other period t investment costs. This variable
is calculated as the difference between the cumulative costs of investment in
capacity for periods t and t-1, and enters the regional investment cost part of
the objective function (EQ_OBJINV)
VAR_LA Continuous variable used for an ETL technology to represent the portion
MBD of cumulative investment in capacity (VAR_CCAP) that lies in the kth interval
(r,t,p,k) of the piecewise linear approximation of the cumulative cost curve. For a
given ETL technology and given time period, ETL model constraints
involving this variable and the associated binary variable VAR_DELTA
ensure that VAR_LAMBD is positive for exactly one interval k.

285
6.2.1 VAR_CCAP(r,t,p)

Description: The cumulative investment in capacity for an ETL technology.

Purpose and This variable tracks the cumulative investment in capacity for an ETL technology
Occurrence: which then determines, along with the progress ratio, how much the investment
cost is to be adjusted for the learning gains.

This variable is generated for each ETL technology in all time periods beginning
from the period that the technology is first available. It appears in the cumulative capacity
definition constraint (EQ_CUINV) that defines it as the initial cumulative capacity
(CCAP0) plus investments in new capacity (VAR_NCAP) made up to and including the
current period. It also appears in the cumulative capacity interpolation constraint
(EQ_CC). This constraint equates VAR_CCAP(r,t,p) to the sum over k of the variables
VAR_LAMBD(r,t,p,k) used to represent the cumulative investment in capacity lying in
the kth interval of the piecewise linear approximation of the cumulative cost curve.

Units: PJ/a, Gw, or Bvkm/a, or any other unit defined by the analyst to represent
technology capacity.

Bounds: This variable is not directly bounded. It may be indirectly bounded by specifying
a bound (NCAP_BND) on the level of investment in new capacity
(VAR_NCAP).

6.2.2 VAR_CCOST(r,t,p)

Description: The cumulative cost of investment in capacity for an ETL technology.

Purpose and This variable defines the interpolated cumulative cost of investment in capacity
in terms
Occurrence: of the continuous variables VAR_LAMBD and the binary variables
VAR_DELTA, and the internal model parameters ALPH and BETA. ALPH and
BETA represent the intercepts on the vertical axis and the slopes, respectively, of
the line segments in the piecewise linear approximation of the cumulative cost
curve.

This variable is generated for each ETL technology in all time periods beginning
from the period that the technology is first available. It appears in the cumulative
cost interpolation equation (EQ_COS) that defines it. It also appears in the
equations EQ_IC1 and EQ_IC2 that define the VAR_IC variables that represent
the portions of the cumulative cost of investment in capacity that are incurred in
period t.

Units: Million 2000 US$, or any other unit in which costs are tracked.

Bounds: None.

286
6.2.3 VAR_DELTA(r,t,p,k)

Description: Binary variable (takes the value 0 or 1) used for an ETL technology to indicate in
which interval of the piecewise linear approximation of the cumulative cost curve
the cumulative investment in capacity (VAR_CCAP) lies.

Purpose and To indicate which step on the learning curve a technology achieves. A value of 1
for
Occurrence: this variable for interval k, and zero values for intervals ≠ k, imply that the
cumulative investment in capacity (VAR_CCAP) lies in the kth interval of the
piecewise linear approximation of the cumulative cost curve.

This binary variable, along with the associated continuous variable


VAR_LAMBD, are generated for each ETL technology in all time periods
beginning from the period that the technology is first available, and for each
interval in the piecewise linear approximation. It appears in the constraint
EQ_DEL, whose purpose is to ensure that, for each ETL technology in each
period, it has a value of 1 for exactly one interval k (with zero values for intervals
≠ k); and in the cumulative cost interpolation constraint (MR_COS). It also
appears in the pair of constraints EQ_LA1 and EQ_LA2, whose purpose is to
ensure that VAR_LAMBD, if positive for interval k, is between the two break
points on the horizontal axis for interval k in the piecewise linear approximation.
(See below under “Purpose and Occurrence” for the variable VAR_LAMBD.)

Finally, this binary variable appears in two constraints EQ_EXPE1 and


EQ_EXPE2, whose purpose is to reduce the domain of feasibility of the binary
variables and thereby improve solution time for the Mixed Integer Program
(MIP).

Units: None. This is a binary variable that takes the value 0 or 1.

Bounds: This binary variable is not directly bounded.

6.2.4 VAR_IC(r,t,p)

Description: The portion of the cumulative cost of investment in capacity for an ETL
technology (VAR_CCOST) that is incurred in period t.

Purpose and This variable represents the portion of the cumulative cost of investment in
capacity for
Occurrence: an ETL technology that is incurred in period t, and so is subject to the same
discounting in the investment cost part of the objective function (EQ_OBJINV)
that applies to other period t investment costs.

This variable is calculated as the difference between the cumulative costs of


investment in capacity for period t and t-1, and is generated for each ETL
technology in all time periods beginning from the period that the technology is

287
first available. Apart from its appearance in the objective function, this variable
appears in the constraints EQ_IC1 and EQ_IC2 that define it in the first period
that the technology is available, and in subsequent periods, respectively. It also
appears in the salvage of investments constraint (EQ_OBJSALV) which
calculates the amount to be credited back to the objective function for learning
capacity remaining past the modeling horizon.

Units: Million 2000 US$, or any other unit in which costs are tracked.

Bounds: None.

6.2.5 VAR_LAMBD(r,t,p,k)

Description: Continuous variable used for an ETL technology to represent the portion of
cumulative investment in capacity (VAR_CCAP) that lies in the kth interval of
the piecewise linear approximation of the cumulative cost curve.

Purpose and A positive value for this variable for interval k, and zero values for intervals ≠ k,
th
Occurrence: imply that the cumulative investment in capacity (VAR_CCAP) lies in the k
interval of the piecewise linear approximation of the cumulative cost curve. This
continuous variable, along with the associated binary variable VAR_DELTA, are
generated for each ETL technology in all time periods beginning from the period
that the technology is first available (START), and for each interval in the
piecewise linear approximation.

Since this variable represents the portion of the cumulative investment in


capacity (VAR_CCAP) that lies in the kth interval of the piecewise linear
approximation of the cumulative cost curve, the value of EQ_LAMBD – if
positive – is required to be between CCAPK(k-1,p) and CCAP(k,p), where the
internal model parameters CCAPK are the break points on the horizontal axis in
the piecewise linear approximation of the cumulative cost curve. A zero value for
VAR_LAMBD is also allowed. These requirements on the value of
VAR_LAMBD are imposed via the pair of constraints EQ_LA1 and EQ_LA2, in
which the value for VAR_LAMBD is subject to lower and upper bounds of
CCAPK(k-1,p) * VAR_DELTA and CCAP(k,p) * VAR_DELTA respectively,
where VAR_DELTA = VAR_DELTA(r,t,p,k) is the binary variable associated
with VAR_LAMBD = VAR_LAMBD(r,t,p,k).

This variable also appears in the cumulative capacity interpolation constraint


(EQ_CC), and the cumulative cost interpolation constraint (EQ_COS).

Units: PJ/a, Gw, or Bvkm/a, or any other unit defined by the analyst to represent
technology capacity.

Bounds: The pair of constraints EQ_LA1 and EQ_LA2 that are discussed above have the
effect of either bounding VAR_LAMBD between CCAPK(k-1,p) and
CCAP(k,p), or forcing VAR_LAMBD to be zero.

288
6.3 Equations
The equations that are used to model the Endogenous Technological Learning option
in TIMES are presented in Table 6.4 below. Since the primary role of the variables and
equations used to model ETL is to control the standard TIMES investment variable
(VAR_NCAP) and the associated dynamic cost of these investments, ETL is rather self-
contained. That is the VAR_NCAP variable links the ETL decisions to the rest of the
model, and the VAR_IC investment cost variable determines the associated contribution
to the regional investment cost part objective function (EQ_OBJINV). Note that the
special clustered learning ETL option involves one additional equation (EQ_CLU), as
compared with the modeling of endogenous technology learning where there are no clusters.

Reminder: the ETL formulation is activated at run time from the data handling systems
(VEDA-FE,) which in turn set the $SET ETL ‘YES’ switch.

Table 6.4. ETL-specific model constraints


Constraints Constraint Description GAMS Ref
(Indexes)
EQ_CC The Cumulative Capacity Interpolation constraint for EQETL.ETL
(r,t,p) an ETL technology. This constraint defines the cumulative
investment in capacity for a technology (VAR_CCAP) in a
period as the sum over all intervals k of the continuous
variables R_LAMBD(r,t,p,k) that represent cumulative
investment in capacity as lying in the kth interval of the
piecewise linear approximation of the cumulative cost
curve.
EQ_CLU Constraint that is generated only for the special EQETL.ETL
(r,t,p) clustered learning ETL option (CLUSTER). For a key
learning ETL technology it defines investment in new
capacity (VAR_NCAP) as the weighted sum of
investments in new capacity of the associated clustered
technologies.
EQ_COS The Cumulative Cost Interpolation constraint for an EQETL.ETL
(r,t,p) ETL technology. This constraint defines the interpolated
cumulative cost of investment in capacity for a technology
(VAR_CCOST) in a period in terms of the binary variables
VAR_DELTA and the continuous variables
VAR_LAMBD, and the internal model parameters ALPH
and BETA.
EQ_CUINV The Cumulative Capacity Definition constraint for an EQETL.ETL
(r,t,p) ETL technology. Defines the cumulative investment in
capacity for a technology in a period as the initial
cumulative capacity (CCAP0) plus the sum of investments
in new capacity (VAR_NCAP) made up to and including
this period.

289
Constraints Constraint Description GAMS Ref
(Indexes)
EQ_DEL The constraint for an ETL technology that ensures that EQETL.ETL
(r,t,p) in each period, there is exactly one interval k for which the
binary variable R_DELTA(r,t,p,k) has value 1 (with zero
values for intervals ≠ k).
EQ_EXPE1 One of two constraints for an ETL technology to EQETL.ETL
(r,t,p,k) improve MIP solution time by reducing the domain of
feasibility of the binary variables VAR_DELTA.
EQ_EXPE2 Second of two constraints for an ETL technology to EQETL.ETL
(r,t,p,k) improve MIP solution time by reducing the domain of
feasibility of the binary variables VAR_DELTA.
EQ_IC1 The constraint for an ETL technology that defines the EQETL.ETL
(r,t,p) portion of the cumulative cost of investment in capacity
(VAR_IC) that is incurred in the first period of the model
horizon.
EQ_IC2 The constraint for an ETL technology that defines the EQETL.ETL
(r,t,p) portion of the cumulative cost of investment in capacity
(VAR_IC) that is incurred in each period but the first one.
EQ_LA1 The constraint for an ETL technology that sets a lower EQETL.ETL
(r,t,p,k) bound on the continuous variable VAR_LAMBD(r,t,p,k).
EQ_LA2 The constraint for an ETL technology that sets an upper EQETL.ETL
(r,t,p,k) bound on the continuous variable VAR_LAMBD(r,t,p,k).
EQ_OBJSAL For an ETL technology in periods appropriately close EQOBJSAL.M
(r,cur) to the model horizon part of the investment costs OD
(VAR_IC) exceed the model horizon. This part of the
investment cost is reflected in the calculation of the salvage
value variable VAR_OBJSAL.
EQ_OBJINV The endogenously calculated cost of investments for EQOBJINV.M
(r,cur) learning technologies (VAR_IC) needs to be discounted OD
and included in the regional investment cost part of the
objective function (EQ_OBJINV) in place of the traditional
investment calculation using variable VAR_NCAP.

290
6.3.1 EQ_CC(r,t,p)

Description: The Cumulative Capacity Interpolation constraint for an ETL technology.

Purpose and This constraint defines the cumulative investment in capacity for a technology in
a
Occurrence: period (VAR_CCAP) as the sum over all intervals k of the continuous variables
VAR_LAMBD(r,t,p,k) that represent cumulative investment in capacity as lying
in the kth interval of the piecewise linear approximation of the cumulative cost
curve. This constraint links the cumulative capacity investment variable
(VAR_CCAP) to the variables VAR_LAMBD. In combination with other ETL
constraints, it is fundamental to ensuring the validity of the piecewise linear
approximation of the cumulative cost curve.

This equation is generated in each time period for which the ETL technology
is available.

Units: Technology capacity units.

Type: Binding. The equation is an equality (=) constraint.

Interpretation of the results:


Primal: The level of this constraint must be zero in a feasible solution.
Dual variable: The dual variables of mixed integer problems have limited usefulness, as
discussed in chapter 7 of PART I.

Equation

EQ _ CCr ,t , p ∀[( p ∈ teg ) ∧ ((r , t , p ) ∈ rtp )]

Cumulative investment in capacity in the current


period
VAR _ CCAP
r ,t , p
{=}
Sum over all intervals k (in the piecewise linear approximation of the cumulative cost
curve) of the continuous variables VAR_LAMBD in the current period t.

∑ VAR _ LAMBDr ,t , p, k
k

291
6.3.2 EQ_CLU(r,t,p)

Description: For a key learning ETL technology it defines investment in new capacity
(VAR_NCAP) as the weighted sum of investments in new capacity of the
attached clustered technologies. The weights used are the numeric values of the
CLUSTER parameter.

Purpose and Defines the relationship between investment in new capacity for a key learning
Occurrence: ETL technology and investment in new capacity for the associated clustered
technologies. This equation is generated in each time period for which the ETL
technology is available. It is a key learning technology, that is, that has associated
clustered technologies.

Units: Money units, e.g., million 2000 US$, or any other unit in which costs are tracked.

Type: Binding. The equation is an equality (=) constraint.

Interpretation of the results:


Primal: The level of this constraint must be zero in a feasible solution.
Dual variable: The dual variable (DVR_CLU) of this constraint in the MIP solution is of little
interest.

Remarks: Activation of the special clustered learning ETL option occurs automatically
if data is included for the CLUSTER parameter.

Equation

( p ∈ teg ) ∧ (NTCHTEGr , p > 0 ) ∧ 


EQ _ CLU r ,t , p ∀ 
((r , t , p ) ∈ rtp ) 

Investment in new capacity (for key learning technology p ∈ teg) in period


t

VAR _ NCAPr , t , p
{=}
The weighted sum of the investments in new capacity in period t of the
clustered technologies p’ attached to the key learning technology p ∈ teg, and
whose START period is less than or equal to t. The weights used are the
numeric values of the CLUSTER parameter.

292

( )
(CLUSTERr , p, p ' *VAR _ NCAPr ,t , p ' )
p '$ CLUSTERr , p, p ' > 0 ∧
(r ,t , p'∈rtp )

6.3.3 EQ_COS(r,t,p)

Description: The Cumulative Cost Interpolation constraint for an ETL technology.

Purpose and This constraint defines the interpolated cumulative cost of investment in capacity
Occurrence for a technology in a period (VAR_CCOST) in terms of the binary variables
VAR_DELTA and the continuous variables VAR_LAMBD, and the internal
model parameters ALPH and BETA, where ALPH and BETA represent the
intercepts on the vertical axis and the slopes, respectively, of the line segments in
the piecewise linear approximation of the cumulative cost curve. For a more
precise definition, see “Equation” below. In combination with other ETL
constraints, it is fundamental to ensuring the validity of the piecewise linear
approximation of the cumulative cost curve. This equation is generated in each
time for which the ETL technology is available.

Units: Money units, e.g., million 2000 US$, or any other unit in which costs are tracked.

Type: Binding. The equation is an equality (=) constraint.

Interpretation of the results:


Primal: The level of this constraint must be zero in a feasible solution.
Dual variable: The dual variables of mixed integer problems have limited usefulness, as
discussed in chapter 7 of PART I.

Equation

EQ _ COS r ,t , p ∀[( p ∈ teg ) ∧ ((r , t , p ) ∈ rtp )]

Interpolated cumulative cost of investment in capacity in the current


period
VAR _ CCOST
r ,t , p
{=}
Sum over all intervals k (in the piecewise linear approximation of the cumulative cost
curve) of ALPH times the binary variable VAR_DELTA plus BETA times the continuous
variable VAR_LAMBD, for the current period t, where ALPH and BETA represent the
intercepts on the vertical axis and the slopes, respectively, of the kth interval.

293
∑ ( ALPH k , p *VAR _ DELTAr ,t , p, k + BETAk , p *VAR _ LAMBDr ,t , p, k )
k

294
6.3.4 EQ_CUINV(r,t,p)

Description: The Cumulative Capacity Definition constraint for an ETL technology.

Purpose and This constraint defines the cumulative investment in capacity of a technology in a
Occurrence: period (VAR_CCAP) as the initial cumulative capacity (CCAP0) plus the sum of
investments in new capacity made up to and including this period. This equation
is generated in each time period for which the ETL technology is available.

Units: Technology capacity units.

Type: Binding. The equation is an equality (=) constraint.

Interpretation of the results:


Primal: The level of this constraint must be zero in a feasible solution.
Dual variable: The dual variables of mixed integer problems have limited usefulness, as
mentioned above.

Equation

EQ _ CUINVr ,t , p ∀[( p ∈ teg ) ∧ ((r , t , p ) ∈ rtp )]

Cumulative investment in capacity in the current


period

VAR _ CCAPr ,t , p
{=}
Cumulative investment in capacity at the start of the
learning process.

CCAP 0 r , p +

Sum of the investments made since the technology is first


available.

∑VAR _ NCAP
u∈rtpr ,u , p ∧ u ≤t
r ,u , p

295
6.3.5 EQ_DEL(r,t,p)

Description: The constraint for an ETL technology that ensures that in each time period, there
is exactly one interval k for which the binary variable VAR_DELTA(r,t,p,k) has
value 1 (with zero values for intervals ≠ k).

Purpose and To ensure that only one of the binary variable VAR_DELTA(r,t,p,k) has value 1
Occurrence: for each technology. This constraint, in combination with other ETL constraints,
is fundamental to ensuring the validity of the piecewise linear approximation of
the cumulative cost curve. This equation is generated in each time period for
which the ETL technology is available.

Units: None.

Type: Binding. The equation is an equality (=) constraint.

Interpretation of the results:


Primal: The level of this constraint must be 1 in a feasible solution.
Dual variable: The dual variables of mixed integer problems have limited usefulness, as already
mentioned.

Equation

EQ _ DELr ,t , p ∀[( p ∈ teg ) ∧ ((r , t , p ) ∈ rtp )]

Sum over all intervals k (in the piecewise linear approximation of the cumulative cost
curve) of the binary variables VAR_DELTA in the current period t.

∑ VAR _ DELTAr ,t , p, k
k

{=} 1

296
6.3.6 EQ_EXPE1(r,t,p,k)

Description: One of two constraints for an ETL technology to improve MIP solution time by
reducing the domain of feasibility of the binary variables VAR_DELTA.

Purpose and To improve MIP solution time this constraint takes advantage of the observation
Occurrence: that cumulative investment is increasing with time, thus ensuring that if the
cumulative investment in period t lies in segment k, then it will not lie in
segments k-1, k-2, …, 1 in period t+1. This equation is generated for each ETL
technology in each time period, for which the technology is available, and
excluding the final period (TLAST), and for each interval k in the piecewise
linear approximation of the cumulative cost curve.

Units: None.

Type: Binding. The equation is a greater than or equal to (≥) constraint.

Interpretation of the results:


Primal: The level of this constraint must be greater than or equal to zero in a feasible
solution.
Dual variable: The dual variables of mixed integer problems have limited usefulness, as already
mentioned.

Equation

EQ _ EXPE1r ,t , p ,k ∀[( p ∈ teg ) ∧ ((r , t , p ) ∈ rtp ) ∧ (t < TLAST )]

Sum over intervals j ≤ k of binary variables VAR_DELTA(r,t,p,j), for the kth interval,
in period t.

∑ (VAR _ DELTAr ,t , p, j )
j ≤k

{≥}
Sum over intervals j ≤ k of binary variables VAR_DELTA(r,t,p,j), for the k interval,
th

in period t+1.

∑ (VAR _ DELTAr ,t +1, p, j )


j ≤k

297
6.3.7 EQ_EXPE2(r,t,p,k)

Description: Second of two constraints for an ETL technology to improve MIP solution time
by reducing the domain of feasibility of the binary variables VAR_DELTA. Both
constraints rely on the observation that cumulative investment is increasing as
time goes on.

Purpose and To improve MIP solution times this constraint is derived from the observation
Occurrence: that if cumulative investment in period t lies in segment k, then it must lie in
segment k or k+1 or k+2 etc … in period t+1.

This equation is generated for each ETL technology in each time period, for
which the technology is available, and excluding the final period (TLAST), and
for each interval k in the piecewise linear approximation of the cumulative cost
curve.

Units: None.

Type: Binding. The equation is a less than or equal to (≤) constraint.

Interpretation of the results:


Primal: The level of this constraint must be less than or equal to zero in a feasible
solution.
Dual variable: The dual variables of mixed integer problems have limited usefulness, as already
mentioned.

Equation

EQ _ EXPE 2 r ,t , p ,k ∀[( p ∈ teg ) ∧ ((r , t , p ) ∈ rtp ) ∧ (t < TLAST )]

Sum over intervals j ≥ k of binary variables VAR_DELTA(r,t,p,j), for the k interval,


th

in period t.

∑ (VAR _ DELTAr ,t , p, j )
j ≥k
{≤}
Sum over intervals j ≥ k of binary variables VAR_DELTA(r,t,p,j), for the k interval,
th

in period t+1.

∑ (VAR _ DELTAr ,t +1, p, j )


j ≥k

298
6.3.8 EQ_IC1(r,t,p)

Description: The constraint for an ETL technology that defines the portion of the cumulative
cost of investment in capacity (VAR_IC) that is incurred in period t, where t =
first period of model horizon.

Purpose and To determine the variable VAR_IC which represents the current investment cost
Occurrence: incurred in the first period a learning technology is available according to the
cumulative investments made in that period. where VAR_IC then enters the
regional investment cost part of the objective function (EQ_OBJINV) subject to
the same discounting that applies to other period t investment costs. This
equation is generated for the first period of the model horizon.

Units: Money units, e.g., million 2000 US$, or any other unit in which costs are tracked.

Type: Binding. The equation is an equality (=) constraint.

Interpretation of the results:


Primal: The level of this constraint must be zero in a feasible solution.
Dual variable: The dual variables of mixed integer problems have limited usefulness, as already
mentioned.

Equation

EQ _ IC1r ,t , p ∀( p ∈ teg ) ∧ (t = MIYR _ V 1)

The portion of the cumulative cost of investment in capacity that is incurred in


period t, in this case the first period the technology is available.

VAR _ ICr ,t , p
{=}

The cumulative cost of investment in new capacity in the first period t (t =


MIYR_V1).

VAR _ CCOSTr ,t , p −

The initial cumulative cost of investment in new capacity for a learning technology.

CCOST 0

299
6.3.9 EQ_IC2(r,t,p)

Description: The constraint for an ETL technology that defines the portion of the cumulative
cost of investment in capacity that is incurred in each period t being not the first
period.

Purpose and To determine the variable VAR_IC which represents the current investment cost
Occurrence: incurred in period t according to the cumulative investments made thus far,
where VAR_IC then enters the regional investment cost part of the objective
function (EQ_OBJINV) subject to the same discounting that applies to other
period t investment costs. This equation is generated in each time period being
not the first period of the model horizon.

Units: Money units, e.g., million 2000 US$, or any other unit in which costs are tracked.

Type: Binding. The equation is an equality (=) constraint.

Interpretation of the results:


Primal: The level of this constraint must be zero in a feasible solution.
Dual variable: The dual variables of mixed integer problems have limited usefulness, as already
mentioned.

Equation

EQ _ IC 2 r ,t , p ∀( p ∈ teg ) ∧ (t > MIYR _ V 1)

The portion of the cumulative cost of investment in capacity that is incurred in period t.

VAR _ ICr ,t , p
{=}

The cumulative cost of investment in new capacity as of period t.

VAR _ CCOSTr ,t , p −

The cumulative cost of investment in new capacity as of the previous period t-1.

VAR _ CCOSTr ,t −1, p

300
6.3.10 EQ_LA1(r,t,p,k)

Description: The constraint for an ETL technology that sets a lower bound on the continuous
variable VAR_LAMBD(r,t,p,k).

Purpose and To set the lower bound for VAR_LAMBD(r,t,p,k) to CCAPK(r,k-1,p) *


Occurrence: VAR_DELTA, where CCAPK(r,k-1,p) is the left hand end of the kth interval and
VAR_DELTA = VAR_DELTA(r,t,p,k) is the binary variable associated with
VAR_LAMBD(r,t,p,k). If binary variable VAR_DELTA = 1, the effect is to set a
lower bound on variable VAR_LAMBD(r,t,p,k) of CCAPK(r,k-1,p), whereas if
VAR_DELTA = 0 the effect is to set a lower bound of 0.This constraint, in
combination with other ETL constraints, is fundamental to ensuring the validity
of the piecewise linear approximation of the cumulative cost curve.

This equation is generated in each time period, for which the ETL technology is
available, and for each interval k in the piecewise linear approximation of the
cumulative cost curve.

Units: Technology capacity units.

Type: Binding. The equation is a greater than or equal to (≥) constraint.

Interpretation of the results:


Primal: The level of this constraint must be greater than or equal to zero in a feasible
solution.
Dual variable: The dual variables of mixed integer problems have limited usefulness, as already
mentioned.

Equation

EQ _ LA1r ,t , p ,k ∀[( p ∈ teg ) ∧ ((r , t , p ) ∈ rtp )]

th
Portion of the cumulative investment in capacity that lies in the k interval (of the
piecewise linear approximation of the cumulative cost curve), in the current period.

VAR _ LAMBDr ,t , p , k
{≥}
Left hand end of the kth interval (CCAPK(r,k-1,p)) times binary variable
VAR_DELTA(r,t,p,k), in the current period.

CCAPK r , k −1, p * VAR _ DELTAr ,t , p , k

301
6.3.11 EQ_LA2(r,t,p,k)

Description: The constraint for an ETL technology that sets an upper bound on the continuous
variable VAR_LAMBD(r,t,p,k).

Purpose and To set the upper bound of VAR_LAMBD(r,t,p,k) to CCAPK(r,k,p) *


th
Occurrence: VAR_DELTA, where CCAPK(r,k,p) is the right hand end of the k interval and
VAR_DELTA = VAR_DELTA(r,t,p,k) is the binary variable associated with
VAR_LAMBD(r,t,p,k). If binary variable VAR_DELTA = 1, the effect is to set
an upper bound on variable VAR_LAMBD(r,t,p,k) of CCAPK(r,k,p), whereas if
VAR_DELTA = 0 the effect is to set an upper bound of 0.This constraint, in
combination with other ETL constraints, is fundamental to ensuring the validity
of the piecewise linear approximation of the cumulative cost curve.

This equation is generated in each time period, for which the ETL technology is
available, and for each interval k in the piecewise linear approximation of the
cumulative cost curve.

Units: Technology capacity units.

Type: Binding. The equation is a less than or equal to (≤) constraint.

Interpretation of the results:


Primal: The level of this constraint must be less than or equal to zero in a feasible
solution.
Dual variable: The dual variable (DVR_LA2) of this constraint in the MIP solution is of little
interest.

Equation

MR _ LA2 r ,t , p ,k ∀[( p ∈ teg ) ∧ ((r , t , p ) ∈ rtp )]

th
Portion of the cumulative investment in capacity that lies in the k interval (of the
piecewise linear approximation of the cumulative cost curve), in the current period.

VAR _ LAMBDr ,t , p ,k
{≤}
th
Right hand end of the k interval (CCAPK(r,k,p)) times binary variable
R_DELTA(r,t,p,k), in the current period.

CCAPK r ,k , p *VAR _ DELTAr ,t , p ,k

302
6.3.12 EQ_OBJSAL(r,cur)

Description: Regional salvage value part of objective function adjusted to include the salvage
value of endogenously determined investments (VAR_IC) in learning
technologies. A salvage value for a learning technology investment exists when
the technical lifetime of the investment exceeds the model horizon.

Purpose and The objective function part calculating the salvage value is changed (for learning
Ocurrence: technologies only) by replacing the traditional calculation of the salvage value of
investments with one based on the investment costs of learning technologies
(VAR_IC).

Units: Money units, e.g., million 2000 US$, or any other unit in which costs are tracked.

Type: Binding. The equation is an equality (=) constraint.

Equation

EQ _ OBJSALr ,cur

All the basic objective function term for calculating the salvage value
(section 5.2.8)

The calculated salvage value associated with the ETL technologies. The
internally derived parameter coefficient OBJSIC describing the portion of the
investment costs that has to be salvaged. It takes into account the discounting of
the salvage value.

+ ∑ [OBJSICr ,t , p *VAR _ ICr ,t , p ]


t , p∈teg

303
6.3.13 EQ_OBJINV(r,cur)

- see EQ_OBJINV in section 5.2.2 for a general description without ETL

Description: Regional investment cost part of objective function adjusted to include the
endogenously determined investment cost (VAR_IC) for new investments in
learning technologies.

Purpose and The objective function part calculating the investment costs is changed (for
Occurrence: learning technologies only) by replacing the traditional calculation of discounted
cost of investments in new capacity with that of the endogenously determined
value. This equation is generated for each region where the learning investment
costs occur in each time period beginning from the period, for which the ETL
technology is available.

Equation

EQ _ OBJINVr ,cur

All the basic objective function terms for investment costs (section 5.2.2)


The calculated investments costs associated with the ETL technologies.

+ ∑ [DISCr ,t , p *VAR _ ICr ,t , p ]


t , p∈teg

304
7 The TIMES Climate Module

This chapter contains the full documentation on the Climate Module option for the
TIMES model. The chapter is divided in 8 sections: section 7.1 contains a detailed
description of the theoretical approach taken, sections 7.2 to 7.6 present the parameters,
variables, and equations required by the Climate Module. Section 7.7 discusses the
GAMS implementation of the Climate Option, and section 7.8 gives useful references for
the chapter’s material. 42

7.1 Formulation of the TIMES Climate Module

7.1.1 Approach taken

The Climate Module starts from global emissions as generated by the TIMES global
model, and proceeds to compute successively:
- the changes in CO2 concentrations in three reservoirs,
- the total change (over pre-industrial times) in atmospheric radiative forcing from
anthropogenic causes, and
- the temperature changes (over pre-industrial times) in two reservoirs.

The Climate Equations used to perform these calculations are adapted from Nordhaus
and Boyer (1999), who proposed linear recursive equations for calculating concentrations
and temperature changes. These linear equations give results that are good
approximations of those obtained from more complex climate models (Drouet et al.,
2004; Nordhaus and Boyer, 1999). In addition, the non-linear radiative forcing equation
used by these authors is the same as the one used in most models. The choice of the
Nordhaus and Boyer’s climate equations is motivated by the simplicity of their approach
and by the fact that their climate module is well-documented and acceptably accurate.

The equations used in the module are theoretically applicable only to the so-called
‘carbon cycle’, and therefore, the correct treatment of other greenhouse gases should be
done using different sets of equations for each GHG or aerosol (methane, N2O, ozone,
sulfates, etc.). However, following an approach used by many researchers (ref…), it is
also possible to use the CO2 equations to calculate the impact of other gases on climate.
To do so, it is necessary to first convert the emission of each gas into a CO2-equivalent
quantity, and to add these CO2-equivalents to form a fictitious emission of total CO2-
equivalent, which is then treated as if it were real CO2 emissions. The coefficients used
for coverting emissions of other gases into CO2-equivalents are those recommended by

42
A separate report is also available unpon request, containing an example of
application of the Climate Module for an instance of the Global multiregional TIMES
model.

305
the IPCC (ref), and reproduced in the Appendix. Therefore, in what follows, the term
CO2 should really be thought as CO2-equivalent.

We now describe the mathematical equations used at each of the three steps of the
climate module.

7.1.1.1 Concentrations (accumulation of CO2)

CO2 accumulation is represented as the linear three-reservoir model below: the


atmosphere, the quickly mixing upper ocean + biosphere, and the deep ocean. CO2 flows
in both directions between adjacent reservoirs. The 3-reservoir model is represented by
the following 3 equations when the step of the recursion is equal to one year:

Matm (y) = E(y-1) + (1 – φatm-up) Matm (y-1) +φup-atm Mup (y-1) (1)
Mup (y) = (1 –φup-atm – φup-lo) Mup (y-1) + φatm-up Matm (y-1) + φlo-up Mlo (y-1) (2)
Mlo (y) = (1– φlo-up) Mlo (y-1) + φup-lo Mup (y-1) (3)

with
• Matm(y), Mup(y), Mlo(y): masses of CO2 in atmosphere, in a quicly mixing reservoir
representing the upper level of the ocean and the biosphere, and in deep oceans (GtC),
respectively, at period t (GtC)
• E(y-1) = CO2 emissions in previous year (GtC)
• φij, transport rate from reservoir i to reservoir j (i, j = atm, up, lo) from year y-1 to y

7.1.1.2 Radiative forcing

The relationship between GHG accumulations and increased radiative forcing, F(t),
is derived from empirical measurements and climate models.

ln (M atm ( t ) M 0 )
∆F(t) = γ * + O(t)
ln 2

where:
• M0 (i.e.CO2ATM_PRE_IND) is the pre-industrial (circa 1750) reference
atmospheric concentration of CO2 = 596.4 GtC
• γ is the radiative forcing sensitivity to atmospheric CO2 concentration doubling =
4.1 W/m2
• O(t) (i.e. EXOFORCING(t)), is the increase in total radiative forcing at period t
relative to pre-industrial level due to anthropogenic GHG’s not accounted for in
the computation of CO2 emissions. Units = W/m2. In Nordhaus and Boyer (1999),
only emissions of CO2 were explicitly modeled, and therefore O(t) accounted for
all other GHG’s. In TIMES, only some other gases are fully accounted for, but
some are not (e.g. CFC’s, aerosols, ozone). It is the modeler’s responsibility to

306
include in the calculation of O(t) only those gases not included in the CO2-
equivalent emissions.

The parameterization of the forcing equation is not controversial and relies on the
IPCC Second Assessment Report by Working Group I (1996). The major assumption
made in RICE is also made here: a doubling of CO2 concentrations leads to an increase
in radiative forcing γ = 4.1 W/m2. The IPCC Third Assessment Report by Working
Group I (2001) provides a slightly smaller value of 3.7 W/m2 (based on Table 6.2, p.358,
chapter 6). Users may want to experiment with other values of the γ parameter.

7.1.1.3 Temperature increase

In the TIMES Climate Module as in many other integrated models, climate change is
represented by the global mean surface temperature. The idea behind the two-reservoir
model is that a higher radiative forcing warms the atmospheric layer, which then quickly
warms the upper ocean. In this model, the atmosphere and upper ocean form a single
layer, which slowly warms the second layer consisting of the deep ocean.

ΔTup(y) = ΔTup(y-1) + σ1{ F(y) – λ ΔTup(y-1) – σ2 [ΔTup(y-1) – ΔTlow(y-1)]} (5)


ΔTlow(y) = ΔTlow(y-1) + σ3 [ΔTup(y-1) – ΔTlow (y-1)] (6)

with
• ΔTup = globally averaged surface temperature increase above pre-industrial level,
• ΔTlow = deep-ocean temperature increase above pre-industrial level,
• σ1 = 1-year speed of adjustment parameter for atmospheric temperature,
• σ2 = coefficient of heat loss from atmosphere to deep oceans,
• σ3 = 1-year coefficient of heat gain by deep oceans,
• λ = imatic retroaction)
 feedback (λ = (cl
parameter 4.1/Cs, Cs being the
temperature sensitivity to CO2 concentration doubling).

Remark: in contrast with most other parameters, the value of Cs , the temperature
sensitivity to CO2 concentration doubling, is highly uncertain, and may range from 1oC to
10oC. This parameter is therefore a prime candidate for sensitivity analysis, or for
treatment by probablilistic methods.

307
7.2 Input parameters of the Climate Module
This and the next 4 sections describe the parameters, variables, and equations of the
climate module. This section presents the input parameters, section 7.3 presents the
variables, section 7.4 the equations, and section 7.5 the reporting parameters (i.e.
expressions calculated in order to be reported as part of the solution, but not true GAMS
equations). Section 7.6 shows the default values of the input parameters.

The distinction between variables and reporting parameters is important: while the
former may be constrained or bounded, the latter are expressions that may contain true
variables, but themselves may not be bounded. They may only be used for passive
reporting purposes. In our implementation, only the concentrations of CO2 in the three
reservoirs are true variables, whereas radiative forcing and temperature changes are
treated as reporting parameters 43.

Input parameters

All input parameters are time-independent, except EXOFOR. Default values for all
parameters are discussed in section 7.6.

PHI_AT_UP, PHI_UP_AT, PHI_UP_LO, PHI_LO_UP (also denoted φatm-up, φup-atm, etc):


annual CO2 flow coefficients between the three reservoirs (AT=Atmosphere, UP=Upper
ocean layer, LO=Deep ocean layer). These are time-independent coefficients. Units: none
CO2ATM_0, CO2UP_0, CO2LOW_0: Values in initial period (1995 by default) of the
masses of CO2 in the atmosphere, the upper ocean layer, and the deep ocean layer,
respectively. Units: GtC
CO2_AT_PRE_IND: Pre-industrial atmospheric mass of CO2. Units = GtC
GAMMA (also denoted γ): radiative forcing sensitivity to a doubling of the atmospheric CO2
mass. Units: Watts/m2
LAMBDA (also denoted λ): a feedback parameter, representing the equilibrium impact of
CO2 concentrations doubling on climate. Cs being the temperature sensitivity to CO2
concentrations doubling (oC), and γ the radiative forcing sensitivity to CO2 concentrations
doubling (W/m2), then: λ = γ / Cs
SIGMA1 (also denoted σ1): speed of adjustment parameter for atmospheric temperature. 1/σ1
represents the thermal capacity of the atmospheric + upper ocean layer (W-yr/m2/oC)
SIGMA2 (also denoted σ2): ratio of the thermal capacity of the deep oceans to the transfer
rate from shallow to deep ocean (W/m2/oC)
SIGMA3 (also denoted σ3): 1/σ3 is the transfer rate (per year) from the upper level of the
ocean to the deep ocean (yr -1)
DT_ATM_0, DT_LOW_0: values in initial period (1995 by default) of the temperature
changes (wrt to pre-industrial time) in atmosphere and deep layer, respectively. Units: oC

43
Allowing bounds and constraints on these parameters would result in a non-linear,
non-convex optimisation model

308
EXOFOR(y): radiative forcing from Non-CO2 gases in each year from 1995. Units:
Watts/m2
DT_FORC(t) is the total change in forcing in period t. Units: W/m2.
DT_TATM(t), and DT_TLOW(t): average global temperature changes in the atmosphere
and in deep ocean respectively, in period t, relative to the average global temperatures in pre-
industrial time. Units: oC

Internal parameters
In order to facilitate the writing of the equations, several intermediate quantities are
constructed. These are described in each equation section. An additional internal
parameter CM_DEFAULT is used to store the default values for the calibration quantities
(see chapter 2)

Reporting parameters

There are three reporting parameters, whose expressions are given in section 7.5

DT_FORC(t)
DT_ATM(t)
DT_LOW(t)

Other general TIMES parameters (see chapter 3 )

D(t): duration of period t, t=1 to T


m(t): milestone year of period t (approximate middle of period)
y designates a year, while t designates a period (ranging from 1 to T)
There are as many milestone years as there are periods (i.e. T).

309
7.3 Climate related Variables
There are four Climate variables, each indexed by t only (time period).

7.3.1 VAR_CO2TOT(t)

Description: Global annual atmospheric CO2 emissions in period t. Units: GtC.

7.3.2 VAR_CO2ATM(t), VAR_CO2UP(t), VAR_CO2LOW(t)

Description: Masses in period t, of CO2 in the three quickly mixing reservoirs respectively
representing the atmosphere, the upper level of the ocean, and the deep oceanic layer.
Units: GtC

7.4 Climate Equations


There are five equations: the first equation calculates the global emissions of CO2, the
next three equations calculate the concentrations of CO2 in the three reservoirs and the
fifth equation optionally sets an upperbound on atmospheric concentration. In addition,
there are three additional expressions that calculate the total radiative forcing and the
temperature changes in the two reservoirs. These expressions are equated to three
reporting parameters, as shown in section 1.2.4.

7.4.1 Equation: EQ_CO2TOT

Indices: milestoneyear (t)

Type: =

Related variables: VAR_COMNET(CO2,r,t)

Purpose: This equation defines the global emissions into the atmosphere, to atmospheric
CO2 emissions in each region in period t.

Remark:
 A user provided conversion factor (CO2GTC) is required to convert emission units
used in the TIMES model to Gigatonnes of carbon. For instance, if CO2 emissions
are in Mt CO2, the conversion coefficient must be taken equal to: 0.00027272727.

Equation
EQ _ CO 2TOTt ∋ ( t ∈ MILESTONEYEARS )

− VAR _ CO 2TOT ( t ) + CO 2GCTC • ∑VAR _ COMNET (CO2, r, t ) = 0


r∈R
where R is the set of regions

310
7.4.2 Equation: EQ_CO2ATM

Indices: milestoneyear (t)


Type: =
Related variables: VAR_CO2ATM, VAR_CO2UP , VAR_CO2LOW, VAR_CO2TOT
Purpose: This equation defines the mass of CO2 in the global atmosphere in period t, as
a function of the masses of CO2 in the three reservoirs at the previous milestoneyear
and of the CO2 emissions from previous to current milestoneyear.
Remarks:
• The coefficients governing this equation depend on the lengths of periods t and t-1,
and therefore require the computation of intermediate quantities. We follow the
TIMES convention that each period t is represented by its milestone year m(t), situated
at or near the middle of the period. This explains the fact that the concentration at
period t depends on emissions at periods t-1 and t.
• The corresponding equations of the RICE-99 model are simpler for two reasons: first,
RICE has constant period length, and second, in RICE, the concentration variables
represent the first year of the period, rather than the middle year as in TIMES.
Equation:

EQ _ CO 2 ATM t ∋ ( t ∈ MILESTONEYEARS ) ∧ ( t ≠ 1) :

− VAR _ CO 2 ATM ( t )
+ A11 × VAR _ CO 2 ATM ( t − 1)
+ A12 × VAR _ CO 2UP ( t − 1)
+ A13 × VAR _ CO 2 LOW ( t − 1)
+ BB11 × VAR _ CO 2TOT ( t )
+ CC11 × VAR _ CO 2TOT ( t − 1)
=0

EQ _ CO 2 ATM t ∋ ( t = 1)
VAR _ CO 2 ATM ( t ) = CO 2 ATM _ 0

where :

{ A11, A12, A13} is the first row of matrix : PHI n ,


(1− PHI _ AT _ UP ) PHI _ UP _ AT 0 
PHI is the 3 × 3 matrix :  PHI _ AT _ UP (1− PHI _ UP _ AT − PHI _ UP _ LO ) PHI _ LO _ UP 
 0 PHI _ UP _ LO 
(1− PHI _ LO _ UP ) 

(
BB11 is the first coefficient of the first column of matrix : BB = PHI + PHI 2 +  + PHI p )
CC11 is the first coefficient of the first column of matrix : CC = (PHI p +1
+  + PHI n
)
p is equal to D(t)/2
D( t ) is the number of years in period t
n is equal to y(t)-y(t-1 ) , also equal to D(t)/ 2 + D(t − 1 )/ 2
y( t ) is the milestone year of period t
x  denotes the smallest integer larger than or equal to x
x  denotes the largest integer smaller than or equal to x

311
7.4.3 Equation: EQ_CO2UP

Indices: milestoneyear (t)


Type: =
Related variables: VAR_CO2ATM(t), VAR_CO2UP(t), , VAR_CO2LOW(t),
VAR_CO2TOT(t), VAR_CO2TOT(t-1)
Purpose: This equation defines the mass of CO2 in the upper ocean layer in period t, as a
function of the masses of CO2 in the three reservoirs at the previous milestoneyear and of
the CO2 emissions from previous to current milestoneyear.
Remarks:
• The coefficients governing this equation depend on the lengths of periods t and t-1,
and therefore require the computation of intermediate quantities. We follow the
TIMES convention that each period t is represented by its milestone year m(t), situated
at or near the middle of the period. This explains the fact that the concentration at
period t depends on emissions at periods t-1 and t.
• The corresponding equations of the RICE-99 model are simpler for two reasons: first,
RICE has constant period length, and second, in RICE, the concentration variables
represent the first year of the period, rather than the middle year as in TIMES.
Equation:

EQ _ CO 2UPt ∋ ( t ∈ MODELYEARS ) ∧ ( t ≠ 1) :

− VAR _ CO 2UP ( t )
+ A21 × VAR _ CO 2 ATM ( t − 1)
+ A22 × VAR _ CO 2UP ( t − 1)
+ A23 × VAR _ CO 2 LOW ( t − 1)
+ BB21 × VAR _ CO 2TOT ( t )
+ CC 21 × VAR _ CO 2TOT ( t − 1)
=0

EQ _ CO 2UPt ∋ ( t = 1)
VAR _ CO 2UP ( t ) = CO 2UP _ 0

where :

{ A21, A22, A23} is the second row of matrix : PHI n ,


(1− PHI _ AT _ UP ) PHI _ UP _ AT 0 
PHI is the 3 × 3 matrix :  PHI _ AT _ UP (1− PHI _ UP _ AT − PHI _ UP _ LO ) PHI _ LO _ UP 
 0 PHI _ UP _ LO 
(1− PHI _ LO _ UP ) 

(
BB21 is the second coefficient of the first column of matrix : BB = PHI + PHI 2 +  + PHI p
)
CC 21 is the second coefficient of the first column of matrix : CC = (PHI p +1
+  + PHI n
)
p is equal to D(t)/2
D( t ) is the number of years in period t
n is equal to y(t)-y(t-1 ) , also equal to D(t)/ 2 + D(t − 1 )/ 2
y( t ) is the milestone year of period t
x  denotes the smallest integer larger than or equal to x
x  denotes the largest integer smaller than or equal to x

312
7.4.4 Equation: EQ_CO2LOW

Indices: milestoneyear (t)

Type: =

Related variables: VAR_CO2ATM(t), VAR_CO2UP(t), , VAR_CO2LOW(t),


VAR_CO2TOT (t), VAR_CO2TOT(t-1)

Purpose: This equation defines the mass of CO2 in the lower ocean layer in period t, as a
function of the masses of CO2 in the three reservoirs at the previous milestoneyear and of
the CO2 emissions from previous to current milestoneyear.

Remarks:
• The coefficients governing this equation depend on the lengths of periods t and t-1,
and therefore require the computation of intermediate quantities. We follow the
TIMES convention that each period t is represented by its milestone year m(t), situated
at or near the middle of the period. This explains the fact that the concentration at
period t depends on emissions at periods t-1 and t.
• The corresponding equations of the RICE-99 model are simpler for two reasons: first,
RICE has constant period length, and second, in RICE, the concentration variables
represent the first year of the period, rather than the middle year as in TIMES.

Equation:

313
EQ _ CO 2 LOWt ∋ ( t ∈ MODELYEARS ) ∧ ( t ≠ 1) :

− VAR _ CO 2 LOW ( t )
+ A31 × VAR _ CO 2 ATM ( t − 1)
+ A32 × VAR _ CO 2UP ( t − 1)
+ A33 × VAR _ CO 2 LOW ( t − 1)
+ BB31 × VAR _ CO 2TOT ( t )
+ CC 31 × VAR _ CO 2TOT ( t − 1)
=0

EQ _ CO 2 LOWt ∋ ( t = 1)
VAR _ CO 2 LO ( t ) = CO 2 LOW _ 0

where :

{ A31, A32, A33} is the thord row of matrix : PHI n ,


(1− PHI _ AT _ UP ) PHI _ UP _ AT 0 
PHI is the 3 × 3 matrix :  PHI _ AT _ UP (1− PHI _ UP _ AT − PHI _ UP _ LO ) PHI _ LO _ UP 
 0 PHI _ UP _ LO 
(1− PHI _ LO _ UP ) 

(
BB31 is the third coefficient of the first column of matrix : BB = PHI + PHI 2 +  + PHI p
)
CC 31 is the third coefficient of the first column of matrix : CC = (PHI p +1
+  + PHI n
)
p is equal to D(t)/2
D( t ) is the number of years in period t
n is equal to y(t)-y(t-1 ) , also equal to D(t)/ 2 + D(t − 1 )/ 2
y( t ) is the milestone year of period t
x  denotes the smallest integer larger than or equal to x
x  denotes the largest integer smaller than or equal to x
Remark: The three concentration equations may be written as a single vector
equation, as follows, using the notation described above:

VAR _ CO 21ATM ( t ) VAR _ CO 21ATM ( t − 1) VAR _ CO 2TOT ( t ) VAR _ CO 2TOT ( t − 1)
−  VAR _ CO 2UP ( t )  + PHI n •  VAR _ CO 2UP ( t − 1)  + BB •  0  + CC •  0 =0
       
 VAR _ CO 2 LOW ( t )   VAR _ CO 2 LOW ( t − 1)   0   0 

It is interesting to compare this to the RICE-99 vector equation (Nordhaus and Boyer,
1999), which writes:

VAR _ CO 21 ATM ( t ) VAR _ CO 21 ATM ( t − 1) VAR _ CO 2TOT ( t − 1)



−  VAR _ CO 2UP ( t )  + PHI 10 •  VAR _ CO 2UP ( t − 1)  + 10 ⋅ 
   0 =0

 VAR _ CO 2 LOW ( t )   VAR _ CO 2 LOW ( t − 1)   0 

where PHI10 is the 10-year transition matrix adopted in RICE-99. As explained


before, the simpler RICE equation is due to the constant period length (10 years) and the
fact that the milestone year of RICE represents the first year of a period.

314
7.4.5 Equation: EQ_MXCONC

Indices: milestoneyear (t)

Type: ≤

Related variable: VAR_CO2_ATM

Purpose: This equation is actually an upper bound on variable VAR_CO2ATM. It


allows the modeler to impose a limit on the atmospheric concentration of CO2 at any
time period.

Remark: The same may be achieved via an upper bound on VAR_CO2ATM.

Equation:

EQ _ CO 2 MXCONC t ∋ ( t ∈ MODELYEARS )

VAR _ CO 2 ATM ( t ) ≤ MAXCO 2( t )

where MAXCO 2( t ) is a user defined trajectory of maximum allowable atmospheric concentration values (GtC)

315
7.5 Reporting Parameters
7.5.1 DT_FORC

Indices: milestoneyear (t)

Purpose: This reporting parameter defines the total increase in radiative forcing due to
anthropogenic gases in the atmosphere, relative to pre-industrial times. It decomposes
into two main terms: forcing due to CO2 concentration (which is endogenous in TIMES),
and forcing due to other sources (which is considered exogenous in TIMES).

Expression

DT _ FORCt ∋ (t ∈ MODELYEARS )

DT _ FORC (t )
=
GAMMA VAR _ CO 2 ATM (t )
+ • ln
ln 2 CO 2 _ PREIND
+ EXOFORC (t )

where :
GAMMA is the forcing sensitivity to a doubling in atmospheric CO2 concentration
CO2 _ PREIND is the mass of atmospheric CO2 at pre - industrial times
EXOFORC(t) is the contribution of sources other than CO2 to the change in forcing at period t

316
7.5.2 DT_ATM

Indices: milestoneyear (t)


Purpose: This reporting parameter defines the temperature change of the atmospheric
layer (including upper ocean) over the pre-industrial temperature, a function of the
temperature changes in the two layers at the previous period, and of the change in
radiative forcing at previous period.
Remarks:
• The coefficients governing this expression depend on the lengths of periods t and t-1,
and therefore require the computation of intermediate quantities. We follow the
TIMES convention that each period t is represented by its milestone year m(t), situated
at or near the middle of the period. This explains the fact that the temperature change
at period t depends on forcing changes at periods t-1 and t.
• The corresponding equations of the RICE-99 model are simpler for two reasons: first,
RICE has constant period length, and second, in RICE, the temperature change
variables represent the first year of the period, rather than the middle year as in
TIMES.
Expression
DT _ ATM t ∋ (t ∈ MODELYEARS ) ∧ (t ≠ 1)

DT _ TATM (t )
=
+ DD11 × DT _ TATM (t − 1)
+ DD12 × DT _ TLOW (t − 1)
+ EE11 × SIGMA1 × DT _ FORC (t )
+ FF11 × SIGMA1 × DT _ FORC (t − 1)

DT_ATM t ∋ (t = 1)
DT _ TATM (t ) = DT _ TATM _ 0

where :
DD11 is the first element of the first row of the 2 × 2 matrix DD = SIG n
DD12 is the second element of the first row of the 2 × 2 matrix DD = SIG n

1 − LAMBDA × SIGMA1 − SIGMA1 × SIGMA2 , SIGMA1 × SIGMA2


SIG =  
 SIGMA3 , 1 − SIGMA3 

1 / SIGMA1 is the one - year thermal capacity coefficient of the atmospheric layer
1/SIGMA3 is the one - year temperature transfer rate from atmospheric layer to the lower ocean layer
SIGMA3 is the (dimensionless) ratio of the thermal capacity of the lower ocean layer to the transfer rate
from atmospheric to lower ocean layer
LAMBDA is a parameter representing the equilibrium impact of atmospheric CO2 concentration doubling
on global atmospheric temperature. Note that if Cs represents the sensitivity of global temperature to a doubling
in CO2 concentration, the following relationship holds : LAMBDA = GAMMA / Cs
EE11 is the first element of the first column of the 2 × 2 matrix EE = SIG + SIG 2 +  + SIG p
FF11 is the first element of the first column of the 2 × 2 matriix FF = SIG p +1 + SIG p + 2 +  + SIG n
p, n as defined in the concentration equations

317
7.5.3 DT_LOW

Indices: milestoneyear (t)


Purpose: This parameter defines the temperature change of the lower ocean layer over its
pre-industrial temperature, as a function of the temperature changes in the two layers at
the previous period, and of the change in radiative forcing at previous period.
Remarks:
• The coefficients governing this expression depend on the lengths of periods t and t-1,
and therefore require the computation of intermediate quantities. We follow the
TIMES convention that each period t is represented by its milestone year m(t), situated
at or near the middle of the period. This explains the fact that the temperature change
at period t depends on forcings at periods t-1 and t.
• The corresponding equations of the RICE-99 model are simpler for two reasons: first,
RICE has constant period length, and second, in RICE, the temperature change variables
represent the first year of the period, rather than the middle year as in TIMES.
Expression

DT _ LOWt ∋ (t ∈ MODELYEARS ) ∧ (t ≠ 1)

DT _ LOW (t )
=
+ DD21 × DT _ TATM (t − 1)
+ DD22 × DT _ TLOW (t − 1)
+ EE 21 × SIGMA1 × DT _ FORC (t )
+ FF 21 × SIGMA1 × DT _ FORC (t − 1)

DT _ LOWt ∋ (t = 1)
DT _ TLOW (t ) = DT _ TLOW _ 0

where :
DD21 is the first element of the second row of the 2 × 2 matrix DD = SIG n
DD22 is the second element of the second row of the 2 × 2 matrix DD = SIG n

1 − LAMBDA × SIGMA1 − SIGMA1 × SIGMA2 , SIGMA1 × SIGMA2 


SIG =  
 SIGMA3 , 1 − SIGMA3 

1 / SIGMA1 is the one - year thermal capacity coefficient of the atmospheric layer
1/SIGMA3 is the one - year temperature transfer rate from atmospheric layer to the lower ocean layer
SIGMA3 is the (dimensionless) ratio of the thermal capacity of the lower ocean layer to the transfer rate
from atmospheric to lower ocean layer
LAMBDA is a parameter representing the equilibrium impact of atmospheric CO2 concentration doubling
on global atmospheric temperature. Note that if Cs represents the sensitivity of global temperature to a doubling
in CO2 concentration, the following relationship holds : LAMBDA = GAMMA / Cs
EE 21 is the second element of the first column of the 2 × 2 matrix EE = SIG + SIG 2 +  + SIG p
FF 21 is the second element of the first column of the 2 × 2 matriix FF = SIG p +1 + SIG p + 2 +  + SIG n
p, n as defined in the concentration equations

318
Remark: The two temperature change eexpressions may be written as a single vector
equation, as follows, using the notation described above:


 DT _ TATM ( t )  + SIG n •  DT _ TATM ( t − 1)  + SIGMA1 × EE •  DT _ FORC ( t )  + SIGMA1 × FF  DT _ FORC ( t )  = 0
 DT _ TLOW ( t )   DT _ TLOW ( t − 1)   0   0 

It is interesting to compare this to the corresponding RICE-99 equation in vector form


(Nordhaus and Boyer, 1999), which reads:


 DT _ TATM (t )  + SIG10 •  DT _ TATM (t − 1)  + SIGMA1 ×  DT _ FORC (t − 1)  = 0
 DT _ TLOW (t )   DT _ TLOW (t − 1)   0 

where SIG10 is the 10-year transition matrix adopted in RICE-99. As mentioned


before, the simpler RICE equation is due to the constant period length (10 years) and the
fact that the milestone year of RICE represents the first year of a period.

319
7.6 Default values of the climate parameters
Table 7.1 shows the assumed values of all parameters of the Climate Module except
exogenous forcing.

Table 7.1. Parameters of the climatic module (default values) (GAMS notation)
Parameter Default value

Gamma 4.1 W/m2


PHI_UP_AT 0.0453 per year
PHI_AT_UP 0.0495 per year
PHI_LO_UP 0.00053 per year
PHI_UP_LO 0.0146 per year
Cs not directly needed 2.91 °C
LAMBDA 1.41
SIGMA1 0.024 per year
SIGMA2 0.44 (no time dimension)
SIGMA3 0.002 per year
CO2ATM_PRE_IND 596.4 GtC (pre-industrial equilibrium)
CO2_ATM_0 735 GtC (in 1995)
CO2_UP_0 781 GtC (in 1995)
CO2_LO_0 19230 GtC (in 1995)
DELTAT_ATM_0 0.43 oC (1995)
DELTAT_LOW_0 0.06 oC (1995)
DELTAFORCING_0 not directly needed 1.0395 (1995)

Important Note : The last 6 parameters are given for year 1995. Users whose starting
milestone year is different from 1995 must provide appropriate values.

Nordhaus and Boyer use the following formula to calculate the radiative forcing due to
all GHG’s except CO2. In the case of the TIMES global model, the energy related
methane and N2O emissions are already accounted for in the calculation of CO2
equivalent emissions. Therefore, the formula below constitutes an upper bound for the
radiative forcing due to other gases.

EXOFORCING(t) = -0.1965 + 0.013465 x (m(t)-1995) , if 1995<=m(t)<= 2095


1.15, if m(t) > 2095

In Nordhaus and Boyer (1999), the forcings of other GHGs (CFCs, CH4, N2O,
ozone), and from aerosols are considered to be exogenous. Some of these gases are
poorly understood. Moreover, some of them are controlled by non-climate policies (e.g.
CFC’s, ozone, aerosols). These values are inspired by the MAGICC model (Wigley et al.,
1994). The IPCC TAR (2001) provides estimated ranges of the forcing of non-CO2
GHGs in 1998 (chapter 6) as well as simplified equations (Table 6.2, p.358, chapter 6).
However, no average value is provided for several of the gases, which makes it difficult
to compare the exogenous forcing proposed by Nordhaus and Boyer (1999) to these
updated estimations.

320
7.7 GAMS implementation
All required GAMS modules have been added to the code. The Climate Module is
implemented as a TIMES extension module, which is a modular way of adding code to
the standard TIMES code. The Climate Module is activated by adding the 'short name' of
the climate extension (namely: CLI) to the arguments of the call for initmty.mod. Thus,
the Climate Module is activated by the following call statement in the run file:

$ BATINCLUDE initmty.mod CLI.

All the required climate parameters must also be specified, as explained in section
2.1, and the climate results are made available to the VEDA-BE report generator as
explained in section 2.4.

7.7.1 Specification of parameters

User input parameters

All parameters are also available from the VEDA-FE shell, where they may be
modified. The Appendix to chapter 2 shows the excel template used by VEDA to initially
import the parameter values. Thereafter, these values may be modified via the VEDA-FE
browser. If this is done, the modified value override the hard coded default values (if
any).

All parameter names have a prefix CM_ in the GAMS program. They are discussed in
four groups below:

PARAMETER CM_CO2GTC(REG,COM) 'Conversion factors between user-defined


CO2 commodities and GtC'
PARAMETER CM_EXOFORC(ALLYEAR) 'Radiative forcing from exogenous sources'
PARAMETER CM_MAXCO2C(ALLYEAR) 'Maximum allowable atmospheric CO2
concentration'
PARAMETER CM_HISTORY(ALLYEAR,CM_HISTS) 'Calibration values for CO2
and forcing'
PARAMETER CM_CONST(*) 'Climate module constants'

1. The parameter CM_CO2GTC is needed to convert various emissions into the


total CO2-equivalent expressed in Gt of carbon. In a user’s model, the
commodities that describe CO2 or other GHG emissions can have different names
and units. Even CO2 emissions may have different units in different regions. In
addition, in some models the total CO2 emissions could be divided into e.g.
energy-related emissions and non-energy-related emissions, which are described
by separate commodities.

321
2. The parameters CM_EXOFORC and CM_MAXCO2C are identical to those
described in chapter 1. CM_EXOFORC is automatically and CM_MAXCO2C
optionally interpolated and extrapolated.
3. The parameter CM_HISTORY is used for the calibration values. To improve
independence of data from model years, a year index is also included in this
parameter. The set CM_HISTS includes the quantity types for which the
calibration values are to be given:

• CO2-ATM 'Mass of CO2 in the atmosphere (in GtC)'


• CO2-UP 'Mass of CO2 in the upper ocean layer (in GtC)'
• CO2-LO 'Mass of CO2 in the lower ocean layer (in GtC)'
• DELTA-ATM 'Temperature change in the surface'
• DELTA-LO 'Temperature change in the deep ocean layer'

If the user provides no values for the CM_EXOFORC or CM_HISTORY quantities,


hard-coded default values are applied. The defaults for CM_HISTORY are coded in
INITMTY.CLI, and the defaults for CM_EXOFORC are coded in RPT_EXT.CLI. The
values in CM_HISTORY are automatically densely inter/extrapolated, and the approp-
riate base year calibration values are picked up and used in the equations.

4. PARAMETER CM_CONST(*) 'Climate module constants'


This parameter contains the time-independent constants used in the Climate Module:

PARAMETER CM_CONST(*) /
GAMMA 4.1
PHI-UP-AT 0.0495
PHI-AT-UP 0.0453
PHI-LO-UP 0.00053
PHI-UP-LO 0.0146
LAMBDA 1.41
SIGMA1 0.024
SIGMA2 0.44
SIGMA3 0.002
CO2-PREIND 596.4
/;

User-provided values (via the shell) will automatically override the hard-coded
default values shown above.

Internal parameters

These are equivalent to those used in writing the equations and reporting parameters
in Chapter 1. An additional internal parameter CM_DEFAULT is used to store the
default values for the calibration quantities (see INITMTY.CLI).

322
Reporting parameters

PARAMETER CM_DT_FORC(ALLYEAR) 'Delta forcing'


PARAMETER CM_DT_TATM(ALLYEAR) 'Temperature change in surface'
PARAMETER CM_DT_TLOW(ALLYEAR) 'Temperature change in deep layer'

These reporting parameters correspond to the same ones in chapter 1, with the
adjonction of the prefix CM_

7.7.2 Climate related Variables

VAR_CO2TOT(t): global annual atmospheric CO2 emissions in period t (in GtC).


VAR_CO2ATM(t), VAR_CO2UP(t), VAR_CO2LOW(t): masses in period t, of CO2 in
atmosphere, in a quickly mixing reservoir representing the upper level of the ocean and the
biosphere, and in deep oceans, respectively. Units: GtC

These variables are equivalent to those described in Richard’s document. However, the
reporting parameters described above replace the variables VAR_FORCING(t),
VAR_DELTAT_ATM(t), and VAR_DELTAT_LOW(t) in Richard’s document.

7.7.3 Equations

EQ_CO2TOT(T) 'Balance for the total CO2 emissions in GtC'


EQ_CO2ATM(T) 'Balance for the mass of CO2 in the atmosphere'
EQ_CO2UP(T) 'Balance for the mass of CO2 in the upper ocean layer'
EQ_CO2LO(T) 'Balance for the mass of CO2 in the lower ocean layer'
EQ_CO2_MXCONC(T) 'Constraint for maximum CO2 concentration'

The equation EQ_CO2TOT(T) has been added (it is not included in chapter 1’s
description of equations). It combines all regional CO2 emissions into the variable
VAR_CO2TOT(t). All the other four equations are equivalent to those described in
chapter 1.
In addition, the mass balance equations can be calibrated for the first period by using
two approaches, of which the default is equivalent to the method described in chapter 1.
In the alternative calibration approach calibration values for the year B(MIYR_1) are
used instead of values for the milestone year. The alternative approach can be activated
by using the following setting in the run-file:

$SET CM_CALIB B

The equations 3.4, 3.5 and 3.6 have been replaced by parameter calculations, which
are done in the file RPT_EXT.CLI.

323
7.7.4 Example of use

Because all the constants and calibration values have hard-coded default values, you
can test the implementation in a very simple way. Just add into your data specification
the conversion factors from CO2 commodities to the amount of CO2 in GtC. For
example, if CO2 emissions are described by a commodity named ‘CO2SUM’ in region
‘REG’ and are expressed in Mt CO2, add the following parameter instance to your dd-file
(or directly into the run-file):

PARAMETER CM_CO2GTC /
REG.CO2SUM 0.0002727273
/;

Moreover, because the current implementation of the Climate Module has been
implemented as an extension module, the CLI extension module needs to be activated
e.g. by adding a CLI argument to the call of initmty.mod in the run file, as follows:

$ BATINCLUDE initmty.mod CLI

Finally, as described above, the alternative calibration approach can be activated by


including the following setting in the run-file:

$ SET CM_CALIB B

7.7.5 Exporting results to VEDA4

For reporting the results of the climate module the following attributes have been
added and appear in VEDA_BE:

• CM_dt_forc: Delta forcing,


• CM_dt_tatm: Temperature change in surface,
• CM_dt_tlow: Temperature change in deep layer,
• VAR_co2tot: Total CO2 emissions by milestone year (in GtC),
• VAR_co2atm: Mass of CO2 in the atmosphere (in GtC),
• VAR_co2up: Mass of CO2 in the upper ocean layer (in GtC),
• VAR_co2lo: Mass of CO2 in the deep ocean layer (in GtC),
• EQ_co2concM: Undiscounted annual shadow price of maximum CO2
concentration constraint.

324
Since these attributes are only created by the model when the climate module
extension CLI is used, a special vdd file, called times2veda_clim.vdd has to be applied in
connection with gdx2veda.

7.8 References for chapter 7


Drouet L., Edwards N.R. and A. Haurie (2004). “Coupling Climate and Economic
Models in a Cost-Benefit Framework: A Convex Optimization Approach”. Submitted
to Environmental Modeling and Assessment.
IPCC. 1996. Climatic change 1995: The Science of Climate Change. Intergovernmental
Panel on Climate Change, Second Assessment Report, Working Group I. Cambridge :
Cambridge University Press. p.572.
IPCC. 2001. Climatic change 2001: The Scientific Basis. Intergovernmental Panel on
Climate Change, Third Assessment Report, Working Group I. Cambridge : Cambridge
University Press. p.944.
Nordhaus, W. D. and J. Boyer. 1999. Roll the DICE Again: Economic Models of Global
Warming. Yale University, manuscript edition.
Wigley, T.M.L., Solomon, M. and S.C.B. Raper. 1994. Model for the Assessment of
Greenhouse-Gas Induced Climate Change. Version 1.2. Climate Research Unit,
University of East Anglia, UK.

325

You might also like