Индивидуальная работа на тему Решение матричных игр средствами MatLab
« НазадИндивидуальная работа«Решение матричных игр средствами MatLab»
1. Решение матричной игры в чистых стратегияхРассмотрим простейшую математическую модель конечной конфликтной ситуации, в которой имеется два участника и выигрыш одного равен проигрышу другого. Такая модель называется антагонистической игрой двух лиц с нулевой суммой. Игра состоит из двух ходов: игрок А выбирает одну из возможных стратегий Аi, , а игрок В выбирает одну из возможных стратегий Вj, . Каждый выбор производится при полном незнании выбора соперника. В результате выигрыш игроков составит соответственно aij и -aij. Цель игрока А - максимизировать величину aij, а игрока В - минимизировать эту величину. Определение 1. Матрица, составленная из величин aij, ,, называется платежной матрицей, или матрицей игры. Каждый элемент платежной матрицы aij, ,равен выигрышу А (проигрышу В), если он выбрал стратегию Аi, , а игрок В выбирал стратегию Вj, . Пример. В игре участвуют первый и второй игроки, каждый из них может записать независимо от другого цифры 1, 2 и 3. Если разность между цифрами, записанная игроками, положительна, то первый игрок выигрывает количество очков, равное разности между цифрами, и, наоборот, если разность отрицательна, то выигрывает второй игрок. Если разность равна нулю, то игра заканчивается вничью. У первого игрока три стратегии (варианта действия): А1 (записать 1), А2 (записать 2), А3 (записать 3); у второго игрока также три стратегии: В1, В2, В3 (см. таблицу).
Задача первого игрока - максимизировать свой выигрыш. Задача второго игрока - минимизировать свой проигрыш или минимизировать выигрыш первого игрока. Платежная матрица имеет вид. Задача каждого из игроков - найти наилучшую стратегию игры, при этом предполагается, что противники одинаково разумны и каждый из них делает все, чтобы получить наибольший доход. Найдем наилучшую стратегию первого игрока. Если игрок А выбрал стратегию Аi, , то в худшем случае (например, если его ход известен В) он получит выигрыш . Предвидя такую возможность, игрок А должен выбрать такую стратегию, чтобы максимизировать свой минимальный выигрыш. Определение 2. Величина a - гарантированный выигрыш игрока А называется нижней ценой игры. Стратегия Aiопт, обеспечивающая получение выигрыша a, называется максиминной. Если первый игрок будет придерживаться своей максиминной стратегии, то у него есть гарантия, что он в любом случае выиграет не меньше a. Аналогично определяется наилучшая стратегия второго игрока. Игрок В при выборе стратегии Вj, в худшем случае получит проигрыш . Он выбирает стратегию Bjопт, при которой его проигрыш будет минимальным и составит. Определение 3. Величина b - гарантированный проигрыш игрока В называется верхней ценой игры. Стратегия Bjопт, обеспечивающая получение проигрыша b, называется минимаксной. Если второй игрок будет придерживаться своей минимаксной стратегии, то у него есть гарантия, что он в любом случае проиграет не больше b. Фактический выигрыш игрока А (проигрыш игрока В) при разумных действиях партнеров ограничен верхней и нижней ценой игры. Для матричной игры справедливо неравенство a £ b. Определение 4. Если a = b =v, т. е. то выигрыш игрока А (проигрыш игрока В) определяется числом v. Оно называется ценой игры. Определение 5. Если a = b =v, то такая игра называется игрой с седловой точкой, элемент матрицы аiопт jопт = v, соответствующий паре оптимальных стратегий (Aiопт, Bjопт), называется седловой точкой матрицы. Этот элемент является ценой игры. Седловой точке соответствуют оптимальные стратегии игроков. Их совокупность – решение игры, которое обладает свойством: если один из игроков придерживается оптимальной стратегии, то второму отклонение от своей оптимальной стратегии не может быть выгодным. Определение 6. Если игра имеет седловую точку, то говорят, что она решается в чистых стратегиях. Найдем решение игры рассмотренного выше примера: Так как a = b = 0, матрица игры имеет седловую точку. Оптимальная стратегия первого игрока – А3 , второго - B3. Из таблицы видно, что отклонение первого игрока от оптимальной стратегии уменьшает его выигрыш, а отклонение второго игрока от В3 увеличивает его проигрыш. Наличие седловой точки в игре – это далеко не правило, скорее, исключение. Существует разновидность игр, которые всегда имеют седловую точку и, значит, решаются в чистых стратегиях. Это так называемые игры с полной информацией. Определение 7. Игрой с полной информацией называется такая игра, в которой каждый игрок при каждом личном ходе знает всю предысторию ее развития, т.е. результаты всех предыдущих ходов. Примерами игр с полной информацией могут служить шашки, шахматы, "крестики-нолики" и т.д. 1.1. Теорема 1Каждая игра с полной информацией имеет седловую точку и, значит, имеет решение в чистых стратегиях. В каждой игре с полной информацией существует пара оптимальных стратегий, дающая устойчивый выигрыш, равный цене игры v. Если решение игры известно, сама игра теряет смысл. Например, шахматная игра либо кончается выигрышем белых, либо выигрышем черных, либо ничьей, только чем именно – мы пока не знаем (к счастью для любителей шахмат). Прибавим еще: вряд ли будем знать в обозримом будущем, так как число стратегий так велико, что крайне трудно привести шахматную игру к матричной форме и найти в ней седловую точку. 2. Решение матричной игры в смешанных стратегиях
Если платежная матрица не имеет седловой точки, т.е. a <b и , то поиск решения игры приводит к применению сложной стратегии, состоящей в случайном применении двух и более стратегий с определенными частотами. Определение 1. Сложная стратегия, состоящая в случайном применении всех стратегий с определенными частотами, называется смешанной. В игре, матрица которой имеет размерность m ´ n, стратегии первого игрока задаются наборами вероятностей (x1, x2, ..., xm), с которыми игрок применяет свои чистые стратегии. Эти наборы можно рассмотреть как m-мерные векторы, для координат которых выполняются условия, xi ³ 0, . Аналогично для второго игрока наборы вероятностей определяют n-мерные векторы (y1, y2, ..., yn), для координат которых выполняются условия = 1, yj ³ 0, . Выигрыш первого игрока при использовании смешанных стратегий определяют как математическое ожидание выигрыша, т.е. он равен. 2.1. Теорема 1 (Неймана. Основная теорема теории игр)
Каждая конечная игра имеет, по крайней мере, одно решение, возможно, в области смешанных стратегий. Применение оптимальной стратегии позволяет получить выигрыш, равный цене игры: a £ v £ b. Применение первым игроком оптимальной стратегии опт должно обеспечить ему при любых действиях второго игрока выигрыш не меньше цены игры. Поэтому выполняется соотношение, . Аналогично для второго игрока оптимальная стратегия опт должна обеспечить при любых стратегиях первого игрока проигрыш, не превышающий цену игры, т.е. справедливо соотношение, . Если платежная матрица не содержит седловой точки, то задача определения смешанной стратегии тем сложнее, чем больше размерность матрицы. Поэтому матрицы большой размерности целесообразно упростить, уменьшив их размерность путем вычеркивания дублирующих (одинаковых) и не доминирующих стратегий. Определение 2. Дублирующими называются стратегии, у которых соответствующие элементы платежной матрицы одинаковы. Определение 3. Если все элементы i-й строки платежной матрицы больше соответствующих элементов k-й строки, то 2.2. ПримерРассмотрим игру, представленную платежной матрицей. a = max (2, 2, 3, 2) = 3, b = min (7, 6, 6, 4, 5) = 4, a ¹ b, . Все элементы стратегии А2 меньше элементов стратегии А3, т.е. А2 заведомо невыгодна для первого игрока и ее можно исключить. Все элементы А4 меньше А3, исключаем А4. Для второго игрока: сравнивая В1 и В4, исключаем В1; сравнивая В2 и В4, исключаем В2; сравнивая В3 и В4, исключаем В3. В результате преобразований получим матрицу:. a = max (2, 3) = 3, b = min (4, 5) = 4, a ¹ b, . 3. Описание базовых возможностей среды MatLab3.1. Массивы и матрицыДля создания вектора строки используется квадратные скобки [] с указанием значений через пробел. >> A = [1 2 3 4 5] результат Для создания вектора столбца используется квадратные скобки [] с указанием значений через пробел а в конце добавляется ‘>> A = [1 2 3 4 5]' Результат Для создания матрицы используется квадратные скобки [] с указанием значений строк через пробел, а разделителем строя является точка с запятой“;” >> A = [1 2 3 4;5 6 7 8] Результат Для транспонирования матрицы так же в конце надо добавить ‘ >> A = [1 2 3 4;5 6 7 8]' Результат Для того чтобы MatLab не выводил каждый раз значение переменной после ее ввода, надо завершать каждую команду “;” можно писать несколько команд в одной строке разделяя их “;” >> A = 5;B = 6;C = 7; Для создания массива чисел с фиксированным шагом используется двоеточие >> A = 1:0.1:5; Результатом будет массив от 1 до 5 с шагом 0,1 3.2. М-Файлы
М-Файлы это обычные текстовые файлы с расширением *.m содержащие команды на языке MatLab. М-Файлы бывают двух типов М-Файлы сценарии и М-Файлы функции. 3.2.1. М-Файлы сценарииНе имеют входных и выходных параметров. Работают с переменными из Workspace. Также переменные, создаваемые в М-Файлах сценариях после выполнения М-Файла остаются в WorkSpace. Удобны для сохранения часто повторяющихся последовательных команд. Пример М-Файла сценария “Sample.m” File->New->M-File Код сценария (или скрипта) надо сохранить в папку Current Directory с именем “Sample.m”. Для выполнения сценария введем команду Sample (MatLab чувствителен к регистру) результат: обратите внимание, что в Workspace осталась переменная “y” 3.2.2. М-Файлы функции
Имеют входные и выходные параметры. Не могут работать с переменными из Workspace.Переменные создаваемые внутри М-Файла функции уничтожаются после исполнения. Создаются с помощью ключевого слова function. Необходимо загрузить функцию с файлом в Current Directory. ВАЖНО: Имя М-Файла функции должно совпадать с именем функции !!! пример М-Файла функции “Sample2.m” В строке команд ввведем [A B] = Sample2(1, 2) результат: Окно Workspace после выполнения функции Sample2 3.3. Основы программирования на языке MatLab
3.3.1. if..elseif..endВ MatLab в отличие от языка С++ не надо использовать фигурные скобки {}. Если условие после IF не нулевое (т.е. истина) то будут выполнены все операторы до команды end, в противном случае будут выполнятся операторы стоящие после end Пример function y = signum(x) if x > 0 y = 1; elseif x == 0 y = 0; else y = -1; end Функция signum вернет знак переменной x если она не равна нулю и ноль в противном. 3.3.2. Циклыwhile Выполняются все команды между while..end пока условие while’а верно. пример : i = 0; while i < 50 i = i + 1 disp('еще разок') end For Выполняются все команды между For..end заданное количество раз. Пример : for i = 1:2:20; disp('ещеразок i = i + 2') i end disp('все, хватит !!!')
3.3.3. Вложенные циклыj = 0; fori = 1:2:20; %нам не нужен вывод значений i disp('ещеразок i = i + 2') I%а здесь как раз нужен ! whilej < 4 disp('а теперь J') j = j + 1 %и здесь тоже end j = 0; end disp('все, хватит !!!') Обратите внимание на положение точек с запятой. 3.3.4. Передача матрицы в качестве параметра функцииМатрицу можно получать в качестве аргумента к функции, Пример. З повагою ІЦ "KURSOVIKS"! |