qabel.gms : 선형 2차 제어 문제

설명

이것은 원래 ABEL 모델의 QCP 공식입니다. 참고
이 모델은 볼록하고 풀기가 매우 쉬울 것입니다.
선형 이차 리카티 방정식은 QCP로 해결됩니다.
일반적인 행렬 대신 비선형 프로그래밍 문제

QMax는 1000까지 쉽게 확장될 수 있습니다.
솔버에 대한 더 큰 QP.

소형 모델 유형 :QCP


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


메인 파일 : qabel.gms

$title QCP로서의 선형 2차 제어 문제 (QABEL,SEQ=293)

$onText
이는 원래 ABEL 모델의 QCP 공식입니다. 참고
이 모델은 볼록하고 풀기가 매우 쉬울 것입니다.
선형 이차 리카티 방정식은 QCP로 해결됩니다.
일반적인 행렬 대신 비선형 프로그래밍 문제

QMax는 1000까지 쉽게 확장될 수 있습니다.
솔버에 대한 더 큰 QP.

Kendrick, D, 거시경제 모델의 주의 및 조사. 저널
경제 역학 및 통제 4, 2(1982).

키워드: 2차 제약조건 프로그래밍, 리카티 방정식, 거시경제학,
          재정 정책, 볼록 최적화
$offText

$qmax를 설정하지 않은 경우 $set qmax 75

세트
   n '상태' / 소비, 투자 /
   m 'controls' / gov-expend, 돈 /
   k '분기' / q1*q%qmax% /
   ku(k) '제어 범위'
   ki(k) '초기 기간'
   kt(k) '말기';

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

ku(k) = ord(k) < 카드(k);
ki(k) = ord(k) = 1;
kt(k) = ku(k)가 아님;

테이블 a(n,np) '상태 벡터 행렬'
              소비하다 투자하다
   소비 .914 -.016
   .097 .424를 투자;

테이블 b(n,m) '제어 벡터 행렬'
              정부 지출 돈
   소비 .305 .424
   투자 -.101 1.459;

테이블 wk(n,np) '상태에 대한 페널티 매트릭스 - 입력'
              소비하다 투자하다
   소비 .0625
   1을 투자하다;

테이블 람다(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) = 100*wk(n,np);
xtilde(n,k) = xinit(n)*power(1.0075,ord(k) - 1);
utilde(m,k) = uinit(m)*power(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*sum((ku,m,mp),(u(m,ku) - utilde(m,ku))*lambda(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);

모델 abel / all /;

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

옵션 limCol = 0, limRow = 0, solPrint = off;

qcp를 사용하여 j를 최소화하는 abel을 해결합니다.

x.l, ul을 표시;