Description
This model finds the optimal pricing and extraction of oil for the OPEC cartel.
Small Model of Type : NLP
Category : GAMS Model library
Main file : pindyck.gms
$title Optimal Pricing and Extraction for OPEC (PINDYCK,SEQ=28)
$onText
This model finds the optimal pricing and extraction of oil for
the OPEC cartel.
Pindyck, R S, Gains to Producers from the Cartelization of
Exhaustible Resources. Review of Economics and Statistics 60
(1978), 238-251.
Keywords: nonlinear programming, oil extraction, price setting, energy economics
$offText
Set
t 'overall time horizon' / 1974*1990 /
to(t) 'optimization period' / 1975*1990 /;
Parameter demand(t) 'equilibrium world demand for fixed prices';
demand(to) = 1. + 2.3*1.015**(ord(to)-1);
Variable
p(t) 'world price of oil'
td(t) 'total demand for oil'
s(t) 'supply of oil by non-opec countries'
cs(t) 'cumulative supply by non-opec countries'
d(t) 'demand for opec-oil'
r(t) 'opec reserves'
rev(t) 'revenues in each period'
profit;
Positive Variable p, td, s, cs, d, r;
Equation
tdeq(t) 'total demand equation'
seq(t) 'supply equation for non-opec countries'
cseq(t) 'accounting equation for cumulative supply'
deq(t) 'demand equation for opec'
req(t) 'accounting equation for opec reserves'
drev(t) 'yearly objective function value'
tprofit 'total objective function';
tdeq(t-1).. td(t) =e= 0.87*td(t-1) - 0.13*p(t) + demand(t);
seq(t-1).. s(t) =e= 0.75*s(t-1) + (1.1+0.1*p(t))*1.02**(-cs(t)/7);
cseq(t-1).. cs(t) =e= cs(t-1) + s(t);
deq(to).. d(to) =e= td(to) - s(to);
req(t-1).. r(t) =e= r(t-1) - d(t);
drev(to).. rev(to) =e= d(to)*(p(to)-250/r(to));
tprofit.. profit =e= sum(to,rev(to)*1.05**(1-ord(to)));
* fixed initial conditions
td.fx("1974") = 18;
s.fx ("1974") = 6.5;
r.fx ("1974") = 500;
cs.fx("1974") = 0.0;
td.l(to) = 18;
s.l(to) = 7;
cs.l(to) = 7*ord(to);
d.l (to) = td.l(to) - s.l(to);
p.l(to) = 14;
loop(t$to(t), r.l(t) = r.l(t-1)-d.l(t));
display td.l, s.l, cs.l, d.l, r.l;
Model robert / all /;
solve robert maximizing profit using nlp;