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;

______________________________________________