Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пример отчёта.doc
Скачиваний:
1
Добавлен:
08.11.2019
Размер:
246.78 Кб
Скачать

Листинг программы.

Program practica;

Var

a:array[1..50,1..50] of real;

il,iv,ig,is,i,j,n,m:integer;

f1,f2:text;

alfa:real;

function laplas(n,m:integer):integer;

Var

b:array[1..50] of real;

max:real;

i1:integer;

Begin

for i:=1 to n do

b[i]:=0;

for i:=1 to n do

for j:=1 to m do

b[i]:=b[i]+a[i,j];

for i:=1 to n do

b[i]:=b[i]/n;

max:=b[1]; i1:=1;

for i:=1 to n do

if b[i]>max then

begin

max:=b[i];

i1:=i;

end;

laplas:=i1;

end;

function vald(n,m:integer):integer;

Var

b:array[1..50] of real;

max:real;

i1:integer;

Begin

for i:=1 to n do

b[i]:=a[i,1];

for i:=1 to n do

for j:=1 to m do

if a[i,j]<b[i] then

b[i]:=a[i,j];

max:=b[1]; i1:=1;

for i:=1 to n do

if b[i]>max then

begin

max:=b[i];

i1:=i;

end;

vald:=i1;

end;

Function gurv(alfa:real;n,m:integer):integer;

var

b1,b2:array[1..50] of real;

max:real;

i1:integer;

begin

for i:=1 to n do

begin

b1[i]:=a[i,1];

b2[i]:=a[i,1];

end;

for i:=1 to n do

for j:=1 to m do

begin

if a[i,j]<b1[i] then

b1[i]:=a[i,j];

if a[i,j]>b2[i] then

b2[i]:=a[i,j];

end;

for i:=1 to n do

b1[i]:=alfa*b1[i]+(1-alfa)*b2[i];

max:=b1[1]; i1:=1;

for i:=1 to n do

if b1[i]>max then

begin

max:=b1[i];

i1:=i;

end;

gurv:=i1;

end;

function sevidg(n,m:integer):integer;

Var

r:array[1..50,1..50] of real;

b1,b2:array[1..50] of real;

min:real;

i1:integer;

begin

for j:=1 to m do

b1[j]:=a[1,j];

for j:=1 to m do

for i:=1 to n do

if a[i,j]>b1[j] then

b1[j]:=a[i,j];

for i:=1 to n do

for j:=1 to m do

r[i,j]:=b1[j]-a[i,j];

for i:=1 to n do

b2[i]:=r[i,1];

for i:=1 to n do

for j:=1 to m do

if r[i,j]>b2[i] then

b2[i]:=r[i,j];

min:=b2[1]; i1:=1;

for i:=1 to n do

if b2[i]<min then

begin

min:=b2[i];

i1:=i;

end;

sevidg:=i1;

end;

Begin

assign(f1,'input.txt');

assign(f2,'output.txt');

reset(f1);

read(f1,n);

read(f1,m);

read (f1,alfa);

for i:=1 to n do

begin

for j:=1 to m do

read(f1,a[i,j]);

readln(f1);

end;

close(f1);

rewrite(f2);

il:=laplas(n,m);

iv:=vald(n,m);

ig:=gurv(alfa,n,m);

is:=sevidg(n,m);

write(f2,'kriterii Laplasa: ',il);

writeln(f2);

write(f2,'kriterii Valda: ',iv);

writeln(f2);

write(f2,'kriterii Gyrvisa: ',ig);

writeln(f2);

write(f2,'kriterii Sevidga: ',is);

close(f2);

readln;

end.

Проверка правильности программы.

Проверим правильность программы на примере следующей задачи. Предприниматель хочет взять взять в аренду на один год отель. Имеются отели четырех типов: на 20, 30, 40 или 50 комнат. Прибыль предпринимателя определяется двумя параметрами: x – общее число комнат отеля, у- среднее число занятых комнат в год. При этом x принимает значения 20, 30, 40, 50, а у – любое целое значение не превосходящее 50. Прибыль F(x, y)= 1825y-477.5x-2550. Необходимо найти оптимальный выбор отеля.

Пусть стратегия 1 – отель на 20 комнат,

стратегия 2 – отель на 30 комнат,

стратегия 3 – отель на 40 комнат,

стратегия 4 – отель на 50 комнат.

Для определенности предположим, что y принимает значения: 10, 15, 20, 25, 30, 40, 50. Занумеруем эти значения номерами: 1, 2, 3, 4, 5, 6, 7 соответственно. Матрица будет иметь следующий вид:

62

153

245

245

245

245

245

14

105

197

288

380

380

380

-34

57

150

240

332

515

515

-81

10

102

192

285

468

651

Тогда суммы в критерии Лапласа для каждой строки примерно равны соответственно 205.7, 249.1, 253.6, 232.4, следовательно оптимальной является стратегия под номером 3.

Минимальная прибыль для каждой из стратегий равна соответственно: 62, 14, -34, -81, следовательно оптимальной по критерию Вальда будет стратегия номер 1.

Возьмем для критерия Гурвица значение за значения параметра α=0.2. Максимальная прибыль для каждой стратегии равна соответственно: 245, 380, 515, 651. Тогда взвешенные суммы для каждой из стратегий равны соответственно: 208.4, 306.4, 405.2, 504.6, следовательно оптимальной в данном случае будет стратегия номер 4.

В критерии Севиджа максимальные элементы для каждого столбца равны соответственно: 62, 153, 197, 288, 380, 515, 651. Матрица рисков будет иметь вид:

0

0

0

43

135

270

406

48

48

48

0

0

135

271

28

96

95

48

48

0

136

-19

143

143

96

95

47

0

Максимальными элементами строк будут соответственно:406, 271, 136, 143, следовательно оптимальной будет 3 стратегия.

Файл output.txt при записи в файл input.txt числа строк = 4, числа столбцов = 7, значения параметра 0.2 и соответствующей матрицы, после применения программы будет иметь вид:

kriterii Laplasa: 3

kriterii Valda: 1

kriterii Gyrvisa: 4

kriterii Sevidga: 3

Что соответствует номерам оптимальных стратегий для каждого критерия, как подсчитано выше.