매크로 : 통화 및 재정 정책 변수가 모두 사용되는 미국 경제의 작은 선형 동적 거시경제 모델

참조

  • Neculai Andrei, 크레이지 슬롯 기술을 사용한 비선형 최적화 애플리케이션, 스프링거 최적화 및 그 애플리케이션, 모델매크로(9.3) 장경제 발전, 2013

카테고리 : 크레이지 슬롯 NOA 라이브러리


메인파일 : macro.gms

$onText
미국 경제의 작은 선형 동적 거시경제 모델
통화정책 변수와 재정정책 변수가 모두 사용됩니다.

선형 이차 리카티 방정식은 일반 비선형으로 풀립니다.
일반적인 행렬 재귀 대신 프로그래밍 문제입니다.

다음을 참조하세요:
Kendrick, D, 거시경제 모델의 주의 및 조사.
경제동학과통제연구 4, 2(1982) pp.149-170.
$offText

n 상태 설정 / 소비, 투자 /
     m 통제 / 정부 지출, 돈 /
     k 지평선 / 1964-i, 1964-ii, 1964-iii, 1964-iv
                 1965-i, 1965-ii, 1965-iii, 1965-iv /
     ku(k) 제어 범위
     ki(k) 초기 기간
     kt(k) 단말기 기간 ;

별칭 (n,np), (m,mp) ;

ku(k) = yes$(ord(k) lt 카드(k));
ki(k) = yes$(ord(k) eq 1);
kt(k) = ku(k)가 아님;

k, ki, kt, ku를 표시합니다.

테이블 a(n,np) 상태 벡터 행렬

           소비하다 투자하다
소비 .914 -.016
투자하다 .097 .424

테이블 b(n,m) 제어 벡터 행렬

          정부 지출 돈
소비 .305 .424
투자하다 -.101 1.459

상태에 대한 테이블 wk(n,np) 페널티 행렬 - 입력

          소비하다 투자하다
소비 .0625
1을 투자하다

컨트롤에 대한 테이블 rk(m,mp) 페널티 행렬

           정부 지출 돈
정부 지출 1
돈 .444

매개변수 c(n) 상수항 / 소비 -59.4, 투자 -184.7 /
          xinit(n) 초기값 / 소비 387.9, 투자 85.3 /
          uinit(m) 초기 제어 / gov-expend 110.5, 돈 147.1 /
          xtilde(n,k) x에 대한 원하는 경로
          utilde(m,k) 원하는 경로
          w(n,np,k) 상태에 대한 페널티 행렬;

w(n,np,ku) = wk(n,np);
w(n,np,kt) = 10000*wk(n,np);
xtilde(n,k) = xinit(n)*1.0075**(ord(k)-1);
utilde(m,k) = uinit(m)*1.0075**(ord(k)-1);

w, xtilde, utilde 표시;

변수 x(n,k) 상태변수
          u(m,k) 제어 변수
          j 기준

방정식 기준 기준 정의
          stateq(n,k) 상태 방정식 ;

기준..
j =e= .5*sum((k,n,np),
         (x(n,k)-xtilde(n,k))*w(n,np,k)*(x(np,k)-xtilde(np,k)))
    + .5*합((ku,m,mp),
         (u(m,ku)-utilde(m,ku))*rk(m,mp)*(u(mp,ku)-utilde(mp,ku)));

상태q(n,k+1)..

x(n,k+1) =e= 합(np, a(n,np)*x(np,k)) + 합(m, b(n,m)*u(m,k)) + c(n);

모델 매크로 /all/;

x.l(n,k) = xinit(n);
u.l(m,k) = uinit(m);
x.fx(n,ki) = xinit(n);

nlp를 사용하여 j를 최소화하는 매크로를 해결합니다.

디스플레이 x.l, ul;

$ifThenI x%mode%==xbook
파일 res1 /macro.dat/;
res1을 넣어
루프(k, put xtilde('consumpt',k):10:5, put/)
루프(k, put xtilde('invest',k):10:5, put/)
loop(k, put x.l('consumpt',k):10:5, put/)
루프(k, put x.l('invest',k):10:5, put/)

루프(k, put utilde('gov-expend',k):10:5, put/)
loop(k, put utilde('money',k):10:5, put/)
루프(k, put u.l('gov-expend',k):10:5, put/)
루프(k, put u.l('money',k):10:5, put/)
$endIf

* 매크로 종료