Industrial Pollution Control

TomSym implementation of GAMS Example (POLLUT,SEQ=96)

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

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

j: (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)

% Matrix w(j,i) unit load
w = [.08488  .00909  .02990  .07195;
    .03353  .02470  .08980  .17032;
    .03353  .02470  .02780  .01345;
    .00135  .00084  .06890  .01606;
    .00153  .00084  .03500  .01429;
    .23368  .07461  .04690  .15532;
    .07609  .05767  .01290  .01850;
    .07689  .05767  .05370  .09680;
    .03736  .01663  .27080  .02900;
    .02794  .00456  .06040  .09200;
    .02794  .00456  .04980  .07320;
    .00213  .08800  .11510  .09520;
    .00633  .02361  .08900  .07780;
    .00091  .03376  .02670  .03720;
    .00125  .00860  .06790  .04930;
    .00089  .00376  .06210  .02480;
    .00123  .00369  .02950  .02300;
    .00079  .00127  .07870  .04300;
    .00396  .00252  .03830  .03010;
    .00931  .00252  .04240  .03500];

% Matrix z(j,*) other data
z =  [9.600   .121   .1064    29406   24709;
    6.353   .194   .1611    21375   18918;
    9.818   .204   .0848     8423   20636;
    7.371   .181   .1428    13873   10457;
    10.220   .171   .0955     8470    9739;
    6.255   .145   .1759    36375   18880;
    8.149   .304   .2190    66016   44480;
    7.794   .146   .1439    80134   36526;
    8.400   .173   .1314     1327     758;
    9.933   .174   .0987     4414    4921;
    11.069   .167   .0817     3709    6766;
    6.528   .192   .1665    14496    9368;
    7.928   .116   .1448   102399   31127;
    10.559   .091   .1026    28008    1166;
    6.606   .227   .1567    69314   59525;
    7.153   .208   .1506    90014   63048;
    11.146   .151   .0895    29360   29839;
    6.884   .199   .1602    27687   16945;
    6.660   .253   .1446     4009    4828;
    7.929   .182   .1256    24323   24569];

% Scalars
alpha = .6;
beta = 1.4;
gamma1 = 1.4;
gamma2 = 0.9;

% Parameter tau(i)
tau = [.153e6 .12e6 .25e6 .25e6]';

% Variables (k = capital, l = labor)
toms 20x1 k l
toms tk tl output

eq1 = {output ==  sum(z(:,1).*k.^(1-z(:,2)).*l.^z(:,2)) };

eq2 = {};
for i=1:length(tau)
    eq2 = {eq2; sum(w(:,i)./z(:,3).*k) <= tau(i) };
end

eq3 = {tk >= gamma2*tl};

eq4 = {tk <= gamma1*tl};

eq5 = {tk == sum(k)};

eq6 = {tl == sum(l)};

cbnd = {alpha*z(:,4) <= k <= beta*z(:,4)
    alpha*z(:,5) <= l <= beta*z(:,5)};

solution = ezsolve(-output,{cbnd, eq1, eq2, eq3, eq4, eq5, eq6});
Problem type appears to be: lpcon
===== * * * =================================================================== * * *
TOMLAB - Tomlab Optimization Inc. Development license  999001. Valid to 2010-02-05
=====================================================================================
Problem: ---  1: Problem 1                      f_k -5353268.634151328400000000
                                       sum(|constr|)      0.005403956398367998
                              f(x_k) + sum(|constr|)-5353268.628747372000000000
                                              f(x_0)      0.000000000000000000

Solver: snopt.  EXIT=0.  INFORM=1.
SNOPT 7.2-5 NLP code
Optimality conditions satisfied

FuncEv    1 ConstrEv   22 ConJacEv   22 Iter   12 MinorIter   83
CPU time: 0.031250 sec. Elapsed time: 0.031000 sec.