Принятие решений в условиях риска

Автор работы: Пользователь скрыл имя, 17 Мая 2011 в 04:21, курсовая работа

Описание работы

Целью работы является исследование вопросов принятия решения в условиях, когда выбор некоторой стратегии гарантирует получение результата с определенной вероятностью, и разработка программного модуля. Упрощение матрицы игры. Критерий Байеса. Критерий Лапласа. Критерий относительных значений вероятностей состояний природы с учетом выигрышей (рисков). Программа для расчета, интерфейс, код, пример.

Файлы: 1 файл

Федеральное агентство по образованию.doc

— 1.02 Мб (Скачать файл)

    

  Вероятность возникновения определенных состояний рынка инвестору не известна, но имеет представление, какие события более, а какие менее вероятны. Он решил, что менее правдоподобно возникновение П1, затем по степени правдоподобности следуют состояния П2, П3 и П4, наибольшей правдоподобностью обладает П5. Не зная, на сколько одна вероятность состояния природы отличается от другой, он придал им относительные значения, 9: 16: 18: 22: 23 для П1, П2, П3, П4, П5 соответственно. Нажав на кнопку задать вводится последовательность: 
 
 
 

  Расчет  вероятности:

  

  Оптимальное значение А5:

  

 

Заключение

  В ходе выполнения курсовой работы был  исследован процесс принятия решений в условиях риска. Для поиска оптимального значения были рассмотрены критерии Байеса, Лапласа и критерий оптимальных значений вероятностей состояний природы относительно выигрышей и рисков.

  Кроме этого был создан программный  модуль, реализующий данные алгоритмы.

  В данный работе были выполнены следующие  задачи:

  1. Выполнено подробное математическое описание поиска оптимальной стратегии в условиях риска.
  2. Детально описан алгоритм решения задачи. Проиллюстрирована работа алгоритма на контрольном примере с использованием стандартных программных средств (Excel) с численным выводом результатов.
  3. Выбрана среда программирования Delphi7. Описана модульная структуры программного комплекса. Представлен интерфейс.
  4. Исследована работоспособность программы на трех тестовых примерах.

 

Список  литературы

  1. Лабскер Л. Г.Теория критериев оптимальности и экономические решения – М.: Издательство «КноРус», 2005. – 744 с.
  2. Хемди А. Таха Введение в исследование операций.  – М.: «Вильямс», 2007. – 903 с.
  3. Шапкин А.С. Экономитческие и финансовые риски. Оценка, управление, портфель инвестиций[Текст]: Учебное пособие для вузов/ А.С. Шапкин – М.: Издательско – торговая корпорация «Дашков и К°», 2003. - 544 с.
  4. Экономико-математическое моделирование: Учебник для студентов вузов/ Под общ. ред. И.Н. Дрогобыцкого.- М.: Издательство “Экзамен”, 2004.- 800 с.
  1. http://www.delphisources.ru/

 

Приложение

  Основной модуль: 

  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(Sender: TObject; Button: TMouseButton;

    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(Sender: TObject; var Key: Word;

    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(Sender: TObject; var Key: Word;

    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(Sender: TObject; Button: TMouseButton;

    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(Sender: TObject);

  begin

  Button2.Enabled:=true;

  end; 

  procedure TForm1.RadioButton1Click(Sender: TObject);

  begin

  Button2.Enabled:=false;

  end; 

  procedure TForm1.RadioButton3Click(Sender: TObject);

  begin

  GroupBox4.Caption:='Ìàòðèöà  èãðû';

  Button3.Enabled:=True;

  end; 

  procedure TForm1.RadioButton4Click(Sender: TObject);

  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:=SpinEdit1.Value+1;

  StringGrid1.RowCount:=SpinEdit2.Value+1;

  StringGrid2.ColCount:=SpinEdit1.Value+1;

  StringGrid1.DefaultColWidth:=round((StringGrid1.Width-10)/StringGrid1.ColCount);

  StringGrid1.DefaultRowHeight:=round((StringGrid1.Height-10)/StringGrid1.RowCount);

  StringGrid2.DefaultColWidth:=round((StringGrid2.Width-10)/StringGrid2.ColCount);

  for i:=1 to SpinEdit1.Value do

  StringGrid1.Cells[i,0]:='Ï'+inttostr(i);

  for i:=1 to SpinEdit2.Value do

  StringGrid1.Cells[0,i]:='A'+inttostr(i);

  StringGrid2.Cells[0,0]:='q';

    end; 

  procedure TForm1.SpinEdit1Change(Sender: TObject);

  var i:integer;

  begin

  StringGrid1.ColCount:=SpinEdit1.Value+1;

  StringGrid1.DefaultColWidth:=round((StringGrid1.Width-10)/StringGrid1.ColCount);

  StringGrid2.ColCount:=SpinEdit1.Value+1;

  StringGrid2.DefaultColWidth:=round((StringGrid2.Width-10)/StringGrid2.ColCount);

  for i:=1 to SpinEdit1.Value+1 do

  StringGrid1.Cells[i,0]:='Ï'+inttostr(i);

  end; 

  procedure TForm1.SpinEdit2Change(Sender: TObject);

  var i:integer;

  begin

  StringGrid1.RowCount:=SpinEdit2.Value+1;

  StringGrid1.DefaultRowHeight:=round((StringGrid1.Height-10)/StringGrid1.RowCount);

  for i:=1 to SpinEdit2.Value+1 do

  StringGrid1.Cells[0,i]:='A'+inttostr(i);

  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:=SpinEdit1.Value+1;

  StringGrid3.RowCount:=SpinEdit2.Value+1;

  StringGrid3.DefaultColWidth:=round((StringGrid3.Width-10)/StringGrid3.ColCount);

  StringGrid3.DefaultRowHeight:=round((StringGrid3.Height-10)/StringGrid3.RowCount);

  for i:=1 to SpinEdit1.Value do

  StringGrid3.Cells[i,0]:='Ï'+inttostr(i);

  for i:=1 to SpinEdit2.Value do

  StringGrid3.Cells[0,i]:='A'+inttostr(i);

  for i:=1 to SpinEdit1.Value do

    for j:=1 to SpinEdit2.Value do

       if a[i-1]<strtoint(StringGrid1.Cells[i,j]) then a[i-1]:=strtoint(StringGrid1.Cells[i,j]); 

  for i:=1 to SpinEdit1.Value do

    for j:=1 to SpinEdit2.Value do

       StringGrid3.Cells[i,j]:=inttostr(a[i-1]-strtoint(StringGrid1.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]:='';

Информация о работе Принятие решений в условиях риска