Sunteți pe pagina 1din 12

MINISTERUL EDUCATIEI AL REPUBLICII MOLDOVA

Universitatea Tehnică a Moldovei

Facultatea Calculatoare,Informatică și Microelectronică

RAPORT
despre lucrarea de laborator nr. 1

Metode și modele de calcul

Tema: Luarea deciziilor în condiţii de incertitudine şi risc. Arborele decizional.

A îndeplinit: st.gr.TI-173 Roșca Florin

A controlat: Ghetmancenco Svetlana

Chisinău – 2018
Scopul lucării: De Luat decizii în condiţii de incertitudine şi risc.

Noţiuni generale.

În activitatea economică zi de zi se iau decizii, scopul cărora este de a majora profitul, de a


minimiza cheltuielile, de a preveni situații de pierderi majore și altele. În multe situații
decidentul are la dispoziție informația necesară despre factorii, ce determină decizia luată. Astfel
de situații se numesc de certitudine. De exemplu, la determinarea planului de producție a firmei
se știe câte strunguri sunt și care este capacitatea lor de producere. Dar unele situaţii de activitate
economică, decidentul activează in condiţii de incertitudine. Această incertitudine poate fi creată
atât de activitatea conştientă a concurenţilor, cât şi de factorii necunoscuţi care influenţează
asupra eficacității deciziei. Situaţia în care eficacitatea deciziei depinde de activitatea conştientă
a concurenţilor poartă denumirea de “situaţie de conflict”. Aceste situații se analizează în teoria
jocurilor (cap. 7) În cazul când incertitudinea nu este determinată de comportamentul
concurenților se spune că sunt “jocuri cu natura”. În problemele economice în calitate de
“natură” poate fi considerată cererea pe piaţă. Natura este definită prin „stările naturii” numite şi
evenimente posibile, care sunt rezultatul unei influențe, ”forţe” necunoscute, necontrolabile.
Stările naturii formează un sistem complet de evenimente. “Jocurile cu natura” sunt situaţiile
care pot fi soluţionate cu ajutorul metodelor propuse. Se evidențiază următoarele două aspecte: -
se cunosc stările naturii – se spune că se iau decizii în condiţii de incertitudine; - se cunosc stările
naturii și probabilităţile de apariţie a fiecărei stări – deciziile se iau în condiţii de risc. Fie că sunt
definite n stări ale naturii: S1, S2,…, Sn. decidentul are la dispoziţie m decizii admisibile: D1,
D2,…, Dm. Câştigul decidentului este dat de matricea consecinţelor A= , unde aij este profitul
(utilitatea) decidentului, dacă a fost aleasă decizia Di şi are loc starea naturii Sj
Mersul lucrarii

Luarea deciziilor în condiţii de incertitudine.

Pentru luarea deciziilor în condiţii de incertitudine sunt utilizate următoarele criterii:


Problema:
Rezultatele : Anexa A
Concluzie: In timpul formarii acestui program si rezolvariiscopului acestui laborator am
analizat mai multe metode de a lua deciziii favorabile pentru a obtine profit maxim,
conforma mai multor metode cum ar fi Laplace sau metoda maximizarii profitului
asteptat am dedus mai multe decizii favorabile(1-5) care sunt reprezentate in anexa A
reprezentata mai sus.
Anexa X.

//#include "pch.h" // 3 3.5 2 0.4 5 8 // 2 2.5 0 0.4 16 20 // 3 5 2 0.6 26


30
#include <iostream>
#include <iomanip>

int nr_decizii , x, y; // 'x' si 'y' - marimile matricei;


float co;
float **matrix = new float *[x];
float *arrmin = new float[nr_decizii];
float *arrmax = new float[nr_decizii];

using namespace std;

