etamac.gms : 미국용 ETA-MACRO 슬롯 무료체험지 모델

설명

이것은 미국의 슬롯 무료체험지 거시경제 상호작용 모델입니다.
States developed by Prof A Manne, Stanford University.

소형 모델 유형 :NLP


카테고리 : 슬롯 무료체험 모델 라이브러리


메인 파일 : etamac.gms

$title 미국용 Eta-Macro 슬롯 무료체험지 모델(ETAMAC,SEQ=80)

$onText
이것은 미국의 슬롯 무료체험지 거시경제 상호작용 모델입니다.
스탠포드 대학의 A Manne 교수가 개발한 상태입니다.

Manne, AS, ETA-MACRO: 슬롯 무료체험지-경제 상호작용 모델. 히치에서는
CJ, Ed, 슬롯 무료체험지-경제 상호작용 모델링, 미래를 위한 자원.
?, 워싱턴 DC, 1977.

*-----------------------------------------------
이는 기간별 기간 및 연수 변경에 대한 참고 사항입니다.

먼저 해당 기간인 세트 t를 입력해야 합니다.
사용.  t의 항목 사이의 연도 수는 nyper 값이어야 합니다.
기간당 연수를 선택해야 하며 이는 반드시
집합 t에 해당합니다. 기간당 연수를 변경해야 합니다.
나이퍼, 두 곳에서요. nyper는 2보다 크거나 같아야 합니다.

또한 기준으로부터 연도를 포함하는 세트 단위를 입력해야 합니다.
연도부터 첫 해 이전 연도까지.

사용된 단위:

전기슬롯 무료체험지 10**12kwh
비전기 슬롯 무료체험지 10**15 btu
전기슬롯 무료체험지 가격 $/(10**3kwh)
비전기 슬롯 무료체험지 가격 $/(10**6btu)
국민총생산 10**12 $
*-----------------------------------------------

키워드: 비선형 계획법, 슬롯 무료체험지 경제학, 거시 경제학, 예측,
          슬롯 무료체험지 정책
$offText

스칼라
   nyper '기간당 연수' / 5 /;

세트
   inityrs '첫 해 이전 연도' / 1985*1989 /
   bsyr '기준 연도'
   t '실제 기간' / 1990, 1995, 2000, 2005, 2010
                                           2015년, 2020년, 2025년, 2030년 /
   tfirst(t) '첫 번째 기간'
   tlast(t) '마지막 기간'
   nypset '1에서 nyper로 설정' / 1*5 /;

bsyr(inityrs) = yes$(ord(inityrs) = 1);
tfirst(t) = yes$(ord(t) = 1);
tlast(t) = yes$(ord(t) = 카드(t));

스칼라
   spda '조정 속도' / 0.96 /
   kpvs '자본 지분 매개변수' / 0.28 /
   elvs '전기 공유 매개변수' / 0.35 /
   esub 'k-l과 e-n 사이의 탄력성' / 0.45 /
   k0 '초기 자본금' / 10.90 /
   e0 '초기 전기슬롯 무료체험지' / 2.50 /
   n0 '초기 비전기 슬롯 무료체험지' / 50 /
   i0 '초기 투자' / 0.7 /
   c0 '초기 소비' / 3.2 /
   pe0 '전기슬롯 무료체험지 초기가격' / 50 /
   pn0 '비전기슬롯 무료체험지 초기가격' / 4.5 /
   pnref '비전기슬롯 무료체험지 기준가격' / 3.0 /
   y0 '초기 출력'
   htrt0 '초기 열량'
   일'천' / 1000.0 /
   rho 'esub 빼기 1을 esub로 나눈 값'
   aconst '자본-노동 지수에 대한 상수'
   bconst '전기-비전기 슬롯 무료체험지 지수에 대한 상수'
   ninit '첫 해 이전의 연수'
   tol '하한에 대한 공차 인자' / 0.3 /;

매개변수
   dfactcurr(t) '현재 연간 유틸리티 할인 요소'
   dfact(t) '공과금 할인 계수'
   성장(t) '잠재적인 연간 GNP 증가율'
   pegrow(t) '현재 전기요금 상승률'
   pelec(t) '전기요금 상승'
   pngrow(t) '비전력 가격의 현재 성장'
   pnelec(t) '비전력 가격 상승'
   l(t) '현재 노동력(효율성 단위)'
   ln(t) '새로운 노동력'
   ipm(t) '투자 기간 승수'
   htrt(t) '열량'
   알고(t) '새로운 자본금';

