Теория игр
Автор: Пользователь скрыл имя, 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,
val(form2.edit2.text,form3.n,
stringgrid1.ColCount:=form3.n+
stringgrid1.RowCount:=form3.m+
stringgrid1.Width:=(form3.n+1)
stringgrid1.Height:=(form3.m+
for i:=1 to form3.n do
stringgrid1.cells[i,0]:=
for i:=1 to form3.m do
stringgrid1.cells[0,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],
if sedlo then
begin
form4.label1.Caption:='
form4.label2.Caption:='maxmin=
form4.label3.Caption:='minmax=
form4.label4.visible:=false;
form4.label5.visible:=false;
form4.button2.visible:=false;
end
else
begin
form4.label1.Caption:='
form4.label2.Caption:='maxmin=
form4.label3.Caption:='minmax=
simplex;
end;
form4.Show;
form3.Hide;
end
else
MessageBox(Application.Handle,
end;
procedure TForm3.StringGrid1KeyPress(
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+
stringgrid1.RowCount:=form3.m+
stringgrid1.Width:=(form3.n+2)
stringgrid1.Height:=(form3.m+
for i:=0 to form3.n do
for j:=0 to form3.m do
stringgrid1.cells[i,j]:=form3.
for i:=1 to form3.m do
stringgrid1.cells[form3.n+1,i]
for j:=1 to form3.n do
stringgrid1.cells[j,form3.m+1]
Label2.Caption:=form4.label2.
Label3.Caption:=form4.label3.
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+
stringgrid1.RowCount:=form3.n+
for i:=1 to form3.m+form3.n do
stringgrid1.cells[i,0]:=
stringgrid1.cells[form3.m+
stringgrid1.cells[form3.m+
stringgrid1.cells[0,form3.n+1]
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[
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 - Окно решения игры
Окно решения игры содержит следующую информацию:
- Результат поиска седловой точки
- Вывод о существовании седловой точки
- Верхняя цена игры
- Нижняя цена игры
- Кнопка просмотра подробного решения.
- Если решение в чистых стратегиях отсутствует, то решение игры в мешанных стратегиях
- Стратегия первого игрока
- Стратегия второго игрока
- Цена игры
- Кнопка просмотра подробного решения в смешанных стратегиях.
Окно просмотра подробного решения поиска седловой точки представлено на рисунке 12.
Рисунок 12 - Подробное решение поиска нижней и верхней цен игры
Заключение
В процессе целенаправленной человеческой деятельности возникают ситуации, в которых интересы отдельных лиц (участников, групп, сторон) либо прямо противоположны (антагонистичны), либо, не будучи непримиримыми, все же не совпадают. Простейшими и наиболее наглядными примерами таких ситуаций являются спортивные игры, арбитражные споры, военные учения (маневры), борьба между блоками избирателей за своих кандидатов, в международных отношениях – отстаивание интересов своего государства и т.п. Здесь каждый из участников сознательно стремиться добиться наилучшего результата за счет другого участника. Подобного рода ситуации встречаются и в различных сферах производственной деятельности.
В данной работе рассмотрен способ решения матричных игр в чистых и смешанных стратегиях.
Написана программа решения данных игр в среде разработки Delphi 7.
Список литературы
- Аронович А.Б., Афанасьев М.Ю., Суворов Б.П. Сборник задач по исследованию операций. – М.: Изд-во МГУ, 2007.
- Гермейер Ю. Б. Введение в теорию исследования операций. М.: Наука, 2007.
- Джон М. Смит Математическое и цифровое моделирование для инженеров и исследователей. М.: Машиностроение, 2008.
- Имитационное моделирование производственных систем. /Под ред. А.А Вавилова. - М.; Машиностроение, 2007. - 416 с.
- Ларичев О.И., Мошкович Е.М.. Качественные методы принятия решений. М.: ФМЛ. 2007.
- Лебедев А.Н. Моделирование в научно-технических исследованиях. М.: Радио и связь, 2008.
- Лесин В.В., Лисовец Ю.П. Основы методов оптимизации. – М.: Изд-во МАИ, 2008.
- Максимей И.В. Математическое моделирование больших систем. Минск: Вышэйшая школа, 2007.
- Моисеев Н.Н. Элементы теории оптимальных систем. – М.: Наука, 2007.
- Павловский Ю.Н. Имитационные модели и системы. – М.: Фазис, 2008.
- Срочко В.А. Итерационные методы решения задач оптимального управления. М.: ФМЛ. 2009.
- Тетельбаум И. М., Шнейдер Ю.Р. Практика аналогового моделирования динамических систем. Справочное пособие. М.: Энергоатомиздат, 2007.
- Харшаньи Джон, Зельтен Рейнхард. Общая теория выбора равновесия в играх. – СПб.: Экономическая школа, 2008.
- Эддоус М., Стэнсфилд Р. Методы принятия решений. – М.: Аудит, ЮНИТИ, 2007.
- Юдин Д.Б. Вычислительные методы теории принятия решений. М.:Наука. 2008.