pollut.gms : Industrial Pollution Control

Description

This is an example of planning production within certain pollution standards.


Small Model of Type : NLP


Category : GAMS Model library


Main file : pollut.gms

$title Industrial Pollution Control (POLLUT,SEQ=96)

$onText
This is an example of planning production within certain pollution standards.


Mangasarian, O L, Nonlinear Programming. McGraw Hill, New York, 1973.

Keywords: nonlinear programming, production planning, pollution control, energy
          economics
$offText

Set
   j 'sectors'   / food,       textile,    apparel,   lumber,     furniture
                   pulp+paper, printing,   chemicals, coal+petro, rubber
                   leather,    clay+stone, steel,     nf-metals,  metals-pr
                   machinery,  elec-mach,  transport, prec-mach,  misc      /
   i 'pollutant' / cod, so2, land, water /;

Table w(j,i) 'unit load'
                   cod     so2    land   water
   food         .08488  .00909  .02990  .07195
   textile      .03353  .02470  .08980  .17032
   apparel      .03353  .02470  .02780  .01345
   lumber       .00135  .00084  .06890  .01606
   furniture    .00153  .00084  .03500  .01429
   pulp+paper   .23368  .07461  .04690  .15532
   printing     .07609  .05767  .01290  .01850
   chemicals    .07689  .05767  .05370  .09680
   coal+petro   .03736  .01663  .27080  .02900
   rubber       .02794  .00456  .06040  .09200
   leather      .02794  .00456  .04980  .07320
   clay+stone   .00213  .08800  .11510  .09520
   steel        .00633  .02361  .08900  .07780
   nf-metals    .00091  .03376  .02670  .03720
   metals-pr    .00125  .00860  .06790  .04930
   machinery    .00089  .00376  .06210  .02480
   elec-mach    .00123  .00369  .02950  .02300
   transport    .00079  .00127  .07870  .04300
   prec-mach    .00396  .00252  .03830  .03010
   misc         .00931  .00252  .04240  .03500;

Table z(j,*) 'other data'
                     a     b      k      k0     l0
   food          9.600  .121  .1064   29406  24709
   textile       6.353  .194  .1611   21375  18918
   apparel       9.818  .204  .0848    8423  20636
   lumber        7.371  .181  .1428   13873  10457
   furniture    10.220  .171  .0955    8470   9739
   pulp+paper    6.255  .145  .1759   36375  18880
   printing      8.149  .304  .2190   66016  44480
   chemicals     7.794  .146  .1439   80134  36526
   coal+petro    8.400  .173  .1314    1327    758
   rubber        9.933  .174  .0987    4414   4921
   leather      11.069  .167  .0817    3709   6766
   clay+stone    6.528  .192  .1665   14496   9368
   steel         7.928  .116  .1448  102399  31127
   nf-metals    10.559  .091  .1026   28008   1166
   metals-pr     6.606  .227  .1567   69314  59525
   machinery     7.153  .208  .1506   90014  63048
   elec-mach    11.146  .151  .0895   29360  29839
   transport     6.884  .199  .1602   27687  16945
   prec-mach     6.660  .253  .1446    4009   4828
   misc          7.929  .182  .1256   24323  24569;

Scalar
   alpha  /  .6 /
   beta   / 1.4 /
   gamma1 / 1.4 /
   gamma2 /  .9 /;

Parameter tau(i) / cod .153e6, so2 .12e6, (land, water) .25e6 /;

Variable
   k(j) 'capital'
   l(j) 'labor'
   tk
   tl
   output;

Equations
   obj
   eq4(i)
   eq5a
   eq5b
   kdef
   ldef;

obj..    output =e= sum(j, z(j,"a")*k(j)**(1 - z(j,"b"))*l(j)**z(j,"b"));

eq4(i).. sum(j, w(j,i)/z(j,"k")*k(j)) =l= tau(i);

eq5a..   tk =g= gamma2*tl;

eq5b..   tk =l= gamma1*tl;

kdef..   tk =e= sum(j, k(j));

ldef..   tl =e= sum(j, l(j));

k.lo(j) = alpha*z(j,"k0"); k.up(j) = beta*z(j,"k0"); k.l(j) = z(j,"k0");
l.lo(j) = alpha*z(j,"l0"); l.up(j) = beta*z(j,"l0"); l.l(j) = z(j,"l0");

Model one / all /;

solve one maximizing output using nlp;