Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методические рекомендации по выполнению РГЗ.doc
Скачиваний:
15
Добавлен:
25.11.2019
Размер:
552.45 Кб
Скачать

2.2 Разработка алгоритма задачи

Алгоритм принятия решений в условиях неопределенности по критерию Лапласа представлен на рисунке 2.4.

Рисунок 2.4 – Схема алгоритма принятия решений по методу Лапласа

2.3 Разработка программного кода

Программная реализация разработанного алгоритма выполнена на языке высокого уровня Object Pascal в среде Delphi 6 / 4,5 /.

unit Unit2;

interface

uses

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

Dialogs, StdCtrls, Grids, Menus;

type

TForm2 = class(TForm)

Tab1: TStringGrid;

Label1: TLabel;

Button1: TButton;

Label2: TLabel;

MainMenu1: TMainMenu;

N1: TMenuItem;

procedure FormCreate(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure N1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.N1Click(Sender: TObject);

Var c,r:integer;

begin

Form2.Close;

Label2.Caption:='';

For с:=1 to 4 do begin

For r:=1 to 5 do begin

Form2.Tab1.Cells[c,r]:='';

end;

end;

end;

procedure TForm2.FormCreate(Sender: TObject);

begin

//строки

Tab1.Cells[0,1]:='a1';

Tab1.Cells[0,2]:='a2';

Tab1.Cells[0,3]:='a3';

Tab1.Cells[0,4]:='P(j)';

Tab1.Cells[0,5]:='K(ai)';

//столбцы

Tab1.Cells[1,0]:='k1';

Tab1.Cells[2,0]:='k2';

Tab1.Cells[3,0]:='k3';

Tab1.Cells[4,0]:='K(опт)';

end;

procedure TForm2.Button1Click(Sender: TObject);

Const m=3;

Var c,r:integer;

sumKa:real;

p:real;//среднее ожидаемое значение

Kop:real;

begin

//определяем Pj по столбцам

For c:=1 to 3 do begin p:=0;

For r:=1 to 3 do begin

p:=p+(Strtofloat(Tab1.Cells[c,r]))/m;

end;

Tab1.Cells[c,4]:=floattostrf(p,ffgeneral,1,1);

end;

//вычисляем К(а)

For c:=1 to 3 do begin sumKa:=0;

For r:=1 to 3 do begin

sumKa:=sumKa+(strtofloat(Tab1.Cells[c,r]))*strtofloat(Tab1.Cells[c,4]);

end;

Tab1.Cells[c,5]:=floattostr(sumKa);

end;

//находим Копт (max в строке)

If (strtofloat(Tab1.Cells[1,5])>=strtofloat(Tab1.Cells[2,5]))and (strtofloat(Tab1.Cells[1,5])>=strtofloat(Tab1.Cells[3,5]))

then begin

Kop:=strtofloat(Tab1.Cells[1,5]);

Tab1.Cells[4,5]:=floattostr(Kop);

Label2.Caption:='Эффективным при одном из заболеваний является медицинский препарат: '+Tab1.Cells[1,0];

end

else

If (strtofloat(Tab1.Cells[2,5])>=strtofloat(Tab1.Cells[1,5])) and (strtofloat(Tab1.Cells[2,5])>=strtofloat(Tab1.Cells[3,5]))

then begin

Kop:=strtofloat(Tab1.Cells[2,5]);

Tab1.Cells[4,5]:=floattostr(Kop);

Label2.Caption:='Эффективным при одном из заболеваний является медицинский препарат: '+Tab1.Cells[2,0];

end

else

If (strtofloat(Tab1.Cells[3,5])>=strtofloat(Tab1.Cells[2,5])) and (strtofloat(Tab1.Cells[3,5])>=strtofloat(Tab1.Cells[1,5]))

then begin

Kop:=strtofloat(Tab1.Cells[3,5]);

Tab1.Cells[4,5]:=floattostr(Kop);

Label2.Caption:='Эффективным при одном из заболеваний является медицинский препарат: '+Tab1.Cells[3,0];

end;

end;

end.