china.gms : Organic Fertilizer Use in Intensive Farming
Models the use of organic and chemical fertilizers for triple-cropping
in the southern Jiangsu province. Detailed attention is paid to removal
and replenishment of plant nutrients and humus.
Reference:
- Wiens, T B, The Economics of High-yield Agriculture in China: Triple-Cropping at the Baimano Peoples' Commune. The World Bank, Washington DC, 1985.
Small Model of Type: LP
$Title Organic Fertilizer Use in Intensive Farming (CHINA,SEQ=56)
$Stitle Set Definitions
$Ontext
Models the use of organic and chemical fertilizers for triple-cropping
in the southern Jiangsu province. Detailed attention is paid to removal
and replenishment of plant nutrients and humus.
Wiens, T B, The Economics of High-yield Agriculture in China: Triple-Cropping
at the Baimano Peoples' Commune. The World Bank, Washington DC, 1985.
$Offtext
Set ca all commodities /
barley
wheat
e-rice early rice
m-rice middle rice
l-rice late rice
l-sc-rice late single crop rice
g-manure green manure
gm-seeds green manure seeds
rapeseed
azolla
azolla-e early azolla
fodder
g-feed grain feed
straw
hyacinth
silt
nightsoil
amm-water ammonia water
amm-bi ammonium bicarbonate
ssp single superphosphate
pigs
shoats
c-straw composted straw
c-gm composted green manure
c-hyacinth composted hyacinth
pig-m pig-manure
straw-b straw bedding
rapes-c composted rape seed
vegetable /
c(ca) crops / barley, wheat, e-rice, m-rice, l-rice, l-sc-rice, g-manure
gm-seeds, rapeseed, azolla, azolla-e, fodder /
g(c) grains / barley, wheat, e-rice, m-rice, l-rice, l-sc-rice /
cu(ca) upland crops / fodder, vegetable /
cp(ca) commodities purchased / hyacinth, pig-m, silt, nightsoil, amm-water, amm-bi, ssp /
cs(ca) commodities sold / barley, wheat, e-rice, m-rice, l-rice, l-sc-rice
rapeseed, pigs, shoats, straw, vegetable /
s crop sequence / bar-r-r, bar-sr, bar-r, wh-sr, wh-r, gm-r-r, gm-sr, gm-s-sr, gm-r, rape-sr, fallow-sr /
sh(s) sequences with higher fertilizer application / bar-r-r, gm-r-r, wh-r, bar-r /
cf(ca) fertilizers / c-straw, c-gm, c-hyacinth, pig-m, straw-b, nightsoil
azolla, rapes-c, amm-water, amm-bi, ssp /
nh nutrients and humus / n, p2o5, k2o, humus /
n(nh) nutrients / n, p2o5, k2o /
en effective nutrients / n-imm, n-tot, p2o5-eff, k2o-exch, humus /
f fertilization intensity / normal, high /
p pig raising activities / r-shoats, r-pigs /
ss(s,f) sequence possibilities
t time periods / nov-1, nov-mar, mar-2, apr-1, apr-2, may-1, may-jun, jun-2, jul-1, jul-2
aug-1, aug-2, sep, oct-1, oct-2 / ;
ss(s,"normal") = yes; ss(sh,"high") = yes; display ss;
$Stitle data
Scalar paddy paddy land available (mu) / 268.6 /
upland upland available (mu) / 7.8 /
muperha conversion of mu to hectares (mu per hectar) / 15 /
jinperkg conversion of jin to kg (jin per kg) / 2.0 /
yperd exchange rate (yuan per dollar) / 1.8 /
Table mcp(s,c) multi cropping patterns for paddy land (mu)
barley wheat e-rice m-rice l-rice l-sc-rice g-manure gm-seeds rapeseed azolla azolla-e fodder
bar-r-r .704 .193 .807 1.0
gm-r-r .193 .807 1.0 .704
bar-sr .859 1.0 .141 1.0 .859
wh-sr .859 1.0 .141 1.0
gm-sr 1.0 1.0 1.0 .859
rape-sr 1.0 .141 .859 1.0
fallow-sr 1.0 .141 .859
gm-s-sr 1.0 .1 .9
bar-r .9 1.0 .1 1.0
wh-r .9 1.0 .1
gm-r 1.0 1.0 1.0
Table cdata(ca,*) crop data
* yield : paddy land yield in jin per mu
* cash-cost : yuan per mu
* straw-y : kg per kg output
* proc-price: yuan per ton
* quota-sale: tons
yield cash-cost straw-y proc-price quota-sale
barley 427.6 11.0 1.0 226.0
wheat 530.3 11.0 1.1 316.0
e-rice 690.3 14.9 .8 232.0
m-rice 962.7 23.6 1.0 238.0
l-rice 558.2 18.9 .8 272.0
l-sc-rice 857.7 25.2 1.0 233.0
g-manure 4968.1 2.3
rapeseed 221.1 9.8 1.5 720.0 4
azolla 1149.0
azolla-e 1149.0
fodder 1200
straw 44.0 1.2
pigs 1200.0 4
shoats 1800.0
vegetable 375.0
Parameter yield(ca) paddy land crop yields (ton per mu)
yieldu(ca) upland yields (ton per mu) / fodder .3, vegetable .24 /
cxcrop(s) cash cost by sequence (yuan per mu)
aqsprice(ca) above quota sales price (yuan per ton)
Scalar grainquota grain sales quota (tons) / 100 /;
yield(ca) = cdata(ca,"yield")/jinperkg/1000;
cxcrop(s) = sum(c, cdata(c,"cash-cost")*mcp(s,c));
aqsprice(ca) = 1.1*cdata(ca,"proc-price"); aqsprice(c)= 1.5*cdata(c,"proc-price");
Display yield,yieldu,cxcrop,aqsprice;
Table purdata(ca,*) purchase prices and limits
price quantity
* (yuan per ton) (tons)
amm-water 30
amm-bi 123
nightsoil 20 7
ssp 100 500
pig-m 12 10000
hyacinth 15
Table pigio(ca,p) pig raising input output relations
r-shoats r-pigs
shoats 1 -.12
pigs 1
straw-b 8 8
g-feed -3.3 -2.6
straw -8.8 -8.8
fodder -.55 -.50
Parameter cxpig(p) pig raising cash cost (yuan per ton) / r-shoats 90, r-pigs 60 /
gio(ca,g) grain feed mixing recipes (kg per kg) ;
gio(g,g) = -1; gio("g-feed",g) = 1;
$Stitle labor use and supply
Table lu(t,c) labor use for crops (gongs per mu per period)
barley wheat e-rice m-rice l-rice l-sc-rice g-manure gm-seeds rapeseed
nov-1 8.15 8.15 3.17 3.00 14.90
nov-mar 7.45 7.45 7.75 5.57 6.33 13.07 1.00 1.00 15.15
mar-2 1.10 1.10 2.03 .74 .74 1.85
apr-1 .4 .4 3.25 .70 .70
apr-2 .9 .9 3.36 .70 .70 1.0
may-1 .2 .2 8.20 2.92 4.42 3.00 .9
may-jun 10.80 8.80 13.58 12.12 1.50 5.27 6.70 8.40
jun-2 2.00 2.35 4.40 3.00 8.99
jul-1 2.48 5.41 3.00 5.00
jul-2 .70 5.59 3.00 4.50
aug-1 8.42 1.00 9.35 1.42
aug-2 1.88 3.65 4.92 4.54
sep 1.30 1.30 3.20 5.09 4.15 1.00
oct-1 1.30 1.30 6.13 1.52 1.25 1.25 .50
oct-2 1.25 1.25 4.37 .12 1.0 1.00 .30
Parameters lab(t,s) labor requirements for crop sequences (gongs per day per mu)
dlab(t,c) daily labor requirements for single crop (gongs per day per mu)
labj(t) labor adjustment coefficient (proportion) / aug-1 .12 /
days(t) number of days in periods (days) /
nov-1 22, nov-mar 120, mar-2 16, (apr-1,apr-2) 15, may-1 14, may-jun 32, jun-2 15
jul-1 15, jul-2 12, aug-1 14, aug-2 21, sep 30, oct-1 14, oct-2 10 /
Scalars tday total number of days in all periods (days)
lsup labor supply (gongs per day) / 137 /;
tday = sum(t, days(t));
dlab(t,c) = lu(t,c)/days(t);
lab(t,s) = sum(c, dlab(t,c)*mcp(s,c));
Display lab, dlab, tday;
$Stitle fertilizer requiremets and supply
Table nc(cf,nh) nutrient composition (pct weight)
n p2o5 k2o humus
c-straw .63 .11 .85 21.4
c-gm .40 .11 .35 2.34
c-hyacinth .24 .07 .11 2.64
pig-m .35 .32 .75
straw-b .60 .20 .80 15.9
azolla .34 .02 .12 2.58
nightsoil .65 .30 .25
rapes-c 4.60 2.50 1.40
amm-water 3.75
amm-bi 17.00
ssp 15.00
Table nu(cf,nh,en) fertilizer utilization rates (pct)
n.n-imm n.n-tot p2o5.p2o5-eff k2o.k2o-exch humus.humus
(c-straw,c-gm,c-hyacinth) 10 76 20 14 100
(pig-m,straw-b,nightsoil) 9 76 8 16 100
azolla 20 76 20 14 100
rapes-c 10 76 20 14
amm-water 20 40
amm-bi 22 45
ssp 25
Table pno(c,n) plant nutrient offtake (pct weight of output)
n p2o5 k2o
barley 3.0 1.0 2.0
wheat 2.75 1.2 2.4
e-rice 1.9 0.8 2.7
m-rice 2.1 1.0 2.9
l-rice 2.05 0.9 2.75
l-sc-rice 1.9 0.9 3.0
g-manure 0.11 0.35
rapeseed 7.0 3.6 7.1
Table nup(cu,en) upland cropping nutrient requirement (kg per mu)
n-imm n-tot p2o5-eff k2o-exch humus
fodder 2.0 11.0 1.0 2.5
vegetable 4.58 21.35 2.57 3.93
Table soil(c,*) soil data - supplies of p2o5 k2o nitrogen requirement and irrigation water
p2o5-eff k2o-exch inr iwr
* (p r o p o r t i o n s) (tons per ha)
barley .6 .3 .47 4125
wheat .6 .3 .45 4125
e-rice -.1 .25 .45 4875
m-rice .2 .35 .45 6000
l-rice .6 .75 .3 4875
l-sc-rice .05 .25 .24 8250
g-manure .9 1
rapeseed .5 .4 .58
Parameter cno(c,n) crop nutrient offtake (ton per mu)
enc(cf,en) effective nutrient content (pct weight)
freq(c,en) effective nutrient requirements (ton per mu)
sreq(s,en,f) crop sequence nutrient requirements (ton per mu)
cxfert(cf) fertilization cash cost (yuan per ton) / azolla 1.3, rapes-c 200 /
Scalars kc k2o content of irrigation water (ppm) / 3.5 /
hdr humus decomposition rate (kg per kg soil n) / 9 /;
cno(c,n) = pno(c,n)*yield(c)/100;
enc(cf,en) = sum(nh, nu(cf,nh,en)*nc(cf,nh))/100;
Display nu, enc;
freq(c,"n-imm") = cno(c,"n")*soil(c,"inr");
freq(c,"n-tot") = cno(c,"n");
freq(c,"p2o5-eff") = cno(c,"p2o5")*(1 - soil(c,"p2o5-eff"));
freq(c,"k2o-exch") = cno(c,"k2o")*(1 - soil(c,"k2o-exch")) - soil(c,"iwr")*kc/muperha/1e6;
freq(c,"humus") = hdr*(freq(c,"n-tot") - freq(c,"n-imm"));
sreq(s,en,"normal") = sum(c, freq(c,en)*mcp(s,c));
Parameters mult(en) nutrient req factor / n-imm 1.1, n-tot 1.05, p2o5-eff 1.25, k2o-exch 1.1 , humus 1.0 /
hyield(c) yield for high fertilizer applications (tons per mu)
hreq(c,en) nutrient requirements for high application rates (tons per mu);
hreq(c,en) = freq(c,en)*mult(en);
hyield(c) = yield(c)*1.07;
sreq(s,en,"high") = sum(c, hreq(c,en)*mcp(s,c));
Parameters syield(ca,s,f) yield of crop sequence (ton per mu)
sys(s,f) straw yield of crop sequences (ton per mu) ;
syield(c,s,"normal") = yield(c)*mcp(s,c);
syield(c,s,"high") = hyield(c)*mcp(s,c);
sys(s,f) = sum(c, cdata(c,"straw-y")*syield(c,s,f));
* e-rice straw is plowed under immediately, adjust straw yields and fertilizer requirement
sys(s,f) = sys(s,f) - syield("e-rice",s,f)*cdata("e-rice","straw-y");
sreq(s,en,f) = sreq(s,en,f) - cdata("e-rice","straw-y")*syield("e-rice",s,f)*enc("c-straw",en)/100*mcp(s,"e-rice");
syield("straw",s,f) = sys(s,f);
syield("rapes-c",s,f) = .8*syield("rapeseed",s,f);
Display cno, freq, sreq;
Table crec(ca,cf) composting and fertilizing recipes
c-straw c-gm c-hyacinth azolla
straw .12
g-manure .12
hyacinth .12
pig-m .05 .05 .05
silt .83 .83 .83
azolla 1.0
azolla-e .2
;
crec(cf,cf)$( not sum(ca, crec(ca,cf))) = 1 ;
Display crec;
Table chemnall(ca,*) chemical nitrogen (ammonium bicarbonate) allocations
* crops : kg ammonium bicarbonate per mu of crop planted
* qsa : quota sales allocation for pigs (kg per kg)
* aqsa : above quota sales allocation (kg per kg)
crops qsa aqsa
(barley,wheat) 49 .17
e-rice 53 .17
(m-rice,l-rice,l-sc-rice) 45 .17
rapeseed 45 .45
g-manure 4
pigs .225 .225
Parameter schem(s) chemical fertilizer allocation for crop sequences (tons amm-bi per mu) ;
schem(s) = .001*sum(c, chemnall(c,"crops")*mcp(s,c));
Display schem;
$Stitle model definition
Variables xcrop(s,f) paddy land cropping activities (mu)
xupland(ca) upland cropping activities (mu)
xpig(p) pig raising activities (ton)
xfeed(g) grain feed mixing (ton)
xfert(ca) fertilization activities (kg)
purchase(ca) purchasing activities (ton)
sales(ca) quota sales (ton)
aqsales(ca) above quota sales (ton)
ccost cash cost (yuan)
income brigade income (yuan)
Positive variables xcrop, xupland, xpig, xfeed, xfert, purchase, sales, aqsales;
Equations labor(t) labor balance (gong per day)
mb(ca) material balance (ton)
fert(en) nutrient and humus balance (ton)
chemn chemical nitrogen allocation (ton)
landp paddy land constraint (mu)
landu upland land constraint (mu)
gmseed green manure seed requirements (mu)
grainq grain quota sales (ton)
cdef cash cost definition (yuan)
incdef income definition (yuan);
mb(ca).. sum((s,f)$ss(s,f), syield(ca,s,f)*xcrop(s,f)) + sum(p, pigio(ca,p)*xpig(p)) + purchase(ca)$cp(ca)
+ sum(g, gio(ca,g)*xfeed(g)) + yieldu(ca)*xupland(ca)$cu(ca)
=g= (sales(ca) + aqsales(ca))$cs(ca) + sum(cf, crec(ca,cf)*xfert(cf)) ;
labor(t).. sum((s,f)$ss(s,f), lab(t,s)*xcrop(s,f)) =l= (1+labj(t))*lsup;
fert(en).. sum((s,f)$ss(s,f), sreq(s,en,f)*xcrop(s,f)) + .001*sum(cu, nup(cu,en)*xupland(cu))
=l= .01*sum(cf, enc(cf,en)*xfert(cf));
chemn.. sum((s,f)$ss(s,f), schem(s)*xcrop(s,f)) + sum(cs, chemnall(cs,"qsa")*sales(cs)
+ chemnall(cs,"aqsa")*aqsales(cs)) =g= purchase("amm-bi");
landp.. sum((s,f)$ss(s,f), xcrop(s,f)) =l= paddy;
landu.. sum(cu, xupland(cu)) =l= upland;
gmseed.. sum((s,f)$ss(s,f), ((1-.16)*mcp(s,"gm-seeds") - .16*mcp(s,"g-manure"))*xcrop(s,f)) =g= 0 ;
grainq.. sum(g, sales(g)) =g= grainquota;
cdef.. ccost =e= sum((s,f)$ss(s,f), cxcrop(s)*xcrop(s,f)) + sum(p, cxpig(p)*xpig(p))
+ sum(cf, cxfert(cf)*xfert(cf)) + sum(cp, purdata(cp,"price")*purchase(cp));
incdef.. income =e= sum(cs, cdata(cs,"proc-price")*sales(cs) + aqsprice(cs)*aqsales(cs)) - ccost ;
Model china brigade model / all / ;
sales.lo(cs) = cdata(cs,"quota-sale");
purchase.up(cp)$purdata(cp,"quantity") = purdata(cp,"quantity");
Solve china maximizing income using lp;
$Stitle solution reports
Parameter frep(en,*) fertilization demand and supply summary ;
frep(en,"demand ") = .01*sum(cf, enc(cf,en)*xfert.l(cf)) + fert.l(en);
frep(en,"supply") = .01*sum(cf, enc(cf,en)*xfert.l(cf));
frep(en,"s-price") = -fert.m(en);
frep(en,cf) = .01*enc(cf,en)*xfert.l(cf);
Display frep;