로드 중...
검색 중...
일치하는 항목 없음
nordhausdice.py
1
18
19if__name__ =="__main__":
20
21 # [1]
22 fromgams.magic가져오기GamsInteractive
23gams = GamsInteractive()
24
25 # [2]
26gams.gams('''
27# 이것은 DICE-2016R의 베타 버전입니다. 주요 변경 사항은 Nordhaus에 설명되어 있습니다.
28# 탄소의 사회적 비용 재검토: DICE-2016R 모델 추정,"
29# 2016년 9월 30일," 저자가 제공함.
30
31# 버전은 DICE-2016R-091916ap.gms입니다.
32
33# DICE-2016R 2016년 9월(DICE-2016R-091216a.gms에서 수정됨)
34
35
36t '기간(기간당 5년)' / 1*100 / ; 설정
37
38매개변수
39## 화석 연료의 가용성
40fosslim '최대 누적 추출 화석 연료(GtC)' / 6000 /
41## 시간 단계
42tstep '기간당 연도' / 5 /
43## 최적의 제어인 경우
44ipopt '최적화가 1이고 밑이 0인 표시기' / 0 /
45## 환경설정
46elasmu '소비의 한계효용 탄력성' / 1.45 /
47prstp '연간 사회적 시간 선호의 초기 비율' / .015 /
48## 인구 및 기술
49gama '생산함수의 자본 탄력성' / .300 /
50pop0 '2015년 초기 세계 인구(백만)' / 7403 /
51popadj '2050년 팝 전망에 맞춰 조정되는 성장률' / 0.134 /
52popasym '점근적 인구(수백만)' / 11500 /
53dk '자본 감가상각률(연간)' / .100 /
54q0 '2015년 초기 세계 총생산(트릴 2010 슬롯 사이트 추천)' / 105.5 /
55k0 '초기 자본 가치 2015(트릴 2010 슬롯 사이트 추천)' / 223 /
56a0 '총요소 생산성의 초기 수준' / 5.115 /
57ga0 '5년당 TFP의 초기 성장률' / 0.076 /
58dela '5년당 TFP 감소율' / 0.005 /
59## 배출 매개변수
60gsigma1 '시그마의 초기 성장(연간)' / -0.0152 /
61dsig '탈탄소화 감소율(기간당)' / -0.001 /
62eland0 '2015년 육상 탄소 배출량(연간 GtCO2)' / 2.6 /
63deland '토지 배출 감소율(기간당)' / .115 /
64e0 '2015년 산업 배출량(연간 GtCO2)' / 35.85 /
65miu0 '기본 사례 2015의 초기 배출 제어율' / .03 /
66## 탄소 순환
67# 초기 조건
68mat0 '초기 대기 농도 2015(GtC)' / 851 /
69mu0 '상층 초기 농도 2015(GtC)' / 460 /
70ml0 '하층 초기 농도 2015(GtC)' / 1740 /
71mateq '평형농도분위기(GtC)' / 588 /
72mueq '상층부 평형 농도(GtC)' / 360 /
73mleq '하층의 평형 농도(GtC)' / 1720 /
74# 흐름 매개변수
75b12 '탄소 순환 전이 행렬' / .12 /
76b23 '탄소 순환 전이 행렬' / 0.007 /
77# 이것은 선언용이며 나중에 정의됩니다.
78b11 '탄소 순환 전이 행렬'
79b21 '탄소 순환 전이 행렬'
80b22 '탄소 순환 전이 행렬'
81b32 '탄소 순환 전이 행렬'
82b33 '탄소 순환 전이 행렬'
83sig0 '탄소 집약도 2010 (출력당 kgCO2 2005 슬롯 사이트 추천 2010)'
84## 기후 모델 매개변수
85t2xco2 '평형 온도 영향(CO2 두 배당 oC)' / 3.1 /
86fex0 '2015년 비CO2 온실가스 강제력(Wm-2)' / 0.5 /
87fex1 '2100 비CO2 GHG 강제력(Wm-2)' / 1.0 /
88tocean0 '초기 하부 지층 온도 변화(1900년부터 C)' / .0068 /
89tatm0 '초기 대기 온도 변화(1900년부터 C)' / 0.85 /
90c1 '상위층의 기후방정식 계수' / 0.1005 /
91c3 '상부 지층에서 하부 지층으로의 전달 계수' / 0.088 /
92c4 '하위 레벨의 전달 계수' / 0.025 /
93fco22x '평형 CO2 배가 강제력(Wm-2)' / 3.6813 /
94## 기후 피해 매개변수
95a10 '초기 피해 차단' / 0 /
96a20 '초기 손상 2차 항'
97a1 '손상 방지' / 0 /
98a2 '손상 2차 항' / 0.00236 /
99a3 '손상 지수' / 2.00 /
100## 감소 비용
101expcost2 '제어 비용 함수의 지수' / 2.6 /
102pback '백스톱 비용 2010$/tCO2 2015' / 550 /
103gback '초기 비용 감소 기간당 백스톱 비용' / .025 /
104limmiu '2150년 이후 제어율 상한' / 1.2 /
105tnopol '배출을 통제하지 않는 기간' / 45 /
106cprice0 '초기 기본 탄소 가격(2010년 tCO2당 $)' / 2 /
107gcprice '연간 기본 탄소 가격 증가율' / .02 /
108
109## 확장 및 필수 매개변수
110# 이는 계산에 필요하지 않음에 유의하십시오.
111# 첫 번째 기간 소비의 MU = 1이고 PV cons = PV 유틸리티임을 보장합니다.
112scale1 '곱셈적 스케일링 계수' / 0.0302455265681763 /
113scale2 '추가 스케일링 계수' / -10993.704 /
114;
115
116# 프로그램 제어 변수
117tfirst(t), tlast(t), tealy(t), tlate(t) 설정 ;
118
119매개변수
120l(t) '인구 및 노동 수준'
121슬롯 사이트 추천(t) '총요소생산성 수준'
122sigma(t) 'CO2 환산 배출량 출력 비율'
123rr(t) '평균 유틸리티 사회적 할인율'
124ga(t) '생산성 증가율'
125forcoth(t) '기타 온실가스에 대한 외인성 강제력'
126gl(t) '노동 증가율'
127gcost1 '비용 요소의 성장'
128gsig(t) '시그마 변화(에너지 효율 누적 개선)'
129etree(t) '삼림 벌채로 인한 배출'
130cumetree(t) '육지에서 누적'
131cost1(t) '백스톱 조정 비용'
132lam '기후 모델 매개변수'
133gfacpop(t) '성장 인자 모집단'
134pbacktime(t) '백스톱 가격'
135optlrsav '횡단성에 사용되는 최적의 장기 저축률'
136scc(t) '탄소의 사회적 비용'
137cpricebase(t) '기본 사례의 탄소 가격'
138photel(t) '손해 없는 탄소 가격(호텔 임대 조건)'
139ppm(t) '대기 농도 PPM'
140atfrac(t) '1850년 이후 대기 점유율'
141atfrac2010(t) '2010년 이후 대기 점유율'
142;
143
144# 프로그램 제어 정의
145tfirst(t) = yes$(t.val eq 1);
146tlast(t) = yes$(t.val eq card(t));
147# 탄소 순환의 장기적 일관성을 위한 매개변수
148b11 = 1 - b12;
149b21 = b12*MATEQ/MUEQ;
150b22 = 1 - b21 - b23;
151b32 = b23*mueq/mleq;
152b33 = 1 - b32;
153# 매개변수의 추가 정의
154a20 = a2;
155sig0 = e0/(q0*(1-miu0));
156lam = fco22x/t2xco2;
157l("1") = pop0;
158loop(t, l(t+1)=l(t););
159loop(t, l(t+1)=l(t)*(popasym/L(t))**popadj ;);
160
161ga(t) = ga0*exp(-dela*5*((t.val-1)));
162슬롯 사이트 추천("1") = a0; 루프(t, 슬롯 사이트 추천(t+1)=슬롯 사이트 추천(t)/((1-ga(t))););
163gsig("1") = gsigma1; loop(t,gsig(t+1)=gsig(t)*((1+dsig)**tstep) ;);
164시그마("1") = sig0; loop(t,sigma(t+1)=(sigma(t)*exp(gsig(t)*tstep)););
165
166pbacktime(t) = pback*(1-gback)**(t.val-1);
167cost1(t) = pbacktime(t)*sigma(t)/expcost2/1000;
168
169etree(t) = eland0*(1-deland)**(t.val-1);
170cumetree("1") = 100; loop(t,cumetree(t+1)=cumetree(t)+etree(t)*(5/3.666););
171
172rr(t) = 1/((1+prstp)**(tstep*(t.val-1)));
173forcoth(t) = fex0+ (1/17)*(fex1-fex0)*(t.val-1)$(t.val lt 18) + (fex1-fex0)$(t.val ge 18);
174optlrsav = (dk + .004)/(dk + .004*elasmu + prstp)*gama;
175
176# 기본 사례 탄소 가격
177cpricebase(t) = cprise0*(1+gcprice)**(5*(t.val-1));
178
179
180변수
181MIU(t) '배출 제어율 GHG'
182FORC(t) '복사강제력의 증가(1900년부터 m2당 와트)'
183TATM(t) '대기 온도 증가(1900년부터 섭씨 온도)'
184TOCEAN(t) '하층 해양 온도 증가(1900년부터 섭씨 온도)'
185MAT(t) '대기 중 탄소 농도 증가(1750년의 GtC)'
186MU(t) '얕은 바다의 탄소 농도 증가(1750년부터 GtC)'
187ML(t) '하층 해양의 탄소 농도 증가(1750년부터 GtC)'
188E(t) '총 CO2 배출량(연간 GtCO2)'
189EIND(t) '산업 배출량(연간 GtCO2)'
190C(t) '소비(연간 2005년 미국 달러 수조)'
191K(t) '자본스톡(조 달러, 2005년 미국 달러)'
192CPC(t) '자본당 소비(연간 수천 2005 슬롯 사이트 추천)'
193I(t) '투자(연간 2005년 수조 달러)'
194S(t) '세계 총생산 대비 총 저축률'
195RI(t) '실질이자율(연간)'
196Y(t) '감소 및 피해를 제외한 세계 총생산(연간 2005 슬롯 사이트 추천 조)'
197YGROSS(t) '경감 및 피해의 세계 총생산(GROSS)(연간 수조 2005 슬롯 사이트 추천)'
198YNET(t) '순손해 방정식의 산출량(연간 2005년 슬롯 사이트 추천 수조)'
199DAMAGES(t) '손해(연간 2005 슬롯 사이트 추천 조)'
200DAMFRAC(t) '총 생산량에 대한 피해 비율'
201ABATECOST(t) '배출 감소 비용(연간 2005 슬롯 사이트 추천 조)'
202MCABATE(t) '한계 저감 비용(CO2 톤당 2005$)'
203CCA(t) '누적 산업 탄소 배출량(GTC)'
204CCATOT(t) '총 탄소 배출량(GtC)'
205PERIODU(t) '1기간 효용함수'
206CPRICE(t) '탄소 가격(CO2 톤당 2005$)'
207CEMUTOTPER(t) '기간 효용'
208UTILITY '복지 기능'
209;
210
211음수가 아닌 변수 MIU, TATM, MAT, MU, ML, Y, YGROSS, C, K, I ;
212
213
214수식
215# 방출 및 피해
216EEQ(t) '배출 방정식'
217EINDEQ(t) '산업 배출'
218CCACCA(t) '누적 산업 탄소 배출량'
219CCATOTEQ(t) '누적 총 탄소 배출량'
220FORCE(t) '복사강제력 방정식'
221DAMFRACEQ(t) '손상률 방정식'
222DAMEQ(t) '피해 방정식'
223ABATEEQ(t) '배출 감소 비용 방정식'
224MCABATEEQ(t) 'MC 감소 방정식'
225CARBPRICEEQ(t) '감소로 인한 탄소 가격 방정식'
226
227# 기후와 탄소 순환
228MMAT(t) '대기 농도 방정식'
229MMU(t) '얕은 바다 집중'
230MML(t) '낮은 해양 농도'
231TATMEQ(t) '대기에 대한 온도-기후 방정식'
232TOCEANEQ(t) '저해양에 대한 온도-기후 방정식'
233
234# 경제 변수
235YGROSSEQ(t) '총계 방정식 출력'
236YNETEQ(t) '순손해 방정식 출력'
237YY(t) '출력 순 방정식'
238CC(t) '소비 방정식'
239CPCE(t) '1인당 소비 정의'
240SEQ(t) '저축률 방정식'
241KK(t) '자본수지 방정식'
242RIEQ(t) '이자율 방정식'
243
244# 유틸리티
245CEMUTOTPEREQ(t) '기간 효용'
246PERIODUEQ(t) '순시 효용 함수 방정식'
247UTIL '목적 함수'
248;
249
250## 모델의 방정식
251# 방출 및 피해
252eeq(t).. E(t) =E= EIND(t) + etree(t);
253eindeq(t).. EIND(t) =E= 시그마(t) * YGROSS(t) * (1-(MIU(t)));
254ccacca(t+1).. CCA(t+1) =E= CCA(t) + EIND(t)*5/3.666;
255ccatoteq(t).. CCATOT(t) =E= CCA(t) + cumetree(t);
256force(t).. FORC(t) =E= fco22x * ((log((MAT(t)/588.000))/log(2))) + forcoth(t);
257damfraceq(t) .. DAMFRAC(t) =E= (a1*TATM(t)) + (a2*TATM(t)**a3) ;
258dameq(t).. 피해(t) =E= YGROSS(t) * DAMFRAC(t);
259abateeq(t).. ABATECOST(t) =E= YGROSS(t) * 비용1(t) * (MIU(t)**expcost2);
260mcabateeq(t).. MCABATE(t) =E= pbacktime(t) * MIU(t)**(expcost2-1);
261carbpriceeq(t).. CPRICE(t) =E= pbacktime(t) * (MIU(t))**(expcost2-1);
262
263# 기후와 탄소 순환
264mmat(t+1).. MAT(t+1) =E= MAT(t)*b11 + MU(t)*b21 + (E(t)*(5/3.666));
265mml(t+1).. ML(t+1) =E= ML(t) *b33 + MU(t)*b23;
266mmu(t+1).. MU(t+1) =E= MAT(t)*b12 + MU(t)*b22 + ML(t)*b32;
267tatmeq(t+1).. TATM(t+1) =E= TATM(t) + c1*((FORC(t+1)-(fco22x/t2xco2)*TATM(t))-(c3*(TATM(t)-TOCEAN(t))));
268toceaneq(t+1).. TOCEAN(t+1) =E= TOCEAN(t) + c4*(TATM(t)-TOCEAN(t));
269
270# 경제 변수
271ygrosseq(t).. YGROSS(t) =E= (슬롯 사이트 추천(t)*(L(t)/1000)**(1-GAMA))*(K(t)**GAMA);
272yneteq(t).. YNET(t) =E= YGROSS(t)*(1-damfrac(t));
273yy(t).. Y(t) =E= YNET(t) - ABATECOST(t);
274cc(t).. C(t) =E= Y(t) - I(t);
275cpce(t).. CPC(t) =E= 1000 * C(t) / L(t);
276seq(t).. I(t) =E= S(t) * Y(t);
277kk(t+1).. K(t+1) =L= (1-dk)**tstep * K(t) + tstep * I(t);
278rieq(t+1).. RI(t) =E= (1+prstp) * (CPC(t+1)/CPC(t))**(elasmu/tstep) - 1;
279
280# 유틸리티
281cemutotpereq(t).. CEMUTOTPER(t) =E= PERIODU(t) * L(t) * rr(t);
282기간q(t).. PERIODU(t) =E= ((C(T)*1000/L(T))**(1-elasmu)-1)/(1-elasmu)-1;
283util.. UTILITY =E= tstep * scale1 * sum(t, CEMUTOTPER(t)) + scale2;
284
285
286# 자원 제한
287CCA.up(t) = fosslim;
288
289# 제어율 제한
290MIU.up(t) = limmiu;
291MIU.up(t)$(t.val<30) = 1;
292
293## 안정성의 상한 및 하한
294K.LO(t) = 1;
295MAT.LO(t) = 10;
296MU.LO(t) = 100;
297ML.LO(t) = 1000;
298C.LO(t) = 2;
299TOCEAN.UP(t) = 20;
300TOCEAN.LO(t) = -1;
301TATM.UP(t) = 20;
302CPC.LO(t) = .01;
303TATM.UP(t) = 12;
304
305# 제어 변수
306지연10(t) 설정;
307lag10(t) = yes$(t.val gt 카드(t)-10);
308S.FX(lag10(t)) = optlrsav;
309
310# 초기 조건
311CCA.FX(tfirst) = 400;
312K.FX(tfirst) = k0;
313MAT.FX(tfirst) = mat0;
314MU.FX(tfirst) = mu0;
315ML.FX(tfirst) = ml0;
316TATM.FX(tfirst) = tatm0;
317TOCEAN.FX(tfirst) = tocean0;
318
319
320## 솔루션 옵션
321모델 CO2 / 모두 /;''')
322
323 # [3]
324gams.gams('''
325MIU.FX('1') = miu0;
326nlp를 사용하여 UTILITY를 극대화하는 CO2 해결;''')
327
328 # [4]
329 가져오기판다으로pd
330m = gams.exchange_container
331결과 =
332 ford['TATM','RI','EIND','CPRICE']:
333결과[d] = pd.DataFrame(열=['선택','바스'])
334결과[d]['선택'] = m[d].records['레벨'].copy()
335
336 # [5]
337gams.gams('''
338# 기본 실행의 경우 이 서브루틴은 호텔 임대료를 계산합니다.
339# 탄소 가격은 호텔 임대료 또는 기준 가격의 최대값입니다
340# 가격 방정식이 2013R과 다릅니다. 무엇이 잘못되었는지 잘 모르겠습니다.
341옵션 bRatio = 1; MIU.LO('1') = 0; MIU.UP('1') = inf; # 선택 실행 및 폐기 기준에서 수정 재설정
342a2 = 0;
343nlp를 사용하여 UTILITY를 극대화하는 CO2 해결;
344포호텔(t) = CPRICE.L(t);
345a2 = a20;
346CPRICE.UP(t)$(t.val<tnopol+1) = max(photel(t),cpricebase(t));
347옵션 bRatio=0.25;
348nlp를 사용하여 UTILITY를 극대화하여 CO2를 해결합니다.''')
349
350
353
354 # [6]
355tstep = int(m['t단계'].toValue())
356l = [ 2010 + t단계*nn범위(len(m[''].records))]
357 d['TATM','RI','EIND','CPRICE']:
358결과[d]['바스'] = m[d].records['레벨'].copy()
359 # 인덱스를 1*100에서 2010,2015,2020,...,2505로 다시 매핑
360결과[d].set_index(pd.Index(l[:len(m[d].records['레벨'])]), 내부=사실입니다)
361
362
365
366 # [7] - [10] - 건너뛰었습니다
367
368
371
372 # [11]
373gams.gams('''
374## 사후 해결
375# 탄소 및 기타 변수의 사회적 비용 계산
376scc(t) = -1000*eeq.m(t)/(.00001+cc.m(t));
377atfrac(t) = ((MAT.L(t)-588)/(CCATOT.L(t)+.000001 ));
378atfrac2010(t) = ((MAT.L(t)-mat0)/(.00001+CCATOT.L(t)-CCATOT.L('1') ));
379ppm(t) = MAT.L(t)/2.13;
380
381매개변수 담당자(*,t);
382슬롯 사이트 추천("연간 산업 배출량 GTCO2", t) = EIND.L(t);
383슬롯 사이트 추천("대기 농도 C(ppm)", t) = MAT.L(t)/2.13;
384슬롯 사이트 추천("대기 온도", t) = TATM.L(t);
385슬롯 사이트 추천("순 출력 순)", t) = Y.L(t);
386슬롯 사이트 추천("기후 피해 비율 출력", t) = DAMFRAC.L(t);
387슬롯 사이트 추천("1인당 소비량", t) = CPC.L(t);
388슬롯 사이트 추천("탄소 가격(CO2 t당)", t) = CPRICE.L(t);
389슬롯 사이트 추천("배출 제어율", t) = MIU.L(t);
390슬롯 사이트 추천("탄소의 사회적 비용", t) = scc(t);
391슬롯 사이트 추천("이자율", t) = RI.L(t);
392슬롯 사이트 추천("인구", t) = l(t);
393슬롯 사이트 추천("TFP", t) = al(t);
394슬롯 사이트 추천("총생산량,총생산량", t) = YGROSS.L(t);
395슬롯 사이트 추천("tfp 변경", t) = ga(t);
396슬롯 사이트 추천("수도", t) = K.L(t);
397슬롯 사이트 추천("s", t) = S.L(t);
398슬롯 사이트 추천("나", t) = I.L(t);
399슬롯 사이트 추천("Y 총 순액", t) = YNET.L(t);
400슬롯 사이트 추천("손상", t) = DAMAGES.L(t);
401슬롯 사이트 추천("damfrac", t) = DAMFRAC.L(t);
402슬롯 사이트 추천("감소", t) = ABATECOST.L(t);
403슬롯 사이트 추천("시그마", t) = 시그마(t);
404슬롯 사이트 추천("강제", t) = FORC.L(t);
405슬롯 사이트 추천("기타 강제력", t) = forcoth(t);
406슬롯 사이트 추천("기간 유틸리티", t) = PERIODU.L(t);
407슬롯 사이트 추천("소비", t) = C.L(t);
408슬롯 사이트 추천("토지 배출", t) = etree(t);
409슬롯 사이트 추천("누적 ind 배출량", t) = CCA.L(t);
410슬롯 사이트 추천("누적 총 배출량", t) = CCATOT.L(t);
411슬롯 사이트 추천("대기 농도 Gt", t) = MAT.L(t);
412슬롯 사이트 추천("대기 농도ppm",t) =ppm(t);
413슬롯 사이트 추천("연간 총 배출량 GTCO2", t) = E.L(t);
414슬롯 사이트 추천("대기 농도 상한", t) = MU.L(t);
415슬롯 사이트 추천("대기 농도가 낮아짐", t) = ML.L(t);
416슬롯 사이트 추천("1850년 이후 대기 비율", t) = atfrac(t);
417슬롯 사이트 추천("2010년 이후 대기 비율", t) = atfrac2010(t);''')
418
419 # [12]
420 가져오기복사
421
422슬롯 사이트 추천 = copy.deepcopy(m['대표'])
423슬롯 사이트 추천records[''] = 담당자.기록[''].map(s:2010+tstep*int(s)forsinm[''].기록['유니']})
424인쇄(슬롯 사이트 추천pivot(index='', 열='유니'))
425
426 # [13]
427gams.gams_cleanup(closedown=)