Смекни!
smekni.com

Принятие решений в условиях риска 3 (стр. 6 из 8)

Матрица игры с заданной вероятностью. Возможно строительство четырех типов электростанций А1 - тепловые, А2 - приплотинные, А3 - безшлюзовые, А4 - шлюзовые. Эффективность каждого типов электростанций определяется сочетанием различных факторов, в том числе и факторов , зависящих от различных случайных явлений: погодных условий. режима рек, стоимости топлива и его перевозки, сейсмической обстановки района и т.д. Число возможных сочетаний факторов равно десяти, обозначим их как состояния природы (П1, П2, П3, П4, П5, П6, П7, П8, П9, П10). Вероятности возникновения каждой обстановки равны: q1=0,12 , q2=0,04, q3=0,09, q4=0,1, q5=0,06, q6=0,15, q7=0,07, q8=0,12, q9=0,16, q10=0,9. Экономическая эффективность типа электростанций в зависимости состояний природы задается в программном модуле:

Доминирующих либо дублирующих строк нет, упрощение не требуется:

Стратегия А4 является оптимальной:

Матрица игры и построенная на ее основе матрица рисков с равной вероятностью. На промышленном предприятии готовятся к переходу на выпуск новых видов продукции товаров народного потребления. При этом возможны восемь решений А1, А2, А3, А4, А5, А6, А7, А8, каждому из которых соответствует определенный вид продукции или их сочетание. Результаты принятых решений существенно зависит от обстановки (степени обеспеченности производства материальными ресурсами), которая может быть семи видов: П1, П2, П3, П4, П5, П6, П7. Каждому сочетанию Аi, i=1, …, 8 и обстановки Пj, j=1, …, 7, соответствует определенный выигрыш - эффективность выпуска новых видов продукции. Всевозможные выигрыши записываются в программный модуль:

Доминирующих либо дублирующих строк нет, упрощение не требуется:

Рассчитаем матрицу рисков:

Стратегия А3 является оптимальной:

Матрица рисков с относительными значениями вероятностей состояний природы. Крупный инвестор может вложить свою прибыль в семь бизнес проектов A1 , A2, A3, A4, A5, A6, A7, при этом возможны пять состояний рынка П1, П2, П3, П4, П5. Каждому сочетанию Аi, i=1, …, 7 и обстановки Пj, j=1, …, 5, соответствует определенный риск упустить выгоду.

Всевозможные выигрыши записываются в программный модуль:

Строка А7 больше А2, А6 равна А2:

Вероятность возникновения определенных состояний рынка инвестору не известна, но имеет представление, какие события более, а какие менее вероятны. Он решил, что менее правдоподобно возникновение П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 с.

5. 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;