Как стать автором
Обновить

Игры с нулевой суммой и условия Каруша-Куна-Таккера

Время на прочтение6 мин
Количество просмотров9.7K

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


Пусть есть два игрока, A и B, которые многократно разыгрывают некоторую игру. Каждый игрок в каждом розыгрыше придерживается одной из нескольких стратегий — для простоты будем считать, что количество стратегий для обоих игроков совпадает и равняется $n$. При выборе $i$-й стратегии первым игроком и $j$-й стратегии вторым игроком первый игрок получит выигрыш $a_{ij}$, а второй игрок получит такой же проигрыш — так уж устроены антагонистичные игры. Эти выигрыши можно записать в виде квадратной матрицы $A$:


$A = \|a_{ij}\|, 1 \leq i, j \leq n$


Игроки разыгрывают игру многократно и могут использовать разные стратегии в разных розыгрышах. Смешанная стратегия — это вектор вероятностей, сопоставленных каждой из чистых стратегий игрока. Каждый игрок выбирает одну из стратегий в очередном розыгрыше в соответствии с вероятность, определённой для неё его смешанной стратегией. Если обозначить через $p$ и $q$ смешанные стратегии игроков, то математическое ожидание выигрыша первого игрока будет равняться


$f(p,q) = (Ap, q) = \sum_{i=1}^{n}{\sum_{j=1}^{n}{p_i q_j a_{ij}}} $


Пара смешанных стратегий называется равновесием, если ни один игрок не может увеличить свой выигрыш, изменив свою стратегию. Другими словами, для любой другой пары стратегий $p'$, $q'$ выполнено:


$ (Ap', q) \leq (Ap, q) \leq (Ap, q') $


Вот поиском таких равновесий мы сейчас и займёмся.


1. Равновесия


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


Например, рассмотрим такую матрицу выигрышей:


$ A = \begin{pmatrix} 2& 3 \\ 4& 1 \end{pmatrix} $


В этом случае ни одна из пар чистых стратегий не является равновесием. Пусть, скажем, первый игрок выбирает первую стратегию. Тогда второй игрок хочет захочет также всегда выбирать первую стратегию: это приведёт к меньшему проигрышу (2 против 3). Но, если второй игрок выбирает первую стратегию, первый игрок предпочтёт ответить стратегией номер два: так его выигрыш будет больше (4 против 1). Однако, если первый игрок выбирает вторую стратегию, второй игрок также ответит второй: его проигрыш таким образом уменьшится (1 против 4). Но при выборе вторым игроком второй стратегии первый игрок выберет первую стратегию, и так далее. Итого, при любом выборе чистых стратегий хотя бы один из игроков может изменить свой выбор так, чтобы увеличить собственную выгоду.


Однако в пространстве смешанных стратегий равновесие найдётся. Нетрудно проверить, что равновесием в данном случае будет пара смешанных стратегий $(1/2, 1/2)$, $(1/2, 1/2)$. В таком случае математическое ожидание выигрыша для первого игрока будет равно 2.5.


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


Если смешанные стратегии $p$ и $q$ образуют равновесие, они оказываются решениями оптимизационных задач:


$p = \arg \max_{p'}{(Ap', q)}, q = \arg \min_{q'}{(Ap, q')}$


При этом на сами стратегии распространяются очевидные ограничения:


$p_i \geq 0, q_j \geq 0, 1 \leq i,j \leq n$


$\sum_{i=1}^{n}{p_i} = \sum_{j=1}^{n}{q_j} = 1$


Если бы в задаче были только ограничения в форме равенств, для поиска решений можно было бы воспользоваться методом множителей Лагранжа. Но его применение невозможно из-за наличия ограничений в виде неравенств: каждый компонент смешанной стратегии должен допускать вероятностную интерпретацию, а поэтому не может быть отрицательным.


Рассмотрим, например, следующую матрицу выигрышей:


$ A = \begin{pmatrix} 3& 1& 2 \\ -2& 3& 1 \\ -2& -2& 3 \end{pmatrix} $


Не вдаваясь в технические детали, скажу, что применение метода множителей Лагранжа с учётом только лишь ограничений в виде равенств


$\sum_{i=1}^{n}{p_i}=\sum_{j=1}^{n}{q_j}=1$


в данном случае приведёт к решению


$p=(0.74, 0,29, -0.03)$


Это происходит из-за того, что метод множителей Лагранжа не может учесть ограничения в виде неравенств. Тут-то нам и помогут условия Каруша-Куна-Таккера.


2. Условия Каруша-Куна-Таккера


Также эти условия известны как условия Куна-Таккера, а всё потому, что впервые опубликованы они были в работе 1951-го года за авторством Куна и Таккера, и лишь впоследствии обнаружилось, что Каруш уже в 1939-м году сформулировал их в неопубликованной работе.


