Теми рефератів
Авіація та космонавтика Банківська справа Безпека життєдіяльності Біографії Біологія Біологія і хімія Біржова справа Ботаніка та сільське гос-во Бухгалтерський облік і аудит Військова кафедра Географія
Геодезія Геологія Держава та право Журналістика Видавнича справа та поліграфія Іноземна мова Інформатика Інформатика, програмування Історія Історія техніки Комунікації і зв'язок Краєзнавство та етнографія Короткий зміст творів Кулінарія Культура та мистецтво Культурологія Зарубіжна література Російська мова Маркетинг Математика Медицина, здоров'я Медичні науки Міжнародні відносини Менеджмент Москвоведение Музика Податки, оподаткування Наука і техніка Решта реферати Педагогіка Політологія Право Право, юриспруденція Промисловість, виробництво Психологія Педагогіка Радіоелектроніка Реклама Релігія і міфологія Сексологія Соціологія Будівництво Митна система Технологія Транспорт Фізика Фізкультура і спорт Філософія Фінансові науки Хімія Екологія Економіка Економіко-математичне моделювання Етика Юриспруденція Мовознавство Мовознавство, філологія Контакти
Українські реферати та твори » Информатика, программирование » Рішення матричних ігор

Реферат Рішення матричних ігор

астосовує свою оптимальну стратегію, дорівнює гарантованому програшу другого гравця, застосовує свою оптимальну стратегію: - ціна гри.

Зведення задачі теорія ігор до задачі лінійного програмування

Задача максимізації гарантованого виграш першого гравця та завдання мінімізації гарантованого програшу другого гравця зводяться до пари взаємно двоїстих задач лінійного програмування:

Завдання першого гравця Завдання другого гравця


Процес розв'язання завдань спрощується, якщо перейти до Змінним. Це можливо, якщо.

Маємо:

Завдання першого гравця Завдання другого гравця

Оптимальні стратегії гравців не зміняться, якщо матрицю ігризаменіть на. Ціна гри при цьому збільшується на з .

Методи рішення задач теорії ігор багато в чому залежать від умов завдання і від матриці А виграшів першого гравця.

Якщо матриця А має сідлову точку, то рішення гри зводиться до знаходження сідлової точки матриці А. Оптимальні стратегії гравців визначаються при цьому координатами ( i , j ) сідлової точки матриці А, а ціна гри елементом в сідловій точці.

Якщо задача теорії ігор не має рішення в чистих стратегіях, то може бути вирішена ітераційним методом.

Ітераційний метод.

Розігрується уявний експеримент, в якому гравці А і В застосовують проти один

одного свої стратегії. Експеримент складається з послідовності партій. А вибирає стратегію

Аi, гравець В уже знає про цьому і відповідає своєю стратегією Вj, найбільш вигідною для нього в сформованій ситуації. Далі, перший гравець вибирає подальші стратегії грунтуючись на попередній грі. Таким чином, на кожному кроці ітераційного процесу гравець відповідає на крок іншого тій своєю стратегією, яка є оптимальною щодо всіх попередніх ходів. Якщо партії продовжувати досить довго, то середній виграш прагне до ціни гри, а частоти - до ймовірностям оптимальних стратегій. Головним достоїнством цього методу є незалежність його складності від розмірності гри.


4. Реалізація програмного засобу

середу розробки: С + + Builder XE

Мова програмування: C + +

4.1 Проектування

Список модулів з коротким описом:

1) Mainform.cpp - це головний модуль в якому, реалізовані функції: розрахунку в чистих стратегіях, збереження/завантаження і введення вихідних даних.

2) Iter. cpp - це допоміжний модуль в якому реалізований ітераційний метод розв'язання матричної гри.

4.2 Лістинг програмного коду

Модуль Mainform . cpp :

// --------------------------------------------- ------------------------------

# include

# pragma hdrstop

# include "Series.hpp"

# include "Iter.h"

# include "Pic.h"

# include "Mainform.h"

# include

# include

// --------------------------------------------- ------------------------------

# pragma package (smart_init)

# pragma resource "*. dfm"

TForm1 * Form1;

// --------------------------------------------- ------------------------------

