MANAGING THE GLOBAL COMMONS:
THE ECONOMICS OF CLIMATE CHANGE
William D. Nordhaus
Yale University
Full text available in this title
from MIT Press, Cambridge, Massachusetts, USA
Appendix. Computer Program for DICE model
[Note from author in July 1998: This is the 1994
version of the DICE model. It has been superceded in further
work, the DICE-98 model, which will be available for use by
researchers in late 1998.]
This appendix contains the computer program used to generate the code for the standard DICE model runs used in this book. It is known as "ICE.1.2.3." The elaborations of the model to make sensitivity runs are either minor modifications, or incorporate uncertainty via multiple states of the world, or are iterated versions of the model below for the Monte Carlo runs.
The easiest way to run the DICE model is to use
the GAMS software. This is available as an inexpensive student
version, but to obtain the full results, the 386 or work-station
version is needed. The GAMS package is available (but not
inexpensive) from The Scientific Press, 507 Seaport Court,
Redwood City, California 94063. Documentation is available in
Brooke et al. [1988].
The code is made freely available to users and is
not proprietary. The author would be grateful if users
acknowledge the source of the code and send any publications or
working papers resulting from its use to the present author.
The following is the computer code. Note that any
line beginning with an asterisk (*) is documentation.
____________________________________________________
*ICE.1.2.3
* This is an optimal growth model to calculate the optimal control
* rate and timing for the abatement of CO2 and other greenhouse gases.
* This is the revised version of the model as of August 1993
* to use for the basic calculations and
documentation.
* This version contains the data
* corrections through August 1993.
* It includes calibrations using Z. Yang's world output, population,
* and capital data, as well as transversality
condition from 60-period run.
SETS
T Time periods /1*40/
TFIRST(T) First period
TLAST(T) Last period
SCALARS
BET Elasticity of marginal utility /0/
R Rate of social time preference per year /.03/
GL0 Growth rate of population per decade /.223/
DLAB Decline rate of population growth per dec /.195/
DELTAM Removal rate carbon per decade /.0833/
GA0 Initial growth rate for technology per decade /.15/
DELA Decline rate of technology per decade /.11/
SIG0 CO2-equiv-GWP ratio /.519/
GSIGMA Growth of sigma per decade /-.1168/
DK Depreciation rate on capital per year /.10/
GAMA Capital elasticity in output /.25/
M0 CO2-equiv concentrations 1965 billion tons carbon /677/
TL0 Lower stratum temperature (C) 1965 /.10/
T0 Atmospheric temperature (C) 1965 /.2/
ATRET Marginal atmospheric retention rate /.64/
Q0 1965 gross world output trillions 1989 US dollars /8.519/
LL0 1965 world population millions /3369/
K0 1965 value capital billions 1989 US dollars /16.03/
C1 Coefficient for upper level /.226/
LAM Climate feedback factor /1.41/
C3 Coefficient trans upper to lower stratum /.440/
C4 Coeff of transfer for lower level /.02/
A0 Initial level of total factor productivity /.00963/
A1 Damage coeff for co2 doubling (fraction GWP) /.0133/
B1 Intercept control cost function /.0686/
B2 Exponent of control cost function /2.887/
PHIK Transversality coefficient capital /140 /
PHIM Transversality coefficient carbon ($ per ton) /-9/
PHITE Transversality coefficient
temperature (billion $ per degree C) /-7000 /
PARAMETERS
L(T) Level of population and labor
AL(T) Level of total factor productivity (TFP)
SIGMA(T) Emissions-output ratio
RR(T) Discount factor
GA(T) Growth rate of T F P from 0 to T
FORCOTH(T) Exogenous forcings from other greenhouse gases
GL(T) Growth rate of labor 0 to T
GSIG(T) Cumulative improvement of energy efficiency
DUM(T) Dummy variable 0 except 1 in last period;
TFIRST(T) = YES$(ORD(T) EQ 1);
TLAST(T)= YES$(ORD(T) EQ CARD(T));
DISPLAY TFIRST, TLAST;
GL(T) = (GL0/DLAB)*(1-exp(-DLAB*(ord(t)-1)));
L(T)=LL0*exp(GL(t))*.9;
GA(T)= (GA0/DELA)*(1-exp(-DELA*(ord(t)-1)));
AL(T) =a0*exp(GA(t));
GSIG(T) = (GSIGMA/DELA)*(1-exp(-DELA*(ord(t)-1)));
SIGMA(T)=SIG0*exp(GSIG(t));
DUM(T)=1$(ord(T)eq card(T));
RR(T) = (1+R)**(10*(1-ord(t)));
FORCOTH(T) = 1.42;
FORCOTH(T)$(ord(t) lt 15) = .2604+.125*ord(T)-.0034*ord(t)**2;
VARIABLES
MIU(T) Emission control rate GHGs
FORC(T) Radiative forcing, W per m2
TE(T) Temperature, atmosphere C
TL(T) Temperature, lower ocean C
M(T) CO2-equiv concentration billion t
E(T) CO2-equiv emissions billion t
C(T) Consumption trillion US dollars
K(T) Capital stock trillion US dollars
CPC(T) Per capita consumption thousands US dol
PCY(t) Per capita income thousands US dol
I(T) Investment trillion US dollars
S(T) Savings rate as fraction of GWP
RI(T) Interest rate per annum
TRANS(T) Transversality variable last period
Y(T) Output
UTILITY;
POSITIVE VARIABLES MIU, E, TE, M, Y, C, K, I;
EQUATIONS UTIL Objective function
YY(T) Output
CC(T) Consumption
KK(T) Capital balance
KK0(T) Initial condition of K
KC(T) Terminal condition of K
CPCE(t) Per capita consumption
PCYE(T) Per capita income equation
EE(T) Emissions process
SEQ(T) Savings rate equation
RIEQ(T) Interest rate equation
FORCE(T) Radiative forcing equation
MM(T) CO2 distribution equation
MM0(T) Initial condition for M
TTE(T) Temperature-climate equation for atmosphere
TTE0(T) Initial condition for atmospheric temp
TLE(T) Temperature-climate equation for lower oceans
TRANSE(t) Transversality condition
TLE0(T) Initial condition for lower ocean;
KK(T)..K(T+1) =L= (1-DK)**10 *K(T)+10*I(T);
KK0(TFIRST)..K(TFIRST) =E= K0*.9;
KC(TLAST)..R*K(TLAST) =L= I(TLAST);
EE(T)..E(T)=G=10*SIGMA(T)*(1-MIU(T))*AL(T)*L(T)**(1-GAMA)*K(T)**GAMA;
FORCE(T).. FORC(T) =E=4.1*(log(M(T)/590)/log(2))+FORCOTH(T);
MM0(TFIRST)..M(TFIRST) =E= M0;
MM(T+1)..M(T+1) =E= 590+ATRET*E(T)+(1 -
DELTAM)*(M(T)-590);
TTE0(TFIRST).. TE(TFIRST) =E= T0;
TTE(T+1).. TE(T+1) =E= TE(t)+C1*(FORC(t)-LAM*TE(t)-C3*(TE(t)-TL(t)));
TLE0(TFIRST).. TL(TFIRST) =E= TL0;
TLE(T+1).. TL(T+1) =E= TL(T)+C4*(TE(T)-TL(T));
YY(T)..Y(T) =E= AL(T)*L(T)**(1-GAMA)*K(T)**GAMA*(1-B1*(MIU(T)**B2))
/(1+(A1/9)*SQR(TE(T)));
SEQ(T).. S(T) =e= I(T)/(.001+Y(T));
RIEQ(T)..RI(T) =E= GAMA*Y(T)/K(T)-
(1-(1-DK)**10)/10;
CC(T)..C(T) =E= Y(T)-I(T);
CPCE(T)..CPC(T) =e= C(T)*1000/L(T);
PCYE(T)..PCY(T) =e= Y(T)*1000/L(T);
TRANSE(TLAST).. TRANS(TLAST)=E=RR(TLAST)
*(PHIK*K(TLAST)+PHIM*M(TLAST)+PHITE*TE(TLAST));
UTIL.. UTILITY =E=
SUM(T, 10 *RR(T)*L(T)*LOG(C(T)/L(T))/.55
+TRANS(T)*DUM(T));
* Upper and Lower Bounds for economic reasons or stability
MIU.up(T) = 0.99;
MIU.lo(T) = 0.01;
K.lo(T) = 1;
TE.up(t) = 20;
M.lo(T) = 600;
C.LO(T) = 2;
* Upper and lower bounds for historical
constraints
MIU.fx('1')=0.;
MIU.fx('2')=0.;
MIU.fx('3')=0.;
* Solution options
option iterlim = 99900;
option reslim = 99999;
option solprint = off;
option limrow = 0;
option limcol = 0;
model CO2 /all/;
solve CO2 maximizing UTILITY using nlp ;
display Y.l, C.l, S.l, K.l, MIU.l, E.l, M.l, TE.l, FORC.l, RI.l,
CC.m, EE.m, KK.m, MM.m, TTE.m, CPC.l, TL.l, PCY.l, i.l;
display SIGMA, RR, L, AL, DUM, FORCOTH;
______________________________________________