Sunteți pe pagina 1din 12

Simularea poceselor economice

-gestiunea stocurilor de produse finite


prin metoda simulării-

Stoian Liviu-Ionut
Grupa 1037
Cuprins

Enunțarea problemei.............................................................................................. 3

Aprovizionarea ...................................................................................................... 4

Pregătirea simulării..........................................................................................…... 5

Simularea propriu-zisă ......................................................................................…..6

Cod ...............................................................................................................….......8

Bibliografie ..........................................................................……………………………….12
Enunțarea problemei

Firma Nivea dorește să stabilească care este varianta optimă de stocare a unui nou
produs din gama geluri de dus astfel încât să asigure o aprovizionare eficientă și care să
satisfacă nevoia clienților (cererea) și să aibă un cost cât mai scăzut.

Deoarece pe piață există foarte multe firme concurente care ofera același tip de
gel de dus, mai exact gel de dus pentru par ce contine provitamina B5, folosită adesea
pentru echilibrarea nivelului de hidratare al parului si ingrosarea acetuia. Managerul
companiei a decis să facă un studiu de piață din care să reiasă cam câte persoane folosesc
gel de dus marca Nivea și implicit pe cel cu provitamina B5 pentru a-și da seama care
este cantitatea optima de stocare și la câte zile trebuie sa fie stocată marfa pentru a
necesita costuri cât mai mici.

În urma studiului de piață s-a stabilit faptuul că cererea este o variabilă aleatoare
cu distribuție cunoscută. De asemenea, se cunoaște și faptul că durata de la lansarea
comenzii pâmă la sosirea produselor este o variabila aleatoare, deoarece în funcție de
numărul de produse cerute, timpul de distibuție diferă.
Orizontul simulării pentru care s-a stabilit urmărirea cererii este de 30 de zile .
3

Aprovizionarea

În urma analizei procesului de aprovizionare s-au stabilit urmatoarele detalii:


Cost de achiziție=8lei/produs

Costul de lansare=15 lei/comandă

Costul de stocare=3lei/produs/zi

Costul de penalizare=5lei/produs/zi

Cererile ce nu pot fi satisfacute din stocul curent vor fi penalizate.

Se urmărește realizarea unui cost cât mai mic.

Orizontul de simulare este de 30 de zile.

Comanda de reaprovizionare se face în momentul în care pe stoc mai ramane un


anumit număr de produse.

Stocul inițial=50 produse

Comanda se plasează chiar din prima zi.

Produse comandate: 70
4

Identificăm variabilele aleatoare și valorile acestora:

Pregătirea simulării
Pentru a putea realiza simularea avem nevoie să generăm un șir de numere
pseudoaleatoare.
Vom calcula intervalele atât de la cerere cat și de la durata de lansare a comenzii
pentru a încadra numerele pseudoaleatoare și a stabili care sunt valorile optime pentru
fiecare.
Fiecare variabilă aleatoare are propriul șir de numere peseudoaleatoare.
5

Simularea propriu-zisă
Strategia prezentată mai sus a fost implementată în limbajul de programare C++, în
vederea obținerii unor rezultate representative.
Pentru că în limbajul de programare variabilele nu pot fi descrise pe larg, este necesară o
codificare a acestora, astfel variabilele folosite în implementarea programului sunt
următoarele :

nr_lans = numărul de timpi de la lansarea comenzii pana la sosirea acesteia.

t[100] = vectorul valorilor timpilor de la lansarea comenzii pana la sosirea acesteia

cant_s = cantitatea de substanță cerută pe zi

d[100] = vectorul valorilor cererii

pd[100], pt[100] = vectorii probabilităților asociate valorilor discrete ale celor două
variabile.

total_c = total produse ce sunt comandate când se lansează o comandă

aprov = perioada de timp la care se face aprovizionarea

ca, cs, cp, cl = costurile de achiziție, de stocare,de penalizare și de lansare comandă


stoc_i = stocul inițial

m = numărul de simulări care se dorește a fi efectuate

n = orizontul de timp simulat, în cazul nostru 30 de zile

ct = costul total pe o zi din orizontul de calcul

ctm = costul total mediu.

6
Rezultate din consola Visual
studio 2017
7
Rezultate daca aprovizionarea se face la 3 zile:

Rezultate daca aprovizionarea se face la 5 zile:

Rezultate daca aprovizionarea de face la 7 zile:

Dupa 1000 de simulări, observăm că a 3-a variantă este cea mai benefică, deoarece are cel ma
mic cost mediu si totodata cel mai mic cost minim.
Consider ca, managerul trebuie să adopte o politică prin care aprovizionearea sa se faca o
dată la 7 zile pentru a reduce costurile si a maximiza profitul.

