Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Критерии принятия решений.doc
Скачиваний:
141
Добавлен:
02.05.2014
Размер:
565.76 Кб
Скачать

3.Тестовый пример

В данной курсовой работе используется программа, которая обрабатывает, анализирует введенные данные и выдает окончательный результат. Также с помощью данной программы можно анализировать и другие данные. На рисунке 1 даны исходные данные:

Рисунок 1.

Затем, с помощью данной программы переведём исходные данные в приведённую матрицу (рисунок 2).

Рисунок 2.

На рисунках 3, 4, 5, представлены окончательные результаты, где выведены наилучшие и наихудшие районы по заданным критериям.

Рисунок 3. Критерий произведений.

Рисунок 4. Составной критерий.

Рисунок 5.Критерий Севиджа.

Заключение

В данной курсовой работе оценка наилучшего и наихудшего объектов производилась на основании трех критериев принятия решений:

Критерий Сэвиджа;

Критерий Байеса – Лапласа;

Критерий Произведений;

По критериям Севиджа, Байеса-Лапласа и критерию Произведений наилучшим объектом является Рамонский район, а наихудший Петропавловский, Панинский и Поворинский соответственно.

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

Бинкин Б.А., Черняк В.И. Эффективность управления: наука и практика. М.: Наука, 1982. 143 с.

Мушик З., Мюллер П. Методы принятия технических решений. - М.: Мир, 1990. - 208с

Могилевский В.Д. Методология систем: вербальный подход. / М., Экономика, 1999. 251 с.

Саати Т., Кернс К. Аналитическое планирование. Организация систем. / М. Радио и связь. 1991.

Приложение а (листинг программы)

unit unit1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

ComCtrls, ToolWin, StdCtrls, Grids, ExtCtrls, Buttons;

type

TForm1 = class(TForm)

Panel1: TPanel;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

StringGrid1: TStringGrid;

Bevel1: TBevel;

Bevel2: TBevel;

Bevel3: TBevel;

Bevel4: TBevel;

Bevel5: TBevel;

GroupBox1: TGroupBox;

SpeedButton1: TSpeedButton;

SpeedButton2: TSpeedButton;

SpeedButton3: TSpeedButton;

Memo1: TMemo;

SpeedButton4: TSpeedButton;

SpeedButton5: TSpeedButton;

SpeedButton6: TSpeedButton;

Image1: TImage;

procedure FormCreate(Sender: TObject);

procedure SpeedButton6Click(Sender: TObject);

procedure SpeedButton5Click(Sender: TObject);

procedure SpeedButton4Click(Sender: TObject);

procedure SpeedButton1Click(Sender: TObject);

procedure SpeedButton2Click(Sender: TObject);

procedure SpeedButton3Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.DFM}

const

M = 4;

rajon: array [1..5] of string = (

'Панинский',

'Петропавловский',

'Поворинский',

'Подгоренский',

'Рамонский');

data: array [1..5, 1..4] of real = (

(19.73, 7.9, 20.95, 1040.95),

(14.66, 8.08, 19.63, 644.75),

(18.89, 7.16, 18.39, 1125.9),

(18.59, 7.38, 18.12, 846.05),

(21.82, 6.44, 23.29, 1140.85));

var

E: array [1..10, 1..10] of real;

R: array [1..10] of string;

N: integer;

procedure TForm1.FormCreate(Sender: TObject);

// создание формы

var

s: string;

i: integer;

begin

StringGrid1.RowCount := 5;

n := 5;

for i := 1 to n do

begin

Str(i, s);

StringGrid1.Cells[0, i - 1] := s;

StringGrid1.Cells[1, i - 1] := rajon[i];

Str(data[i, 1]:3:1, s);

StringGrid1.Cells[2, i - 1] := s;

Str(data[i, 2]:3:1, s);

StringGrid1.Cells[3, i - 1] := s;

Str(data[i, 3]:3:1, s);

StringGrid1.Cells[4, i - 1] := s;

Str(data[i, 4]:3:1, s);

StringGrid1.Cells[5, i - 1] := s;

end;

end;

procedure TForm1.SpeedButton6Click(Sender: TObject);

//выход

begin

Close;

end;

procedure TForm1.SpeedButton5Click(Sender: TObject);

//загрузка тестового примера

var

s: string;

i: integer;

begin

StringGrid1.RowCount := 5;

n := 5;

for i := 1 to n do

begin

Str(i, s);

StringGrid1.Cells[0, i - 1] := s;

StringGrid1.Cells[1, i - 1] := rajon[i];

Str(data[i, 1]:3:1, s);

StringGrid1.Cells[2, i - 1] := s;

Str(data[i, 2]:3:1, s);

StringGrid1.Cells[3, i - 1] := s;

Str(data[i, 3]:3:1, s);

StringGrid1.Cells[4, i - 1] := s;

Str(data[i, 4]:3:1, s);

StringGrid1.Cells[5, i - 1] := s;

end;

end;

procedure TForm1.SpeedButton4Click(Sender: TObject);

//приведение матрицы

var

E1: array [1..10, 1..10] of real;

Xsr: array [1..10] of real;

k, i, j: integer;

c: real;

s1: string;

begin

N := StringGrid1.RowCount;

for i := 1 to N do

begin

R[i] := StringGrid1.Cells[1, i - 1];

Val(StringGrid1.Cells[2, i - 1], E1[i, 1], k);

Val(StringGrid1.Cells[3, i - 1], E1[i, 2], k);

