sarf.gms : Farm Credit and Income Distribution Model

Description

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


Category : GAMS Model library


Main file : sarf.gms

$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
$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) le 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;