На время отвлечёмся от теории игр и сформулируем более общую задачу оптимизации следующим образом: необходимо найти минимум некоторой функции


$min_{x \in \mathbb{R}}f(x)$


при условии ограничений как в виде равенств, так и в виде неравенств:


$h_i(x) \leq 0, 1 \leq i \leq m $


$l_j(x) = 0, 1 \leq j \leq r $


Доказывается, что тогда каждая точка, являющаяся решением оптимизационной задачи, удовлетворяет условиям Каруша-Куна-Таккера:


$\frac{\partial}{\partial{x}}\Big({f(x)} - \sum_{i=1}^{m}{\lambda_i h_i(x)} - \sum_{j=1}^{r}{\mu_j l_j(x)}\Big) = 0$


$\lambda_i \cdot h_i(x) = 0, 1 \leq i \leq m $


$\lambda_i \ge 0, 1 \leq i \leq m $


$h_i(x) \leq 0, 1 \leq i \leq m $


$l_j(x) = 0, 1 \leq j \leq r $


Здесь первое условие очень похоже на соответствующие условие в методе множителей Лагранжа; последние два условия фактически дублируют ограничения исходной оптимизационной задачи.


Второе и третье условия — хитрые. Вместе с условием четыре они означают следующее:


  • либо $h_i(x) = 0$,
  • либо всё-таки $h_i(x) < 0$, но тогда обязательно $\lambda_i=0$.

Теперь возникает вопрос о том, а как, собственно, решать такую систему уравнений. Как правило, можно поступать следующим образом:


  • из условия 2 означить некоторые из $\lambda_i$ нулями;
  • из оставшихся уравнений условия 2, уравнения 1 и условий 5 получить систему уравнений и найти все её решения;
  • из этих решений выбрать те, что удовлетворяют условиям 3 и 4;
  • повторить описанный алгоритм для всех возможных способов означить переменные из условия 2 нулями;
  • из всего множества полученных решений простым перебором выбрать те, что являются решениями исходной оптимизационной задачи.

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


3. Условия ККТ для антагонистических игр


Выше я записал условия ККТ для задачи минимизации. Поэтому нужно сформулировать все условия в терминах задачи минимизации, плюс нужно соблюсти формальность и переписать условия в виде неравенств так, чтобы они были записаны в виде «меньше либо равно нулю».


Условия для $p$:


  • $-(Ap, q) \rightarrow \min$
  • $-p_i \le 0, 1 \leq i \leq n $
  • $\sum_{j=1}^{n}{p_i} - 1 = 0$

Условия для $q$:


  • $(Ap, q) \rightarrow \min$
  • $-q_j \le 0, 1 \leq j \leq n $
  • $\sum_{j=1}^{n}{q_j} - 1 = 0$

Теперь выпишем лагранжианы:


$L_1(p) = -(Ap, q) + \sum_{i=1}^{n}{\alpha_i p_i} - \beta \Big(\sum_{i=1}^{n}p_i - 1\Big)$


$L_2(q) = (Ap, q) + \sum_{j=1}^{n}{\lambda_j q_j} - \mu \Big(\sum_{j=1}^{n}q_j - 1\Big)$


Возьмём производные:


$\frac{\partial L_1(p)}{p_i} = -\sum_{j=1}^{n}{a_{ij}q_j} + \alpha_i - \beta$


$\frac{\partial L_2(q)}{q_j} = \sum_{i=1}^{n}{a_{ij}p_i} + \lambda_j - \mu$


Теперь запишем оставшиеся условия Каруша-Куна-Таккера, местами преобразовав в более удобный вид. Для $p$:


  • $\alpha_i \cdot p_i = 0, 1 \leq i \leq n $
  • $\alpha_i \ge 0, 1 \leq i \leq n $
  • $\sum_{i=1}^{n}{p_i} = 1$
  • $p_i \ge 0, 1 \leq i \leq n$

Для $q$:


  • $\lambda_j \cdot q_j = 0, 1 \leq j \leq n $
  • $\lambda_j \ge 0, 1 \leq j \leq n $
  • $\sum_{j=1}^{n}{q_j} = 1$
  • $q_j \ge 0, 1 \leq j \leq n$

Приравнивая производные лагранжианов нулю, получим следующую систему уравнений:


$\sum_{j=1}^{n}{a_{ij}q_j} - \alpha_i + \beta = 0, 1 \le i \le n$


$\sum_{i=1}^{n}{a_{ij}p_i} + \lambda_j - \mu = 0, 1 \le j \le n$


$\sum_{i=1}^{n}{p_i} = 1, \sum_{j=1}^{n}{q_j} = 1$


