로드 중...
검색 중...
일치하는 항목 없음
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 USD)' / 105.5 /
55k0 '초기 자본 가치 2015(트릴 2010 USD)' / 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 USD 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 무료 슬롯 게임이고 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 카드(t));
147# 탄소 순환의 장기적 일관성을 위한 매개변수
148b11 무료 슬롯 게임 - b12;
149b21 = b12*MATEQ/MUEQ;
150b22 무료 슬롯 게임 - b21 - b23;
151b32 = b23*mueq/mleq;
152b33 무료 슬롯 게임 - 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") 무료 슬롯 게임00; loop(t,cumetree(t+1)=cumetree(t)+etree(t)*(5/3.666););
171
172rr(t) 무료 슬롯 게임/((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 USD)'
193I(t) '투자(연간 2005년 수조 달러)'
194S(t) '세계 총생산 대비 총 저축률'
195RI(t) '실질이자율(연간)'
196Y(t) '감소 및 피해를 제외한 세계 총생산(연간 2005 USD 조)'
197YGROSS(t) '경감 및 피해의 세계 총생산(GROSS)(연간 수조 2005 USD)'
198YNET(t) '순손해 방정식의 산출량(연간 2005년 USD 수조)'
199DAMAGES(t) '손해(연간 2005 USD 조)'
200DAMFRAC(t) '총 생산량에 대한 피해 비율'
201ABATECOST(t) '배출 감소 비용(연간 2005 USD 조)'
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무료 슬롯 게임000 * 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) = 한계;
291MIU.up(t)$(t.val<30) 무료 슬롯 게임;
292
293## 안정성의 상한 및 하한
294K.LO(t) 무료 슬롯 게임;
295MAT.LO(t) 무료 슬롯 게임0;
296MU.LO(t) 무료 슬롯 게임00;
297ML.LO(t) 무료 슬롯 게임000;
298C.LO(t) = 2;
299TOCEAN.UP(t) = 20;
300TOCEAN.LO(t) = -1;
301TATM.UP(t) = 20;
302CPC.LO(t) = .01;
303TATM.UP(t) 무료 슬롯 게임2;
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 무료 슬롯 게임; 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=)