tfordy.gms : Antalya Forestry Model - Dynamic
This model finds an optimal forest management plan, converting existing
forests into highly managed ones. various types of sustained yield
conditions can be imposed.
Reference:
- Bergendorff, H, Glenshaw, P, and Meeraus, A, The Planning of Investment Programs in the Paper Industry. Tech. rep., The World Bank, 1980.
Large Model of Type: LP
$Title Antalya Forestry Model - Dynamic (TFORDY,SEQ=62)
$Ontext
This model finds an optimal forest management plan, converting existing
forests into highly managed ones. various types of sustained yield
conditions can be imposed.
Bergendorff, H, Glenshaw, P, and Meeraus, A, The Planning of Investment
Programs in the Paper Industry. Tech. rep., The World Bank, 1980.
$Offtext
Sets c commodities / pulplogs, sawlogs, residuals, pulp, sawnwood /
cf(c) final products / pulp, sawnwood /
cl(c) log types / pulplogs, sawlogs /
s species / nigra, brutia /
k site classes / good, medium, poor /
at tree age / a-10, a-20, a-30, a-40, a-50, a-60, a-70, a-80, a-90
a-100,a-110,a-120,a-130,a-140,a-150,a-160,a-170 /
u(at) initial age / a-10, a-20, a-30, a-40, a-50, a-60, a-70, a-80, a-90 /
p processes / pulp-pl, pulp-sl, pulp-rs, sawing /
m productive units / pulp-mill, saw-mill /
te extended horizon / period-1*period-12 /
t(te) model horizon / period-1*period-9 /
Alias (t,tp);
Parameter scd(k) site class distribution / good .25, medium .50 , poor .25 /
land(s) land available (1000ha) / nigra 143.679, brutia 227.58 /
Table is(at,s) initial age distribution of existing forest (proportion)
nigra brutia
(a-10,a-20,a-30) .2 .2
(a-40,a-50,a-60) 8.5 12.7
(a-70,a-80,a-90) 24.6 20.6
Table yef(at,s,cl) yield of existing forest (m3 per ha)
nigra.pulplogs nigra.sawlogs brutia.pulplogs brutia.sawlogs
a-10 38.8 1.2 17.8 3.2
a-20 48.4 8.6 16.8 19.1
a-30 43.4 26.6 15.4 32.6
a-40 34.4 45.6 16.0 41.0
a-50 27.8 59.2 18.2 46.8
a-60 28.5 66.5 16.8 53.2
a-70 27.3 72.7 17.5 55.5
a-80 25.2 79.8 17.3 54.7
a-90 26.4 83.8 17.0 54.0
a-100 27.1 85.9 16.3 51.7
a-110 27.8 88.2 14.9 47.1
a-120 28.3 89.7 12.0 38.0
a-130 28.8 91.2 9.1 28.9
a-140 28.8 91.2 6.2 19.8
a-150 28.3 89.7 3.1 9.9
a-160 27.8 82.2 1.2 3.8
a-170 27.1 85.9 .5 1.5
Table ymf(at,k,s,cl) yield of managed forest (m3 per ha)
nigra.pulplogs nigra.sawlogs brutia.pulplogs brutia.sawlogs
a-10.good 17.5
a-10.medium
a-10.poor
a-20.good 120.0 66.8
a-20.medium 95.0 51.1
a-20.poor 80.0 37.8
a-30.good 132.6 37.4 91.3 25.7
a-30.medium 120.2 14.8 81.4 10.0
a-30.poor 115.0 71.3
a-40.good 121.0 99.0 91.3 74.7
a-40.medium 115.5 59.5 86.5 44.5
a-40.poor 119.0 21.0 90.1 15.9
a-50.good 108.0 162.0 76.0 114.0
a-50.medium 112.0 108.0 77.0 74.0
a-50.poor 112.2 57.8 92.0 47.6
a-60.good 104.0 221.0 76.0 116.0
a-60.medium 106.0 159.0 76.0 113.0
a-60.poor 110.0 90.0 95.2 77.8
a-70.good 105.0 270.0 78.0 200.0
a-70.medium 98.0 207.0 72.0 153.0
a-70.poor 97.0 128.0 88.0 116.0
a-80.good 102.0 323.0 76.0 240.0
a-80.medium 105.0 235.0 80.0 177.0
a-80.poor 92.0 163.0 84.0 148.0
Parameters yw(te,at,s,cl) yield of existing forest (m3 per@ha)
yv(te,te,s,cl,k) yield of managed forest (m3 per ha)
iad(at,s) initial age distribution (proportions) ;
iad(u,s) = is(u,s)/sum(at, is(at,s))/100;
yw(t,at,s,cl)$u(at) = yef(at+(ord(t)-1),s,cl);
loop(at, yv(t,t+ord(at),s,cl,k) = ymf(at,k,s,cl) ); yv(te,te+3,s,cl,k) = ymf("a-30",k,s,cl) ;
Display yw, yv, iad;
Sets wpos(u,te) w possibility
vpos(t,te) v possibility;
wpos(u,t) = yes$sum((s,cl), yw(t,u,s,cl)) ;
vpos(t,te) = yes$sum((s,cl,k), yv(t,te,s,cl,k)) ;
Table a(c,p) input output matrix
pulp-pl pulp-sl pulp-rs sawing
pulplogs -1.0
sawlogs -1.0 -1.0
residuals -1.0 0.4
pulp .207 .207 .207
sawnwood 0.6
Table b(m,p) capacity utilization
pulp-pl pulp-sl pulp-rs sawing
pulp-mill 1 1 1
saw-mill 1
Parameter pc(p) process cost (us$ per m3 input) / (pulp-pl,pulp-sl,pulp-rs) 5.96, sawing 6.00 /
pd(cf) sales price (us$ per unit) / pulp 147.0 , sawnwood 70.0 /
nu(m) investment costs (us$ per m3 input) / pulp-mill 37.8 , saw-mill 61.5 /
age(at) age of trees ( years )
avl(t,te) plant live in periods
delt(t) discount factors ;
Scalars mup planting cost (us$ per ha) / 150.0 /
muc cutting cost (us$ per m3) / 7.0 /
life plant life (years) / 30 /
rho discount rate / .1 /
sgm capital recovery factor ;
age(at) = 10*ord(at);
avl(t,t) = 1;
avl(t,t-1) = 1;
avl(t,t-2) = 1;
sgm = rho/(1-(1+rho)**(-life));
delt(t) = (1+rho)**(-10*(ord(t)-1));
Display age, avl, sgm, delt;
$Stitle model definition
Equations efs(s,k,u) existing forest stock (1000ha)
pfs(s,k,t) planted forest stock (1000ha)
lbal(cl,te) log balances
bal(c,t) material balances of wood processing
cap(m,t) wood processing capacities
sy1(te) sustained yield constraint - all logs
sy2(cl,te) sustained yield constraint - log type
sy3(cl,te) sustained yield constraint - pulp logs
sy4(c,t) sustained yield constraint - pulp
wbnd cutting restrictions
ainvc(t) investment cost
aproc(t) process cost
asales(t) sales revenue
acutc(t) cutting cost
aplnt(t) planting cost
benefit
Variables w(s,k,u,te) cutting of existing forest (1000ha per year)
v(s,k,t,te) management of new forest (1000ha per year)
r(c,te) supply of logs to industry (1000m3 per year)
z(p,t) process level (1000m3 input per year)
h(m,t) capacity expansion (1000m3 input per year)
x(c,t) final shipments (1000 units per year)
phik(t) investment cost (1000us$ per year)
phir(t) process cost (1000us$ per year)
phix(t) sales revenue (1000us$ per year)
phil(t) cutting cost (1000us$ per year)
phip(t) planting cost (1000us$ per year)
phi total benefits (discounted cost);
Positive Variables w, v, r, z, h, x;
$Double
efs(s,k,u).. 10.*sum(t$wpos(u,t), w(s,k,u,t)) =l= iad(u,s)*scd(k)*land(s) ;
pfs(s,k,t).. sum(te$vpos(t,te), v(s,k,t,te)) =l= sum(u$wpos(u,t), w(s,k,u,t)) + sum(tp$vpos(tp,t), v(s,k,tp,t));
lbal(cl,te).. r(cl,te) =e= sum((k,s,t), yv(t,te,s,cl,k)*v(s,k,t,te)) + sum((k,s,u), yw(te,u,s,cl)*w(s,k,u,te));
sy1(te-1).. sum(cl, r(cl,te)) =g= sum(cl, r(cl,te-1)) ;
sy2(cl,te-1).. r(cl,te) =g= r(cl,te-1) ;
sy3("pulplogs",te-1).. r("pulplogs",te) =g= r("pulplogs",te-1) ;
sy4("pulp",t-1).. x("pulp",t) =g= x("pulp",t-1) ;
wbnd.. sum((s,k,u,te)$wpos(u,te), w(s,k,u,te)$((ord(u)+ord(te)) le 5)) =e= 0 ;
bal(c,t).. sum(p, a(c,p)*z(p,t)) + r(c,t)$cl(c) =g= x(c,t)$cf(c) ;
cap(m,t).. sum(p, b(m,p)*z(p,t)) =l= sum(tp$avl(t,tp), h(m,tp)) ;
ainvc(t).. phik(t) =e= sgm*sum(tp$avl(t,tp), sum(m,nu(m)*h(m,tp)));
aproc(t).. phir(t) =e= sum(p, pc(p)*z(p,t));
asales(t).. phix(t) =e= sum(cf, pd(cf)*x(cf,t));
acutc(t).. phil(t) =e= muc*sum(cl, r(cl,t));
aplnt(t).. phip(t) =e= mup*sum((s,k,te)$vpos(t,te), v(s,k,t,te)) ;
benefit.. phi =e= sum(t, delt(t)*( phix(t) - phik(t) - phir(t) - phil(t) - phip(t))) ;
$Single
models antala base case / efs, pfs, lbal, bal, cap, sy2, ainvc, aproc, asales, acutc, aplnt, benefit, wbnd /
antalb case b / efs, pfs, lbal, bal, cap, sy2, ainvc, aproc, asales, acutc, aplnt, benefit /
antalc case c / efs, pfs, lbal, bal, cap, sy1, ainvc, aproc, asales, acutc, aplnt, benefit /
antald case d / efs, pfs, lbal, bal, cap, sy3, ainvc, aproc, asales, acutc, aplnt, benefit /
antale case e / efs, pfs, lbal, bal, cap, ainvc, aproc, asales, acutc, aplnt, benefit /
antalf case f / efs, pfs, lbal, bal, cap, sy4, ainvc, aproc, asales, acutc, aplnt, benefit /
$Stitle case definition and reports
Parameters rp(*,* ,s,k) rotation period for new forest (percent)
tc(s,k) total new cut (1000ha)
csum(*,t,s) cutting summary of old forest ;
Solve antala using lp maximizing phi;
tc(s,k) = sum((t,tp), v.l(s,k,t,tp));
rp("case-a",at,s,k) = (100*sum(t, v.l(s,k,t,t+ord(at)))/tc(s,k))$tc(s,k) ;
rp("case-a","total-cut",s,k) = tc(s,k);
csum("case-a",t,s) = sum((k,u), w.l(s,k,u,t));
Solve antalb using lp maximizing phi;
tc(s,k) = sum((t,tp), v.l(s,k,t,tp));
rp("case-b",at,s,k) = (100*sum(t, v.l(s,k,t,t+ord(at)))/tc(s,k))$tc(s,k) ;
rp("case-b","total-cut",s,k) = tc(s,k);
csum("case-b",t,s) = sum((k,u), w.l(s,k,u,t));
Display rp, csum;