Cod
#include<stdlib.h>
#include<stdio.h>
#include<math.h>
double aleator()
{ 8
return (rand()%100);
}
int main()
{
long m;
int nr_lans, cant_s,stoc_i;
int t[100],d[100],total_c,aprov,n;
float pd[100], pt[100],ca, cs, cp,cl;
int i,j,s,r,demand,time,save_time,q;
float v_ca,v_cs,v_cl, v_cp,ct,ctm,minim;
double r1,r2;
/* nr_lans=timp de lansare
t=vector timpi de lansare
cant_s=cantitate ceruta/zi
d=cererea
pd,pt= probabilitati,
aprov per aproviz,
ca,cs,cp,cs= costurile de productie,
m=nr simulari,
n=timp
ct=cost total pe zi,
ctm=mediu */
printf("Nr simulari: ");
scanf("%d",&m);
printf("Nr de cereri: ");
scanf("%d",&cant_s);
printf("Nr de timpi de lansare: ");
scanf("%d",&nr_lans);
printf("Cost de achizitie: ");
scanf("%f",&ca);
printf("Cost de stocare: ");
scanf("%f",&cs);
printf("Cost de penalizare: ");
scanf("%f",&cp);
printf("Cost de lansare comanda: ");
scanf("%f",&cl);
printf("Stoc initial: ");
scanf("%d",&stoc_i);
printf("Nr de produse comandate: ");
scanf("%d",&total_c);
printf("Perioada de simulare(nr zile!): ");
scanf("%d",&n);
printf("Perioada de timp la care se face aprovizionarea: ");
scanf("%d",&aprov);
for(i=0;i<cant_s;i++)
{
printf("\n");
printf("Cererea %d: ",i+1);
scanf("%d",&d[i]);
printf("Probabilitatea cererii %d: ",i+1);
scanf("%f",&pd[i]);
printf("\n");
}
for(i=0;i<nr_lans;i++)
{
printf("\n");
printf("Timpul de la lansare pana la sosire %d: ",i+1);
scanf("%d",&t[i]);
printf("Probabilitatea duratei comandenzii %d: ",i+1);
scanf("%f",&pt[i]);
printf("\n");
}
for(i=1;i<cant_s-1;i++)
pd[i]=pd[i]+pd[i-1];
pd[cant_s-1]=100;
for(i=1;i<nr_lans-1;i++)
pt[i]=pt[i]+pt[i-1];
pt[nr_lans-1]=100;
printf("Cantitatea ceruta este: \n");
for(i=0;i<cant_s;i++)
printf("%d %f\n",d[i],pd[i]);
printf("\n");
printf("Probabilitatea cererii: \n");
for(i=0;i<nr_lans;i++)
printf("%d %f\n",t[i],pt[i]);
ctm=0;
for(i=0;i<m;i++)
{ s=stoc_i; ct=0;
for(r=1;r<n;r++)
{
r1=aleator();
for(j=0;j<cant_s;j++)
if(r1< pd[0]) demand=d[0];
else
if(r1>=pd[j]&&r1<pd[j+1])
demand=d[j+1];
if(s>demand)
{
v_cs=cs;
ct=ct+v_cs*s;
v_cp=0;
s=s-demand;
}
else{
v_cp=cp;
v_cs=cs;
ct=ct+s*v_cs+(demand-s)*v_cp;
s=0;
}
r2=aleator();
for(j=0;j<nr_lans;j++)
if(r2<pt[0]) time=t[0];
else if(r2>=pt[j]&&r2<pt[j+1])
time=t[j+1];
if(r%aprov==0)
{
v_ca=ca;
v_cl=cl;
ct=ct+total_c*v_ca+v_cl;
save_time=r;
}
else
{ v_cl=0;
v_ca=0;
}
if(r==save_time+time)
s=s+total_c;
printf("\n");
if(i==0)
{
printf("Ziua: %d", r);
printf("Stoc: %3f", s);
printf("Numarul aleator stoc: %3f", r1);
printf("Cererea: %3f", demand);
printf("Numarul aleator cerere: %3f", r2);
printf("Numarul de zile: %3f", time);
printf("Cost total: %3f", ct);
printf("\n");
}
}
if(i==0)
minim=ct;
else
if(ct<minim)
minim=ct;
ctm=ctm+ct;
}
printf("Rezultate dupa %d simulari: \n",m);
printf("Cost total mediu (RON): %3f\n", ctm/m);
printf("Costul minimim : %3f\n", minim);
}

Bibliografie
1) Algoritmi si tehnici de programare. Aplicatii -Cristian Razvan Uscatu, Catalina-Lucia
Cocianu, Marinela Mircea, Lorena Pocatilu -2015
2) http://www.biblioteca-digitala.ase.ro/biblioteca/carte2.asp?id=83&idb
3) https://www.nivea.com.au/advice/ingredients/provitamin-b5

12

S-ar putea să vă placă și