ps3_s_scp.gms : Parts Supply Problem w/ 3 Types w/o and w/ SCP

Description

```Hideo Hashimoto, Kojun Hamada, and Nobuhiro Hosoe, "A Numerical Approach
to the Contract Theory: the Case of Adverse Selection", GRIPS Discussion
Paper 11-27, National Graduate Institute for Policy Studies, Tokyo, Japan,
March 2012.

Keywords: nonlinear programming, contract theory, principal-agent problem,
```

Small Model of Type : NLP

Category : GAMS Model library

Main file : ps3_s_scp.gms

``````\$title Parts Supply Problem w/ 3 Types w/o & w/ SCP (PS3_S_SCP,SEQ=367)

\$onText
Hideo Hashimoto, Kojun Hamada, and Nobuhiro Hosoe, "A Numerical Approach
to the Contract Theory: the Case of Adverse Selection", GRIPS Discussion
Paper 11-27, National Graduate Institute for Policy Studies, Tokyo, Japan,
March 2012.

Keywords: nonlinear programming, contract theory, principal-agent problem,
\$offText

option limCol = 0, limRow = 0;

Set i 'type of supplier' / 0, 1, 2 /;

Alias (i,j);

Parameter
theta(i) 'efficiency'          / 0 0.1, 1 0.4, 2 0.9 /
p(i)     'probability of type' / 0 0.2, 1 0.5, 2 0.3 /;

Scalar ru 'reservation utility' / 0 /;

* Definition of Primal/Dual Variables
Positive Variable
x(i) "quality"
b(i) "maker's revenue"
w(i) "price";

Variable Util "maker's utility";

Equation
obj     "maker's utility function"
rev(i)  "maker's revenue function"
pc(i)   "participation constraint"
ic(i,j) "incentive compatibility constraint"
licd(i) "incentive compatibility constraint"
licu(i) "incentive compatibility constraint";

obj..     Util =e= sum(i, p(i)*(b(i) - w(i)));

rev(i)..  b(i) =e= x(i)**(0.5);

pc(i)..   w(i)  - (theta(i)+(1 - theta(i) + sqr(theta(i)))*x(i)) =g= ru;

ic(i,j).. w(i)  - (theta(i) + (1 - theta(i) + sqr(theta(i)))*x(i))
=g=  w(j)  - (theta(i) + (1 - theta(i) + sqr(theta(i)))*x(j));

licd(i).. w(i)  - (theta(i) + (1 - theta(i) + sqr(theta(i)))*x(i))
=g=  w(i+1)- (theta(i) + (1 - theta(i) + sqr(theta(i)))*x(i+1));

licu(i).. w(i)  - (theta(i) + (1 - theta(i) + sqr(theta(i)))*x(i))
=g=  w(i-1)- (theta(i) + (1 - theta(i) + sqr(theta(i)))*x(i-1));

* Setting Lower Bounds on Variables to Avoid Division by Zero
x.lo(i) = 0.0001;

Model
SB_gic_wo_SCP / obj, rev, pc, ic         /
SB_lic_wo_SCP / obj, rev, pc, licd, licu /;

solve SB_gic_wo_SCP maximizing Util using nlp;
solve SB_lic_wo_SCP maximizing Util using nlp;
``````
GAMS Development Corp.
GAMS Software GmbH

General Information and Sales
U.S. (+1) 202 342-0180
Europe: (+49) 221 949-9170