Литература
1. Тарасевич Ю.Ю. Перколяция. Теория, приложения, алгоритмы: Учебное пособие. -М.: Едиториал УРСС, 2002.- 112 с.
2. Wilkinson D., Wlemsen J.F. Invasion percolation: A new form of percolation theory // J. Phys. - 1983. - A16.-Р. 365-376.
Головченко Евдокия Николаевна - Институт математического моделирования РАН,
м.н.с., [email protected]
Петров Дмитрий Владиславович - Московский государственный технологический
университет «СТАНКИН», аспирант, [email protected]
УДК 004.021
РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ДЛЯ МОДЕЛИРОВАНИЯ КОНКУРЕНТНОГО РЫНКА НА КЛАСТЕРНЫХ СИСТЕМАХ М.Ю. Нестеренко, Д.В. Леонов, Е.В. Болгова, А.С. Кириллов
В статье рассматривается подход к решению вычислительно-сложной задачи построения оптимальной коалиции и распределения выигрыша в кооперативных играх для n игроков. Представлена схема параллельного алгоритма решения поставленной проблемы и проанализированы полученные результаты работы программной реализации алгоритма.
Ключевые слова: кооперативные игры, параллельное программирование.
Введение
Теория игр, которая начала развиваться совсем недавно, может описать практически любую ситуацию. В настоящее время разработано большое количество видов игровых ситуаций, которые нашли свое применение в таких областях, как приборостроение, математика, разработка программного обеспечения, экономика, социология и др.
Среди направлений теории игр особое место занимают кооперативные игры, например, разработка компьютерных систем, оптимальных стратегий безопасности систем и др. В них игроки имеют возможность принимать совместные решения и, в некоторых случаях, перераспределять выигрыши между собой; под выигрышем может пониматься эффективность, надежность и т.д. В кооперативной игре задаются возможности и предпочтения различных групп игроков (коалиций), для которых строятся оптимальные стратегии и задаются распределения суммарных выигрышей между ними. Особого внимания заслуживают задачи моделирования конкурентных рынков. Примером подобной задачи может быть моделирование конкурентного рынка IT, где игроками являются производители компьютерной техники и программного обеспечения, имеющие возможность объединяться в коалиции, конкурирующие за соответствующие ниши рынка.
Существуют различные способы решения кооперативных игр, например, решение на основе функции полезности Неймана-Моргенштерна, решение игры в виде C-ядра и в стратегиях угроз. Однако эти подходы не определяют оптимальных стратегий игроков внутри коалиций, а решение игры в виде С-ядра дает целое множество допустимых решений, не определяя оптимального. Попытки построения количественного подхода к решению кооперативной игры предприняты И. Д. Протасовым [2]. В работе предлагается задавать кооперативные игры в виде совокупности биматричных игр. Для задания игры n игроков требуется 2n -1 биматричных игр, каждая из которых должна быть решена, что обусловливает необходимость применения высокопроизводительных технологий.
Таким образом, задачами исследования является разработка математического обеспечения решения кооперативной игры на кластере и моделирование с помощью разработанного программного обеспечения конкурентного рынка.
Модель конкурентного рынка в виде кооперативной игры
Постановка задачи моделирования конкурентного рынка подробно рассмотрена в [2, 3], но проблема ресурсоемкости не затронута, является актуальной и может быть решена с использованием высокопроизводительных технологий. В общем виде для двух игроков модель конкурентного рынка рассмотрена В. А. Колемаевым в [4]. При увеличении количества игроков до трех требуется задание уже не двух, а шести матриц следующего вида [1]:
аХ / у
К Ст К Ст
К Г ЬХо2 - й ЬХо2 > - й К , ВУ / X = п Ст [ ЬХ2 -й ЬХо й )
16 36 16 12
Ст ЬХо2 - й ЬЗ Xо2 - й ЬХ2 -й Ь3Хо й
1 12 1оо 1 36 1оо )
где матрица АХ / У ( ВУ / Х ) - матрица выигрышей игрока X в игре с игроком У (У в игре с
игроком X) в том случае, если игроки могут действовать по двум стратегиям - Курно и Стакельберга, Хо = (а-с)/Ь - величина общего выпуска, при котором прибыль каждой фирмы отрицательна и равна (-й) (с - предельные издержки, Ь - падение цены при увеличении на единицу выпуска, й - постоянные издержки). Выражение для прибыли конкурирующих фирм принимает вид
П (X, Х2, Хз) = ЬХ, (Хо - (X + X2 + X3)) - й.
При этом модель значительно упрощена тем, что издержки фирм и цена на продукцию являются линейными функциями. Таким образом, игра п игроков может быть представлена СП биматричных игр, что уже является вычислительно емким показателем.
Обозначим через N множество всех игроков, N={1, 2, ..., п}, а через К - любое его подмножество. Пусть игроки из К договариваются между собой о совместных действиях и, таким образом, образуют одну коалицию. Образовав коалицию, множество игроков К действует как один игрок против остальных игроков, и выигрыш этой коалиции зависит от применяемых каждым из п игроков стратегий.
Обозначим функцией V характеристическую функцию, ставящую в соответствие каждой коалиции К наибольший уверенно получаемый ею выигрыш v(K). Всего характеристических функций может быть 2п, причем коалиция с номером 0 является пустой коалицией, и ее выигрыш всегда равен нулю.
Обозначим через Х={х1, х2, ..., хп} дележ, являющийся распределением выигрышей игроков.
В бескоалиционных играх исход формируется в результате действий игроков, которые в этой ситуации получают свои выигрыши. Исходом в кооперативной игре является дележ, возникающий не как следствие действий игроков, а как результат их соглашений. Поэтому в кооперативных играх сравниваются не ситуации, как это имеет место в бескоалиционных играх, а дележи, и сравнение это носит более сложный характер.
Мы предлагаем следующий алгоритм решения кооперативной игры: коалиционная игра задается в виде СI = п ■ (п -1) матриц размера к х к, где п - количество игроков, к - количество стратегий у игроков, имеющих вид
Аху
aii ai2
a
ik
a
21
V aki
a
22
a
2k
a
гк2 ••• акк У
где ау (/, у = 1, к)- выигрыши игрока х в игре с игроком у. Элементы матриц вычисляются по аналогии с игрой двух игроков, более подробно подход к вычислению выигрышей игроков в зависимости от выбора ими той или иной стратегии приведен в [4]. Стратегии коалиции определяются выбором игроков-участников коалиций. Таким образом, у коалиции из т игроков будет кт чистых стратегий, где к - число выборов у каждого игрока.
При построении матрицы выигрышей коалиции следует исходить из наихудших условий, т.е. предположить, что остальные участники игры образовали коалицию с намерениями минимизировать выигрыши противостоящей коалиции. Количество стратегий у коалиции определяется числом участников коалиции и количеством выборов у каждого участника. Пусть коалиция состоит из т игроков и каждый имеет по к выборов, тогда матрица коалиции будет иметь размер кт х кп~т, где п - общее число игроков.
Элементы матрицы выигрышей коалиции вычисляются как сумма выигрышей каждого игрока-участника коалиции у всех игроков (в зависимости от условий игры возможно включение в суммарный выигрыш коалиции и выигрыш между игроками внутри коалиции).
Каждая игра решается сведением к задаче линейного программирования, которая, в свою очередь, решается с помощью симплекс-метода Дж. Данцига. Сведение к задаче линейного программирования осуществляется следующим образом: если первый игрок придерживается своей оптимальной смешанной стратегии X, а второй игрок придерживается свой чистой у'-ой стратегии, то выполняются следующие неравенства:
Х1 • а11 + ... + Хт ■ ат1 > V
х1 • ащ + ... + хт • атп > V
где а у (/,' = 1, к) - выигрыши игрока х в игре с игроком у, х/ - вероятность использова-
т
ния первым игроком /-ой стратегии, ^ х/ = 1, V - цена игры, максимальный гарантиро-
/=1
ванный выигрыш, который получит первый игрок при выборе оптимальной смешанной стратегии, V > 0.
х
Если в неравенствах поделить обе части на V и обозначить — за и, так как х/ -
V
вероятность использования z-ои стратегии, то получим следующее:
m m
X i
^ min,
т т 1
^ = Ь = 1^ = /=1 /=1 V V
• аи + ... + tm • ат1 > 1,
Ч • а1п + ... + tm • атп > 1,
что, в свою очередь, является задачей линейного программирования и решается с помощью симплекс-метода Дж. Данцига.
Для нахождения дележа используется принцип оптимальности распределения выигрыша между игроками в задачах теории кооперативных игр, называемый вектором Шепли, который вычисляется по следующей формуле:
ф( <к -!)'(" -к)! ■ [N) - v(N\,)],
п!
где п - количество игроков, к - количество участников коалиции N.
Анализ подходов к распараллеливанию решения кооперативной игры
Для решения кооперативных игр применяется сведение множества биматричных игр к множеству стратегических игр и решение каждой из них симплекс-методом для нахождения выигрыша каждой коалиции. Как было отмечено раньше, всего коалиций может быть 2п, где п - количество игроков, следовательно, необходимо решить 2п стратегических игр симплекс-методом Дж. Данцига, который обладает экспоненциальной сложностью [7]. При достаточно больших п это занимает длительное время. Кроме того, большую вычислительную сложность имеет процесс формирования матриц, которыми задаются коалиции. Трудоемкость этого процесса составляет 0(п2). Так как матрицы, описывающие коалиции не зависят друг от друга, а зависят только от матриц, задающих саму игру, то генерация матриц может осуществляться параллельно.
Исходя из сказанного, можно сделать вывод, что формирование матриц, характеризующих коалиции, и их расчет симплекс-методом являются независимыми участками кода, которые можно выполнять параллельно.
Считывание матриц, задающих игру
Рассылка считанных матриц процессам
Формирование матрицы коалиции
Входные данные
Процесс о
Решение игры
Получение результатов от всех процессов
Проверка на существенность игры
Расчет вектора Шепли
Прием матриц
Процесс 1
Формирование матрицы коалиции
Решение игры
Выходные данные
Процесс п-1
Прием матриц
Формирование матрицы коалиции
Решение игры
Рис. 1. Схема работы параллельного алгоритма
Суть разработанного параллельного алгоритма (рис. 1) состоит в следующем.
Нулевым процессом выполняется считывание матриц, задающих игру, после чего они рассылаются остальным незанятым работающим процессам, которые, в свою очередь, формируют матрицы, характеризующие коалиции. Номера игроков, входящих в коалицию, определяются по соответствию позиций единичных элементов двоичного представления порядкового номера формируемой матрицы. После этого полученная матрица сводится к задаче линейного программирования и решается симплекс-методом. Результат отсылается нулевому процессу, который проверяет игру на сущест-
венность, и, если игра существенна, то вычисляется дележ по Шепли. Затем все результаты выводятся в выходной файл.
Алгоритм реализован на языке C с использованием библиотеки MPI (Message Passing Interface). В приведенном выше алгоритме доля последовательного участка
подчиняется закону ./=—n-"—, где n - количество игроков, k - количество стратегий у
k + k
игроков, из которого видно, что при возрастании n или k доля последовательных вычислений стремится к нулю.
Тестирование программы производилось на кластере Оренбургского государственного университета, построенного на базе двухпроцессорных Xeon 3 Ггц под управлением операционной системы SuSe Linux. Тестирование производилось для 7 игроков, и у каждого игрока имелось по 4 стратегии поведения.
¡е ф о
.о н
о ю га
CL
18 16 14 12 10 8 6
к
2 ф
со 4
■ Время работы
2--
0 I I I I I I
1 2 4 6 8 10
Количество процессоров
Рис. 2. График зависимости времени работы от количества процессоров
10 1
9
8
7
ш s 6
I
ф о. 5
о
а р 4
3 -
2
1
0 -
.Теоретическое ускорение
Практическое ускорение
1
10
2 4 6 8
Количество процессоров
Рис. 3. График зависимости теоретического и практического ускорения от количества процессоров
Зависимость времени работы программы от количества процессоров представлена на рис. 2. Для наглядного представления построен график зависимости теоретической оценки
ускорения по закону Амдала и ускорения работы программы, рассчитанного по результатам тестирования в зависимости от числа процессоров, представленный на рис. 3.
Заключение
В результате анализа подходов к решению кооперативных игр выявлена необходимость построения количественного метода их решения. В статье предложен метод построения характеристической функции на основе задания кооперативной игры множеством биматричных игр. Выявлена высокая вычислительная сложность данного метода, что обусловливает необходимость применения высокопроизводительных технологий. В результате распараллеливания алгоритма, реализующего метод, удалось достичь ускорения около 2,5 раз. Большое разногласие между теоретическим и практическим ускорением указывает на перспективность данной оптимизации параллельного алгоритма.
Литература
1. Нестеренко М.Ю. Игровое моделирование рынка одного товара // Материалы региональной научно-практической конференции. - Оренбург, 2004.
2. Протасов И.Д. Теория игр и исследование операций: Учебное пособие. - М.: Гелиос АРВ, 2003. - 368 с.
3. Крушевский А.В. Теория игр. - Киев: Вища школа, 1977. - 216 с.
4. Колемаев В.А., Калинина В.Н. Теория вероятностей и математическая статистика: Учеб. для вузов. - 2-е изд., перераб. и доп. - М.: Юнити, 2003. - 352 с.
5. Антонов А.С. Параллельное программирование с использованием технологии MPI: Учебное пособие. - М.: Изд-во МГУ, 2004. - 71 с.
6. Антонов А.С. Введение в параллельные вычисления: Методическое пособие. - М.: Изд-во МГУ, 2002. - 69 с.
7. Данциг Дж. Линейное программирование, его применения и обобщения. - М.: Прогресс, 1966.- 600 с.
Нестеренко Максим Юрьевич Леонов Денис Владимирович Болгова Екатерина Владимировна Кириллов Алексей Сергеевич
- Оренбургский государственный университет, к.т.н., [email protected]
- Оренбургский государственный университет, м.н.с., [email protected]
- Оренбургский государственный университет, студент, [email protected]
- Оренбургский государственный университет, студент, [email protected]