float C_optimist(int nr_decizii, int nr_stari) {

int k = 0;
float a_max;
float maximum = matrix[0][0];
float *arr = new float[nr_decizii];

for (int i = 0; i < nr_decizii; i++) {

for (int j = 0; j < nr_stari; j++) {


if (matrix[i][j] > maximum) {
maximum = matrix[i][j];
arr[i] = maximum;
}
else {

arr[i] = maximum;

}
}

cout << (" Tabloul de maxime din randurile deciziilor:") << endl;
for (k = 0; k < nr_decizii; k++)
cout << (" a") << k + 1 << (" = ") << arr[k] << (" ");

maximum = arr[0];
int decizie = 0;

for (k = 0; k < nr_decizii; k++)


if (arr[k] > maximum) {
a_max = arr[k];
decizie = k + 1;

}
else {
a_max = maximum;
decizie = 1;
}

cout << endl << " Decizia corecta va aduce profit de : " << a_max << " U.M.B,
" << endl << " iar decizia corecta este :" << decizie << endl;
for (int k = 0; k < nr_decizii; k++)
arrmax[k] = arr[k];

return 0;
}

int C_pesimist(int nr_decizii, int nr_stari) {

int k = 0;
float a_max;

float *arr = new float[nr_decizii];

float minimum = matrix[0][0];

for (int i = 0; i < nr_decizii; i++) {

minimum = matrix[i][0];

for (int j = 0; j < nr_stari; j++) {

if (matrix[i][j] < minimum) {

minimum = matrix[i][j];
arr[i] = minimum;

}
else arr[i] = minimum;

}
}

cout << (" Tabloul de minime din randurile deciziilor:") << endl;
for (k = 0; k < nr_decizii; k++)
cout << (" a") << k + 1 << (" = ") << arr[k] << (" ");

float maximum = arr[0];


int decizie = 0;

for (k = 0; k < nr_decizii; k++)


if (arr[k] > maximum) {
a_max = arr[k];
decizie = k + 1;
}
else {
a_max = maximum;
decizie = 1;
}

cout << endl << " Decizia corecta va aduce profit de : " << a_max << " U.M.B,
" << endl << " iar decizia corecta este :" << decizie << endl;

for (int k = 0; k < nr_decizii; k++)


arrmin[k] = arr[k];
return 0;
}

void C_Laplace(int nr_decizii, int nr_stari){


float *M = new float[nr_decizii];
float m;
int i,j;
for ( i = 0; i < nr_decizii; i++) {
m = 0;
for (j = 0; j < nr_decizii; j++) {
m = m + matrix[i][j];
}
M[i] = m / nr_decizii;
cout << (" ") << M[i];
}

cout << endl;


float max = 0;
for(int i = 0; i < nr_decizii; ++i)
{
if(M[i] > max)
{
max = M[i];
}
}
cout <<" MAX: "<< max << endl;

void M_Regret ( int nr_decizii){


float *maxim = new float[nr_decizii];
for(int j=0;j<nr_decizii;j++)
{
maxim[j]=matrix[0][j];
for(int i=0;i<nr_decizii;i++)
if(matrix[i][j]>maxim[j])
maxim[j]=matrix[i][j];
cout<<" Maximul coloanei "<<(j+1)<<" = "<<maxim[j]<<endl;
}
for(int j=0;j<nr_decizii;j++)
{
for(int i=0;i<nr_decizii;i++)
matrix[i][j] = maxim[j] - matrix[i][j];
}
cout << endl;
for(int i=0;i<nr_decizii;i++) {
for(int j=0;j<nr_decizii;j++)
cout<<" "<<matrix[i][j]<<' ';
cout<<endl;
}
}

void C_Hurwics(int nr_decizii){


float *A = new float[nr_decizii];
for (int k = 0; k < nr_decizii; k++) {
A[k] = co * arrmax[k] + (1 - co) * arrmin[k];
}

for (int k = 0; k < nr_decizii; k++)


cout << (" ") << A[k];
cout << endl;
}

void C_matrix(float a,float pv,float pe,float pc){

for (int i = 0; i < x; i++)


matrix[i] = new float[y];

int D = a, S = a,c;
float m;
for (int i = 0; i < x; i++) {
cout << endl;
S = a;
c = D - S;
for (int j = 0; j < y;)
{
m = ((S*pv) + (c*pe)) - (D*pc);
matrix[i][j] = m;
cout << " " << matrix[i][j];
j++;
if (i < j) {
for (; j < y; j++) {
matrix[i][j] = m;
cout << " " << matrix[i][j];
}
}
S = S + 1;
if (i > j)
c = D - S;
else
c = S - D;

}
D = D + 1;

}
}

void C_MPA(int n){


int **TS = new int *[2];
for (int i = 0; i < n; i++)
TS[i] = new int[n+1];
cout << endl;
cout << " Introducdeti tabelul statistic :";
cout << endl;

int m , i, j;
m=2;
int q;
//citirea elementelor matricei
for(i=0;i<m;i++){
for(j=0;j<n+1;j++)
{
cout<<" TS["<<i<<"]["<<j<<"]=";
cin>>q;
TS[i][j]=q;
}
}
cout << endl;
cout<<"Elementele matricei sunt:"<<endl;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
cout<<" "<<TS[i][j]<<" ";
cout<<endl;
}

///////////////////////////////////////////////////

int main(int argc, char* argv[])


{
float pc, pv, pe;//pc - pret cumparare, pv - pret vinzare ,co -coeficientul de
optimism,pe-pretul mei eftin de vinzare;
int a, b, c = 0, dif;

cout << " pret cumparare = "; cin >> pc; cout << endl;
cout << " pret vinzare = "; cin >> pv; cout << endl;
cout << " pret extrem = "; cin >> pe; cout << endl;

cout << " coeficientul de optimism = "; cin >> co; cout << endl;
cout << " bucati vindute : de la = "; cin >> a; cout << endl;
cout << " bucati vindute : pina la = "; cin >> b; cout << endl;

dif = (b - a) + 1;
x = dif;
y = dif;
cout << endl;
nr_decizii = dif;
int nr_stari = dif;

cout << " Matricea Consecintelor : "<< endl;


C_matrix(a,pv,pe,pc);
cout << endl;

cout << endl;


cout << " CRITERIUL MAXI-MAX" << endl;
C_optimist(nr_decizii, nr_stari); cout << endl;

cout << " CRITERIUL OLD" << endl;


C_pesimist(nr_decizii, nr_stari); cout << endl;

cout << " CRITERIUL HURWICS" << endl;


C_Hurwics(nr_decizii);
cout << endl;

cout << " CRITERIUL LAPLACE" << endl;


C_Laplace(nr_decizii,nr_stari);
cout << endl;

cout << " METODA REGRETELOR" << endl;


M_Regret (nr_decizii);
cout << endl;

cout << " CRITERIUL MAXIMIZARII PROFITULUI ASTEPTAT " << endl;
C_MPA(x);
cout << endl;

return 0;
}