Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MTZ-Yatsyshyn.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
2.34 Mб
Скачать
  1. Норма ризику

Обчислення проводяться за формулою

Порядок Альтернатива

Вибір1

Вибір 2

Вибір3

Вибір 4

макс

1

3,11

1,66

0,66

0,92

3,11

2

1,65

3,51

0,78

2,57

3,51

3

0,60

0,78

1,87

1,65

1,87

 

Матриця ризиків

 

 

 

Порядок Альтернатива

Вибір1

Вибір 2

Вибір3

Вибір 4

suma

max

rai

1

0,00

1,45

2,45

2,19

6,09

6,09

1

2

1,86

0,00

2,73

0,94

5,53

 

0,908046

3

1,27

1,09

0,00

0,22

2,58

 

0,423645

3. Кутова норма корисності

Обчислення проводиться за формулою:

Порядок Альтернатива

Вибір1

Вибір 2

Вибір3

Вибір 4

1

3,11

1,66

0,66

0,92

 

 

2

1,65

3,51

0,78

2,57

 

 

3

0,60

0,78

1,87

1,65

 

 

3,11

3,51

1,87

2,57

 

 

9,67

12,32

3,50

6,60

32,09

5,67

Порядок Альтернатива

Вибір1

Вибір 2

Вибір3

Вибір 4

чисельник

1

9,67

5,83

1,23

2,36

19,10

2

5,13

12,32

1,46

6,60

25,52

3

1,87

2,74

3,50

4,24

12,34

Виконання:

На основі описаних алгоритмів створено програмний продукт:

#pragma endregion

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {

double a[4],b[4],c[4],M,s[3];

double f(double h[],int n);

int i;

s[0]=0;

s[1]=0;

s[2]=0;

a[0]=Convert::ToDouble(textBox2->Text);

a[1]=Convert::ToDouble(textBox3->Text);

a[2]=Convert::ToDouble(textBox4->Text);

a[3]=Convert::ToDouble(textBox5->Text);

b[0]=Convert::ToDouble(textBox8->Text);

b[1]=Convert::ToDouble(textBox9->Text);

b[2]=Convert::ToDouble(textBox10->Text);

b[3]=Convert::ToDouble(textBox11->Text);

c[0]=Convert::ToDouble(textBox14->Text);

c[1]=Convert::ToDouble(textBox15->Text);

c[2]=Convert::ToDouble(textBox16->Text);

c[3]=Convert::ToDouble(textBox17->Text);

for(i=0;i<4;i++)

{

a[i]=a[i]*a[i];

b[i]=b[i]*b[i];

c[i]=c[i]*c[i];

}

for(i=0;i<4;i++)

{

s[0]=s[0]+a[i];

s[1]=s[1]+b[i];

s[2]=s[2]+c[i];

}

for(i=0;i<3;i++)

s[i]=sqrt(s[i]);

M=f(s,3);

for(i=0;i<3;i++)

s[i]=s[i]/M;

textBox6->Text=textBox6->Text+Convert::ToDouble(s[0]);

textBox12->Text=textBox12->Text+Convert::ToDouble(s[1]);

textBox18->Text=textBox18->Text+Convert::ToDouble(s[2]);

}

private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) {

double a[4],b[4],c[4],M,k[3],s[3];

double f(double h[],int n);

int i;

a[0]=Convert::ToDouble(textBox2->Text);

a[1]=Convert::ToDouble(textBox3->Text);

a[2]=Convert::ToDouble(textBox4->Text);

a[3]=Convert::ToDouble(textBox5->Text);

b[0]=Convert::ToDouble(textBox8->Text);

b[1]=Convert::ToDouble(textBox9->Text);

b[2]=Convert::ToDouble(textBox10->Text);

b[3]=Convert::ToDouble(textBox11->Text);

c[0]=Convert::ToDouble(textBox14->Text);

c[1]=Convert::ToDouble(textBox15->Text);

c[2]=Convert::ToDouble(textBox16->Text);

c[3]=Convert::ToDouble(textBox17->Text);

s[0]=0;

s[1]=0;

s[2]=0;

k[0]=f(a,4);

k[1]=f(b,4);

k[2]=f(c,4);

for(i=0;i<4;i++)

{

a[i]=k[0]-a[i];

b[i]=k[1]-b[i];

c[i]=k[2]-c[i];

}

for(i=0;i<4;i++)

{

s[0]=s[0]+a[i];

s[1]=s[1]+b[i];

s[2]=s[2]+c[i];

}

M=f(s,3);

for(i=0;i<3;i++)

s[i]=s[i]/M;

textBox6->Text=textBox6->Text+Convert::ToDouble(s[0]);

textBox12->Text=textBox12->Text+Convert::ToDouble(s[1]);

textBox18->Text=textBox18->Text+Convert::ToDouble(s[2]);

}

