Рефераты. Метод Гурвица p> Игру двух игроков можно описать как производственный процесс с помощью следующей функциональной схемы (рис.1).

Рисунок 2.1.1

Оба игрока по прямой связи U(t) делает ход, выбирая предполагаемую стратегию. Ни один из игроков не знает хода противника. В случае если игрок узнает стратегию своего противника, то по обратной связи f(t) поступает сигнал, что он может отказаться от своей старой стратегии и выбрать другую стратегию. Востановив работу по прямой связи U(t).

Человек А в играх с природой старается действовать осмотрительно, используя, например, минимаксную стратегию, позволяющую получить наименьший проигрыш. Второй игрок В (природа) действует совершенно случайно, возможные стратегии определяются как её состояние. Условия игры задаются в виде матрицы.

[pic]

Элементы Сij = выигрышу игрока А, если он использует стратегию Аi.

В данном курсовом проекте состязательная задача решается по методу
Гурвица.

Пусть в игре принимают участие два игрока А и В.

Рассматривается конфликтная ситуация между двумя сторонами А и В. Игрок
А имеет m стратегий, а В имеет n стратегий: А={А1, А1,…, А1}; В={В1, В1,…,
В1}.

Взаимосвязь между стратегиями любого из игроков определяется платёжной матрицей С={Cij}m*n. Cij – выигрыш игрока А. Заданы статистические коэффициенты оптимизации ([pic]).

Цель игры состоит в том, чтобы вывести ситуацию из условия неопределённости, найти максимальный выигрыш, по которому определить оптимальную стратегию каждого игрока, а также игрока разрешающего конфликтную ситуацию.

Решение игры и исходные данные сводятся в таблицу Гурвица (табл.
2.1.1).

Таблица 2.1.1

| |В1 |В2 |… |Вn |Наименьший|Наибольший |Коэффициенты |
| | | | | | |выигрыш |оптимизма |
| | | | | |выигрыш | | |
| | | | | | |0,1 |0,2 |0,3 |
|А1 |1 |1 |3 |1 |3 |2,8 |2,6 |2,4 |
|А2 |5 |6 |8 |5 |8 |7,7 |7,4 |7,1 |
|А3 |4 |3 |5 |3 |5 |4,8 |4,6 |4,4 |

Найти игрока, разрешающего конфликтную ситуацию.

Найдём условно расчётные выигрыши игрока А по формуле:

[pic]

V11=0,1*1+(1 – 0,1)*3=2,8

V12=0,2*1+(1 – 0,2)*3=2,6

V13=0,3*1+(1 – 0,3)*3=2,4

V21=0,1*5+(1 – 0,1)*8=7,7

V22=0,2*5+(1 – 0,2)*8=7,4

V23=0,3*5+(1 – 0,3)*8=7,1

V31=0,1*3+(1 – 0,1)*5=4,8

V32=0,2*3+(1 – 0,2)*5=4,6

V33=0,3*3+(1 – 0,3)*5=4,4

Среди найденных условных расчётных выигрышей найдём максимальный. Он равен 7.7, значит оптимальная стратегия игрока А будет А2.

Далее найдём оптимальная стратегия игрока В, для этого транспонируем матрицу. Результаты заносим в таблицу 2.8.2.

Таблица 2.8.2


| |А1 |А2 |А3 |Наименьший |Наибольший |Коэффициенты |
| | | | |выигрыш |выигрыш |оптимизма |
| | | | |[pic] |[pic] | |
| | | | | | |0,1 |0,2 |0,3 |
|В1 |1 |5 |4 |1 |5 |4,6 |4,2 |3,8 |
|В2 |1 |6 |3 |1 |6 |5,5 |5 |4,5 |
|В3 |3 |8 |5 |3 |8 |7,5 |7 |6,5 |

Найдём условно расчётные выигрыши игрока В

V11=0,1*1+(1 – 0,1)*5=4,6

V12=0,2*1+(1 – 0,2)*5=4,2

V13=0,3*1+(1 – 0,3)*5=3,8

V21=0,1*1+(1 – 0,1)*6=5,5

V22=0,2*1+(1 – 0,2)*6=5

V23=0,3*1+(1 – 0,3)*6=4,5

V31=0,1*3+(1 – 0,1)*8=7,5

V32=0,2*3+(1 – 0,2)*8=7

V33=0,3*3+(1 – 0,3)*8=6,5

Среди найденных условных расчётных выигрышей найдём максимальный. Он равен 7.5, значит оптимальная стратегия игрока В будет В3.

Из 2-х оптимальных стратегий, находим наибольший выигрыш, а именно
7,7>7,5; следовательно игрок А разрешит конфликтную ситуацию с максимальным выигрышем равным 7,7, стратегия которого равна 2.

2 Оценки результатов решения задачи

Результат решения задачи полностью соответствует заданию курсового проекта. В сравнении результатов решения задачи ручным с результатами автоматизированным методом, получил одинаковые результаты. Что означает что программа работает верно. Преимущество автоматизированного метода над ручным состоит в том, что автоматизированное время выполнения программы меньше, чем ручным.

ЗАКЛЮЧЕНИЕ

Данная курсовая работа включает в себя два предмета: «Программирование» и «Компьютерное модулирование»

В курсовой работе были рассмотрены следующие вопросы:
. Рассмотрена характеристика «Теории игр» и следующие методы ее решения: метод Гурвица, метод Сэвиджа, метод максимина.
. Рассмотрен и дан алгоритм решения теории игры в условии неопределенности методом Гурвица.
. Дана краткая характеристика ПК, включая анализ средств программирования, описания ОС MS-DOS и MS Windows’
. Рассмотрен выбор языка программирования.
. Написана программа для решения данной задачи.

СПИСОК ЛИТЕРАТУРЫ

1. Г. С. Малик «Основы экономики и математические методы в планировании».
2. Кузнецов «Математическое программирование».
3. В. В. Фаронов «Delphi 5. Учебный курс».
4. Ю. П. Зайченко «Исследование операций в задачах, алгоритмах, программах».

Приложение 1 Текст программы

Medot_Gurwiwiza.dpr

program Medot_Gurwiza;
{Курсовой проект по предмету "Компьютерное модулирование" по теме "Теория игр"
Принцип Гурвица Выполнил студент гр. П-00-1 Юшков Андрей 10.06.02} 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]);
{расчет наименьших и наибольших выигрышей игрока 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_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_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 Результат работы программы


-----------------------
Игрок А

Игрок В

Стратегии игрок А

Стратегии игрок В

УС

СУ

ОУ

f(t)

U(t)

Продолжение рис 2.4.2

из стр.

из стр.

63

62

Оптимальная стратегия, max выигрыш игрока В


61

Оптимальная стратегия, max выигрыш игрока А

60

Игрока В разрешит конфликтную ситуацию

Нет

59

Нет

да

Игрока А разрешит конфликтную ситуацию

56

58

max_a>max_b

max_a=max_b

да

57

55

Цикл 14

54

Цикл 15

F

E

53

H_b:=[pic]

Седловые точки

Выход

Продолжение рис. 2.4.2

к стр.

к стр.

из стр.

F

44

E

V_b[i,j]>max_b

да

52

51

Max_b:=V_b[pic]

48

47

50

49

Цикл 15

[pic]

Цикл 14

[pic]

H_B:=1

max_b:=V_b[1,1]

46

Цикл 11

V_b[i,j]:=al[j]*b_m[i]++(1-al[j])*b_b[i]

45

Цикл 13

D

43

Цикл 13

[pic]

Продолжение рис. 2.4.2

к стр.

из стр.

D

42

Цикл 12

C_ b[i,j]> b_b[i,j]

да

41

40

b_m[pic]:=C_ b[pic]

C_ b[i,j]< b_m[i,j]

да

39

38

37

36

35

b_m[pic]:=C_ b[pic]

34

Цикл 12

[pic]

b_b[pic]:=C_b[pic]

b_m[pic]:=C_b[pic]

Цикл 11

[pic]

C

33

Цикл 9

32

Цикл 10

Продолжение рис. 2.4.2

к стр.

из стр.

22

C

31

H_a:=[pic]

V_a[i,j]>max_a

да

30

29

Max_a:=V_ a[pic]

26

25

28

27

Цикл 10

[pic]

Цикл 9

[pic]

H_A:=1

max_a:=V_a[1,1]

24

Цикл 6

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

B

23

Цикл 7

Продолжение рис. 2.4.2

к стр.

из стр.

21

Цикл 7

[pic]

B

20

Цикл 6

C_ a[i,j]> a_b[i,j]

да

19

18

a_m[pic]:=C_ a[pic]

C_ a[i,j]

да

17

16

15

14

13

a_m[pic]:=C_ a[pic]

A

12

11

Цикл 6

[pic]

a_b[pic]:=C_a[pic]

a_m[pic]:=C_a[pic]

Цикл 5

[pic]

Цикл 3

рис 2.4.2

к стр.

10

9

8

7

6

5

4

3

2

A

Цикл 4

С_B[pic]:=C_S[pic]

Цикл 4

[pic]

Цикл 3

[pic]

Цикл 1

Цикл 2

С_А[pic]:=C_S[pic]

Цикл 2

[pic]

Цикл 1

[pic]

1

ВХОД

рисунок 2.4.1


6

7

5

4

3

2

W=2

W=1

КОНЕЦ

W_tabliza_B

W_tabliza_A

W_rezultat

W=?

Wwod_koef

1

НАЧАЛО


Страницы: 1, 2



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.