Здесь $4n +2$ переменных и $2n+2$ уравнений. Используем теперь условия:


  • $\alpha_i \cdot p_i = 0, 1 \leq i \leq n $
  • $\lambda_j \cdot q_j = 0, 1 \leq j \leq n $

Каждое из этих условий позволяет приравнять нулю либо $p_i$, либо $\alpha_i$, а также либо $q_j$, либо $\lambda_j$. Значит, существует $2^{2n}$ способов означить $2n$ переменных нулями. Поэтому нужно будет решить $2^{2n}$ систем линейных уравнений, в каждой из которых будет $2n+2$ уравнения и $2n+2$ неизвестных (остальные означены нулями).


Из всех решений нужно будет выбрать только те, которые удовлетворяют оставшимся ограничениям Каруша-Куна-Таккера:


$\alpha_i, p_i, \lambda_j, q_j \ge 0, 1 \leq i, j \leq n $


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


Рассмотрим теперь подробнее уравнения, которые получаются после означения некоторых неизвестных нулями. Для примера рассмотрим следующее уравнение для некоторого $i$:


$\sum_{j=1}^{n}{a_{ij}q_j} - \alpha_i + \beta = 0$


Мы знаем, что $\alpha_i$ может равняться нулю, в таком случае уравнение принимает вид


$\sum_{j=1}^{n}{a_{ij}q_j} + \beta = 0$


Если же $\alpha_i$ в соответствии с выбором не равняется нулю, эта неизвестная просто выражается через значения вектора $q$ и значение $\beta$:


$\alpha_i = \sum_{j=1}^{n}{a_{ij}q_j} + \beta$


При этом можно достаточно простым образом гарантировать, что сумма справа всегда будет положительной: для этого достаточно увеличить все значения матрицы $A$ на некоторую очень большую величину. Таким образом, неизвестные $\alpha_i$ и, по аналогии $\lambda_j$ при решении системы можно просто исключить из рассмотрения: они всегда либо равны нулю, либо тривиальным образом выражаются через другие неизвестные и при этом не используются в дальнейшем; ограничения на неотрицательность этих неизвестных также выполняются автоматически. Поэтому систему для решения можно упростить:


$\sum_{j=1}^{n}{a_{ij}q_j} + \beta = 0, 1 \le i \le n$


$\sum_{i=1}^{n}{a_{ij}p_i} - \mu = 0, 1 \le j \le n$


$\sum_{i=1}^{n}{p_i} = 1, \sum_{j=1}^{n}{q_j} = 1$


А ограничения становятся тривиальными:


$p_i, q_j \ge 0, 1 \leq i,j \leq n$


Так мы получили две независимых друг от друга системы линейных алгебраических уравнений, в каждой из которых $n+1$ неизвестных и $n+1$ неизвестная. Матрицы двух систем отличаются друг от друга транспонированием.


5. В поисках равновесия


Не все полученные решения будут равновесиями: условия ККТ являются достаточными, но не являются необходимыми. Нужно явным образом проверить свойство равновесности. Напомню, что пара смешанных стратегий $p$, $q$ является равновесием, если для любых других смешанных стратегий $p'$, $q'$ выполнено:


$ (Ap', q) \leq (Ap, q) \leq (Ap, q') $


Но проверять это свойство для всех возможных альтернативных смешанных стратегий, конечно, не получится. Нам на помощь приходит тот факт, что среди множества найденных решений обязательно находится равновесие. Это значит, что проверить равновесность можно лишь сравнениями с другими полученными решениями. Подробнее: пусть $p_1, q_1; p_2, q_2; ... ; p_k, q_k$ — все найденные решения. Пара $p, q$ является равновесием тогда и только тогда, когда


$\forall i \in {1,...,k}: (Ap_i, q) \leq (Ap, q) \leq (Ap, q_i) $


6. Реализация


Весь код реализации я сложил к себе на GitHub: https://github.com/ashagraev/zero_sum_game


В matrix.h лежит простой утилитарный код: прочитать матрицу, транспонировать матрицу, решить СЛАУ. Для решения СЛАУ я использую простейший метод Гаусса с выбором ведущего элемента и тривиальной проверкой на вырожденность. Эту можно было бы реализовать и получше, но суть не в ней.


Реализация описанного алгоритма для решения набора СЛАУ находится в файле kkt.cpp. Для генерации подмножеств используются коды Грея. Чтобы подружить рекурсивный метод генерации кодов Грея с последовательной их обработкой, пришлось немного покуражиться с callback'ами.


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


Примеры входных матриц для программы находятся в input.txt, а результаты запуска программы на этих примерах — в файле output.txt.

Теги:
Хабы:
+10
Комментарии9

Публикации

Изменить настройки темы

Истории

Ближайшие события