*다음 입력 요소는 각각 공과금 할인을 나타냅니다.
*(dfactcurr), 전기 및 비전기 슬롯 무료체험지 비용의 증가(pelec 및
*pnelec) 및 잠재적 gnp(성장).

dfactcurr(t) = 0.96;
페그로우(t) = 0.01;
pngrow(t) = 0.02;
성장(t) = 0.03;
htrt0 = 10.809;
htrt(t) = 10.809;

ninit = 카드(inityrs);
rho = (esub - 1)/esub;
y0 = i0 + c0 + (e0*pe0 + n0*pn0)/thsnd;

bconst = (pnref/thsnd)*y0**(rho - 1)
         / ((1 - 엘프)*(e0**(rho*elvs))*(n0**(rho*(1 - 엘브) - 1)));
aconst = (y0**rho - bconst*(e0**(rho*elvs))*(n0**(rho*(1 - elvs))))
         /(k0**(rho*kpvs));

*다음 계산은 각 분야의 투자 성장을 허용합니다.
*기간 및 기하학적 붕괴.

알고(tfirst) = i0*(sum(inityrs, spda**(ord(inityrs) - 1)
             * (1 + 성장(tfirst))**(ninit - ord(inityrs))));

ipm(t) = sum(nypset, spda**(ord(nypset) - 1)*(1 + 성장(t))**(nyper - ord(nypset)));

dfact(tfirst) = dfactcurr(tfirst)**ninit;
l(tfirst) = (1 + 성장(tfirst))**ninit;
ln(tfirst) = l(tfirst) - (spda**ninit);
pelec(tfirst) = pe0*((1 + pegrow(tfirst))**ninit);
pnelec(tfirst) = pn0*((1 + pngrow(tfirst))**ninit);

루프(티,
   dfact(t+1) = dfact(t)*dfactcurr(t+1)**nyper;
   l(t+1) = l(t)*(1 + 성장(t+1))**nyper;
   ln(t+1) = l(t+1) - l(t)*(spda**nyper);
   pelec(t+1) = pelec(t)*(1 + pegrow(t))**nyper;
   pnelec(t+1) = pnelec(t)*(1 + pngrow(t))**nyper;
);

dfact(tlast) = dfact(tlast)/(1 - dfactcurr(tlast));

ipm, kpvs, elvs, l, ln, rho, aconst, bconst, pelec, pnelec, Know를 표시합니다.

변수
   k(t) '자본스톡'
   kn(t) '신규 자본금'
   y(t) '생산'
   yn(t) '새로운 생산'
   e(t) '전기 슬롯 무료체험지'
   en(t) '새로운 전기 슬롯 무료체험지'
   n(t) '비전기 슬롯 무료체험지'
   nn(t) '비전기 슬롯 무료체험지'
   c(t) '소비'
   i(t) '투자'
   ec(t) '수조 단위의 슬롯 무료체험지 비용'
   유틸리티;

k.l(t) = k0*l(t);
y.l(t) = y0*l(t);
e.l(t) = e0*l(t);
n.l(t) = n0*l(t);
c.l(t) = c0*l(t);
i.l(t) = i0*l(t);

k.l, y.l, el, n.l, c.l, i.l을 표시합니다.

방정식
   newcap(t) '새 자본'
   newprod(t) '새 프로덕션'
   fnewelec(t) '첫 번째 기간의 새로운 전기 슬롯 무료체험지'
   newelec(t) '새로운 전기 슬롯 무료체험지'
   fnewnon(t) '첫 번째 기간의 새로운 비전기 슬롯 무료체험지'
   newnon(t) '새로운 비전기 슬롯 무료체험지'
   totalcap(t) '총 자본스톡'
   ftotalprod(t) '첫 번째 기간의 총 생산량'
   totalprod(t) '총 생산량'
   costnrg(t) '슬롯 무료체험지 비용'
   cc(t) '용량 제약'
   tc(t) '종료 조건'
   util '할인된 소비 로그';

newcap(t+1)..kn(t+1) =e= i(t)*ipm(t);

newprod(t+1)..yn(t+1) =e= (aconst*(kn(t+1)**(rho*kpvs))
                                 * (ln(t+1)**(rho*(1 - kpvs)))
                                 + bconst*(en(t+1)**(rho*elvs))
                                 * (nn(t+1)**(rho*(1 - elvs))))**(1/rho);

