Description
This model examines the role of livestock in the agricultural sector in the Punjab and how it is effected by variations in farm size, water availability, credit, crop prices and labor.
Small Model of Type : LP
Category : GAMS Model library
Main file : paklive.gms
$title PAKLIVE: Pakistan Punjab Livestock Model (PAKLIVE,SEQ=55)
$onText
This model examines the role of livestock in the agricultural
sector in the Punjab and how it is effected by variations in
farm size, water availability, credit, crop prices and labor.
World Bank, Pakistan Punjab Livestock Project. Tech. rep., The World Bank,
1977.
Keywords: linear programming, agricultural economics, livestock sector,
agricultural development
$offText
$sTitle Set Definitions
Set
c 'crops' / wheat, basrice, irrrice 'irradiated rice'
maize, oilseed, gram
cotton, sugar, berseem, kharfodder /
h 'livestock types' / bullocks, bufflocows, cattlecows /
f 'seasonal inputs' / landuse, irrwat 'irrigation water'
labor, tdn 'total digestible nutrients'
protein, draftpower, credit /
n(f) 'nutrients' / tdn, protein /
dp(f) 'draftpower' / draftpower /
ta 'seasons and annual' / annual, kharif, rabi /
t(ta) 'seasons' / kharif, rabi /;
Scalar
fsize 'farm size (acres)' / 12.5 /
watercost 'cost of purchased water (rs per inch)' / 20 /
laborcost 'cost of hired labor (rs per man-day)' / 10 /
maxcredit 'maximum annual credit (rs)' / 20000 /
lrr 'livestock reproduction ratio' / 1.25 /
wpup 'maximum water purchaseable (inches)' / 17.5 /
draftcost 'cost of hired draftpower (rs per workday)' / 30 /;
Parameter
bullockr(c) 'bullock requirements in the third season (work-days)'
/ wheat 8, oilseed 2, sugar 1, berseem 2/
bullocka(h) 'livestock availability in third season (work-days)'
/ bullocks 40 /
waf(t) 'maximum water available at no cost (inches per acre)'
/ kharif 56, rabi 32 /
rationcost(n) 'cost of purchased rations (rs per kg)'
/ tdn 1.3, protein 5 /
cprice(c) 'crop prices (rs per maund)'
/ wheat 41.15, basrice 89.38, irrrice 39.92, maize 37.04
oilseed 59.26, gram 37.04, cotton 127.27, sugar 5.96 /
gmargin(h) 'gross margin from livestock (rs)'
/ bufflocows 900, cattlecows 600 /
eff(n) 'storage efficiency of nutrients'
/ tdn .5 /
maxflab(t) 'maximum seasonal family labor (man-days)'
/ kharif 390, rabi 530 /
watavail(t) 'max water available on farm at no cost (inches)'
crev(c) 'crop revenue (rs per acre)';
Table cinput(*,ta,c) 'input-output matrix for crops'
* landuse : acres
* irrwat : inches
* labor : man-days
* draftpower: work-days
* tdn : kgs
* protein : kgs
* credit : rs per year
* yield : maund/acre per year
wheat basrice irrrice maize oilseed gram cotton sugar berseem kharfodder
landuse.kharif .1 1. 1. 1. .3 .3 1. 1. .3 1.
landuse.rabi 1. .1 .6 1. .4 1. .8 .1
irrwat.kharif 65. 60. 25. 30. 25. 15.
irrwat.rabi 20. 20. 15. 10. 45. 35.
labor.kharif 7. 21. 21. 22. 4. 2. 11. 15. 3. 18.
labor.rabi 16. 9. 9. 5. 10. 8. 10. 62. 15. 6.
tdn.kharif -530. -510. -450. -60. -350. -2400.
tdn.rabi -450. -650 -85. -215. -130. -1775. -1940.
protein.kharif -6. -8. -31. -1. -6. -242.
protein.rabi
draftpower.kharif 12. 8. 8. 3. 3. 3.
draftpower.rabi 6. 1. 1. 7. 1. 3. 7. 30. 6.
credit.annual 150. 180. 220. 100. 120. 70. 145. 500. 65. 120
yield.annual -16 -11.4 -21 -10 -6 -6 -10 -375 ;
Table linput(*,ta,h) 'livestock inputs-outputs'
* labor : man-days
* draftpower : work-days
* tdn : kgs
* protein : kgs
* credit : rs per year
bullocks bufflocows cattlecows
labor.kharif 17.5 19 14
labor.rabi 26.5 29 21.5
draftpower.kharif -100
draftpower.rabi -175
tdn.(kharif,rabi) 1550 1050 750
protein.(kharif,rabi) 155 105 75
credit.annual 300 250 180 ;
crev(c) = - cprice(c)*cinput("yield","annual",c);
watavail(t) = fsize*waf(t);
display crev, watavail;
$sTitle Model Definition
Positive Variable
xcrop(c) 'cropping activities (acres)'
wpurchase(t) 'water purchased (inches)'
xrations(n,t) 'purchased rations (kg)'
xlabor(t) 'hired labor (man-days)'
xtransf(n,t) 'fodder transfer (kgs)'
dhire 'hire of draftpower (workday)'
xlivestk(h) 'livestock production (animals)';
Variable
rev 'revenue from livestock and crops (rs)'
lcost 'cost of hired labor (rs)'
dcost 'cost of hired draftpower (rs)'
wcost 'cost of purchased water (rs)'
rcost 'cost of purchased rations (rs)'
return 'net return';
Equation
draft(dp,t) 'draftpower constraint (work-day)'
land(t) 'land use by season (acre)'
water(t) 'irrigation water use by season (inches)'
labor(t) 'total labor required by season (man-day)'
nutbal(n,t) 'seasonal purchase of nutrients (kgs)'
bullock 'bullock use during third season (work-days)'
credit 'credit requirements (rs)'
totalrev 'total revenue from crops and livestock (rs)'
costlabor 'cost of hired labor (rs)'
costdraft 'cost of hired draftpower (rs)'
costwater 'cost of purchased water (rs)'
costrat 'cost of purchased rations (rs)'
obj 'net return (rs)';
totalrev.. rev =e= sum(c, crev(c)*xcrop(c)) + sum(h, gmargin(h)*xlivestk(h));
costdraft.. dcost =e= draftcost*dhire;
costlabor.. lcost =e= laborcost*sum(t, xlabor(t));
costwater.. wcost =e= watercost*sum(t, wpurchase(t));
costrat.. rcost =e= sum(n, rationcost(n)*sum(t, xrations(n,t)));
obj.. return =e= rev - lcost - wcost - rcost - dcost;
land(t).. sum(c, cinput("landuse",t,c)*xcrop(c)) =l= fsize;
water(t).. sum(c, cinput("irrwat",t,c)*xcrop(c)) =l= watavail(t) + wpurchase(t);
labor(t).. sum(c, cinput("labor",t,c)*xcrop(c))
+ sum(h, linput("labor",t,h)*xlivestk(h))
=l= maxflab(t) + xlabor(t);
draft(dp,t).. sum(c, cinput(dp,t,c)*xcrop(c)) =l= - sum(h, linput(dp,t,h)*xlivestk(h));
bullock.. sum(c, bullockr(c)*xcrop(c)) =l= sum(h, bullocka(h)*xlivestk(h)) + dhire;
credit.. sum(c, cinput("credit","annual",c)*xcrop(c))
+ sum(h, linput("credit","annual",h)*xlivestk(h))
+ rcost + lcost + wcost + dcost
=l= maxcredit;
nutbal(n,t).. - sum(c, cinput(n,t,c)*xcrop(c))
+ eff(n)*xtransf(n,t--1) + xrations(n,t)
=g= sum(h, linput(n,t,h)* xlivestk(h));
xcrop.up("sugar") = 2;
wpurchase.up(t) = wpup;
Model pakistan / all /;
solve pakistan using lp maximizing return;
Parameter ivl 'imputed value of family labor (rs)';
ivl = rev.l/sum(t, sum(c, cinput("labor",t,c)*xcrop.l(c))
+ sum(h,linput("labor",t,h)*xlivestk.l(h)));
display ivl;