Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- $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;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement