Метод ГурвицаРефераты >> Программирование и компьютеры >> Метод Гурвица
end;
{нахождения оптимальной стратегии и максимального выигрыша игрока A}
max_a:=V_a[1,1];
H_A:=1;
for i :=1 to m do
for j :=1 to k do
if V_a[i,j]>max_A then
begin
max_a:=V_a[i,j]; { максимальный выигрыш игрока А}
H_a:=i { оптимальная стратегия игрока А}
end;
{расчет наименьших и наибольших выигрышей игрока В}
for i:=1 to n do
begin
b_m[i]:=C_b[i,1]; {массив наименьшии выигрыш}
b_b[i]:=C_b[i,1]; {массив наибольшии выигрыш}
for j:=2 to m do
begin
if C_b[i,j]<b_m[i] then b_m[i]:=C_b[i,j];
if C_b[i,j]>b_b[i] then b_b[i]:=C_b[i,j];
end;
{вычисления расчетных выигрышей игрока В}
for j:=1 to k do
V_b[i,j]:=al[j]*b_m[i]+(1-al[j])*b_b[i];
end;
{нахождения оптимальной стратегии и максимального выигрыша игрока В}
max_b:=V_b[1,1];
H_b:=1;
for i:=1 to n do
for j:=1 to k do
if V_b[i,j]>max_b then
begin
max_b:=V_b[i,j]; { максимальный выигрыш игрока B}
H_b:=i { оптимальная стратегия игрока B}
end;
{ нахождения наибольшего расчетного выигрыша одного из игроков }
if max_a=max_b then Panel6.Visible:=true
else
if max_a>max_b then
begin
Panel4.Visible:=true;
panel5.Visible:=false
end
else
begin
panel5.Visible:=true;
Panel4.Visible:=false
end;
label11.Caption:=FloatToStr(max_a);
label12.Caption:=FloatToStr(H_a);
label14.Caption:=FloatToStr(max_b);
label13.Caption:=FloatToStr(H_b);
WW_A1;
end;
{просмотр для игрока А}
procedure Tform1.W_tabliza_A(Sender: TObject);
begin
WW_A1;
end;
{просмотр для игрока B}
procedure Tform1.W_tabliza_B(Sender: TObject);
begin
with form1 do
Begin
c_s.Colcount:=m+1;
c_s.Rowcount:=n+1;
tabliza.Rowcount:=n+1;
for i:=1 to n do
begin
form1.tabliza.Cells[0,i]:='B'+intToStr(i);
form1.C_S.Cells[0,i]:='B'+intToStr(i);
for j:=1 to m do
begin
form1.C_S.Cells[j,0]:='A'+intToStr(j);
form1.C_S.Cells[j,i]:=intToStr(C_B[i,j]);
end;
end;
label23.caption:='B';
tabliza.cells[1,0]:='b_малая';tabliza.cells[2,0]:='b_большая';
for j:=1 to n do
begin
tabliza.cells[1,j]:=intToStr(b_m[j]);
tabliza.cells[2,j]:=intToStr(b_b[j]);
end;
for i:=1 to n do
for j:=1 to k do
tabliza.cells[j+2,i]:=floatToStr(V_b[i,j]);
end;
end;
end.
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids, StdCtrls, ExtCtrls, Buttons, Menus;
type
TForm2 = class(TForm)
alpfa: TStringGrid;
Panel1: TPanel;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
procedure FormShow(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
i,j:integer;
implementation
uses osnowa;
{$R *.DFM}
{ Ввод козффициентов оптимизмов}
procedure TForm2.FormShow(Sender: TObject);
begin
j:=0;
form1.tabliza.Visible:=true;
alpfa.Colcount:=strToInt(form1.edit3.text);
for i:=0 to alpfa.Colcount do
begin
j:=j+1;
alpfa.Cells[i,0]:='Alpha'+intToStr(i+1);
alpfa.Cells[i,1]:=FloatToStr(al[j]);
end;
end;
procedure TForm2.BitBtn2Click(Sender: TObject);
begin
j:=0;
for i:=0 to alpfa.Colcount do
begin
j:=j+1;
try
al[j]:=strToFloat(trim(alpfa.Cells[i,1]));
form1.tabliza.Cells[3+i,0]:=alpfa.Cells[i,1];
except
showMessage('Ошибочная запись числа : '+alpfa.Cells[i,1]);
end; end;
end;
end.
Приложение 2 Результат работы программы