Page 1 of 1

DICE2016. Damage function and Limit scenarios

Posted: Wed Apr 17, 2019 12:47 pm
by KarolineSH
Dear community ,

I am currently modelling with the DICE2016 model of Nordhaus, which code is publicly available here; ... 916ap.gms.
and I desperately need help as I am inexperienced in GAMS (and very time constrained).

Damage function:
  • I wish to apply an approximate Weitzman Damage function to the model (adding an extra term, with damages from temperature to the power of 7. ; (I have added this to the original code;

    Code: Select all

    + a4*TATM(t)**a5
    however the values of the output variables I get, do not make sense. For example, I obtain an emissions control rate of 1 from t=2.. Could anyone tell me if I have to specify the function different from this in order to obtain reasonable values? I have not changed any of the bounds, limits or constraints from the original code.

  • Finally I would like to assess the model-output based on both the base-case, the optimal case and for the limiting case of 2degrees Celcius above pre-industrial level. How can I alter the model to give me the values for the latter case (the base- and the optimal cases are easily specified in one of the first arguments of the code, but not the limiting case)?

Please find my code attached.

Thank you in advance!

Re: DICE2016. Damage function and Limit scenarios

Posted: Thu Apr 18, 2019 8:55 am
by bussieck
Don't look at the solution before you look at the solution status. It seems that your model is infeasible and therefore the variable values reported back to GAMS are no solution.


Re: DICE2016. Damage function and Limit scenarios

Posted: Thu Apr 18, 2019 6:17 pm
by KarolineSH
Dear Michael,

Thank you so much for the reply!
You are right in that and I started looking at the solution status now before moving on to the solutions itself. I will not do that anymore, thank you!

I know that there are people who have altered the damage function to obtain the extra term, however. Do you (or anyone else here) have an idea about how I can alter the function to obtain a FEASIBLE model including the Weitzman damage function?

it is defined as:

Code: Select all

** Climate damage parameters
        a10       Initial damage intercept                     /0       /
        a20       Initial damage quadratic term
        a1        Damage intercept                              /0       /
        a2        Damage quadratic term                      /0.00236 /
        a3        Damage exponent                              /2.00    /
        a4      Damage coefficient New                      /0.082/
        a5      Damage exponent New                        /7        /
        xi      Income elasticity of damages                /0.7   /
damfraceq(t) ..      DAMFRAC(t)     =E= (a1*TATM(t))+(a2*TATM(t)**a3) + (a4*TATM(t)**a5);
Moreover, do you have any advice on how I can model the following two-degrees-celcius-limiting case? I believe I have to change the emissions control rate(miu), but I am not sure how much.

Thanks a lot in advance! Any help is highly appreciated!

Re: DICE2016. Damage function and Limit scenarios

Posted: Thu Apr 18, 2019 11:26 pm
by bussieck
Sorry, I don't understand enough about the DICE model to be of any help. DAMFRAC suggest some value between 0 and 1. If I take the original definition the values of DAMFRAC in the optimal solution are in this range:

Code: Select all

---- VAR DAMFRAC  Damages as fraction of gross output

           LOWER          LEVEL          UPPER         MARGINAL

1          -INF            0.0018        +INF             .          
2          -INF            0.0026        +INF             .          
3          -INF            0.0035        +INF             .          
4          -INF            0.0047        +INF             .          
When I take the optimal values of TATM and use your definition on DAMFRAC the values are not inside [0,1] anymore:

Code: Select all

solve co2 maximizing utility using nlp;
DAMFRAC.l(t) = (a1*TATM.l(t))+(a2*TATM.l(t)**a3) + (a4*TATM.l(t)**a5);
option DAMFRAC:8:0:1; display DAMFRAC.l;

Code: Select all

----    319 VARIABLE DAMFRAC.L  Damages as fraction of gross output

1    0.02835003
2    0.09533347
3    0.28208121
4    0.74674073
5    1.79953607
6    4.00517878
7    8.32784713
8   16.32392590
9   30.38329129
10  54.01405366
11  92.15904797
12  1.515259E+2
13  2.409075E+2
14  3.714657E+2
15  5.569516E+2
16  8.138367E+2