MODEL Tanglewood

/*----------------------------------------------------------------------------*/
/* 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. Din care centre de productie si in ce cantitate trebuie sa se livreze*/
/*       scaunele pentru satisfacerea cererii la fiecare centru de livrare ;  */
/*    3. Care este profitul rezultat al companiei.                            */
/*                                                                            */
/*         Modelul prezent 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 */

    yfs [fab,des]

        /* Numar  scaune livrate de la fiecare centru de */
        /* fabricatie pentru fiecare centru de achizitie */

  OBJECTIVES

    profit IS profit :=

        SUM[j IN fab,k IN des]((spret[k]-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] := SUM[k IN fab](xdf[j,k])>=qamin[j];

 /* Restrictia de cantitate cherestea achizitionata din fiecare depozit */
 

    rprod [fab] IS FOR[j IN fab]

          rprod[j] := SUM[k IN des](yfs[j,k]) IN [fmin[j],fmax[j]];

 /* Restrictii productie scaune pe fiecare centru de fabricatie */

    rdem [des] IS FOR[j IN des]

        rdem[j] := SUM[k IN fab](yfs[k,j]) IN [smin[j],smax[j]];

 /* Restrictii scaune achizitionate de fiecare centrul de livrare */
 

    rbal [fab] IS FOR[j IN fab]

         rbal[j] := SUM[k IN dep](xdf[k,j])= qms*SUM[k IN des](yfs[j,k])

        /* Balanta materiala din fiecare centru productie */
 

END


Return la Tabela Modele