Метод Гурвица

Страница: 8/10

uses

Forms,

osnowa in 'osnowa.pas' {form1},

Unit2 in 'Unit2.pas' {Form2};

{$R *.RES}

begin

Application.Initialize;

Application.CreateForm(Tform1, form1);

Application.CreateForm(TForm2, Form2);

Application.Run;

end.

unit osnowa;

interface

uses

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

Grids, StdCtrls, ToolWin, ComCtrls, Buttons, ActnList, StdActns, Menus,

Mask, ExtCtrls, jpeg;

type

Tform1 = class(TForm)

tabliza: TStringGrid;

Panel1: TPanel;

Button1: TButton;

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

C_S: TStringGrid;

Panel2: TPanel;

Label5: TLabel;

Label6: TLabel;

Label7: TLabel;

Label8: TLabel;

Label9: TLabel;

Label10: TLabel;

Label11: TLabel;

Label12: TLabel;

Label13: TLabel;

Label14: TLabel;

Panel3: TPanel;

Panel4: TPanel;

Label17: TLabel;

Label18: TLabel;

Panel5: TPanel;

Label19: TLabel;

Label20: TLabel;

Label21: TLabel;

Label22: TLabel;

Label23: TLabel;

RadioButton7: TRadioButton;

RadioButton8: TRadioButton;

Button3: TButton;

Panel6: TPanel;

Label1: TLabel;

BitBtn1: TBitBtn;

Label15: TLabel;

procedure WWod_koef(Sender: TObject);

procedure W_Rezultat(Sender: TObject);

procedure W_tabliza_A(Sender: TObject);

procedure W_tabliza_B(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

form1: Tform1;

C_B,C_A:array [1 10,1 10] of integer; { платёжная матрица игрока А,В}

a_b,a_m,b_b,b_m:array[1 10] of integer; {наибольший наименьший выигрыш иг. А,В}

al:array[1 10] of real; {массив альфа}

V_A,V_B:array[1 10,1 10]of real; {Расчётные выигрыши иг. А,В }

max_a:real; { Наибольший выигрыш игрока А}

max_b:real; { Наибольший выигрыш игрока В}

H_a:integer; { Оптимальная стратегия игрока А}

h_b:integer; { Оптимальная стратегия игрока В}

m:Integer; { Количество стратегий игрока А}

n:Integer; { Количество стратегий игрока В}

k:Integer; { Количество статистических коэффициентов}

I,J:Integer;

implementation

uses Unit2;

{$R *.DFM}

{ вывод коэф., матрицы С_А}

procedure WW_A;

begin

form1.c_s.Colcount:=n+1;

form1.c_s.Rowcount:=m+1;

form1.tabliza.Rowcount:=m+1;

for i :=1 to m do

begin

form1.tabliza.Cells[0,i]:='A'+intToStr(i);

form1.C_S.Cells[0,i]:='A'+intToStr(i);

for j :=1 to n do

begin

form1.C_S.Cells[j,0]:='B'+intToStr(j);

form1.C_S.Cells[j,i]:=intToStr(C_A[i,j]);

end;

end;

with form1 do

begin

label23.caption:='A';

tabliza.cells[1,0]:='a_малая';tabliza.cells[2,0]:='a_большая';

end;

end;

{ Вывод наибольший, наименьший, расчётный выигрыш матрицы V_А}

procedure WW_A1;

begin

WW_A;

With form1.tabliza Do

begin

for j:=1 to n do

begin

cells[1,j]:=intToStr(a_m[j]);

cells[2,j]:=intToStr(a_b[j]);

end;

for i:=1 to m do

for j:=1 to k do

cells[j+2,i]:=floatToStr(V_a[i,j]);

end;

end;

{событие на нажатие кнопки 'Ввод коэф '}

procedure TForm1.WWod_koef(Sender: TObject);

begin

try

m:=strToint(edit1.text);

n:=strToint(edit2.text);

k:=strToint(edit3.text);

except

showMessage('Ошибочная запись числа ');

end;

try

Form2 := TForm2.Create(self);

tabliza.Colcount:=3+k;

Form2.ShowModal;

finally

Form2.Close;

WW_a;

end;

end;

{событие на нажатие кнопки 'вывод результата'}

procedure Tform1.W_Rezultat(Sender: TObject);

begin

Panel6.Visible:=false;

panel3.Visible:=true;

{Вводим из таблицы C_A в матрицу игрока А - C_A} { C_S[столбец,строка] }

for i :=1 to m do {по столбцам m таблицы C_S}

for j :=1 to n do {по строкам n таблицы C_S}

C_a[i,j]:=StrToInt(C_S.Cells[j,i]);

{Создаём матрицу C_B путём транспонирования матрицы игрока А}

for i :=1 to n do

for j :=1 to m do

C_b[i,j] :=StrToInt(C_S.Cells[i,j]);

Реферат опубликован: 8/03/2006