/*----------------------------------------------------------------------------*/
/* Data Creare
: 09 Martie 1995
*/
/* Data Modificare :
03 Noiembrie 1997
*/
/*----------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------*/
/* Sursa : MATURANA
S. V., Survey and Analysis of LINGO,Mgt 298D Course Proj; */
/*
John E. Anderson Graduate School of Management,Univ of California, */
/*
Los Angeles, CA 90024
*/
/*
*/
/*
O companie produce scaune in citeva din centrele sale de productie *
/* din localitati distincte
si le vinde in citeva orase. Cheresteaua necesara */
/* productiei sale este
achizitionata de la mai multe depozite care o vinde cu*/
/* conditia unui minim
de achizitie. Fiecare centru de productie poate produce*/
/* un numar de scaune
situat intre anumite limite. Pentru livrare scaune sunt*/
/* solicitate cantitati
care sa nu depaseasca anumite limite. Se cere un plan */
/* de productie, de
aprovizionare si desfacere care sa produca un profit maxim*/
/* Modelul prezent raspunde
la intrebarile :
*/
/*
*/
/*
1. De unde si cit trebuie sa cumpere cherestea fiecare centru productie;*/
/*
2. Cite scaune trebuie sa produca fiecare centru de productie;
*/
/*
3. Cite scaune trebuie sa vinda compania la fiecare centru de livrare;
*/
/*
4. Din care centre de productie si in ce cantitate trebuie sa se livreze*/
/*
scaunele pentru satisfacerea cererii la fiecare centru de livrare ;
*/
/*
5. Care este numarul de scaune fabricat si vindut de companie si care va*/
/*
fi cantitatea de cherestea pe care trebuie s-o cumpere;
*/
/*
6. Cit incaseaza compania pe fiecare centru de productie de la fiecare
*/
/*
centru de achizitie pentru scaunele livrate.
*/
/*
7. Cit incaseaza compania pe scaunele vindute din fiecare centru de fab.*/
/*
8. Cit trebuie sa incaseze compania de la fiecare centru de achizitie.
*/
/*
9. Cit incaseaza compania pe toate scaunele livrate centrelor de achiz.
*/
/* 10. Care
este profitul rezultat al companiei.
*/
/*
*/
/*
Modelul prezent este modificat fata de sursa prin introducerea unor*/
/* variabile statistice
suplementare care in plus usureaza forma de scriere.Pe*/
/* de alta parte acest
model este in fapt un MIP model si ar fi trebuit tratat*/
/* si rezolvat ca atare
cu un MIP solver. Totusi pe aceste date solutia este */
/* corecta chiar lucrind
cu variabile continue si nu cu un MIP solver. Solutia*/
/* are rezultate intregi
la toate variabilele ce se refara la numar de scaune */
/*----------------------------------------------------------------------------*/
FILE
ftw="tangwood.dat"
INTEGER
nrdep READ ftw IS nrdep >0; /* Numar depozite de cherestea */
nrfab READ ftw IS nrfab >0; /* Numar centre de fabricatie scaune */
nrdes READ ftw IS nrdes >0 /* Numar centre desfacere scaune */
RANGE
dep=[1,nrdep]; /* Domeniu coduri depozite cherestea */
fab=[1,nrfab]; /* Domeniu coduri centre de fabricatie */
des=[1,nrdes] /* Domeniu coduri centre desfacere scaune */
REAL
spret[des] READ ftw IS FOR[ k IN des] spret[k]>0.0;
/* Pret de vinzare scaune la fiecare centru de desfacere */
pscost[fab] READ ftw IS FOR[ k IN fab] pscost[k]>0.0;
/* Cost de productie scaun la fiecare centru de productie */
tscost[fab,des] READ ftw IS FOR [j IN fab, k IN des] tscost[j,k] >= 0.0;
/* Cost de transport
scaun de la fiecare centru de productie */
/* la fiecare
centru de vinzare */
tmcost[dep,fab] READ ftw IS FOR [j IN dep, k IN fab] tmcost[j,k] >= 0.0;
/* Cost transport cherestea de la fiecare depozit la fiecare centru */
mcost[dep] READ ftw IS FOR[k IN dep] mcost[k]>0.0;
/* Costul cherestea la fiecare depozit */
qamin[dep] READ ftw IS FOR[k IN dep] qamin[k]>0.0;
/* Cantitatea minima de achizitie cherestea la fiecare depozit */
qms READ ftw IS qms >0.0;
/* Cantitatea de cherestea necesara pentru un scaun */
fmin[fab] READ ftw IS FOR[k IN fab] fmin[k]>=0.0;
/* Numar minim scaune posibil de fabricat la fiecare centru */
fmax[fab] READ ftw IS FOR[k IN fab] fmax[k]>0.0;
/* Numar maxim scaune posibil de fabricat la fiecare centru */
smin[des] READ ftw IS FOR[ k IN des] smin[k]>0.0;
/* Numar minim scaune solicitat de fiecare centrul de vinzare */
smax[des] READ ftw IS FOR[ k IN des] smax[k]>0.0
/* Numar maxim scaune solicitat de fiecare centrul de vinzare */
VARIABLES
xdf [dep,fab];
/* Cantitatea cherestea cumparata de fiecare centru de fabricatie */
xd [dep] IS FOR[j IN dep] xd[j] >= qamin[j];
/* Cherestea ce trebuie achizitionata de la fiecare depozit */
xt ;
/* Cantitate cherestea ce trebuie achizitionata de companie */
xf [fab];
/* Cantitatea repartizata de companie fiecarui centru fabricatie */
yfs [fab,des];
/* Numar scaune livrate de la fiecare centru de */
/* fabricatie pentru fiecare centru de achizitie */
yf [fab] IS FOR[j IN fab] yf[j] IN [fmin[j],fmax[j]];
/* Numar scaune produse de catre fiecare centru de fabricatie */
ys [des] IS FOR[j IN des] ys[j] IN [smin[j],smax[j]];
/* Numar scaune livrate de companie fiecarui centru de achizitie */
yt;/*
Numar total de scaune fabricate si vindute de companie */
zfsc [fab,des];
/* Incasari companie de la fiecare centru de achizitie pe */
/* scaunele livrate de catre fiecare centru de fabricatie */
zfc [fab];
/* Incasari companie pe scaunele fiecarui centru de fabricatie */
zsc [des];
/* Incasari companie de la fiecare centru de achizitie scaune */
ztc
/* Incasari companie pe toate scaunele vindute */
OBJECTIVES
profit IS profit := ztc -
SUM[j IN fab,k IN des]((pscost[j]+ tscost[j,k]) * yfs[j,k]) -
SUM[j IN dep,k IN fab]((tmcost[j,k]+mcost[j]) * xdf[j,k])
/* Profitul estimat
este pretul obtinut de companie pe toate scaunele */
/* vindute din
care trebuie scazut costul lor de fabricatie, costul pe*/
/* cheresteaua
cumparata si utilizata , costul transport cherestea de */
/* la depozite
la centrele de fabricatie,costul transport scaune de la*/
/* aceste centre
la centrele de livrare convenite cu beneficiarii lor */
MAXIMIZE
profit
CONSTRAINTS
rad [dep] IS FOR[j IN dep] rad[j] := xd[j]= SUM[k IN fab](xdf[j,k]);
/* Definitia cantitate cherestea achizitionata din fiecare depozit */
rat IS rat := xt= SUM[j IN dep](xd[j]);
/* Definitia cantitate cherestea achizitionata de companie */
raf [fab] IS FOR[j IN fab] raf[j] := xf[j]= SUM[k IN dep](xdf[k,j]);
/* Cantitate cherestea
achizitionata de fiecare centru fabricatie */
rprod [fab] IS FOR[j IN fab] rprod[j] := yf[j]= SUM[k IN des](yfs[j,k]);
/* Productii scaune pe fiecare centru de fabricatie */
rdem [des] IS FOR[j IN des]
rdem[j] := ys[j]= SUM[k IN fab](yfs[k,j]);
/* Numar scaune
achizitionat de fiecare centrul de livrare */
rbal [fab] IS FOR[j IN fab] rbal[j] := xf[j]= qms*yf[j];
/* Balanta materiala din fiecare centru productie */
ryt IS ryt:= yt= SUM[j IN fab] (yf[j]);
/* Total numar scaune fabricat si vindut de catre companie */
rbalt IS rbalt:= yt = SUM[j IN des] (ys[j]);
/* Balanta scaunelor preluate de toate centrele de productie */
/* ale companiei, care sunt scaune livrate tuturor centrelor */
rfsc [fab,des] IS FOR[j IN fab,k IN des]
rfsc[j,k] := zfsc[j,k]= spret[k]*yfs[j,k];
/* Ecuatii incasari pe centre productie de la centre de achizitie */
rfc[fab] IS FOR[j IN fab] rfc[j] := zfc[j]= SUM[k IN des](zfsc[j,k]);
/* Ecuatii incasari companie pe fiecare centru productie */
rsc [des] IS FOR[j IN des] rsc[j] := zsc[j]= SUM[k IN fab](zfsc[k,j]);
/* Ecuatii incasari companie de la fiecare centru achizitie */
rzt IS rzt:= ztc= SUM[j IN fab](zfc[j])
/* Ecuatia incasari companie pentru toate scaunele vindute */
END