sarf.gms : Farm Credit and Income Distribution Model
This model evaluates the effects of credit pricing on farm
production mix and technology choice and thus on employment
and income distribution.
Reference:
- Husain, T, and Inman, R, A Model for Estimating the Effects of Credit pricing on Farm level employment and income distribution. Tech. rep., The World Bank, 1977.
Large Model of Type: LP
$Title Farm Credit and Income Distribution Model (SARF,SEQ=49)
$Stitle Set definitions
$Ontext
This model evaluates the effects of credit pricing on farm
production mix and technology choice and thus on employment
and income distribution.
Husain, T, and Inman, R, A Model for Estimating the Effects of Credit
pricing on Farm level employment and income distribution. Tech. rep.,
The World Bank, 1977.
$Offtext
Set c crop commodities / wheat , soy-beans , maize-for , alfalfa , sugar-beet , cotton /
s cropping schedules / sch-1*sch-8 /
w irrigation levels / normal , stress-1*stress-3 /
t time periods (in fortnights) / 01*24 /
g agricultural tasks /
plough
disce
harrow
spray
drill
plant
fertilize spreading
cultivate
beet-lift ing
mow
windrow
bale
harvest-g grain harvesting
harvest-f forage harvesting
harvest-c cotton harvesting
transport /
mn implements and power sources /
* power sources:
tractor-l large
tractor-s small
draft-unit pair of oxen
self-prop self-propelled units
manual operation
* self-propelled units:
combine-h combine harvester
forage-h forage harvester
cotton-p self-propelled cotton picker
* implements:
f-plow-6 5 to 6 furrow plow
f-plow-3 3 furrow plow
f-plow-1 1 furrow plow
harrow-o-d offset disc harrow
harrow-s-t spike tooth harrow
harrow-s small harrow
sprayer-l large sprayer
sprayer-s small sprayer
drill for tractor use
drill-s small drill
planter precision planter
planter-s small precision planter
spreader-l large fertilizer spreader
spreader-s small fertilizer spreader
cult-l large cultivator
cult-s small cultivator
beet-lift er
mower
baler
rake
trailer-4t 4 ton trailer
trailer-ht half ton trailer
sprayer-k knapsack sprayer for manual operation /
m(mn) implements / combine-h , forage-h , cotton-p , f-plow-6 , f-plow-3 , f-plow-1 , harrow-o-d
harrow-s-t , harrow-s , sprayer-l , sprayer-s , drill , drill-s , planter
planter-s , spreader-l , spreader-s, cult-l , cult-s , beet-lift, mower
baler , rake , trailer-4t, trailer-ht, sprayer-k, manual /
n(mn) power sources/ tractor-l , tractor-s , draft-unit , self-prop , manual /
cposs(c,s) crop possibilities
taskposs(g,t) task possibilities
equipposs(mn,t) equipment use possibilities
cc cost classifications in model / misc-input , water , operating , wages , capital /
$Stitle data: task and technology data
Table equip(mn,*) equipment costs and operating costs
* cost : purchase price (1000 rials)
* life : expected life for amortization of capital cost (years)
* opcost : operating cost (rials / hour)
* avail : hours of utilization available per fortnight (hours)
cost life opcost avail
tractor-l 1000 5 220 140
tractor-s 540 5 113 140
draft-unit 100 6 18 100
combine-h 1500 6 770 140
forage-h 1500 10 1310 140
cotton-p 4000 8 770 80
f-plow-6 140 5 38 140
f-plow-3 100 10 11 140
f-plow-1 3 3 100
harrow-o-d 200 5 54 140
harrow-s-t 35 8 5 140
harrow-s 3 3 100
sprayer-l 112 4 11 140
sprayer-s 11 3 100
drill 200 6 72 140
drill-s 13 3 100
planter 200 6 46 140
planter-s 20 3 100
spreader-l 27 3 5 140
spreader-s 3 3 100
cult-l 125 5 30 140
cult-s 13 3 100
beet-lift 30 10 25 140
mower 65 3 15 140
rake 50 4 12 140
baler 280 4 70 140
trailer-4t 180 5 28 140
trailer-ht 25 5 100
sprayer-k 11 2 84
$Eject
Table tech(g,mn,mn) task technologies (hours per ha)
* first index : agricultural task
* second index : implement/tool
* third index : power source
*
* transport requirements are in hours per ton
tractor-l tractor-s draft-unit manual self-prop
plough.f-plow-6 2
plough.f-plow-3 3 3
plough.f-plow-1 45
disce.harrow-o-d .6
disce.harrow-s-t 1
disce.harrow-s 6
harrow.harrow-s-t 1.6
harrow.harrow-s 2
harrow.manual 50
spray.sprayer-l .5 .5
spray.sprayer-s 8
spray.sprayer-k 8
drill.drill .5 .5
drill.drill-s 8
plant.planter 1.5 1.5
plant.planter-s 20
fertilize.spreader-l 4 4
fertilize.spreader-s 8
fertilize.manual 8
cultivate.cult-l .5 1
cultivate.cult-s 20
cultivate.manual 50
harvest-g.combine-h 1
harvest-f.forage-h 1.25
harvest-c.manual 504
harvest-c.cotton-p 1
beet-lift.beet-lift 2.5 2.5
beet-lift.manual 200
mow.mower 1 1
windrow.rake .5 .5
bale.baler .8 2
transport.trailer-4t .25 .25
transport.trailer-ht 4
$Stitle crop data
Table cropdata(*,c)
* 1. seed, fertilizer, herbicide, pesticide - cost in 1000 rials per ha
* 2. crop-limit - maximum percentage of available land that can be planted in each crop: agrocomic constraint
* 3. trans-adj - transport adustment: reflects different travel distances and waiting times
* 4. price - 1000 rials per ton
* 5. yield - normal yield in metric tons per ha
* 6. water - normal requirements in 1000 cubic meters per ha
wheat soy-beans maize-for sugar-beet alfalfa cotton
seed 2.16 1.6 1.05 .9 .2 .375
fertilize 3.3 2.4 4.2 6.3 2.61 2.25
herbicide 1.395 .5 .5 .4 .32
pesticide .4 1.8
crop-limit 1 1 .15 1 .25 1
trans-adj .33 .67 .15 .43 .5 1
price 10 23.96 1.08 1.8 5 16.47
yield 3.5 2 60 35 12 3.5
water 6.44 15.83 11.11 16.83 22.55 14.37
Table stress(*,w,c) water stress multiplier (proportion)
wheat soy-beans maize-for sugar-beet alfalfa cotton
yield.normal 1 1 1 1 1 1
water.normal 1 1 1 1 1 1
yield.stress-1 .98 .95 .98 .94 .95 .96
water.stress-1 .9 .83 .9 .61 .83 .58
yield.stress-2 .94 .79 .94 .89 .79 .71
water.stress-2 .8 .55 .8 .38 .55 .25
yield.stress-3 .75 .53 .75 .83 .53
water.stress-3 .5 .28 .5 .23 .28
Table cs(c,*,s) time periods (fortnight) when cropping schedules start and end
sch-1 sch-2 sch-3 sch-4 sch-5 sch-6 sch-7 sch-8
wheat.start 13 14 15 16 17 17 17
wheat.end 11 12 13 13 13 11 11
soy-beans.start 23 23 23 1 2 5 6
soy-beans.end 16 16 16 17 17 17 16
maize-for.start 12 12 13 13 13 12 13
maize-for.end 19 20 19 20 20 20 20
alfalfa.start 23 24 1 2 3 4 5 6
alfalfa.end 19 19 19 19 19 19 19 19
sugar-beet.start 24 1 2 3 3 3
sugar-beet.end 21 21 21 22 22 23
cotton.start 3 4 5 6 6 3 5
cotton.end 16 17 17 17 19 20 16
$Eject
Table atask(c,g,s) time periods when a unit of agricultural task is to be performed (per ha)
* table atask specifies the time periods when various agricultural activities for each crop and according to the
* schedule are required. the first and last periods during which cultivation must take place are given.
sch-1 sch-2 sch-3 sch-4 sch-5 sch-6 sch-7 sch-8
wheat.plough 13 14 15 16 17 17 17
wheat.disce 14 15 16 17 18 17 18
wheat.(harrow,spray) 18 19 19 20 20 18 18
wheat.fertilize 6 7 7 7 7 6 6
wheat.drill 19 20 21 21 21 19 19
wheat.(harvest-g,bale,transport) 11 12 13 13 13 11 11
soy-beans.plough 23 23 23 1 2 5 6
soy-beans.(disce,harrow,spray) 4 5 6 4 4 6 6
soy-beans.drill 7 7 7 8 8 8 7
soy-beans.cultivate 9 9 9 10 10 10 9
soy-beans.fertilize 5 6 6 5 5 6 6
soy-beans.(harvest-g,transport) 16 16 16 17 17 17 16
maize-for.disce 12 12 13 13 13 12 13
maize-for.plant 13 14 13 14 14 14 13
maize-for.spray 14 15 14 15 16 15 14
maize-for.cultivate 15 16 15 16 16 16 15
maize-for.fertilize 16 17 16 17 16 16 16
maize-for.harvest-f 19 20 19 20 20 20 19
maize-for.transport 19 20 19 20 20 20 20
cotton.plough 3 4 5 6 6 3 5
cotton.disce 4 5 6 7 7 4 7
cotton.plant 8 9 8 8 9 9 8
alfalfa.plough 23 24 1 2 3 4 5 6
alfalfa.(disce,harrow) 6 6 6 7 7 6 7 6
alfalfa.drill 9 9 9 9 10 10 10 10
sugar-beet.plough 24 1 2 3 3 3
sugar-beet.disce 1 2 3 4 4 4
sugar-beet.plant 4 4 4 5 5 6
sugar-beet.fertilize 6 6 6 7 7 7
$Eject
table btask(c,g,s,t) task requirements according to crop and schedule (per ha)
01 02 03 04 05 06 07 08
alfalfa.(fertilize,spray).(sch-1*sch-4) 1
alfalfa.(fertilize,spray).(sch-5*sch-8) 1
sugar-beet.harrow.sch-1 1 1
sugar-beet.harrow.(sch-2*sch-4) 1 1
sugar-beet.harrow.(sch-5,sch-6) 1 1
sugar-beet.cultivate.(sch-1*sch-3) 1 1
sugar-beet.cultivate.(sch-4,sch-5) 1
sugar-beet.cultivate.sch-6 1
sugar-beet.spray.(sch-1,sch-3) 1
sugar-beet.spray.(sch-2,sch-4) 1
sugar-beet.spray.(sch-5,sch-6) 1
+ 09 10 11 12 13 14 15 16
alfalfa.(fertilize,spray).(sch-1*sch-8) 1 1 1
alfalfa.(mow,windrow,bale).(sch-1*sch-8) 1 1 1
alfalfa.transport.(sch-1*sch-8) 0.2 0.2 0.2
sugar-beet.cultivate.(sch-4,sch-5) 1
sugar-beet.cultivate.sch-6 1
sugar-beet.spray.(sch-1*sch-3) 1 1 1 1 1 1
sugar-beet.spray.(sch-4,sch-5) 1 1 1 1 1 1
sugar-beet.spray.sch-6 1 1 1 1 1 1
cotton.cultivate.(sch-1*sch-7) 1 1
cotton.spray.(sch-1,sch-3,sch-4,sch-7) 1 1 1 1 1 1
cotton.spray.sch-2 1 1 1 1 1 1
cotton.spray.sch-5 1 1 1 1 1
cotton.spray.sch-6 1 1 1 1
cotton.(harvest-c,transport).(sch-1,sch-7) 1
cotton.(harvest-c,transport).(sch-3,sch-4) 0.5
+ 17 18 19 20 21 22 23 24
alfalfa.(fertilize,spray).(sch-1*sch-8) 1
alfalfa.(mow,windrow,bale).(sch-1*sch-8) 1 1
alfalfa.transport.(sch-1*sch-8) 0.2 0.2
sugar-beet.(beet-lift,transport).(sch-1*sch-3) .5 .5
sugar-beet.(beet-lift,transport).(sch-4,sch-5) .5 .5
sugar-beet.(beet-lift,transport).sch-6 .5 .5
cotton.spray.sch-5 1
cotton.spray.sch-6 1 1
cotton.(harvest-c,transport).sch-2 1
cotton.(harvest-c,transport).(sch-3,sch-4) 0.5
cotton.(harvest-c,transport).sch-5 0.34 0.33 0.33
cotton.(harvest-c,transport).sch-6 .25 .25 .25 .25
$Eject
table lreq(c,s,t) labor requirements (hours per fortnight)
01 02 03 04 05 06 07 08
wheat.(sch-1,sch-6,sch-7) 2
wheat.(sch-2*sch-5) 2
soy-beans.(sch-1,sch-4,sch-5) 20
soy-beans.(sch-2,sch-3,sch-6,sch-7) 20
sugar-beet.(sch-1*sch-3) 26 6
sugar-beet.(sch-4,sch-5) 26
sugar-beet.sch-6 26
+ 09 10 11 12 13 14 15 16
wheat.(sch-1,sch-6,sch-7) 2
wheat.sch-2 2
wheat.(sch-3*sch-5) 2
soy-beans.(sch-1*sch-3,sch-7) 1
maize-for.(sch-1,sch-3,sch-5*sch-7) 8
sugar-beet.(sch-4,sch-5) 6
sugar-beet.sch-6 6
cotton.(sch-1,sch-7) 1.3 11.05 11.05 1.3 1.3 1.3 11.7
cotton.sch-2 11.05 11.05 1.3 1.3 1.3 1.3
cotton.(sch-3,sch-4) 1.3 11.05 11.05 1.3 1.3 1.3 5.85
cotton.sch-5 1.3 11.05 11.05 1.3 1.3
cotton.sch-6 11.05 11.05 1.3 1.3
+ 17 18 19 20 21 22 23 24
soy-beans.(sch-4*sch-6) 1
maize-for.(sch-2,sch-4) 8
sugar-beet.(sch-1*sch-3) 16.5 16.5
sugar-beet.(sch-4,sch-5) 16.5 16.5
sugar-beet.sch-6 16.5 16.5
cotton.sch-2 11.7
cotton.(sch-3,sch-4) 5.85
cotton.sch-5 3.9 5.2 3.9
cotton.sch-6 2.93 4.23 4.23 2.93
$Eject
Scalar rho interest rate / .04 /
land farm size (ha) / 1600 /
lcost labor cost (1000 rials per man-day) / .135 /
watercost water cost (rials per 1000 cubic meters per ha) / .267 /
hrtoday hours in a man-day / 6 /
Parameter oc(g,mn,mn) operating costs (1000 rials per ha)
avail(mn) equipment avaialbility (hours of utilization per fortnight)
life(mn) expected life of equipment (years)
crf(mn) capital recovery factor
cap(mn) amortized capital cost (1000 rials)
pmisc(c) cost of inputs - seed pesticide herbicide & fertilizer (1000 rials per ha)
pcrop(c) price of agricultural commodities (1000 rials per ton)
yield(c,w) crop yields along yield-water curve (metric tons per ha)
water(c,w) water requirements along yield-water curve (1000 cubic meters per ha)
length(c,s) length of cropping season for crop under schedule (fortnights)
luse(c,t,s) land use possibilities
treq(g,t,c,s) agricultural tasks requirements
agrol(c) agronomic constraints (ha);
oc(g,m,n) = (equip(m,"opcost") + equip(n,"opcost"))*tech(g,m,n)/1000;
avail(mn) = equip(mn,"avail");
life(mn) = equip(mn,"life");
pmisc(c) = cropdata("seed",c) + cropdata("fertilize",c) + cropdata("pesticide",c) + cropdata("herbicide",c);
pcrop(c) = cropdata("price",c);
yield(c,w) = cropdata("yield",c)*stress("yield",w,c);
water(c,w) = cropdata("water",c)*stress("water",w,c);
agrol(c) = land*cropdata("crop-limit",c);
crf(mn)$equip(mn,"life") = rho*(1 + rho)**equip(mn,"life")/((1 + rho)**equip(mn,"life") - 1);
cap(mn) = crf(mn)*equip(mn,"cost");
length(c,s)$cs(c,"start",s) = mod(card(t) + cs(c,"end",s) - cs(c,"start",s),card(t)) + 1;
luse(c,t++(cs(c,"start",s)-1),s) = 1$(ord(t) le length(c,s));
treq(g,t,c,s) = 1$(atask(c,g,s) eq ord(t)) + btask(c,g,s,t);
treq("transport",t,c,s) = treq("transport",t,c,s)*cropdata("trans-adj",c)*yield(c,"normal");
cposs(c,s) = yes$length(c,s);
taskposs(g,t) = sum((c,s), yes$treq(g,t,c,s));
* special adjustments for cotton picking:
Parameter tadj(g) extra tasks required for mechanical cotton picking (units per ha) / spray 1 /
loss(c) product loss from mechanical cotton picking;
loss("cotton") = .2*yield("cotton","normal");
taskposs("spray",t) = taskposs("spray",t) + taskposs("harvest-c",t);
equipposs(m,t) = yes$(sum((g,n)$taskposs(g,t), tech(g,m,n)) ne 0);
equipposs(n,t) = yes$(sum((g,m)$equipposs(m,t), tech(g,m,n)) ne 0);
equipposs("self-prop",t) = no; equipposs("manual",t) = no;
Display lreq,cposs,taskposs,equipposs,oc,avail,life,pmisc,pcrop,loss,yield,water,length,luse,treq,crf,cap;
$Stitle model definition
Variables xcrop(c,s) cropping schedules (ha)
xwater(c,w) cropping by irrigation level (ha)
awater annual water requirements (million cubic meters)
task(g,t,mn,mn) agricultural tasks by technology (ha)
sales(c) sales of agricultural commodities (tons)
equipp(mn) equipment purchases (units)
emply(t) employment (man-days)
revenue from crop sales (1000 rials)
cost(cc) cost of cropping activities (1000 rials)
profit objective function (1000 rials)
Positive Variables xcrop,xwater,task,sales,equipp,emply,revenue,cost
Equations cbal(c) commodity balance (tons)
tbal(g,t) task balance (ha)
cropd(c) crop-water balance (ha)
waterd annual water requirement definition (million cubic meters)
agroc(c) agronomic constraints (ha)
landc(t) land constraints (ha)
labor(t) labor requirements (man-days)
equipb1(mn,t) equipment balance for implements (unit)
equipb2(mn,t) equipment balance for power sources (unit)
arev accounting: revenue (1000 rials)
acost1 accounting: cost of miscellaneous inputs (1000 rials)
acost2 accounting: cost of water (1000 rials)
acost3 accounting: operating cost (1000 rials)
acost4 accounting: capital charges (1000 rials)
acost5 accounting: cost of labor (1000 rials)
obj objective function (1000 rials);
$Eject
cbal(c).. sales(c) =e= sum(w, yield(c,w)*xwater(c,w))
- loss(c)*sum(t$taskposs("harvest-c",t), task("harvest-c",t,"cotton-p","self-prop"));
tbal(g,t)$taskposs(g,t).. sum((c,s)$cposs(c,s), treq(g,t,c,s)*xcrop(c,s)) =e= sum((m,n)$tech(g,m,n), task(g,t,m,n))
- tadj(g)*task("harvest-c",t,"cotton-p","self-prop");
cropd(c).. sum(s$cposs(c,s), xcrop(c,s)) =e= sum(w$yield(c,w), xwater(c,w));
waterd.. awater =e= sum((c,w), water(c,w)*xwater(c,w))/1000;
agroc(c).. sum(s$cposs(c,s), xcrop(c,s)) =l= agrol(c);
landc(t).. sum((c,s)$cposs(c,s), luse(c,t,s)*xcrop(c,s)) =l= land;
labor(t).. sum((c,s)$cposs(c,s), lreq(c,s,t)*xcrop(c,s)) + sum((g,m,n)$taskposs(g,t), tech(g,m,n)*task(g,t,m,n))
=l= hrtoday*emply(t);
equipb1(m,t)$equipposs(m,t).. sum((g,n)$taskposs(g,t), tech(g,m,n)*task(g,t,m,n)) =l= avail(m)*equipp(m);
equipb2(n,t)$equipposs(n,t).. sum((g,m)$taskposs(g,t), tech(g,m,n)*task(g,t,m,n)) =l= avail(n)*equipp(n);
arev.. revenue =e= sum(c, pcrop(c)*sales(c));
acost1.. cost("misc-input") =e= sum(c, pmisc(c)*sum(s$cposs(c,s), xcrop(c,s)));
acost2.. cost("water") =e= watercost*awater;
acost3.. cost("operating") =e= sum((g,t,m,n)$taskposs(g,t), oc(g,m,n)*task(g,t,m,n));
acost4.. cost("capital") =e= sum(mn, cap(mn)*equipp(mn));
acost5.. cost("wages") =e= lcost*sum(t, emply(t));
obj.. profit =e= revenue - sum(cc, cost(cc));
Model iran / all /;
sales.lo("wheat") = 875; awater.up = 21.73;
Option iterlim=5000;
Solve iran maximizing profit using lp;
Display xcrop.l,xwater.l;