O problema suport expunere limbaj

    Consideram un atelier care utilizeaza urmatoarele materii prime de baza: fier, nichel, cupru pentru a produce : piulite,suruburi, nituri, cuie, saibe. Procesul se deruleaza in patru perioade de productie iar maximul de productie pe o perioada este in valoare de 140.5. Unitatile de materii prime pe unitatea de produs finit este dat de tabelul de mai jos:
 

  piulite suruburi
nituri
cuie
saibe
fier
0.79
0.85
0.89
0.86
0.58
nichel
0.19
0.10
0.07
0.14
0.20
cupru
0.02
0.05
0.04
0.00
0.22

    Profitul estimat (daca valoarea este pozitiva) sau costul (daca valoarea este negativa) produsului final si pe fiecare perioada de timp este dat de tabelul de mai jos :
 

  Perioada 1 Perioada 2 Perioada 3 Perioada 4
piulite
1.73 
1.80
1.60
2.30
suruburi
1.82 
1.93
1.72
2.51
nituri
1.87 
1.96
1.65
1.94
cuie
1.78 
1.84
1.69
1.98
saibe
1.05 
1.16
0.98
1.37

    Consumul maxim permis pe intreg procesul de productie din cele patru perioade si pentru fiecare tip de materie prima trebuie sa fie in stoc la inceputul primei perioade. Acesta este dat de tabelul :
 

fier
nichel
cupru
46.8
7.32
5.16

    Pretul de stocare pe perioada si pe unitate de material este conform cu tabelul :
 

fier
nichel
cupru
0.03
0.025
0.023

    Pierderile estimate (daca valoarea este pozitiva) sau costurile impuse (daca valoarea este negativa) pe materiile prime dupa ultima perioada sunt date de tabelul :
 
 

fier
nichel
cupru
0.02
-0.01
-0.02

    Problema care se pune este determinarea unui plan de productie pentru fiecare perioada de timp si cantitatea de materiale din stoc la inceputul fiecarei perioade in asa fel ca valoarea obtinuta, la finalul celor patru perioade, din profitul estimat minus costurile de stocare plus valoarea materialelor ramase neutilizate sa fie maxima. Aprovizionarea cu materii prime este permisa numai la inceputul ciclului de productie format din cele patru perioade. De aceea problema stocurilor de materii prime si a penalizarilor este prezenta si deosebit de importanta in realizarea optimului.

Tinind cont de cele de mai sus putem sa notam si sa producem urmatoarea formulare algebrica:

NRFPROD numarul produselor finale;

NRRMAT numarul materiilor prime;

NRPERP numarul perioadelor de productie;

PRODMAX maximul valorii productiei pe fiecare perioada;

UMP = || UMPrf || 1 £ r £ NRRMAT si 1 £ f £ NRFPROD ; UMPrf este unitatea de materie prima r necesara pentru unitatea de produs finit f;

PROFDC = || PROFDCfp || 1 £ f £ NRFPROD si 1 £ p £ NRPERP PROFDCfp este profitul estimat sau costul impus al produsului final f in perioada p;

