Теория игр

Автор: Пользователь скрыл имя, 22 Апреля 2013 в 11:57, курсовая работа

Краткое описание


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

Оглавление


Введение 3
1 Постановка задачи. Описание модели 4
2 Описание решения 6
3 Пример из экономике, где появлялись такие задачи. 12
4 Пример математического решения 14
5 Основная часть (программа) 16
5.1 Постановка задачи с точки зрения программирования…………………...16
5.2 Структура программы……………………………………………………….16
5.3 Текст программы…………………………………………………………….17
6 Тестирование 34
7 Руководство пользователя 37
Заключение……………………………………………………………………….42
Список литературы 43

Файлы: 1 файл

теория игр.docx

— 492.42 Кб (Скачать)

end;

procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);

begin

form1.close;

end;

procedure TForm3.FormActivate(Sender: TObject);

begin

  val(form2.edit1.text,form3.m,kod);

  val(form2.edit2.text,form3.n,kod);

  stringgrid1.ColCount:=form3.n+1;

  stringgrid1.RowCount:=form3.m+1;

  stringgrid1.Width:=(form3.n+1)*36+5;

  stringgrid1.Height:=(form3.m+1)*36+5;

  for i:=1 to form3.n do

     stringgrid1.cells[i,0]:=IntToStr(i);

  for i:=1 to form3.m do

     stringgrid1.cells[0,i]:=IntToStr(i);

end;

procedure TForm3.Button1Click(Sender: TObject);

var t:integer;

begin

    t:=0;

   for i:=1 to form3.n do

    for j:=1 to form3.m do

      if stringgrid1.cells[i,j]='' then

        t:=1;

   if t=0 then

   begin

   for i:=1 to form3.m do

    for j:=1 to form3.n do

      val(stringgrid1.cells[j,i],form3.matrix[i,j],kod);

   if sedlo then

   begin

      form4.label1.Caption:='Седловая точка найдена:';

      form4.label2.Caption:='maxmin='+IntToStr(form3.maxmin);

      form4.label3.Caption:='minmax='+IntToStr(form3.minmax);

      form4.label4.visible:=false;

      form4.label5.visible:=false;

      form4.button2.visible:=false;

   end

   else

   begin

    form4.label1.Caption:='Седловая точка не найдена:';

    form4.label2.Caption:='maxmin='+IntToStr(form3.maxmin);

    form4.label3.Caption:='minmax='+IntToStr(form3.minmax);

    simplex;

   end;

   form4.Show;

   form3.Hide;

   end

   else

    MessageBox(Application.Handle,'Вы не ввели все из значения.','Ошибка', MB_OK)

end;

procedure TForm3.StringGrid1KeyPress(Sender: TObject; var Key: Char);

const Digit: set of Char=['1'..'9', '0'];

begin

with (Sender as TStringGrid) do

   begin

        if (not(Key in Digit))

        then Key:=#0;

   end;

end;

end.

 

unit Unit4;

interface

uses

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

  Dialogs, StdCtrls;

type

  TForm4 = class(TForm)

    Label1: TLabel;

    Label2: TLabel;

    Label3: TLabel;

    Button1: TButton;

    Label4: TLabel;

    Label5: TLabel;

    Button2: TButton;

    Label6: TLabel;

    procedure Button1Click(Sender: TObject);

    procedure FormClose(Sender: TObject; var Action: TCloseAction);

    procedure Button2Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

var

  Form4: TForm4;

implementation

uses Unit5, Unit1, Unit6;

{$R *.dfm}

procedure TForm4.Button1Click(Sender: TObject);

begin

  form5.show;

end;

procedure TForm4.FormClose(Sender: TObject; var Action: TCloseAction);

begin

form1.close;

end;

procedure TForm4.Button2Click(Sender: TObject);

begin

form6.show;

end;

end.

 

unit Unit5;

interface

uses

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

  Dialogs, Grids, StdCtrls;

type

  TForm5 = class(TForm)

    Label1: TLabel;

    StringGrid1: TStringGrid;

    Label2: TLabel;

    Label3: TLabel;

    procedure FormActivate(Sender: TObject);

    procedure FormClose(Sender: TObject; var Action: TCloseAction);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