private: System::Void button3_Click(System::Object^ sender, System::EventArgs^ e) {

double a[4],b[4],c[4],m[4],k[4],suma=0,s[3],ch[3],z[3],r[3];

double f(double h[],int n);

int i;

a[0]=Convert::ToDouble(textBox2->Text);

a[1]=Convert::ToDouble(textBox3->Text);

a[2]=Convert::ToDouble(textBox4->Text);

a[3]=Convert::ToDouble(textBox5->Text);

b[0]=Convert::ToDouble(textBox8->Text);

b[1]=Convert::ToDouble(textBox9->Text);

b[2]=Convert::ToDouble(textBox10->Text);

b[3]=Convert::ToDouble(textBox11->Text);

c[0]=Convert::ToDouble(textBox14->Text);

c[1]=Convert::ToDouble(textBox15->Text);

c[2]=Convert::ToDouble(textBox16->Text);

c[3]=Convert::ToDouble(textBox17->Text);

s[0]=0;

s[1]=0;

s[2]=0;

ch[0]=0;

ch[1]=0;

ch[2]=0;

z[0]=1;

z[1]=1;

z[2]=1;

m[0]=a[0];

m[1]=b[0];

m[2]=c[0];

k[0]=f(m,3);

m[0]=a[1];

m[1]=b[1];

m[2]=c[1];

k[1]=f(m,3);

m[0]=a[2];

m[1]=b[2];

m[2]=c[2];

k[2]=f(m,3);

m[0]=a[3];

m[1]=b[3];

m[2]=c[3];

k[3]=f(m,3);

for(i=0;i<4;i++)

m[i]=k[i];

for(i=0;i<4;i++)

k[i]=k[i]*k[i];

for(i=0;i<4;i++)

suma=suma+k[i];

suma=sqrt(suma);

for(i=0;i<4;i++)

{

a[i]=a[i]*m[i];

b[i]=b[i]*m[i];

c[i]=c[i]*m[i];

}

for(i=0;i<4;i++)

{

ch[0]=ch[0]+a[i];

ch[1]=ch[1]+b[i];

ch[2]=ch[2]+c[i];

}

for(i=0;i<4;i++)

{

a[i]=a[i]*a[i]/k[i];

b[i]=b[i]*b[i]/k[i];

c[i]=c[i]*c[i]/k[i];

}

for(i=0;i<4;i++)

{

s[0]=s[0]+a[i];

s[1]=s[1]+b[i];

s[2]=s[2]+c[i];

}

for(i=0;i<3;i++)

s[i]=sqrt(s[i]);

for(i=0;i<3;i++)

z[i]=z[i]*s[i]*suma;

for(i=0;i<3;i++)

r[i]=ch[i]/z[i];

for(i=0;i<3;i++)

r[i]=acos(r[i]);

textBox6->Text=textBox6->Text+Convert::ToDouble(r[0]);

textBox12->Text=textBox12->Text+Convert::ToDouble(r[1]);

textBox18->Text=textBox18->Text+Convert::ToDouble(r[2]);

}

private: System::Void button4_Click(System::Object^ sender, System::EventArgs^ e) {

this->Close();

}

};

}

double f(double h[],int n)

{

double max;

int i;

max=h[0];

for(i=0;i<n;i++)

{

if(h[i]>max)

max=h[i];

}

return max;

}

Результати:

Висновок: виконуючи лабораторну роботу, студент ознайомився з видами нормування прийняття рішення: норма модуля корисності, норма ризику та кутова норма корисності.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]