STINIMAX = || STINIMAXr || 1 £ r £ NRRMAT, STINIMAXr este cantitatea maxima admisa de aprovizionare(la inceputul celor patru perioade si din care se va consuma in toate aceste perioade fara , al al materiei prime k;

STORCOST = || STORCOSTr || 1 £ r £ NRRMAT, STCOSTr este costul de stocare pe unitate de materie prima r;

RVDCOST = || RVDCOSTr || 1 £ r £ NRRMAT, RVDCOSTr este valoarea reziduala sau costul impus al materiei prime r dupa ultima perioada;

    Definim si urmatoarele variabile care vor fi implicate in constructia modelului de optimizare liniara care incearca sa rezolve problema prezentata.

XPROD = || UMATfp || 1 £ f £ NRFPROD si 1 £ p £ NRPERP ; XPRODfp este cantitatea (exprimata in unitati) de produs finit f ce ar trebui sa fie produsa in perioada de timp p;

XSMAT = || XSMATrp || 1 £ r £ NRRMAT si 1 £ p £ NRPERP + 1 ; XSMATrp este cantitatea (exprimata in unitati) de materie prima r ce ar trebui sa fie prezenta la inceputul procesul de productie din perioada p;

    Se cere sa se maximizeze profitul realizat de atelier in cele patru perioade de productie. Profitul este dat de suma profitului realizat din valorificarea produselor finite din care se scade costul total de stocaj al materiilor prime si la care se adauga valoarea materiilor prime ramase neconsumate la sirsitul ultimei perioade de productie :

    Conditii impuse pentru procesul de productie din toate perioadele :

    1. Valoarea productiei din fiecare perioada nu trebuie sa depaseasca o anumita limita impusa din diferite motive din care putem presupune capacitatile de productie, forta de munca, impuneri de cerere si oferta, impuneri financiare care sunt posibil reflectate si de cantitatile initiale de materii prime stocate pentru toate perioadele,indirect capacitatea de stocare a materiilor prime :

pentru 1 £ f £ NRFPROD

    2. Dupa fiecare perioada de productie trebuie sa existe un echilibru al materiilor prime care se regasesc in stoc si in produsele finite produse in aceasta perioada. Altfel spus stocul de materii prime existent la sfirsitul acestei perioade ( care este acelasi cu stocul de inceput al perioadei urmatoare) trebuie sa fie egal cu stocul de la inceputul acestei perioade din care se scade materia prima inglobata in produsele finite rezultate in aceasta perioada.

pentru 1 £ p £ NRPERP

3. Exista si o conditie initiala privind limitarea superioara a stocului de materii prime de la inceputul primei perioade stoc destinat consumului in procesul de productie pentru toate perioadele. Aceasta limitare poate avea la baza o ratiune legata de capacitatea de stocare sau o motivatie financiara.

pentru 1 £  r £  NRRMAT

Un model ALLO a problemei expuse

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    */ /* sau 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. Ultimul este    */ /* preluat din exemplul lui Bob Fourer's TOMS paper, June 1983        */
/*--------------------------------------------------------------------*/

    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] ISFOR[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

Fisierul secundar cu date de personificare prototip PLANPRD

/*planprd5.dat-------------------------------------------------------*/
/* Data Creare     : 17 Martie 1995                                  */
/* Data Modificare : 19 Octombrie 1997                               */
/*-------------------------------------------------------------------*/

/* set fprod = piulite, suruburi, nituri, cuie, saibe */

/* set rmat = fier, nichel, cupru */

/* nrfprod */ 5
/* nrrmat */ 3
/* nrperp */ 4

/* prodmax */ 140.5

/* ump [rmat,fprod] */

        /* piulite suruburi nituri cuie saibe */

/* fier */ 0.79, 0.85, 0.89, 0.86, 0.58,

/* nichel */ 0.19, 0.10, 0.07, 0.14, 0.20,

/* cupru */ 0.02, 0.05, 0.04, 0.00, 0.22;

/* profdc [fprod,perp] */

                      /*  1     2    3     4 */

/* piulite */           1.73, 1.80, 1.60, 2.30,

/* suruburi*/           1.82, 1.93, 1.72, 2.51,

/* nituri */            1.87, 1.96, 1.65, 1.94,

/* cuie */              1.78, 1.84, 1.69, 1.98,

/* saibe */             1.05, 1.16, 0.98, 1.37;
 

                /* fier nichel cupru */

/* stinimax [rmat] */ 46.8, 7.32, 5.16;

/* storcost [rmat] */ 0.03, 0.025, 0.023;

/* rvdcost [rmat] */ 0.02, -0.01, -0.02;

/* Eof ---------------------------------------------------------------*/

Rezumat din raportul optimizator pe problema data

Name of the problem : Plan_productie

Maximize the function: profit

Synopsis of original matrix
=====================================

No. constraints ................ = 16
No. structural variables ....... = 35
No. non-zeros elements ......... = 100
Density of non-zeros in matrix . = 17.86%
No. unity elements ............. = 44
Density of unity elements ...... = 7.86%

Row section
-----------
No. equations .................. = 12
No. less than or equal ......... = 4

Column section
--------------
No. normal variables ........... = 32
No. upper bounded variables .... = 3

Feasible Solution found in 0 iterations

Optimal Solution found in 25 iterations

Objective function value = 131.7778

NoCol Name    Pos  Value InputCost LowerLimit UpperLimit ReducedCost

1     xprod1  lb     .     .1730D+01     .     none     -.52336D+00
2     xprod2  lb     .     .1800D+01     .     none     -.48227D+00
3     xprod3  lb     .     .1600D+01     .     none     -.71118D+00
4     xprod4  lb     .     .2300D+01     .     none     -.40094D-01
5     xprod5  lb     .     .1820D+01     .     none     -.60255D+00
6     xprod6  lb     .     .1930D+01     .     none     -.52170D+00
7     xprod7  lb     .     .1720D+01     .     none     -.76085D+00
8     xprod8  b.550588D+02 .2510D+01     .     none      .
9     xprod9  lb     .     .1870D+01     .     none     -.66540D+00
10    xprod10 lb     .     .1960D+01     .     none     -.60477D+00
11    xprod11 lb     .     .1650D+01     .     none     -.94414D+00
12    xprod12 lb     .     .1940D+01     .     none     -.68351D+00
13    xprod13 lb     .     .1780D+01     .     none     -.67086D+00
14    xprod14 lb     .     .1840D+01     .     none     -.64016D+00
15    xprod15 lb     .     .1690D+01     .     none     -.81946D+00
16    xprod16 lb     .     .1980D+01     .     none     -.55876D+00
17    xprod17 lb     .     .1050D+01     .     none     -.61060D+00
18    xprod18 lb     .     .1160D+01     .     none     -.52806D+00
19    xprod19 lb     .     .9800D+00     .     none     -.73552D+00
20    xprod20 lb     .     .1370D+01     .     none     -.37298D+00
21    xsmat1 ub .468000D+02 -.3000D-01   . .4680D+02     .28158D+01
22    xsmat2 bs .468000D+02 -.3000D-01   .     none     .
23    xsmat3 bs .468000D+02 -.3000D-01   .     none     .
24    xsmat4 bs .468000D+02 -.3000D-01   .     none     .
25    xsmat5 lb     .     .2000D-01      .     none     -.29158D+01
26    xsmat6 bs .550588D+01 -.2500D-01   . .7320D+01    .
27    xsmat7 bs .550588D+01 -.2500D-01   .     none     .
28    xsmat8 bs .550588D+01 -.2500D-01   .     none     .
29    xsmat9 bs .550588D+01 -.2500D-01   .     none     .
30    xsmat10 lb     .     -.1000D-01    .     none     -.11000D+00
31    xsmat11 bs .275294D+01 -.2300D-01  . .5160D+01    .
32    xsmat12 bs .275294D+01 -.2300D-01  .     none     .
33    xsmat13 bs .275294D+01 -.2300D-01  .     none     .
34    xsmat14 bs .275294D+01 -.2300D-01  .     none     .
35    xsmat15 lb     .     -.2000D-01    .     none     -.11200D+00

    Pe baza solutiei putem sa tragem urmatoarele concluzii:

    1. La inceputul ciclului de productie al celor patru perioade trebuie sa plecam cu urmatoarele stocuri de materii prime:
 

 
Cantitate
Maxim admis
fier
46.8
46.8
nichel
5.5
7.32
cupru
2.75
5.16

    2. Nu producem nimic in primele trei perioade ale ciclului iar in a patra perioada producem numai suruburi in cantitatea( numar unitati ) de 55.05 pe care o gasim ca valoare pentru xprod8. Aceasta variabila este numele corespunzator lui xprod[2,4] prin liniarizarea indicelui (conform cu procedura linie dupa linie, mai general ultimul indice se schimba cel mai repede dupa care penultimul,etc).

    Aceasta este o solutie corecta a modelului pus in discutie cu datele si pretentia expuse. In practica atelierul nu poate sta trei perioade pentru ca apoi sa produca un singur produs. Managerul gaseste solutii de renuntare la maxim de profit pentru a asigura continuitatea procesului de productie. Si astfel este obligat sa introduca noi conditii in model dintre care una poate fi legata de a cere minimum de productie in fiecare perioada. Alta conditii tin de asigurarea unui minim de tipuri de produse finale precum si de satisfacerea unor cereri prezente (chiar daca nu complet profitabile dupa cum s-a si vazut) cu scopul de a nu pierde clientela. Toate acestea tin de strategia de existenta si profitabilitate a atelierului pe un orizont mai mare decit a celor patru perioade cicluri de productie prezente in model. In final strategia si chiar tactica de moment poate fi modelata in anumite conditii care imbogatesc modelul expus si pot duce la citeva variante de functionare pe parcursul celor patru perioade de studiu. Pe baza acestora managerul poate sa decida ce cale are de urmat.