var

  Form5: TForm5;

implementation

uses Unit3, Unit1, Unit4;

{$R *.dfm}

procedure TForm5.FormActivate(Sender: TObject);

var i,j:integer;

begin

  stringgrid1.ColCount:=form3.n+2;

  stringgrid1.RowCount:=form3.m+2;

  stringgrid1.Width:=(form3.n+2)*36+5;

  stringgrid1.Height:=(form3.m+2)*36+5;

  for i:=0 to form3.n do

     for j:=0 to form3.m do

      stringgrid1.cells[i,j]:=form3.stringgrid1.cells[i,j];

  for i:=1 to form3.m do

    stringgrid1.cells[form3.n+1,i]:=IntToStr(form3.minMatrix[i]);

  for j:=1 to form3.n do

    stringgrid1.cells[j,form3.m+1]:=IntToStr(form3.maxMatrix[j]);

  Label2.Caption:=form4.label2.Caption;

  Label3.Caption:=form4.label3.Caption;

end;

procedure TForm5.FormClose(Sender: TObject; var Action: TCloseAction);

begin

form4.show;

end;

end.

 

unit Unit6;

interface

uses

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

  Dialogs, Grids, StdCtrls, Math;

type

  TForm6 = class(TForm)

    Label1: TLabel;

    StringGrid1: TStringGrid;

    Button1: TButton;

    procedure FormActivate(Sender: TObject);

    procedure Button1Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

 

var

  Form6: TForm6;

  shag:integer;

implementation

 

uses Unit3;

{$R *.dfm}

procedure TForm6.FormActivate(Sender: TObject);

var i,j:integer;

begin

  stringgrid1.ColCount:=form3.m+form3.n+3;

  stringgrid1.RowCount:=form3.n+2;

  for i:=1 to form3.m+form3.n do

    stringgrid1.cells[i,0]:=IntToStr(i);

  stringgrid1.cells[form3.m+form3.n+1,0]:='b';

  stringgrid1.cells[form3.m+form3.n+2,0]:='c.o.';

  stringgrid1.cells[0,form3.n+1]:='F';

  for i:=1 to form3.m+form3.n+2 do

    for j:=0 to form3.n+1 do

      stringgrid1.cells[i,j]:= FloatToStr(form3.simp[j,i]);

  shag:=11;

end;

procedure TForm6.Button1Click(Sender: TObject);

var i,j:integer;

begin

    for i:=1 to form3.m+form3.n+2 do

    for j:=0 to form3.n+1 do

      stringgrid1.cells[i,j]:= FloatToStr(roundTo(form3.simp[j+shag,i],-2));

    shag:=shag+11;

    if (shag div 11)<=form3.kolshag then

    begin

      label1.Caption:='Итоговая таблица';

      button1.Enabled:=false;

    end

    else

      label1.Caption:='Промежуточное решение';

end;

end.

 

 

6 Тестирование

 

Тестирование программы  проводим по примерам, приведенным в разделе 4.

В первом примере предварительно избавляемся от отрицательных значений.

Рисунок 1- Ввод матрицы игры

 

Рисунок 2 - Вывод решения игры

Рисунок 3 - Подробное решение (нахождение нижней и верхней цен игры)

 

Ввод данных представлена на рисунках 4-5.

Рисунок 4 - Ввод числа стратегий игроков

Рисунок 5 - Ввод матрицы игры

 

Рисунок 6 - Решение игры

 

7 Руководство пользователя

 

Работа программы начинается с заставки представленной на рисунке 7.

Рисунок 7 – Заставка

 

Для продолжения работы пользователю необходимо нажать кнопку «Старт».

Появляется окно ввода  количества стратегий игроков (рисунок  8).

В  полях для ввода  пользователю допускается ввод только числовых целых положительных значений. Для контроля ввода значений используется процедура отслеживания нажатия  клавиш.

Рисунок 8 - Окно ввода числа стратегий

 

Если пользователь оставляет  хотя бы одно поле пустым появляется подсказка (рисунок 9).

 

                                

