_WELCOMETO Radioland

Главная Схемы Документация Студентам Программы Поиск Top50  
Поиск по сайту



Навигация
Главная
Схемы
Автоэлектроника
Акустика
Аудио
Измерения
Компьютеры
Питание
Прог. устройства
Радио
Радиошпионаж
Телевидение
Телефония
Цифр. электроника
Другие
Добавить
Документация
Микросхемы
Транзисторы
Прочее
Файлы
Утилиты
Радиолюб. расчеты
Программирование
Другое
Студентам
Рефераты
Курсовые
Дипломы
Информация
Поиск по сайту
Самое популярное
Карта сайта
Обратная связь

Студентам


Студентам > Рефераты > Метод Гурвица

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

Страница: 5/6

    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]);

{расчет наименьших и наибольших выигрышей игрока A}

 for i:=1 to m do

    begin

         a_m[i]:=C_a[i,1];       {массив наименьшии выигрыш}

         a_b[i]:=C_a[i,1];        {массив наибольшии выигрыш}

         for j :=2 to n do

            begin

                 if C_a[i,j]<a_m[i] then a_m[i]:=C_a[i,j];

                 if C_a[i,j]>a_b[i] then a_b[i]:=C_a[i,j];

            end;

{вычисления расчетных выигрышей игрока A}

         for j :=1 to k do

            V_a[i,j]:=al[j]*a_m[i]+(1-al[j])*a_b[i];

    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);