Использование "дерева" решений в многоэтапных задачах принятия решений

Правила принятия решений с использованием численных значений вероятностей. Зависимость решения от изменений значения вероятности. Стоимость достоверной информации. Математическое ожидание и стандартное отклонение для оценки риска, дерево решений.

Рубрика Экономико-математическое моделирование
Вид курсовая работа
Язык русский
Дата добавления 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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.