Рисунок 9 - Сообщение об ошибке

 

Следующее окно предназначено  для ввода значений матрицы игры (рисунок 10).

Рисунок 10 - Окно ввода матрицы игры

 

После ввода всех требуемых  значений (заполнение матрицы) пользователь нажимает кнопку «продолжить» и в  дальнейшем изменить введенные значения не представляется возможным.

Значения в ячейках  также допускается только целые  положительные числа. Для контроля ввода значений используется процедура  отслеживания нажатия клавиш.

В случае если пользователь оставляет одно из значений пустым выдается сообщение об ошибке.

 

Рисунок 11 - Окно решения игры

 

Окно решения игры содержит следующую информацию:

  1. Результат поиска седловой точки
    1. Вывод о существовании седловой точки
    2. Верхняя цена игры
    3. Нижняя цена игры
  2. Кнопка просмотра подробного решения.
  3. Если решение в чистых стратегиях отсутствует, то решение игры в мешанных стратегиях
    1. Стратегия первого игрока
    2. Стратегия второго игрока
    3. Цена игры
  4. Кнопка просмотра подробного решения в смешанных стратегиях.

Окно просмотра подробного решения поиска седловой точки представлено на рисунке 12.

Рисунок 12 - Подробное решение поиска нижней и верхней цен игры

 

 

 

Заключение

 

В процессе целенаправленной человеческой деятельности возникают  ситуации, в которых интересы отдельных  лиц (участников, групп, сторон) либо прямо  противоположны (антагонистичны), либо, не будучи непримиримыми, все же не совпадают. Простейшими и наиболее наглядными примерами таких ситуаций являются спортивные игры, арбитражные  споры, военные учения (маневры), борьба между блоками избирателей за своих кандидатов, в международных  отношениях – отстаивание интересов  своего государства и т.п. Здесь  каждый из участников сознательно стремиться добиться наилучшего результата за счет другого участника. Подобного рода ситуации встречаются и в различных  сферах производственной деятельности.

В данной работе рассмотрен способ решения матричных игр  в чистых и смешанных стратегиях.

Написана программа решения  данных игр в среде разработки Delphi 7.

 

 

 

 

 

 

 

 

 

 

 

 

 

Список литературы

 

  1. Аронович А.Б., Афанасьев М.Ю., Суворов Б.П. Сборник задач по исследованию операций. – М.: Изд-во МГУ, 2007.
  2. Гермейер Ю. Б. Введение в теорию исследования операций. М.: Наука, 2007.
  3. Джон М. Смит Математическое и цифровое моделирование для инженеров и исследователей. М.: Машиностроение, 2008.
  4. Имитационное моделирование производственных систем. /Под ред. А.А Вавилова. - М.; Машиностроение, 2007. - 416 с.
  5. Ларичев О.И., Мошкович Е.М.. Качественные методы принятия решений. М.: ФМЛ. 2007.
  6. Лебедев А.Н. Моделирование в научно-технических исследованиях. М.: Радио и связь, 2008.
  7. Лесин В.В., Лисовец Ю.П. Основы методов оптимизации. – М.: Изд-во МАИ, 2008.
  8. Максимей И.В. Математическое моделирование больших систем. Минск: Вышэйшая школа, 2007.
  9. Моисеев Н.Н. Элементы теории оптимальных систем. – М.: Наука, 2007.
  10. Павловский Ю.Н. Имитационные модели и системы. – М.: Фазис, 2008.
  11. Срочко В.А. Итерационные методы решения задач оптимального управления. М.: ФМЛ. 2009.
  12. Тетельбаум И. М., Шнейдер Ю.Р. Практика аналогового моделирования динамических систем. Справочное пособие. М.: Энергоатомиздат, 2007.
  13. Харшаньи Джон, Зельтен Рейнхард. Общая теория выбора равновесия в играх. – СПб.: Экономическая школа, 2008.
  14. Эддоус М., Стэнсфилд Р. Методы принятия решений. – М.: Аудит, ЮНИТИ, 2007.
  15. Юдин Д.Б. Вычислительные методы теории принятия решений. М.:Наука. 2008.

 


Информация о работе Теория игр