Использование "дерева" решений в многоэтапных задачах принятия решений
Правила принятия решений с использованием численных значений вероятностей. Зависимость решения от изменений значения вероятности. Стоимость достоверной информации. Математическое ожидание и стандартное отклонение для оценки риска, дерево решений.
Рубрика | Экономико-математическое моделирование |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 19.10.2015 |
Размер файла | 244,6 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Ожидаемый чистый доход составит 5.419 млн. ф. ст. Окончательный вариант “дерева” для примера 9 приведен на рис 8.
3. Чувствительность решения. Ожидаемые чистые доходы в “узлах” А и В почти одинаковы: 5.419 и 5.375 млн. ф. ст. Выбор решения зависит от значения вероятности. А анализ чувствительности позволяет вычислить “разброс” вероятностей, которые меняют выбор.
Размещено на http://www.allbest.ru/
Рис. 8. Окончательное “Дерево” решений для примера 9.
В данном случае рассмотрим только вероятность безопасности производственного процесса, однако, на математические ожидания повлияло бы также наличие и функционирование ККС. Полный анализ чувствительности включает рассмотрение обоих вопросов. Обозначим вероятность безопасности производственного процесса через р. На данный момент р = 0.55.
Ожидаемый чистый доход в “узле” А равен:
10Чр+5.375Ч(1-р)-2.5=4.625р+2.875 млн. ф. ст.
Ожидаемый чистый доход в “узле” В равен:
10Чр+(10Ч0.75+(0Ч0.25)Ч(1-р)-3.5=2.5р+4.0 млн. ф. ст.
4.625р+2.875=2.5р+4.0
2.125р=1.125
р=0.529
Следовательно, если вероятность безопасности производственного процесса равна 0.529, то оба альтернативных решения принесут одинаковый ожидаемый чистый доход. Если вероятность меньше 0.529, то решение начать разработку процесса и ККС незамедлительно принесет больший ожидаемый чистый доход, т.е. первоначальное решение будет заменено на альтернативное.
Так как значение р=0.529 очень близко к р=0.55, выбор решения очень чувствителен к расчетам величины вероятности, и малейшая ошибка может привести смене выбора, что доказывает важность анализа чувствительности в процессе принятия решений.
Заключение
В процессе принятия решение необходимо придерживаться следующей последовательности:
1. Определить все возможные в данной ситуации варианты решения.
2. Для каждого из них определить его возможные исходы.
3. Для каждого решения и его исходов подсчитать возможный исход.
Наиболее удобная форма представлений этих этапов - таблица доходов. Принимающий решение должен выбрать правило принятия решений, которое больше всего подходит к данной ситуации. Выбранное правило и определит выбор решения.
В некоторых правилах принятия решений значения вероятностей не используется. Например, правило максимакса (для игроков) и правило максимина (для осторожных) оперируют возможными доходами, а правило минимакса используют понятие возможных потерь (или упущенных доход). В более более сложных правилах принятия решений используется вероятность для подсчета ожидаемого дохода или ожидаемых возможных потерь для каждого решения. В таких ситуациях важно проверять чувствительность правил к изменениям вероятностей исходов. Наличие дополнительной информации может привести к выбору наилучшего решения. “Стоимость достоверной информации” - это максимальная сумма денег, которую стоит заплатить за дополнительную информацию.
Правила, рассматривающиеся до сих пор, не учитывали разницу приносимых ими доходах, а также отношение принимающее решение к риску. Для того чтобы показать, как различаются результаты разных решений, используются стандартные отклонение доходов. Отношение к риску выражается полезностью, которая присваивается доходам. Ожидаемая полезность основывается на этих оценках и их вероятностях. Оценки полезности в этих правилах заменяют собой доходы. Обычно на практике одно решение влечет за собой другие, а для иллюстрации этой последовательности используется “дерево” решений, которое состоит из “ветвей” и “узлов” - квадратов и кружков - решений и соответствующих им исходов. В той же последовательности, которой таблица доходов иллюстрирует единственное решение, “дерево” показывает множество решений и их исходов. Численные значения доходов (исходов) просчитываются, начиная с конца “ветвей”, постепенно приближается к исходному вопросу. Таким образом выявляется та последовательность решений, которой нужно придерживаться. Для выявления чувствительности решений по отношению к изменениям вероятности используется анализ чувствительности.
Библиография
1. “Методы принятия решений” М. Эддоус, Р. Стэнфилд
2. “Введение в исследование операций” том I. Таха
3. “Исследование операций” (учебное пособие) Гамецкий А.Ф., Слободенюк В.А., Спиридонова Г.В.
4. http://superidea.ru/tm/book/tomw13.htm “Анатомия выбора”
5. http://www.ptpu.ru/Issues/4_99/17_4_99.htm “Менеджмент и маркетинг”
6. http://lib.vvsu.ru/books/Bakalavr02/page0111.asp “Принятие решений”
7. http://www.mstu.edu.ru/publish/conf/11ntk/section9/section9_30.html “ПРИНЯТИЕ УПРАВЛЕНЧЕСКИХ РЕШЕНИЙ В УСЛОВИЯХ НЕСТАБИЛЬНОСТИ”
8. http://www.mos.ru/~boris/sys.htm “Основы теории принятия решений”
9. http://www.karelia.ru/psu/Faculties/Forest/courses/decision/chap1_a.htm “Методологические основы теории принятия решений”
10. http://www.libertarium.ru/old/eldoc/critprresh.html “КРИТЕРИИ ПРИНЯТИЯ РЕШЕНИЙ”
11.http://www.examen.ru/db/ExamineBase/catdoc_id/4E3DEA22A30EFB76C3256A5F002DC6E2/rootid/9327995FB7A6D40FC3256A02002CE0D5/defacto.html “Модели и методы принятия решений”
12. http://www.lipetsk.ru/~wwwlgpi/files/decision.pdf “Введение в математические методы принятия решений”
Приложение
//***[ Author : Smelov Andrei (SmeL)]*************************
//***privedena osnovnaia ciasti algoritma programmy***********
//***MathDecision v1.0 na priniatia reshenii******************
#include<process.h>
#pragma hdrstop
#include <stdio.h>
#include "main.h"
#include "about.h"
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//***peremennye***********************************************
AnsiString of;
AnsiString sf="answer.txt";
FILE *oFile;
FILE *sFile;
double m1[100][100];
double m2[100][100];
double vektor[100];
double vrem;
int MAX=1;
int ivek;
int kolvo_x;
int kolvo_s;
//***deklarathyia functhyu************************************
AnsiString topik(int x);
double koneth(double ii);
double vvodZnach(int ii,double iii);
double rodnia(int j,int ii);
int printMinMax(int j, char *str);
void cok(int i);
void popravka(int ii);
void inFath(int ii);
void peciati(int x, int s);
void zanuliti(void);
void cheku(void);
//***funkthyia zanulenie matrith******************************
void zanuliti()
{
for (int i=0;i<kolvo_x+3;i++)
{vektor[i]=0;
for(int j=0;j<kolvo_s+3;j++)
m1[i][j]=m2[i][j]=0;
}
kolvo_s=kolvo_x=ivek=vrem=0;
}
//***funkthyia vyvoda v fail rezulitatov**********************
void peciati(int x, int s, int p)
{sFile = fopen(sf.c_str(),"a");
fprintf(sFile,"\n%s\n",topik(p));
for(int i=0;i<x;i++)
{for(int j=0;j<s;j++)
fprintf(sFile,"%13.3lf",m1[i][j]);
fprintf(sFile,"\n");
}
fclose(sFile);
}
//***funkthyia vvoda rezulitata v []**************************
void inFath(int ii)
{
double sr;
int mm;
if(MAX==1)
{sr=-9999999999999;
for(int i=kolvo_x;i>0;i--)
if(m1[i][kolvo_s+1]==m1[ii][0])
if(m1[i][kolvo_s]>sr)
{sr=m1[i][kolvo_s];
mm=m1[i][0];}
m1[ii][kolvo_s]=sr;
m1[ii][kolvo_s+2]=mm;
};
if(MAX==-1){
sr=9999999999999;
for(int i=kolvo_x;i>0;i--)
if(m1[i][kolvo_s+1]==m1[ii][0])
if(m1[i][kolvo_s]<sr)
{sr=m1[i][kolvo_s];
mm=m1[i][0];}
m1[ii][kolvo_s]=sr;
m1[ii][kolvo_s+2]=mm;
}
popravka(ii);
}
//***funkthyia dlia uceta rezulitiruiushih vetok**************
void popravka(int ii)
{
int iii=ii;
int iv=m1[ii][1];
for(int i=0;i<kolvo_x;i++)
if(iv==m1[i][1] && ii!=i && iii>0 && m1[i][kolvo_s]!=0)
{iv=m1[i][0];
m1[i][kolvo_s+1]=0;
ii=i;
i=0;
}
if(ii!=iii)
m1[iii][kolvo_s]+=m1[ii][kolvo_s];
}
//***funkthyia vozvrata kontha********************************
double koneth(double ii)
{
for(int i=ii;i<kolvo_x;i++)
if(m1[int(ii)][0]==m2[i][1])
{
ii=i;
m2[i][1]=-1.2;
}
return ii;
}
//***funkthyia vozvrata znacenia otha*************************
double vvodZnach(int ii,double iii)
{
iii=kolvo_x;
int ret=ii;
for(int i=ii;i<iii;i++)
for(int j=ii;j<iii;j++)
if(m1[i][0]==m1[j][1] && m1[j][kolvo_s+3]!=-1 && i!=j)
{ m1[j][kolvo_s]+=m1[i][kolvo_s];
m1[j][kolvo_s+3]=rodnia(j,ii);
}
inFath(ret);
return ret;
}
//***funkthyia vernet 0 esli on syn dannago otha inace -1*****
double rodnia(int j,int ii)
{
int chek=m1[j][1];
for (int i=j;j>=0;j--)
for (int jj=kolvo_x;jj>0;jj--)
if(chek==m1[jj][0])
{chek=m1[jj][1];
if(m1[jj][0]==m1[ii][0])
return -1;}
return 0;
}
//***znacenie topika******************************************
AnsiString topik(int x)
{
if(x==0) return(" ");
if(x==1) return(" Исходные данные "+of);
if(x==2) return(" "+ExtractFileName(of)+" -> "+ExtractFileName(sf));
}
//***funkthyia dli proverki uslovia zadaci********************
void cheku()
{
if(MAX==1) Form1->N19->Checked=true;
else Form1->N20->Checked=true;
if(Form1->ComboBox1->Text=="определенности")
{Form1->N14->Checked=true;
Form1->RadioButton1->Enabled=false;
Form1->RadioButton2->Enabled=false;
Form1->StaticText1->Enabled=false;
Form1->N18->Enabled=false;
}
else{Form1->N14->Checked=false;}
if(Form1->ComboBox1->Text=="риска")
{Form1->N18->Enabled=true;
Form1->N16->Checked=true;
Form1->MaskEdit1->Enabled=false;
Form1->BitBtn1->Enabled=false;
Form1->RadioButton1->Enabled=true;
Form1->RadioButton2->Enabled=true;
Form1->StaticText1->Enabled=true;}
else{Form1->N16->Checked=false;}
if(Form1->ComboBox1->Text=="неопределенности")
{Form1->N18->Enabled=true;
Form1->N15->Checked=true;
Form1->N5->Enabled=true;
Form1->CheckBox5->Enabled=true;
Form1->CheckBox1->Checked=false;
Form1->CheckBox2->Checked=false;
Form1->CheckBox3->Checked=false;
Form1->CheckBox4->Checked=false;
Form1->RadioButton1->Enabled=true;
Form1->RadioButton2->Enabled=true;
Form1->StaticText1->Enabled=true;
}
else
{Form1->N15->Checked=false;
Form1->N5->Enabled=false;
Form1->CheckBox1->Enabled=false;
Form1->CheckBox2->Enabled=false;
Form1->CheckBox3->Enabled=false;
Form1->CheckBox4->Enabled=false;
Form1->CheckBox5->Enabled=false;
Form1->StaticText2->Enabled=false;
Form1->MaskEdit1->Enabled=false;
Form1->BitBtn1->Enabled=false;
}
}
//***funkthyia sokrashenia stroki razreshaiushego elimenta****
void cok(int i)
{
vrem=m1[i][i];
for(int j=0;j<kolvo_s;j++)
m1[i][j]/=vrem;
}
//***funkthyia peciati i vozvrata prinimaemago uslovia********
int printMinMax(int j, char *str)
{int pozith=0;
if(MAX==1)
{ fprintf(sFile,"\n %smax{%.3lf",str, m1[0][j]);
vrem=m1[0][j];
for (int i=1;i<kolvo_x;i++)
{fprintf(sFile,",%9.3lf",m1[i][j]);
if(vrem<m1[i][j])
{vrem=m1[i][j];
pozith=i;
}
}
fprintf(sFile,"} = %.3lf",vrem);
}
else
{ fprintf(sFile,"\n %smin{%.3lf",str, m1[0][j]);
vrem=m1[0][j];
for (int i=1;i<kolvo_x;i++)
{fprintf(sFile,",%9.3lf",m1[i][j]);
if(vrem>m1[i][j])
{vrem=m1[i][j];
pozith=i;
}
}
fprintf(sFile,"} = %.3lf",vrem);
}
return pozith+1;
}
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
void __fastcall TForm1::ToolButton1Click(TObject *Sender)
{
if(OpenDialog1->Execute())
{ of = (OpenDialog1->FileName);
oFile = fopen(of.c_str(),"r");
}
if(of!="")
{Form1->Caption=topik(2);
Form1->ToolButton3->Enabled=true;
Form1->run1->Enabled=true;
}
}
void __fastcall TForm1::ToolButton2Click(TObject *Sender)
{
SaveDialog1->Options << ofFileMustExist;
if(SaveDialog1->Execute())
{ sf = (SaveDialog1->FileName);
if (ExtractFileExt(sf)!=".txt" & SaveDialog1->FilterIndex==1)
sf=sf+".txt";
}
Form1->Caption=topik(2);
}
void __fastcall TForm1::ToolButton3Click(TObject *Sender)
{
oFile = fopen(of.c_str(),"r");
fscanf(oFile,"%d",&kolvo_x);
fscanf(oFile,"%d",&kolvo_s);
for(int i=0;i<kolvo_x;i++)
for(int j=0;j<kolvo_s;j++)
fscanf(oFile,"%lf",&m1[i][j]);
fclose(oFile);
if(Form1->ComboBox1->Text=="неопределенности")
{
if(Form1->CheckBox5->Checked==true)
{
//***vycislili pribyli*************************************
for(int i=0;i<kolvo_x;i++)
{for(int j=2;j<kolvo_s-2;)
{vrem=m1[i][j]*m1[i][j+1];
m1[i][kolvo_s]+=vrem;
j+=2;
}
m1[i][kolvo_s]-=m1[i][kolvo_s-1];
}
//***nahodim vershiny s priniatiem reshenii****************
for(int i=0;i<kolvo_x;i++)
if(m1[i][kolvo_s]==0)
{
vektor[ivek]=i;
ivek++;
}
ivek--;
//***nahojdenie konthevyh rezulitatov na vetkah************
//***kopiruem vershiny*************************************
for(int i=0;i<kolvo_x;i++)
for(int j=0;j<2;j++)
m2[i][j]=m1[i][j];
//***nahojdenie konthov************************************
for(int i=ivek;i>=0;)
{
vrem=koneth(vektor[i]);
if(vektor[i]==vrem)
{
m1[int(vrem)][kolvo_s+1]=m1[int(vektor[i-1])][0];
i--;
}else
{
m1[int(vrem)][kolvo_s+1]=m1[int(vektor[i])][0];
}
}
//***akkumuliathyia vetok**********************************
vrem=kolvo_x;
for(int j=ivek;j>=0;j--)
{
vrem=vvodZnach(int(vektor[j]),vrem);
}
sFile = fopen(sf.c_str(),"a");
fprintf(sFile,"\n[%s ]\n",topik(1));
fprintf(sFile,"[ Условие задачи ]");
fprintf(sFile,"\n__________сын|_________отец|");
for(int j=0, i=1;j<kolvo_s-3;i++)
{
fprintf(sFile,"______вероят%d|",i);
fprintf(sFile,"______фактор%d|",i);
j+=2;
}
fprintf(sFile,"______фактор%d|\n",kolvo_s/2);
for(int i=0;i<kolvo_x;i++)
{for(int j=0;j<kolvo_s;j++)
fprintf(sFile,"%13.3lf|",m1[i][j]);
fprintf(sFile,"\n");
}
fprintf(sFile,"Задача на принятие решения в условии неопределенности, задача на ");
if(MAX==1)
fprintf(sFile,"максимум.");
else
fprintf(sFile,"минимум.");
fprintf(sFile,"\n Значением оптимальным решением является %.3lf ",m1[0][kolvo_s]);
fprintf(sFile,"\n Путь решения [%.0lf] -> -> ",m1[0][0]);
vrem=m1[0][kolvo_s+2];
for(int i=0;i<kolvo_x;i++)
if(m1[i][0]==vrem)
if(m1[i][kolvo_s+2]!=0)
vrem=m1[i][kolvo_s+2];
fprintf(sFile,"(%.0lf).",vrem);
}else //else dlia otkliucennogo dereva
{
//***nahodim min max po iksam********************************
for(int i=0;i<kolvo_x;i++)
{m1[i][kolvo_s]=m1[i][0];
m1[i][kolvo_s+1]=m1[i][0];
for(int j=0;j<kolvo_s;j++)
{
m1[i][kolvo_s]=(m1[i][kolvo_s]<m1[i][j]?m1[i][kolvo_s]:m1[i][j]);
m1[i][kolvo_s+1]=(m1[i][kolvo_s+1]>m1[i][j]?m1[i][kolvo_s+1]:m1[i][j]);
}
}
//***nahodim max po igrikam*********************************
for(int j=0;j<kolvo_s;j++)
{m1[kolvo_x][j]=m1[j][0];
m1[kolvo_x+1][j]=m1[j][0];
for(int i=0;i<kolvo_x;i++)
{ m1[kolvo_x][j]=(m1[kolvo_x][j]>m1[i][j]?m1[kolvo_x][j]:m1[i][j]);
m1[kolvo_x+1][j]=(m1[kolvo_x+1][j]<m1[i][j]?m1[kolvo_x+1][j]:m1[i][j]);
}
}
//***uje gotova matritha s min max*************************
//zapolniaem matrithy sojalenii****************************
for(int j=0;j<kolvo_s;j++)
for(int i=0;i<kolvo_x;i++)
m2[i][j]=m1[i][j]-m1[kolvo_x][j];
//***vvod minimuma v matruthy sojalenii********************
for(int i=0;i<kolvo_x;i++)
{m2[i][kolvo_s]=m2[i][0];
for(int j=0;j<kolvo_s;j++)
m2[i][kolvo_s]=(m2[i][kolvo_s]<m2[i][j]?m2[i][kolvo_s]:m2[i][j]);
}
sFile = fopen(sf.c_str(),"a");
fprintf(sFile,"\n[%s ]\n",topik(1));
fprintf(sFile,"[ Условие задачи ]");
fprintf(sFile,"\n x\\y");
for(int j=0;j<kolvo_s;j++)
fprintf(sFile,"________y%d|",j+1);
for(int i=0;i<kolvo_x;i++)
{fprintf(sFile,"\n x%d|",i+1);
for(int j=0;j<kolvo_s;j++)
fprintf(sFile,"%10.2lf|",m1[i][j]);
}
fprintf(sFile,"\nЗадача на принятие решения в условии неопределенности.");
//***kriterii valida******************************************
int pozith=0;
if(Form1->CheckBox1->Checked==true)
{
fprintf(sFile,"\n[ Критерий Вальда ]");
if(MAX==1)
{fprintf(sFile,"\n maxXminY Uij = max{%.3lf",m1[0][kolvo_s]);
vrem=m1[0][kolvo_s];
for (int i=1;i<kolvo_x;i++)
{fprintf(sFile,",%9.3lf",m1[i][kolvo_s]);
if(vrem<m1[i][kolvo_s])
{vrem=m1[i][kolvo_s];
pozith=i;
}
}
fprintf(sFile,"} = %.3lf",vrem);
}else
{fprintf(sFile,"\n minXmaxY Uij = min{%.3lf",m1[0][kolvo_s+1]);
vrem=m1[0][kolvo_s+1];
for (int i=1;i<kolvo_x;i++)
{fprintf(sFile,",%9.3lf",m1[i][kolvo_s+1]);
if(vrem>m1[i][kolvo_s+1])
{vrem=m1[i][kolvo_s+1];
pozith=i;
}
}
fprintf(sFile,"} = %.3lf",vrem);}
fprintf(sFile,"\n Согласно критерию Вальда следует предусмотреть принятие решения x%d.",pozith+1);
};
//***kriterii sevidja*****************************************
if(Form1->CheckBox2->Checked==true)
{
fprintf(sFile,"\n[ Критерий Сэвиджа ]");
if(MAX==1)
{fprintf(sFile,"\n maxXminY Uij = max{%.3lf",m2[0][kolvo_s]);
vrem=m2[0][kolvo_s];
for (int i=1;i<kolvo_x;i++)
{fprintf(sFile,",%9.3lf",m2[i][kolvo_s]);
if(vrem<m2[i][kolvo_s])
{vrem=m2[i][kolvo_s];
pozith=i;
}
}
fprintf(sFile,"} = %.3lf",vrem);
}else
{fprintf(sFile,"\n maxXminY Uij = min{%.3lf",m2[0][kolvo_s]);
vrem=m2[0][kolvo_s];
for (int i=1;i<kolvo_x;i++)
{fprintf(sFile,",%9.3lf",m2[i][kolvo_s]);
if(vrem>m2[i][kolvo_s])
{vrem=m2[i][kolvo_s];
pozith=i;
}
}
fprintf(sFile,"} = %.3lf",vrem);}
fprintf(sFile,"\n Согласно критерию Сэвиджа следует предусмотреть принятие решения x%d.",pozith+1);
};
//***kriterii laplasa*****************************************
if(Form1->CheckBox3->Checked==true)
{
for(int i=0;i<kolvo_x;i++)
for(int j=0;j<kolvo_s;j++)
m1[i][kolvo_s+2]+=m1[i][j]/kolvo_s;
fprintf(sFile,"\n[ Критерий Лапласа ]");
fprintf(sFile,"\n P{Q=Qj}=1/%d ",kolvo_s);
fprintf(sFile,"\n Согласно критерию Лапласа следует предусмотреть принятие решения x%d.",printMinMax(kolvo_s+2, ""));
}
//***kriterii Гурвица*****************************************
if(Form1->CheckBox4->Checked==true)
{
double gr=StrToFloat(Form1->MaskEdit1->Text);
fprintf(sFile,"\n[ Критерий Гурвица ]");
for(int i=0;i<kolvo_x;i++)
m1[i][kolvo_s+3]=m1[i][kolvo_s]*(1.0-gr)+m1[i][kolvo_s+1]*gr;
fprintf(sFile,"\n Показатель оптимизма P=%.2lf",gr);
fprintf(sFile,"\n Согласно критерию Гурвица следует предусмотреть принятие решения x%d.",printMinMax(kolvo_s+3, ""));
}
fclose(sFile);
}
}
if(Form1->ComboBox1->Text=="риска")
{ sFile = fopen(sf.c_str(),"a");
fprintf(sFile,"\n[%s ]\n",topik(1));
fprintf(sFile,"[ Условие задачи ]");
fprintf(sFile,"\n ___|");
for(int j=0,i=1 ;j<kolvo_s;i++)
{
fprintf(sFile,"________x%d|",i);
fprintf(sFile,"________p%d|",i);
j+=2;
}
for(int i=0;i<kolvo_x;i++)
{fprintf(sFile,"\n y%d|",i+1);
for(int j=0;j<kolvo_s;j++)
fprintf(sFile,"%10.2lf|",m1[i][j]);
}
for(int i=0;i<kolvo_x;i++)
for(int j=0;j<kolvo_s;)
{m1[i][kolvo_s]+=m1[i][j]*m1[i][j+1];
j+=2;}
int pozith=0;
fprintf(sFile,"\nЗадача на принятие решения в условии риска, задача на ");
if(MAX==1)
{ fprintf(sFile,"максимум.");
fprintf(sFile,"\n maxMi = max{%.3lf",m1[0][kolvo_s]);
vrem=m1[0][kolvo_s];
for (int i=1;i<kolvo_x;i++)
{fprintf(sFile,",%9.3lf",m1[i][kolvo_s]);
if(vrem<m1[i][kolvo_s])
{vrem=m1[i][kolvo_s];
pozith=i;
}
}
fprintf(sFile,"} = %.3lf",vrem);
fprintf(sFile,"\n Cледует предусмотреть принятие решения y%d.",pozith+1);
}
else
{fprintf(sFile,"минимум.");
fprintf(sFile,"\n minMi = min{%.3lf",m1[0][kolvo_s]);
vrem=m1[0][kolvo_s];
for (int i=1;i<kolvo_x;i++)
{fprintf(sFile,",%9.3lf",m1[i][kolvo_s]);
if(vrem>m1[i][kolvo_s])
{vrem=m1[i][kolvo_s];
pozith=i;
}
}
fprintf(sFile,"} = %.3lf",vrem);
fprintf(sFile,"\n Cледует предусмотреть принятие решения y%d.",pozith+1);
}
}
if(Form1->ComboBox1->Text=="определенности")
{
sFile = fopen(sf.c_str(),"a");
fprintf(sFile,"\n[%s ]\n",topik(1));
fprintf(sFile,"[ Условие задачи ]\n ");
for(int i=0;i<kolvo_x-1;i++)
{for(int j=0;j<kolvo_s;j++)
{ if(m1[i][j]>0 && j<kolvo_s-1 && j!=0) fprintf(sFile,"+");
if(j==kolvo_s-1) fprintf(sFile,"=");
if(m1[i][j]!=0)
{fprintf(sFile,"%.2lf",m1[i][j]);
if(j<kolvo_s-1)
fprintf(sFile,"x%d",j+1);}}
fprintf(sFile,"\n ");}
fprintf(sFile,"Целевая функция\n Z=");
for (int j=0;j<kolvo_s;j++)
{if(m1[kolvo_x-1][j]!=0)
{if(m1[kolvo_x-1][j]>0)
fprintf(sFile,"+");
fprintf(sFile,"%.2lfx%d",m1[kolvo_x-1][j],j+1);
m1[kolvo_x-1][j]*=-1;}}
fprintf(sFile,"->max");
fprintf(sFile,"\nЗадача на принятие решения в условии определенности.");
for(int ii=0;ii<kolvo_x-1;ii++)
{cok(ii);
for(int i=0;i<kolvo_x;i++)
{vrem=m1[i][ii];
for(int j=0;j<kolvo_s;j++)
if(ii!=i)
m1[i][j]=m1[ii][ii]*m1[i][j]-m1[ii][j]*vrem;
}
}
fprintf(sFile,"\n X=(%.3lf",m1[0][kolvo_s-1]);
for(int i=1;i<kolvo_x-1;i++)
fprintf(sFile,", %.3lf",m1[i][kolvo_s-1]);
for(int i=kolvo_x;i<kolvo_s;i++)
fprintf(sFile,", %.3lf",m1[i][kolvo_s-1]);
fprintf(sFile,") \n Z=%.4lf",m1[kolvo_x-1][kolvo_s-1]);
}
peciati(kolvo_x,kolvo_s+4,0);
fclose(oFile);
fclose(sFile);
Form1->Caption=topik(2);
Form1->ToolButton4->Enabled=true;
Form1->ToolButton5->Enabled=true;
Form1->N2->Enabled=true;
Form1->N3->Enabled=true;
Form1->StatusBar->SimpleText="Вычисления произведены";
zanuliti();
}
void __fastcall TForm1::ToolButton4Click(TObject *Sender)
{
fclose(oFile);
oFile = fopen(sf.c_str(),"w");
fclose(oFile);
oFile = fopen(of.c_str(),"r");
Form1->StatusBar->SimpleText="Очищен файл результатов '"+sf+"'";
Form1->ToolButton4->Enabled=false;
Form1->ToolButton5->Enabled=false;
Form1->N2->Enabled=false;
Form1->N3->Enabled=false;
}
void __fastcall TForm1::ExitAltF41Click(TObject *Sender)
{
fclose(oFile);
fclose(sFile);
exit(1);
}
void __fastcall TForm1::ToolButton5Click(TObject *Sender)
{
fclose(sFile);
spawnlp(P_NOWAIT, "notepad.EXE", "", sf, "", NULL);
MessageBeep(0);
}
void __fastcall TForm1::About2Click(TObject *Sender)
{
MessageBeep(0);
Form2 = new TForm2(Application);
Form2->ShowModal();
delete Form2;
}
void __fastcall TForm1::N6Click(TObject *Sender)
{
if(Form1->N6->Checked==false)
{Form1->N6->Checked=true;
Form1->CheckBox1->Checked=true;
Form1->CheckBox2->Checked=true;
Form1->CheckBox3->Checked=true;
Form1->CheckBox4->Checked=true;
Form1->CheckBox5->Checked=true;
}else{
Form1->N6->Checked=false;
Form1->N8->Checked=false;
Form1->N9->Checked=false;
Form1->N10->Checked=false;
Form1->N11->Checked=false;
Form1->CheckBox5->Checked=false;
}
}
void __fastcall TForm1::N8Click(TObject *Sender)
{
Form1->N6->Checked=false;
if(Form1->N8->Checked==false)
{
Form1->N8->Checked=true;
Form1->CheckBox1->Checked=true;
}else{
Form1->N8->Checked=false;
Form1->CheckBox1->Checked=false;
}
Form1->CheckBox5->Checked=false;
}
void __fastcall TForm1::N9Click(TObject *Sender)
{
Form1->N6->Checked=false;
if(Form1->N9->Checked==false)
{
Form1->N9->Checked=true;
Form1->CheckBox2->Checked=true;
}else{
Form1->N9->Checked=false;
Form1->CheckBox2->Checked=false;
}
Form1->CheckBox5->Checked=false;
}
void __fastcall TForm1::N10Click(TObject *Sender)
{
Form1->N6->Checked=false;
if(Form1->N10->Checked==false)
{
Form1->N10->Checked=true;
Form1->CheckBox3->Checked=true;
}else{
Form1->N10->Checked=false;
Form1->CheckBox3->Checked=false;
}
Form1->CheckBox5->Checked=false;
}
void __fastcall TForm1::N11Click(TObject *Sender)
{
Form1->N6->Checked=false;
if(Form1->N11->Checked==false)
{
Form1->N11->Checked=true;
Form1->CheckBox4->Checked=true;
}else{
Form1->N11->Checked=false;
Form1->CheckBox4->Checked=false;
}
Form1->CheckBox5->Checked=false;
}
void __fastcall TForm1::RadioButton2Click(TObject *Sender)
{
MAX=-1;
}
void __fastcall TForm1::RadioButton1Click(TObject *Sender)
{
MAX=1;
}
void __fastcall TForm1::ComboBox1Change(TObject *Sender)
{
cheku();
}
void __fastcall TForm1::CheckBox1Click(TObject *Sender)
{
Form1->N8->Checked=Form1->CheckBox1->Checked;
if(Form1->CheckBox1->Checked==true)
Form1->N6->Checked=false;
}
void __fastcall TForm1::CheckBox2Click(TObject *Sender)
{
Form1->N9->Checked=Form1->CheckBox2->Checked;
if(Form1->CheckBox2->Checked==true)
Form1->N6->Checked=false;
}
void __fastcall TForm1::CheckBox3Click(TObject *Sender)
{
Form1->N10->Checked=Form1->CheckBox3->Checked;
if(Form1->CheckBox3->Checked==true)
Form1->N6->Checked=false;
}
void __fastcall TForm1::CheckBox4Click(TObject *Sender)
{
Form1->N11->Checked=Form1->CheckBox4->Checked;
if(Form1->CheckBox4->Checked==true)
{ Form1->N6->Checked=false;
Form1->BitBtn1->Enabled=true;
}else
{
Form1->BitBtn1->Enabled=false;
Form1->MaskEdit1->Enabled=false;
}
}
void __fastcall TForm1::CheckBox5Click(TObject *Sender)
{
if(Form1->CheckBox5->Checked==false)
{Form1->N6->Checked=false;
Form1->BitBtn1->Enabled=true;
Form1->CheckBox1->Enabled=true;
Form1->CheckBox2->Enabled=true;
Form1->CheckBox3->Enabled=true;
Form1->CheckBox4->Enabled=true;
Form1->CheckBox1->Checked=true;
Form1->CheckBox2->Checked=true;
Form1->CheckBox3->Checked=true;
Form1->CheckBox4->Checked=true;
Form1->StaticText2->Enabled=true;
}
else{
Form1->N6->Checked=true;
Form1->CheckBox1->Enabled=false;
Form1->CheckBox2->Enabled=false;
Form1->CheckBox3->Enabled=false;
Form1->CheckBox4->Enabled=false;
Form1->CheckBox1->Checked=false;
Form1->CheckBox2->Checked=false;
Form1->CheckBox3->Checked=false;
Form1->CheckBox4->Checked=false;
Form1->StaticText2->Enabled=false;
Form1->N8->Checked=false;
Form1->N9->Checked=false;
Form1->N10->Checked=false;
Form1->N11->Checked=false;
Form1->MaskEdit1->Enabled=false;
Form1->BitBtn1->Enabled=false;
}
}
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
Form1->MaskEdit1->Enabled=true;
}
void __fastcall TForm1::N14Click(TObject *Sender)
{
Form1->ComboBox1->Text="определенности";
cheku();
}
void __fastcall TForm1::N15Click(TObject *Sender)
{
Form1->ComboBox1->Text="неопределенности";
cheku();
}
void __fastcall TForm1::N16Click(TObject *Sender)
{
Form1->ComboBox1->Text="риска";
cheku();
}
void __fastcall TForm1::N13Click(TObject *Sender)
{
cheku();
}
void __fastcall TForm1::N19Click(TObject *Sender)
{
Form1->RadioButton1->Checked=true;
}
void __fastcall TForm1::N20Click(TObject *Sender)
{
Form1->RadioButton2->Checked=true;
}
Размещено на Allbest.ru
...Подобные документы
Статистические модели принятия решений. Описание моделей с известным распределением вероятностей состояния среды. Рассмотрение простейшей схемы динамического процесса принятия решений. Проведение расчета вероятности произведенной модификации предприятия.
контрольная работа [383,0 K], добавлен 07.11.2011Математическая модель задачи принятия решения в условиях риска. Нахождение оптимального решения по паре критериев. Построение реализационной структуры задачи принятия решения. Ориентация на математическое ожидание, среднеквадратичное отклонение.
курсовая работа [79,0 K], добавлен 16.09.2013Оптимизация решений динамическими методами. Расчет оптимальных сроков начала строительства объектов. Принятие решений в условиях риска (определение математического ожидания) и неопределенности (оптимальная стратегия поведения завода, правило максимакса).
контрольная работа [57,1 K], добавлен 04.10.2010Понятие измерительной шкалы и их виды в математическом моделировании: шкала наименований (полинальная), порядковая, интервальная и шкала отношений. Статистические меры, допустимые для разных типов шкал. Основные положения теории принятия решений.
контрольная работа [21,7 K], добавлен 16.02.2011Принятие решений в условиях неопределенности. Критерий Лапласа и принцип недостаточного основания. Критерий крайнего пессимизма. Требования критерия Гурвица. Нахождение минимального риска по Сэвиджу. Выбор оптимальной стратегии при принятии решения.
контрольная работа [34,3 K], добавлен 01.02.2012Решение задач при помощи пакета прикладных программ MatLab. Загрузка в MatLab матриц A и P. Нахождение оптимальной стратегии для заданных матриц с использованием критериев принятия решений в условиях неопределённости Вальда, Гурвица, Лапласа, Сэвиджа.
лабораторная работа [80,2 K], добавлен 18.03.2015Теория игр в контексте теории принятия решений. Игры без седловых точек. Использование линейной оптимизации при решении матричных игр. Критерии, используемые для принятия решений в играх с природой. Решение парных матричных игр с нулевой суммой.
контрольная работа [437,2 K], добавлен 14.02.2011Теория статистических решений как поиск оптимального недетерминированного поведения в условиях неопределенности. Критерии принятия решений Лапласа, минимаксный, Сэвиджа, Гурвица и различия между ними. Математические средства описания неопределенностей.
контрольная работа [66,0 K], добавлен 25.03.2009Экономическое обоснование принятия решений в условиях риска. Понятие и формулировки, методы решения проблем. Критерий Гермейера, Гурвица, Байеса-Лапласа. Решение задачи при помощи компьютера: условные, абсолютные, искомые апостериорные вероятности.
курсовая работа [495,2 K], добавлен 09.04.2013Классическая теория оптимизации. Функция скаляризации Чебышева. Критерий Парето-оптимальность. Марковские процессы принятия решений. Метод изменения ограничений. Алгоритм нахождения кратчайшего пути. Процесс построения минимального остовного дерева сети.
контрольная работа [182,8 K], добавлен 18.01.2015Решения, связанные с рисками. Снижение риска с помощью статистической теории принятия решений. Применение модели платежной матрицы и различных ее вариантов. Направленность изменений соотношений темпов роста показателей, формирующих динамические модели.
контрольная работа [41,2 K], добавлен 28.03.2013Нахождение вероятности за определенный промежуток времени. Плотность распределения вероятностей. Математическое ожидание и среднеквадратическое отклонение. Интегральная теорема Лапласа, распределение Стьюдента. Исправленная выборочная дисперсия.
контрольная работа [110,5 K], добавлен 28.05.2012Построение графического дерева решений по установленному критерию оптимальности. Анализ узлов дерева решений с точки зрения доступности информации. Определение вектора приоритетов альтернатив, используя метод анализа иерархий и матрицы парных сравнений.
контрольная работа [106,4 K], добавлен 09.07.2014Особенности формирования математической модели принятия решений, постановка задачи выбора. Понятие оптимальности по Парето и его роль в математической экономике. Составление алгоритма поиска парето-оптимальных решений, реализация программного средства.
контрольная работа [1,2 M], добавлен 11.06.2011Значения переменных, важных в процессе принятия решений. Разработка методов прогнозирования. Основной принцип работы нейросимулятора. Зависимость погрешностей обучения и обобщения от числа нейронов внутренних слоев персептрона. Определение ошибки сети.
презентация [108,5 K], добавлен 14.08.2013Понятие математического программирования как отрасли математики, являющейся теоретической основой решения задач о нахождении оптимальных решений. Основные этапы нахождения оптимальных решений экономических задач. Примеры задач линейного программирования.
учебное пособие [2,0 M], добавлен 15.06.2015Понятие нулевой и альтернативной гипотез. Обычная процедура принятия решений. Область принятия гипотезы. Гипотетическое распределение, область принятия и распределения в действительности. Области и вероятность совершения ошибки при принятии решения.
презентация [61,3 K], добавлен 20.01.2015Методика получения оценок, используемых в процедурах проектирования управленческих решений. Прикладное использование модели многофакторной линейной регрессии. Создание ковариационной матрицы данных и производных от неё паттернов проектирования решений.
статья [410,9 K], добавлен 03.09.2016Обоснование решений в конфликтных ситуациях. Теория игр и статистических решений. Оценка эффективности проекта по критерию ожидаемой среднегодовой прибыли. Определение результирующего ранжирования критериев оценки вариантов приобретения автомобиля.
контрольная работа [99,9 K], добавлен 21.03.2014Количественное обоснование управленческих решений по улучшению состояния экономических процессов методом математических моделей. Анализ оптимального решения задачи линейного программирования на чувствительность. Понятие многопараметрической оптимизации.
курсовая работа [4,2 M], добавлен 20.04.2015