__fastcall TForm1 :: TForm1 (TComponent * Owner)

: TForm (Owner)

{

}

// --------------------------------------------- ------------------------------

void __fastcall TForm1 :: RaschetClick (TObject * Sender)// розрахунок

{

double MaxMin = 0, MinMax = 0;

double MinRow [100];

double MaxCol [100];

int i, j, n, m;

double A0 [100] [100];

n = StrToInt (Edit4-> Text);

m = StrToInt (Edit5-> Text);

for (i = 0; i

for (j = 0; j

// переклад значень з таблиці в масив double матриці A0:

A0 [j] [i] = StrToFloat (StringGrid1-> Cells [i +1] [j +1]);

}

}

// --------------------- розрахунок у чистих стратегіях -----------------------------

for (i = 0; i

MinRow [i] = A0 [i] [0];

}

for (i = 0; i

MaxCol [i] = A0 [0] [i];

}

// очистимо стрінгріди 2 і 3:

for (register int i = 0; i RowCount; i + +)

{

StringGrid2-> Rows [i] -> Clear ();

}

for (register int i = 0; i RowCount; i + +)

{

StringGrid3-> Rows [i] -> Clear ();

}

StringGrid2-> Cells [0] [0] = "Min";

StringGrid3-> Cells [0] [0] = "Max";

// розрахунок мінімумів і максимумів

for (i = 0; i

for (j = 0; j

// пошук мінімального значення в рядках:

if (A0 [i] [j] <= MinRow [i]) {

MinRow [i] = A0 [i] [j];

}

}

// вивід мінімумів рядків у СтрінгГрід2:

StringGrid2-> Cells [0] [i +1] = MinRow [i];

}

for (j = 0; j

for (i = 0; i

// пошук максимального значення у стовпцях:

if (A0 [i] [j]> = MaxCol [j]) {

MaxCol [j] = A0 [i] [j];

}

}

// вивід максимумів стовпців в СтрінгГрід3:

StringGrid3-> Cells [j +1] [0] = MaxCol [j];

}

// знайдемо максимін

MaxMin = MinRow [0];

for (i = 0; i

if (MinRow [i]> = MaxMin) {MaxMin = MinRow [i];}

}

Edit2-> Text = MaxMin;

// знайдемо мінімакс

MinMax = MaxCol [0];

for (i = 0; i

if (MaxCol [i] <= MinMax) {MinMax = MaxCol [i];}

}

Edit3-> Text = MinMax;

if (MinMax == MaxMin) {

ShowMessage ("Гра вирішена в чистих стратегіях ");

Edit1-> Text = MinMax;

} else {ShowMessage ("Гра не вирішується в чистих стратегіях, спробуєте вирішити її ітераційним методом ");}

// --------------------------------------------- ---------------------------------

}

// --------------------------------------------- ---------------------------------

void __fastcall TForm1 :: Button1Click (TObject * Sender)

{

Form2-> Show ();

}

// --------------------------------------------- ------------------------------

void __fastcall TForm1 :: Button2Click (TObject * Sender)

{

int i, j, n, m;

double A0 [100] [100];

n = StrToInt (Edit4-> Text);

m = StrToInt (Edit5-> Text);

// очищаємо СтрінгГрід1:

for (register int i = 0; i RowCount; i + +) {

StringGrid1-> Rows [i] -> Clear ();

}

for (i = 0; i

StringGrid1-> Cells [0] [i +1] = "A" + String (i +1);

}

for (i = 0; i

StringGrid1-> Cells [i +1] [0] = "B" + String (i +1);

}

}

// --------------------------------------------- ------------------------------

void __fastcall TForm1 :: SaveClick (TObject * Sender)

{

int n, m;

n = StrToInt (Edit4-> Text);

m = StrToInt (Edit5-> Text);

// збереження у файл

SaveTextFileDialog1-> Execute ();

SaveTextFileDialog1-> FileName;

ofstream myfile (SaveTextFileDialog1-> FileName.t_str ());

for (int i = 0; i

for (int j = 0; j

myfile < Cells [j +1] [...


Друкувати реферат
Замовити реферат
Товары
загрузка...
Наверх Зворотнiй зв'язок