MODEL Plan_Productie

/*----------------------------------------------------------------------------*/
/* Data Creare     : 17 Martie    1993                                        */
/* Data Modificare : 19 Octombrie 1997                                        */
/*----------------------------------------------------------------------------*/
/*                                                                            */
/* Sursa: Fourer,R., Gay,D.M.,Kernighan,B.W.,AMPL: A Mathematical Programming */
/* Language. Technical Report 87-03, Department of Industrial Engineering and */
/* Management  Sciences, Northwestern  University, Evanston, Illinois  60201, */
/* January 1987, pp.1-63.                                                     */
/*----------------------------------------------------------------------------*/
/*                                                                            */
/* O intreprindere poate produce citeva produse diferite in citeva perioade de*/
/* timp. Pentru fiecare produs se estimeaza ca aduce un anumit profit diferit */
/* de la o perioada la alta. Marimea intreprinderii impune o limita superioara*/
/* a produselor posibile de realizat. In plus fiecare produs necesita anumite */
/* materii prime  care vor fi utilizate  in producerea sa. Cantitati limitate */
/* din acestea trebuie stocate pentru perioadele luate in calcul.  Un cost de */
/* stocare este impus pentru fiecare materie . Orice material ramas nefolosit */
/* dupa toate perioadele are o valoare estimata pozitiva/negativa-penalizare. */
/* Ce produse ar trebui facute si in ce perioade in asa fel ca profitul pe ce */
/* se produce minus costurile de stocare plus valoarea materialelor la sfirsit*/
/* sa fie maxim.                                                              */
/* Acest prototip ALLO are doua ipostaze de personalizare pe baza  fisierului */
/* de date : planprd5.dat si planprd3.dat.                                    */
/*----------------------------------------------------------------------------*/

    FILE fpp = "planprd5.dat"

    INTEGER

      nrfprod READ fpp IS nrfprod >0; /* Numar  produse finite */

      nrrmat  READ fpp IS nrrmat  >0; /* Numar  materii  prime */

      nrperp  READ fpp IS nrperp  >0  /* Perioade pe ciclu pr. */

    RANGE

      fprod   = [1,nrfprod];  /* Domeniu coduri produse finite */

      rmat    = [1,nrrmat ];  /* Domeniu coduri  materii prime */

      perp    = [1,nrperp ];  /* Domeniul  perioade  productie */

      perpext = [1,nrperp+1]  /* Domeniu extins perioade prod. */
 

    REAL

      prodmax READ fpp IS prodmax > 0.0;

        /* Productia maxima permisa pe orice perioada de productie */

      ump [rmat,fprod] READ fpp IS FOR [r IN rmat,f IN fprod] ump [r,f] >= 0.0;

 /* ump[r,f] Unitati materie prima r pentru o unitate de produs f */

      profdc [fprod,perp] READ fpp;

 /* Profit estimat (daca >=0.0)/costul impus (daca <0.0) */
        /* al produselor  finale si pe fiecare perioada de timp */

      stinimax [rmat] READ fpp IS FOR [r IN rmat] stinimax[r]>=0.0;

 /* Stocul initial maxim permis pe fiecare materie prima */

      storcost [rmat] READ fpp IS FOR [r IN rmat] storcost [r] >= 0.0;

 /* Costuri stocare pe unitate materie prima, pe orice perioada */

      rvdcost [rmat] READ fpp

        /* Valorile residuale estimate (daca >=0.0)/costul impus (daca */
        /* < 0.0)  al materiilor prime dupa ultima perioada a ciclului */
 

  VARIABLES

    xprod [fprod,perp]; /* Unitati de produse finite pe fiecare perioada */

    xsmat[rmat,perpext] IS FOR[r IN rmat] xsmat[r,1] <= stinimax[r]

        /* Stocul materii prime necesar la startul fiecarei perioade */
        /* La inceputul primei perioade  trebuie respectata conditia */
 

  OBJECTIVES

    profit IS profit := SUM[f IN fprod,p IN perp](profdc[f,p]*xprod[f,p]) -

                        SUM[r IN rmat,p IN perp] (storcost[r]*xsmat[r,p]) +

                        SUM[r IN rmat] (rvdcost[r]*xsmat[r,nrperp+1])

        /* Profitul estimat pe intreg ciclul  de productie este profitul pe */
        /* produsele finite minus costurile de stocare plus rectificarea cu */
        /* valoarea (pozitiva/negativa-penalizare) legata de stoc materiale */

    MAXIMIZE profit
 

  CONSTRAINTS
 

    limprod [perp] IS /* Limita productiei totale pe fiecare perioada */

       FOR [p IN perp] limprod[p]:= SUM[f IN fprod](xprod [f,p]) <= prodmax;
 

    pmbal [rmat,perp] IS /* Balanta materiala a procesului pe perioade */

       FOR [r IN rmat, p IN perp] pmbal[r,p]:=

           xsmat[r,p+1] = xsmat[r,p] - SUM[f IN fprod](ump[r,f] * xprod[f,p])
 

END


Return la Tabela Modele