MODEL Plan_Ferma

/*----------------------------------------------------------------------------*/
/* Data Creare     : 15 Martie    1995                                        */
/* Data Modificare : 11 Octombrie 1997                                        */
/*----------------------------------------------------------------------------*/

/*----------------------------------------------------------------------------*/
/* Sursa:  F. H. Murphy, E .A. Stohr, A. Asthana, Representation  schemes for */
/* linear programming models, Management Science,  vol.38, No.7,  July  1992, */
/* pp.964-991                                                                 */
/*                                                                            */
/*    Modelul prezent  aproximeaza linear activitatea unei ferme specializata */
/* pe cultivarea  cerealelor si cresterea  animalelor si pasarilor. Ferma are */
/* o suprafata cultivabila cunoscuta precum si spatii speciale pentru animale */
/* si pasari care sunt hranite din cerealele proprii sau cumparate. Fermierul */
/* vinde animalele si pasarile precum si surplusul de cereale. Activitatea se */
/* desfasoara cu forta de munca angajata in limita impusa de necesitati sau de*/
/* posibilitati.                                                              */
/*    Se cere maximizarea profitului fermei pe ciclul de productie ce cuprinde*/
/* o recolta proprie de cereale implicata in hrana animalelor crescute.       */
/*----------------------------------------------------------------------------*/
 

    FILE ffp="farmplan.dat"

    INTEGER

      nrg READ ffp IS nrg >0; /* Numar tipuri de cereale cultivate */

      nra READ ffp IS nra >0  /* Numar  tipuri de animale crescute */

    RANGE

      g = [1,nrg];  /* Coduri interne ale cerealelor */

      a = [1,nra]   /* Coduri interne tipuri animale */

    REAL

      hllt READ ffp IS hllt >0.0; /* Timp efectiv lucrat  din ora fizica */

      ls   READ ffp IS ls   >0.0; /* Cantitatea munca la start productie */

      as   READ ffp IS as   >0.0; /* Suprafata  pentru  cultura  cereale */

      fs   READ ffp IS fs   >0.0; /* Suprafata  pentru  adapost  animale */

      hlc  READ ffp IS hlc  >0.0; /* Costul unei ore angajate */

      hls  READ ffp IS hls  >0.0; /* Limita muncii angajate */

      bc[g] READ ffp IS FOR[k In g] bc[k]>0.0;   /* Cost cereale cumparate */

      hc[g] READ ffp IS FOR[k In g] hc[k]>0.0;   /* Cost recoltat  cereale */

      sp[g] READ ffp IS FOR[k In g] sp[k]>0.0;   /* Pret  vinzare  cereale */

      rp[a] READ ffp IS FOR[k In a] rp[k]>0.0;   /* Pret animale  crescute */

      hat[g] READ ffp IS FOR[k In g] hat[k]>0.0; /* Suprafata pentru bushel*/

      hlt[g] READ ffp IS FOR[k In g] hlt[k]>0.0; /* Munca ceruta pe bushel */

      rlt[a] READ ffp IS FOR[k In a] rlt[k]>0.0; /* Munca  crestere animal */

      rft[a] READ ffp IS FOR[k In a] rft[k]>0.0; /* Spatiu pentru un animal*/

      fat[a,g] READ ffp IS                       /* Cerinte furajare animal*/

               FOR[j In a,k In g] fat[j,k]>0.0

  VARIABLES

    b  [g];          /* Cantitatea   cereale  cumparate */

    hl IS hl <= hls; /* Munca  angajata   pentru  ferma */

    h  [g];          /* Cantitatea de cereale recoltate */

    f  [g,a];        /* Necesar  cereale pentru animale */

    s  [g];          /* Cantitatea  de cereale  vindute */

    r  [a]           /* Animale pe care ferma le creste */
 

  OBJECTIVES
 

    profit IS   /* Profitul fermei */

       profit := SUM [k IN g](sp[k]*s[k]) + SUM [k IN a](rp[k]*r[k]) -

                 SUM [j IN g](bc[j]*b[j])-hlc*hl-SUM [k IN g](hc[k]*h[k])

        /* Profitul este suma incasata pe cereale si animalele vindute */
        /* minus suma pe cerealele cumparate, minus suma platita pentru*/
        /* recoltarea cerealelor proprii, minus suma pe munca angajata */

    MAXIMIZE profit

  CONSTRAINTS

    acres IS  acres := SUM [k In g](hat[k]*h[k]) <= as;

 /* Restrictia de suprafata cultivata cu cereale */

    labor IS labor := SUM[j In a](rlt[j]*r[j]) +

                      SUM[k In g](hlt[k]*h[k])  <= ls + hllt*hl;

 /* Forta de munca necesara pentru cultivarea cerealelor si pentru */
 /* cresterea animalelor este acoperita de forta de munca existenta*/
 /* la inceputul perioadei  plus din eventuale angajari ulterioare */

    grain [g] IS FOR [k In g] grain[k] := b[k] + h[k] -

                     SUM[j In a](f[j,k]) - s[k] = 0.0;

 /* Balanta cerealelor. Cantitatea cumparata plus cea recoltata */
 /* trebuie sa fie egala cu cantitatea consumata pe animale plus*/
 /* cantitatea ramasa spre vinzare */

    animal [a] IS FOR [k In a] animal[k] :=

                  SUM[j In g](fat[k,j]*r[k]-f[j,k]) = 0.0;

 /* Balanta de nutret pe animalele crescute in ferma */

    floor IS floor := SUM[k In a](rft[k]*r[k]) <= fs

 /* Restrictia de spatiu de adapost si crestere animale */

END


Return la Tabela Modele