/*----------------------------------------------------------------------------*/
/* 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