MODEL Tanglewood /* varianta */

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


Return la Tabela Modele