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.