Description
This is a farm level model of the north east region of brazil. There is only one farm type - medium sized. There are 3 types of land and risk on revenue is considered.
Small Model of Type : LP
Category : GAMS Model library
Main file : agreste.gms
$title Agreste Farm Level Model of NE Brazil (AGRESTE,SEQ=88)
$onText
This is a farm level model of the north east region of brazil. There is
only one farm type - medium sized. There are 3 types of land and risk
on revenue is considered.
Kutcher, G P, and Scandizzo, P L, The Agricultural Economy of Northeast
Brazil. The Johns Hopkins University Press, Baltimore and London, 1981.
Keywords: linear programming, agricultural economics, farming, crop yields, livestock
$offText
$sTitle Set Definitions
Set
c 'crops' / cotton-h 'cotton-herbaceo'
banana 'banana'
sugar-cane 'sugar-cane'
beans-arr 'beans-de-arranca'
beans-cor 'beans-de-corda'
oranges 'oranges'
manioc 'manioc'
corn 'corn'
sisal 'sisal' /
p 'cropping activities' / crop-02 'cotton-herbaceo'
crop-05 'banana'
crop-10 'sugar cane'
crop-15 'oranges'
crop-16 'manioc'
crop-17 'corn'
crop-19 'sisal'
crop-25 'beans-de-corda corn'
crop-29 'cotton-herbaceo beans-de-arranca corn'
crop-30 'cotton-herbaceo beans-de-corda corn'
crop-33 'beans-de-arranca corn'
crop-36 'beans-de-arranca manioc corn' /
s 'land types' / good 'flat and near water or humid and low lying'
medium 'hilly or more arid than good'
pasture 'cultivated pasture or tree crops' /
tm 'months' / jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec /
sc(s) 'crop lands' / good, medium /
r 'livestock feeding alternatives' / rec-1*rec-3 /
ty 'year' / 1960*1969 /
dr 'family consumption bundle alternatives' / one, two, three /
km 'technology characteristics' / equipment, fertilizer, seeds, sprouts, itech /
ps(p,s) 'process-land possibilities';
Alias (s,sp);
Parameter
landc(s) 'land data (ha)' / good 8.775
medium 11.64
pasture 21.92 /
rations(r) 'livestock rations feeding alternative (cr per head)' / rec-1 5.141
rec-2 21.646
rec-3 49.845 /
xcropl(p,s) 'limits on cropping activities';
xcropl("crop-19","good") = 0.036;
xcropl("crop-19","medium") = 0.298;
Table ldp(s,s) 'land downgrading possibilities'
good medium
good 1
medium -1 1
pasture -1;
* land requirements for livestock seems high but ok - pg 65 para 3
Table lio(s,r) 'land requirements for livestock feed alternatives (ha per head)'
rec-1 rec-2 rec-3
medium 1.407 .611 .631
pasture .209 2.03 .9 ;
Table labor(p,tm) 'labor requirements for cropping (man-days per ha)'
jan feb mar apr may jun jul aug sep oct
crop-02 4.79 10.89 18.70 9.83 8.03 20.95 15.67 15.48 11.35 8.38
crop-05 8.24 0.89 5.43 3.31 11.13 10.33 3.27 2.65 5.47 3.67
crop-10 5.78 3.37 4.03 7.09 4.64 5.91 7.67 9.23 5.93 9.05
crop-15 2.00 2.36 4.13 2.13 7.18 5.88 3.21 9.20 6.89 3.30
crop-16 5.71 7.60 7.28 8.15 8.48 10.71 9.34 12.76 8.93 10.22
crop-17 9.19 14.42 10.59 12.01 3.47 10.75 5.88 7.30 4.14 4.25
crop-19 1.22 1.11 0.56 0.78 1.19 0.44 1.89 3.04 2.93 4.99
crop-25 12.46 11.35 24.38 22.03 16.91 9.47 10.97 9.70 4.93 6.41
crop-29 5.54 10.30 9.24 8.97 15.82 13.00 14.74 10.64 5.64 4.90
crop-30 9.18 3.94 16.15 23.69 28.12 20.58 17.73 15.06 4.58 9.76
crop-33 6.87 10.19 10.61 9.14 18.38 11.50 9.22 13.36 3.85 3.87
crop-36 7.44 10.21 9.63 16.18 20.11 16.86 14.86 14.00 8.04 6.69
+ nov dec
crop-02 8.23 4.54
crop-05 3.18 1.44
crop-10 7.59 6.37
crop-15 9.70 8.87
crop-16 6.18 8.34
crop-17 3.49 2.11
crop-19 7.73 9.44
crop-25 0.53 0.89
crop-29 4.73 4.92
crop-30 7.39 2.67
crop-33 2.65 1.09
crop-36 5.49 5.26;
Table llab(tm,r) 'labor requirement for livestock feed (man-days per head)'
rec-1 rec-2 rec-3
jan 4.261 1.873 1.933
feb 2.854 1.262 1.302
mar .040 .040 .040
apr .040 .040 .040
may .040 .040 .040
jun .040 .040 .040
jul .040 .040 .040
aug .040 .040 .040
sep .040 .040 .040
oct .040 .040 .040
nov 7.075 3.095 3.195
dec 7.075 3.095 3.195;
Table cbndl(c,dr) 'consumption bundles (tons per bundle)'
one two three
beans-arr .225 .152 .15
manioc .965 2.64 .935
corn .235 .232 .581;
Table crev(c,ty) 'crop revenue time series (cr per ha)'
1960 1961 1962 1963 1964 1965 1966 1967 1968 1969
banana 6399 8193 9215 8581 7988 7228 5923 6738 7221 7842
sugar-cane 1667 1899 1898 2230 2265 2067 1499 1903 1901 1929
beans-cor 546 585 1091 651 470 621 605 518 519 772
manioc 986 1543 2658 1639 1146 1380 1357 1702 1560 1580
corn 267 378 544 329 320 351 310 322 294 349;
Parameter
price(c) 'crop reference prices (cr per kg)'
/ cotton-h 1.9 , banana 4 , sugar-cane 35
beans-arr 2.5 , beans-cor 1.5 , oranges 10
manioc .17, corn .15, sisal 1 /
ravg(c) 'average crop revenues (cr per ha)'
prdev(c,ty) 'price deviations for crops (cr per ton)';
* wage data: pg 159
* working capital: is this correct: = 6.4 * 1113
* family labor available: correct?
Scalar
fwage 'family reservation wage rate (cr per man-month)' / 75 /
twage 'temporary labor wage rate (cr per man-month)' / 250 /
pwage 'permanent labor wage rate (cr per man-year)' / 2054 /
vsc 'value of self-consumption (cr per bundle)' / 934 /
wcbar 'working capital (cr)' / 7123.2 /
famlab 'family labor (man equivalent wrks)' / 70.5 /
lprice 'livestock price (cr per head)' / 211 /
vetpr 'cost of veterinary service (cr per head)' / 1 /
dpm 'man-days per man month' / 25 /
phi 'risk factor';
* some of these yields look odd: medium land has higher land than good
Table yield(p,c,s) 'crop yields (kg per ha)'
good medium
crop-02.cotton-h 848 569
crop-05.banana 221 174
crop-10.sugar-cane 45 30
crop-15.oranges 92
crop-16.manioc 4456 3964
crop-17.corn 725 563
crop-19.sisal 2244 1666
crop-25.beans-cor 251 211
crop-25.corn 373 264
crop-29.cotton-h 269 149
crop-29.beans-arr 285 221
crop-29.corn 536 544
crop-30.cotton-h 403 133
crop-30.beans-cor 115 352
crop-30.corn 361 212
crop-33.beans-arr 274 260
crop-33.corn 594 442
crop-36.beans-arr 288 287
crop-36.manioc 3408 1031
crop-36.corn 503 328;
ps(p,s) = yes$sum(c, yield(p,c,s));
ravg(c) = sum(ty, crev(c,ty))/card(ty);
prdev(c,ty)$ravg(c) = 1000*price(c)*(crev(c,ty)/ravg(c) - 1);
phi = 1;
display ravg, prdev;
Table techc(p,km) 'cropping technology requirements (cr per ha)'
equipment fertilizer seeds sprouts
crop-02 31 91
crop-05 45
crop-10 36
crop-15 106 1 184
crop-16 20
crop-17 42 55
crop-29 4 22 19
crop-30 27
crop-33 11 42
crop-36 98 6 1;
Parameter
pcost(p) 'cropping technology costs (cr per ha)'
a(p) 'cropping constants';
pcost(p) = sum(km, techc(p,km));
display pcost;
a(p) = 1;
a(p)$sum(s, yield(p,"cotton-h",s)) = 0;
display pcost, a;
$sTitle Model Definition
Variable
xcrop(p,s) 'cropping activities (ha)'
xliver(r) 'livestock activity defined on feed techniques (head)'
xlive 'livestock production (head)'
lswitch(s) 'land downgrading (ha)'
xprod(c) 'crop production (ton)'
cons(dr) 'on-farm consumption (ton)'
sales(c) 'crop sales (ton)'
flab(tm) 'family labor (man-days)'
tlab(tm) 'temporary labor (man-days)'
plab 'permanent labor (workers)'
rationr 'livestock ration requirements (cr)'
pdev(ty) 'positive price deviations (cr)'
ndev(ty) 'negative price deviations (cr)'
yfarm 'farm income (cr)'
revenue 'from crop and livestock sales (cr)'
cropcost 'accounting: cropping activities cost (cr)'
labcost 'accounting: labor costs - including family (cr)'
vetcost 'accounting: veterinary services cost (cr)';
Positive Variable xcrop, xliver, lswitch, sales, cons, flab, tlab, plab, pdev, ndev;
Equation
landb(s) 'land balance'
lbal 'livestock balance ( )'
rliv 'livestock ration requirements definition ( )'
mbalc(c) 'material balance: crops ( )'
dprod(c) 'crop production definition ( )'
cond 'on farm consumption definition ( )'
labc(tm) 'labor supply-demand relation ( )'
ddev(ty) 'crop price deviation definition ( )'
income 'farm income definition ( )'
arev 'accounting: revenue definition ( )'
acrop 'accounting: cropping cost definition ( )'
alab 'accounting: labor cost definition ( )'
awcc 'accounting: working capital requirements ( )'
avet 'accounting: veterinary costs (cr)';
landb(s).. sum(p$ps(p,s), a(p)*xcrop(p,s))$sc(s)
+ sum(sp, ldp(s,sp)*lswitch(sp))
+ sum(r, lio(s,r)*xliver(r))
=l= landc(s);
lbal.. xlive =e= sum(r, xliver(r));
rliv.. rationr =e= sum(r, rations(r)*xliver(r));
mbalc(c).. sum((s,p), yield(p,c,s)*xcrop(p,s))/1000
=g= sales(c) + sum(dr, cbndl(c,dr)*cons(dr));
dprod(c).. xprod(c) =e= sum((p,s), yield(p,c,s)*xcrop(p,s))/1000;
labc(tm).. sum((p,s)$ps(p,s), labor(p,tm)*xcrop(p,s))
+ sum(r, llab(tm,r)*xliver(r))
=l= flab(tm) + tlab(tm) + dpm*plab;
cond.. sum(dr, cons(dr)) =e= 1;
ddev(ty).. sum(c, prdev(c,ty)*sales(c)) =e= pdev(ty) - ndev(ty);
arev.. revenue =e= lprice*xlive + 1000*sum(c, price(c)*sales(c));
acrop.. cropcost =e= sum((p,s)$ps(p,s), pcost(p)*xcrop(p,s));
alab.. labcost =e= (fwage*sum(tm, flab(tm)) + twage*sum(tm, tlab(tm)))/dpm + pwage*plab;
awcc.. cropcost + rationr + vetcost + twage/dpm*sum(tm, tlab(tm)) + pwage*plab =l= wcbar;
avet.. vetcost =e= vetpr*xlive;
income.. yfarm =e= revenue + vsc*sum(dr, cons(dr)) - labcost - rationr - vetcost
- cropcost - phi*sum(ty, pdev(ty) + ndev(ty))/card(ty);
Model agreste 'farm level model' / all /;
xcrop.up(p,s)$xcropl(p,s) = xcropl(p,s);
flab.up(tm) = famlab;
solve agreste maximizing yfarm using lp;
phi = 0;
solve agreste maximizing yfarm using lp;