Автор работы: Пользователь скрыл имя, 17 Мая 2011 в 04:21, курсовая работа
Целью работы является исследование вопросов принятия решения в условиях, когда выбор некоторой стратегии гарантирует получение результата с определенной вероятностью, и разработка программного модуля. Упрощение матрицы игры. Критерий Байеса. Критерий Лапласа. Критерий относительных значений вероятностей состояний природы с учетом выигрышей (рисков). Программа для расчета, интерфейс, код, пример.
Вероятность
возникновения определенных состояний
рынка инвестору не известна, но имеет
представление, какие события более, а
какие менее вероятны. Он решил, что менее
правдоподобно возникновение П1,
затем по степени правдоподобности следуют
состояния П2, П3
и П4, наибольшей правдоподобностью
обладает П5. Не зная, на сколько
одна вероятность состояния природы отличается
от другой, он придал им относительные
значения, 9: 16: 18: 22: 23 для П1,
П2, П3, П4,
П5 соответственно. Нажав на
кнопку задать вводится последовательность:
Расчет вероятности:
Оптимальное значение А5:
В ходе выполнения курсовой работы был исследован процесс принятия решений в условиях риска. Для поиска оптимального значения были рассмотрены критерии Байеса, Лапласа и критерий оптимальных значений вероятностей состояний природы относительно выигрышей и рисков.
Кроме этого был создан программный модуль, реализующий данные алгоритмы.
В данный работе были выполнены следующие задачи:
Основной
модуль:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,
StdCtrls, Spin, Grids;
type
TForm1 = class(TForm)
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
SpinEdit1: TSpinEdit;
SpinEdit2: TSpinEdit;
GroupBox2: TGroupBox;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
GroupBox3: TGroupBox;
RadioButton3: TRadioButton;
Button2: TButton;
RadioButton4: TRadioButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
StringGrid1: TStringGrid;
GroupBox4: TGroupBox;
StringGrid2: TStringGrid;
StringGrid3: TStringGrid;
GroupBox5: TGroupBox;
Button1: TButton;
procedure CheckBox1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure CheckBox1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure CheckBox2KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure CheckBox2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure RadioButton2Click(Sender: TObject);
procedure RadioButton1Click(Sender: TObject);
procedure RadioButton3Click(Sender: TObject);
procedure RadioButton4Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure SpinEdit1Change(Sender: TObject);
procedure SpinEdit2Change(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure StringGrid1KeyPress(Sender: TObject; var Key: Char);
procedure StringGrid2KeyPress(Sender: TObject; var Key: Char);
procedure StringGrid3KeyPress(Sender: TObject; var Key: Char);
procedure Button4Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
otvet:integer;
implementation
uses unit2;
{$R *.dfm}
procedure TForm1.CheckBox1MouseDown(
Shift: TShiftState; X, Y: Integer);
begin
CheckBox2.Checked:=False;
RadioButton1.Enabled:=False;
RadioButton2.Enabled:=False;
Button2.Enabled:=false;
StringGrid2.Enabled:=true;
end;
procedure TForm1.CheckBox1KeyDown(
Shift: TShiftState);
begin
if key = 13 then begin
CheckBox1.Checked:=true;
CheckBox2.Checked:=False;
RadioButton1.Enabled:=False;
RadioButton2.Enabled:=False;
Button2.Enabled:=false;
StringGrid2.Enabled:=true;
end;
end;
procedure TForm1.CheckBox2KeyDown(
Shift: TShiftState);
begin
if key = 13 then begin
CheckBox2.Checked:=true;
CheckBox1.Checked:=False;
RadioButton1.Enabled:=true;
RadioButton2.Enabled:=true;
StringGrid2.Enabled:=false;
if RadioButton2.Checked=True then
Button2.Enabled:=true;
end;
end;
procedure TForm1.CheckBox2MouseDown(
Shift: TShiftState; X, Y: Integer);
begin
CheckBox1.Checked:=False;
RadioButton1.Enabled:=true;
RadioButton2.Enabled:=true;
StringGrid2.Enabled:=false;
if RadioButton2.Checked=True then
Button2.Enabled:=true;
end;
procedure TForm1.RadioButton2Click(
begin
Button2.Enabled:=true;
end;
procedure TForm1.RadioButton1Click(
begin
Button2.Enabled:=false;
end;
procedure TForm1.RadioButton3Click(
begin
GroupBox4.Caption:='Ìàòðèöà èãðû';
Button3.Enabled:=True;
end;
procedure TForm1.RadioButton4Click(
begin
Form1.Height:=480;
GroupBox4.Caption:='Ìàòðèöà ðèñêîâ';
Button3.Enabled:=false;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Form2.Show;
end;
procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
Form1.Top:=210;
Form1.Left:=410;
Form1.Height:=480;
StringGrid1.ColCount:=
StringGrid1.RowCount:=
StringGrid2.ColCount:=
StringGrid1.DefaultColWidth:
StringGrid1.
StringGrid2.DefaultColWidth:
for i:=1 to SpinEdit1.Value do
StringGrid1.Cells[i,0]:='Ï'+
for i:=1 to SpinEdit2.Value do
StringGrid1.Cells[0,i]:='A'+
StringGrid2.Cells[0,0]:='q';
end;
procedure TForm1.SpinEdit1Change(Sender: TObject);
var i:integer;
begin
StringGrid1.ColCount:=
StringGrid1.DefaultColWidth:
StringGrid2.ColCount:=
StringGrid2.DefaultColWidth:
for i:=1 to SpinEdit1.Value+1 do
StringGrid1.Cells[i,0]:='Ï'+
end;
procedure TForm1.SpinEdit2Change(Sender: TObject);
var i:integer;
begin
StringGrid1.RowCount:=
StringGrid1.
for i:=1 to SpinEdit2.Value+1 do
StringGrid1.Cells[0,i]:='A'+
end;
procedure TForm1.Button3Click(Sender: TObject);
var
i,j:integer;
f:boolean;
a: array [0..12] of integer;
begin
f:=true;
for i:=0 to SpinEdit2.Value-1 do
a[i]:=0;
for i:=1 to SpinEdit1.Value do
for j:=1 to SpinEdit2.Value do
if StringGrid1.Cells[i,j]='' then f:=false;
if f=false then
ShowMessage('Çíà÷åíèÿ íå
else begin
Form1.Height:=757;
StringGrid3.ColCount:=
StringGrid3.RowCount:=
StringGrid3.DefaultColWidth:
StringGrid3.
for i:=1 to SpinEdit1.Value do
StringGrid3.Cells[i,0]:='Ï'+
for i:=1 to SpinEdit2.Value do
StringGrid3.Cells[0,i]:='A'+
for i:=1 to SpinEdit1.Value do
for j:=1 to SpinEdit2.Value do
if a[i-1]<strtoint(StringGrid1.
for i:=1 to SpinEdit1.Value do
for j:=1 to SpinEdit2.Value do
StringGrid3.Cells[i,j]:=
end;
end;
procedure TForm1.Button5Click(Sender: TObject);
var i,j:integer;
begin
Form1.Height:=480;
for i:=1 to SpinEdit1.Value do begin
for j:=1 to SpinEdit2.Value do begin
StringGrid1.Cells[i,j]:='';
StringGrid3.Cells[i,j]:='';