fnewelec(tfirst).. en(tfirst) =e= e(tfirst) - e0*(spda**nyper);

newelec(t+1).. en(t+1) =e= e(t+1) - e(t)*(spda**nyper);

fnewnon(tfirst)..nn(tfirst) =e= n(tfirst) - n0*(spda**nyper);

newnon(t+1)..nn(t+1) =e= n(t+1) - n(t)*(spda**nyper);

totalcap(t+1).. k(t+1) =e= k(t)*(spda**nyper) + kn(t+1);

ftotalprod(tfirst).. y(tfirst) =e= y0*(spda**ninit)
                                 + (aconst*(knew(tfirst)**(rho*kpvs))
                                 * (ln(tfirst)**(rho*(1-kpvs)))
                                 + bconst*(en(tfirst)**(rho*elvs))
                                 * (nn(tfirst)**(rho*(1 - elvs))))**(1/rho);

총생산(t+1).. y(t+1) =e= y(t)*(spda**nyper) + yn(t+1);

비용nrg(t).. thsnd*ec(t) =e= pelec(t)*e(t) + pnelec(t)*n(t);

cc(t)..y(t) =e= c(t) + i(t) + ec(t);

tc(tlast).. k(tlast)*(grow(tlast) + (1 - spda)) =l= i(tlast);

util.. 유틸리티 =e= sum(t, dfact(t)*log(c(t)));

k.lo(t) = k0;
kn.lo(t) = tol*i0*ipm(t);
y.lo(t) = y0;
yn.lo(t) = tol*y0*ln(t);
e.lo(t) = e0;
en.lo(t) = tol*e0*ln(t);
n.lo(t) = n0;
nn.lo(t) = tol*n0*ln(t);
c.lo(t) = c0;
i.lo(t) = i0;

k.fx(tfirst) = k0*(spda**ninit) + Know(tfirst);

모델 etamac / 모두 /;

nlp를 사용하여 etamac 최대화 유틸리티를 해결합니다.

$sTitle 보고서 정의
매개변수
   valuerep 'c-i-gdp-e-en-tpe에 대한 보고서'
   Growthrep '성장률 보고서';

valuerep("con", bsyr) = c0;
valuerep("inv", bsyr) = i0;
valuerep("gdp", bsyr) = c0 + i0;
valuerep("elec", bsyr) = e0;
valuerep("nelec", bsyr) = n0;
valuerep("tpe", bsyr) = htrt0*e0 + n0;
valuerep("con", t) = c.l(t);
valuerep("inv", t) = i.l(t);
valuerep("gdp", t) = c.l(t) + i.l(t);
valuerep("elec", t) = e.l(t);
valuerep("nelec", t) = n.l(t);
valuerep("tpe", t) = htrt(t)*e.l(t) + n.l(t);

Growthrep("con", "'85-00") = 100*((c.l("2000")/c0)**(1/15) - 1);
Growthrep("inv", "'85-00") = 100*((i.l("2000")/i0)**(1/15) - 1);
Growthrep("gdp", "'85-00") = 100*(((c.l("2000") + i.l("2000"))/
                              (c0 + i0))**(1/15) - 1);
Growthrep("elec", "'85-00") = 100*((e.l("2000")/e0)**(1/15) - 1);
Growthrep("nelec","'85-00") = 100*((n.l("2000")/n0)**(1/15) - 1);
Growthrep("tpe", "'85-00") = 100*(((htrt("2000")*e.l("2000") + n.l("2000"))/
                              (htrt0*e0 + n0))**(1/15) - 1);
Growthrep("con", "'00-20") = 100*((c.l("2020")/c.l("2000"))**(1/20) - 1);
Growthrep("inv", "'00-20") = 100*((i.l("2020")/i.l("2000"))**(1/20) - 1);
Growthrep("gdp", "'00-20") = 100*(((c.l("2020") + i.l("2020"))/
                              (c.l("2000") + i.l("2000")))**(1/20) - 1);
Growthrep("elec", "'00-20") = 100*((e.l("2020")/e.l("2000"))**(1/20) - 1);
Growthrep("nelec","'00-20") = 100*((n.l("2020")/n.l("2000"))**(1/20) - 1);
Growthrep("tpe", "'00-20") = 100*(((htrt("2020")*e.l("2020") + n.l("2020"))/
                              (htrt("2000")*e.l("2000") + n.l("2000")))
                              **(1/20) - 1);

valuerep, Growthrep 표시;