exc2x2emp.gms : 순수 교환 모델(즉, 생산 없음)

설명

Ermoliev 등의 모델, On Convergence of SJM
이 버전에서는 효용 극대화를 수요 함수로 대체합니다.
생산이 없다는 점을 제외하면 Scarfemp-dual.gms와 유사합니다.

MCP를 명시적으로 구성하는 대신
대신 이중 형식 최적화 문제의 KKT를 사용합니다.
   max_p sum (h, i(h) * log(expend_h(p))) - p'*sum(h, endow(.,h))
   s.t 합계(., p(.)) = 1, p >= 0

소득보완관계와 결합된다.

여기서 expend_h는 다음과 같이 정의되는 지출 함수입니다.
   expend_h(p) = min_c p'*c s.t.  u_h(c) >= 1

이 모델에서 플레이어 1은 u_1(x1) x1('2')
플레이어 2에는 u_2(x2) = sqrt(x2('1')*x2('2'))가 있습니다.

기고자: Michael Ferris, 2010년 10월

소형 모델 유형 :EQUIL


카테고리 : 슬롯 커뮤니티 EMP 라이브러리


메인 파일 : exc2x2emp.gms

$title 순수 교환 모델(즉, 생산 없음) (EXC2X2EMP,SEQ=57)

$onText
Ermoliev 등의 모델, On Convergence of SJM
이 버전에서는 효용 극대화를 수요 함수로 대체합니다.
생산이 없다는 점을 제외하면 Scarfemp-dual.gms와 유사합니다.

MCP를 명시적으로 구성하는 대신
대신 이중 형식 최적화 문제의 KKT를 사용합니다.
   max_p sum (h, i(h) * log(expend_h(p))) - p'*sum(h, endow(.,h))
   s.t 합계(., p(.)) = 1, p >= 0

소득보완관계와 결합된다.

여기서 expend_h는 다음과 같이 정의되는 지출 함수입니다.
   expend_h(p) = min_c p'*c s.t.  u_h(c) >= 1

이 모델에서 플레이어 1은 u_1(x1) x1('2')
플레이어 2에는 u_2(x2) = sqrt(x2('1')*x2('2'))가 있습니다.

기고자: Michael Ferris, 2010년 10월
$offText

i /1*2/로 설정;
별칭(i,j);

매개변수 w1(j) '플레이어 1의 기부금' /
            1 1
            2 1 /,
          w2(j) '플레이어 2의 기부' /
            1 1 /;

* 다음은 생성된 상보성 모델입니다.

방정식 objdef, 소득(j), 규범;
양의 변수 p(j);
자유변수 z, w(j);

* 생산 "z" = 0을 제외하고는 Scarpmcp 모델과 동일
* 지출 함수는 e_1 (p) = p2 및 e_2(p) = 2 sqrt(p1*p2) resp입니다.

objdef..
  z =e=
  sum(j, w(j)*(log(p('2')$sameas(j,'1') + log(2*sqrt(p('1')*p('2')))$sameas(j,'2'))))

  - sum(j, p(j)*(w1(j) + w2(j)));

소득(j)..
  w(j) =e= sum(i, p(i)*(w1(i)$sameas(j,'1') + w2(i)$sameas(j,'2')));

표준..
  합(j, p(j)) =e= 1;

모델 nashemp /objdef,income,norm/;

파일 myinfo /'%emp.info%'/;
putclose myinfo 'dualequ 소득 w';

p.l(j) = 1;
w.l(j) = 0.5;
emp max z를 사용하여 nashemp를 해결합니다.

* 이제 명시적으로 문제를 형성합니다.
* d_p를 평가할 수 있도록 p를 0에서 멀리 이동시킵니다.
p.lo(j) = 1e-8;

방정식 d_p(j), Nnorm;
자유변수 mu;

d_p(j)..
  (-w('1')/p(j))$sameas(j,'2')
  - 0.5*w('2')/p(j)
  + w1(j) + w2(j) + mu =g= 0;

냠냠..
  1 =e= 합(j, p(j));

모델 내쉬 /income.w,d_p.p,Nnorm.mu/;

nash.iterlim = 0;
mu.l = 규범.m;
mcp를 사용하여 Nash를 해결합니다.

매개변수 x1(j), x2(j);
x1(j) = 1$sameas(j,'2')*w.l('1')/p.l(j) ;
x2(j) = 0.5*w.l('2')/p.l(j);

x1, x2 표시;