Version:

exc2x2emp.gms : pure exchange model (ie no production)

**Description**

Model from Ermoliev et al, On Convergence of SJM In this version, replace utility maximization with demand functions This is similar to scarfemp-dual.gms except there is no production Rather than form the MCP explicitly, we instead use the KKT of the dual form optimization problem: max_p sum (h, i(h) * log(expend_h(p))) - p'*sum(h, endow(.,h)) s.t sum(., p(.)) = 1, p >= 0 coupled with the income complementarity relationship. Here expend_h is the expenditure function defined by: expend_h(p) = min_c p'*c s.t. u_h(c) >= 1 In this model, player 1 has u_1(x1) x1('2') while player 2 has u_2(x2) = sqrt(x2('1')*x2('2')) Contributor: Michael Ferris, October 2010

**Small Model of Type : ** EQUIL

**Category :** GAMS EMP library

**Main file :** exc2x2emp.gms

```
$title pure exchange model (ie no production) (EXC2X2EMP,SEQ=57)
$ontext
Model from Ermoliev et al, On Convergence of SJM
In this version, replace utility maximization with demand functions
This is similar to scarfemp-dual.gms except there is no production
Rather than form the MCP explicitly,
we instead use the KKT of the dual form optimization problem:
max_p sum (h, i(h) * log(expend_h(p))) - p'*sum(h, endow(.,h))
s.t sum(., p(.)) = 1, p >= 0
coupled with the income complementarity relationship.
Here expend_h is the expenditure function defined by:
expend_h(p) = min_c p'*c s.t. u_h(c) >= 1
In this model, player 1 has u_1(x1) x1('2')
while player 2 has u_2(x2) = sqrt(x2('1')*x2('2'))
Contributor: Michael Ferris, October 2010
$offtext
set i /1*2/;
alias(i,j);
parameter w1(j) 'endowment of player 1' /
1 1
2 1 /,
w2(j) 'endowment of player 2' /
1 1 /;
* Following is the complementarity model generated
equations objdef, income(j), norm;
positive variables p(j);
free variables z, w(j);
* Same as scarfmcp model except production "z" = 0
* expenditure functions are e_1 (p) = p2 and 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)));
income(j)..
w(j) =e= sum(i, p(i)*(w1(i)$sameas(j,'1') + w2(i)$sameas(j,'2')));
norm..
sum(j, p(j)) =e= 1;
model nashemp /objdef,income,norm/;
file myinfo /'%emp.info%'/;
putclose myinfo 'dualequ income w';
p.l(j) = 1;
w.l(j) = 0.5;
solve nashemp using emp max z;
* now form problem explicitly
* move p away from zero to allow evaluation of d_p
p.lo(j) = 1e-8;
equations d_p(j), Nnorm;
free variables mu;
d_p(j)..
(-w('1')/p(j))$sameas(j,'2')
- 0.5*w('2')/p(j)
+ w1(j) + w2(j) + mu =g= 0;
Nnorm..
1 =e= sum(j, p(j));
model nash /income.w,d_p.p,Nnorm.mu/;
nash.iterlim = 0;
mu.l = norm.m;
solve nash using mcp;
parameter 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);
display x1, x2;
```