Val(StringGrid1.Cells[4, i - 1], E1[i, 3], k);

Val(StringGrid1.Cells[5, i - 1], E1[i, 4], k);

end;

// формирование безразмерной матрицы

for j := 1 to M do

begin

Xsr[j] := 0;

for i := 1 to N do

Xsr[j] := Xsr[j] + E1[i, j];

Xsr[j] := Xsr[j] / N;

end;

for j := 1 to M do

begin

c := 0;

for i := 1 to N do

c := c + Sqr(E1[i, j] - Xsr[j]);

c := Sqrt(c) / 5;

for i := 1 to N do

E[i, j] := (E1[i, j] - Xsr[j]) / c;

end;

GroupBox1.Enabled := True;

// вывод безразмерной матрицы

for i := 1 to N do

for j := 1 to M do

begin

Str(E[i, j]:7:3, s1);

StringGrid1.Cells[j + 1, i - 1] := s1;

end;

end;

procedure TForm1.SpeedButton1Click(Sender: TObject);

// критерий произведений

var

c: real;

j, imin, imax, k, i: integer;

min, max: real;

s1, s: string;

begin

for i := 1 to N do

begin

min := E[i, 1];

imin := 1;

for j := 1 to N do

if E[i, j] < min then

begin

min := E[i, j];

imin := j;

end;

E[i, imin] := E[i, imin] + Abs(min) + 1;

end;

for i := 1 to N do

begin

E[i, 5] := 1;

for j := 1 to M do

E[i, 5] := E[i, 5] * E[i, j];

end;

imax := 1;

max := E[1, 5];

imin := 1;

min := E[1, 5];

for i := 1 to N do

begin

if E[i, 5] > max then

begin

max := E[i, 5];

imax := i;

end;

if E[i, 5] < min then

begin

min := E[i, 5];

imin := i;

end;

end;

Memo1.Lines.Add('Критерий произведений');

Memo1.Lines.Add('Наилучший объект');

Memo1.Lines.Add(R[imax]);

Str(max:5:3, s);

Memo1.Lines.Add('Значение: ' + s);

Memo1.Lines.Add('Наихудший объект');

Memo1.Lines.Add(R[imin]);

Str(min:5:3, s);

Memo1.Lines.Add('Значение: ' + s);

end;

procedure TForm1.SpeedButton2Click(Sender: TObject);

//составной

var

c: real;

j, imin, imax, k, i: integer;

q: array [1..10, 1..10] of real;

sum, min, max: real;

s1, s: string;

begin

for i := 1 to N do // расчет МО

begin

sum := 0;

for j := 1 to M do

sum := sum + E[i, j];

min := E[i, 1];

max := E[i, 1];

for j := 1 to M do

begin

q[i, j] := E[i, j] / sum;

if E[i, j] < min then

min := E[i, j];

if E[i, j] > max then

max := E[i, j];

end;

E[i, M + 1] := 0;

for j := 1 to M do

E[i, M + 1] := E[i, M + 1] + E[i, j]* q[i, j];

E[i, M + 2] := 0.5 - min;

E[i, M + 3] := max - 0.5;

end;

imax := 1;

max := E[1, M + 1];

imin := 1;

min := E[1, M + 1];

for i := 1 to N do

begin

if (E[i, M + 1] > max) and (E[i, M + 2] <= 0.8) then

begin

max := E[i, M + 1];

imax := i;

end;

if (E[i, M + 1] < min) and (E[i, M + 2] <= 0.8) then

begin

min := E[i, M + 1];

imin := i;

end;

end;

Memo1.Lines.Add('Составной критерий');

Memo1.Lines.Add('Наилучший объект');

Memo1.Lines.Add(R[imax]);

Str(max:5:3, s);

Memo1.Lines.Add('Значение: ' + s);

Memo1.Lines.Add('Наихудший объект');

Memo1.Lines.Add(R[imin]);

Str(min:5:3, s);

Memo1.Lines.Add('Значение: ' + s);

end;

procedure TForm1.SpeedButton3Click(Sender: TObject);

//Сэвиджа

var

c: real;

j, ind1, ind2, k, i: integer;

A: array [1..10, 1..10] of real;

Kmin, Kmax: real;

s: string;

begin

for j := 1 to M do // расчет максимума

begin

Kmax := E[1, j];

for i := 1 to N do

if E[i, j] > Kmax then

Kmax := E[i, j];

for i := 1 to N do

A[i, j] := Kmax - E[i, j];

end;

for i := 1 to N do

begin

Kmax := A[i, 1];

for j := 1 to M do

if A[i, j] > Kmax then

Kmax := A[i, j];

E[i, 5] := Kmax;

end;

ind2 := 1;

Kmax := E[1, 5];

ind1 := 1;

Kmin := E[1, 5];

for i := 1 to N do

begin

if E[i, 5] < Kmax then

begin

Kmax := E[i, 5];

ind2 := i;

end;

if E[i, 5] > Kmin then

begin

Kmin := E[i, 5];

ind1 := i;

end;

end;

Memo1.Lines.Add('Критерий Сэвиджа');

Memo1.Lines.Add('Наилучший объект');

Memo1.Lines.Add(R[ind2]);

Str(Kmax:5:3, s);

Memo1.Lines.Add('Значение: ' + s);

Memo1.Lines.Add('Наихудший объект');

Memo1.Lines.Add(R[ind1]);

Str(Kmin:5:3, s);

Memo1.Lines.Add('Значение: ' + s);

end;

end.

26