- •Вступ Лабораторна робота № 1-2.
- •Лабораторна робота № 3-4.
- •Лабораторна робота №5-6.
- •Короткі теоретичні відомості.
- •1. Норма модуля корисності
- •2. Норма ризику
- •3. Кутова норма корисності
- •Норма модуля корисності.
- •Норма ризику
- •3. Кутова норма корисності
- •Додаток завдання для лабораторних занять та виконання самостійної роботи
- •1. Варіанти задачі прийняття рішення
- •2. Варіанти ймовірностей задачі прийняття рішення
- •Список літератури
Норма ризику
Обчислення проводяться за формулою
Порядок Альтернатива |
Вибір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;
}
Результати:
Висновок: виконуючи лабораторну роботу, студент ознайомився з видами нормування прийняття рішення: норма модуля корисності, норма ризику та кутова норма корисності.
