$title Farm Credit and Income Distribution Model (SARF,SEQ=49) $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. Keywords: linear programming, credit pricing, income distribution, agricultural economics, farm production $offText $sTitle Set definitions 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; 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 ; 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 ; 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 ; 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 ; 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) <= length(c,s)); treq(g,t,c,s) = 1$(atask(c,g,s) = 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)) <> 0); equipposs(n,t) = yes$(sum((g,m)$equipposs(m,t), tech(g,m,n)) <> 0); equipposs("self-prop",t) = no; equipposs("manual",t) = no; display lreq , cposs, taskposs, equipposs, oc , avail, life, pmisc, cap pcrop, loss , yield , water ,length, luse , treq, crf; $sTitle Model Definition Variable 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 Variable xcrop, xwater, task, sales, equipp, emply, revenue, cost; Equation 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)'; 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;