Научная статья на тему 'Оценка эффективности вероятностного алгоритма принятия решений при компьютерном моделировании карточных игр'

Оценка эффективности вероятностного алгоритма принятия решений при компьютерном моделировании карточных игр Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
194
50
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
КОЛЛЕКЦИОННЫЕ КАРТОЧНЫЕ ИГРЫ / АЛГОРИТМЫ ПРИНЯТИЯ РЕШЕНИЙ / ОЦЕНКА ЭФФЕКТИВНОСТИ АЛГОРИТМА / ВЫЧИСЛИТЕЛЬНЫЙ ЭКСПЕРИМЕНТ

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Коськин И. А.

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Оценка эффективности вероятностного алгоритма принятия решений при компьютерном моделировании карточных игр»

МЕЖДУНАРОДНЫЙ НАУЧНЫЙ ЖУРНАЛ «ИННОВАЦИОННАЯ НАУКА» №10-2/2016 ISSN 2410-6070

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

В заключение отметим, что измерения статистических характеристик газожидкостного течения позволяют определить параметры, при которых происходит смена режима течения и построить достоверные карты режимов течения в каналах двухфазных пластинчато-ребристых теплообменников.

Работа выполнена в ИТ СО РАН за счет гранта Российского научного фонда (проект РНФ № 14-4900010).

Список использованной литературы:

1. Coleman J.W., Garimella S. Characterization of two-phase flow patterns in small diameter round and rectangular tubes // Int. J. Heat Mass Transfer. 1999. V. 42, № 15. P. 2869-2881.

2. Sarisorn, S., Wongwises, S. Review of two-phase gas-liquid adiabatic flow characteristics in micro-channels // Renewable and Sustainable Energy Reviews. 2008. V12, № 3. P. 824-838.

© Козулин И.А., Кузнецов В.В., 2016

УДК 04.81

И.А. Коськин

Магистрант

Институт приборостроения, автоматизации и информационных технологий Орловский государственный университет имени И.С. Тургенева

г. Орёл, Российская Федерация

ОЦЕНКА ЭФФЕКТИВНОСТИ ВЕРОЯТНОСТНОГО АЛГОРИТМА ПРИНЯТИЯ РЕШЕНИЙ ПРИ КОМПЬЮТЕРНОМ МОДЕЛИРОВАНИИ КАРТОЧНЫХ ИГР

Аннотация

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

Ключевые слова

Коллекционные карточные игры, алгоритмы принятия решений, оценка эффективности алгоритма,

вычислительный эксперимент.

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

В играх (не только компьютерных) игроку приходится постоянно принимать решения о своих дальнейших действиях. Не все виды алгоритмов принятия решений подойдут всем играм. Высокую популярность за последние годы набрали онлайн-игры, в которых человек играет против другого человека. Но часто требуется, чтобы его противником был компьютер. В этом случае необходимы сильные компьютерные игроки.

МЕЖДУНАРОДНЫЙ НАУЧНЫЙ ЖУРНАЛ «ИННОВАЦИОННАЯ НАУКА» №10-2/2016 ISSN 2410-6070

Особенности построения вероятностного алгоритма принятия решений при компьютерном моделировании карточных игр рассмотрены в [1].

Для того чтобы получить данные по эффективности алгоритмов во временных оценках, необходима их программная реализация.

Так как проведение полноценного анализа какой-то конкретной области является задачей, значительно превосходящей только анализ алгоритма, реализуем программу, действие которой будет ограничено прогоном алгоритмов на некоторых наборах данных и измерением времени их выполнения.

Для этого потребуется реализовать оцениваемые алгоритмы. Кроме того, необходимо будет каким-то образом сгенерировать наборы начальных данных (так как реальная оценка предметной области не проводится). Также необходимо добавить возможность ввода различных параметров пользователем (ветвление дерева, глубина анализа, число кластеров и т.п.).

Таким образом, для функционирования такой программы потребуются:

- модуль, в котором будут реализованы требуемые для анализа алгоритмы;

- модуль, который сгенерирует псевдослучайные наборы начальных данных;

- модуль, который при необходимости сможет изменить входные параметры для алгоритмов с помощью простого интерфейса.

Так как сложный интерфейс программе не требуется, объединим модули ввода данных и генерации наборов начальных данных в один.

В первом модуле реализуем два алгоритма для анализа - алгоритм на основе вероятностей происхождения событий и алгоритм минимакса. Во втором модуле реализуем текстовый интерфейс и генерацию необходимых наборов данных. Также должна быть возможность измерить время выполнения каждого из алгоритмов.

Для реализации алгоритма минимакса полную оптимизацию алгоритма применять в данном случае не имеет большого смысла, так как часть получаемых при оптимизации улучшений можно будет рассчитать. Для хранения игрового дерева применим тривиальный способ - будем хранить данные в массиве. Будем считать, что дерево является сбалансированным. Реализуем косвенно-рекурсивный алгоритм, в котором для каждого из потомков узла будет вызываться функция min или max, в зависимости от того, будет ли этот узел узлом максимизатора и или минимизатора. На вход данному алгоритму понадобится массив-дерево, степень ветвления дерева и глубина.

Для реализации алгоритма на основе вероятностей происхождения событий потребуются данные о взаимодействии кластеров (матрица кластеров), данные о том, какие из карт каким именно кластерам принадлежат, данные о текущих картах в руке и данные об общем количестве карт.

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

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

Взаимодействие с пользователем можно реализовать с помощью командной строки - ввести дополнительные параметры запуска или данные по требованию программы. Например, если реализовать данную возможность с помощью ввода дополнительных параметров запуска, то можно сделать это приблизительно так: «./prog -p x>, где ./prog - запуск в интерпретатор файла с исходным кодом программы или запуск скомпилированного файла, -p - устанавливаемый параметр, например степень ветвления дерева, а x - значение, устанавливаемое пользователем.

Генерацию данных будем проводить с помощью генератора псевдослучайных чисел выбранного языка программирования.

Необходимо будет сгенерировать нижний уровень игрового дерева, матрицу кластеров, карты в руке на текущий момент, набор кластеров, к которым относится та или иная карта, а также общее число карт

МЕЖДУНАРОДНЫЙ НАУЧНЫЙ ЖУРНАЛ «ИННОВАЦИОННАЯ НАУКА» №10-2/2016 ISSN 2410-6070

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

Данные от пользователя получаются посредством текстового интерфейса командной строки. Полученные и сгенерированные данные передаются в алгоритмический модуль посредством программных интерфейсов. Далее результаты выполнения функции алгоритма передаются из алгоритмического модуля в модуль генерации, который производит вывод необходимых результатов в командную строку.

Программная реализация производилась на языке C. Он предоставляет высокие показатели быстродействия и достаточно удобные инструменты для организации консольного интерфейса, хорошо подходящего для управления подобной программой. Далее будут приводиться фрагменты программного кода на языке C.

Все необходимые данные вводятся в качестве параметром запуска программы. Необходимые параметры получают значения по умолчанию: b = 3; //Степень ветвления дерева d = 6; //Глубина поиска c = 5; // Количество кластеров h = 7; // Количество карт в руке f = 3; // Количество кластеров для каждой карты o = 30; // Общее количество карт

Каждый из этих параметров может быть задан пользователем.

Далее необходимо выяснить, соответствуют ли введенные параметры ограничениям. Для хранения игрового дерева потребуется большой массив данных. Стабильно на тестовой машине программа работала с массивами данных, не превышающими 2 000 000 элементов типа int. Поэтому необходимо рассчитать предельные комбинации степени разветвленности дерева и глубины анализа (b и d), для того, чтобы все данные вместились в данный массив. Путем тривиального расчета были получены данные, приведенные в таблице 1.

Таблица 1

Предельные данные b и d

b 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

d 15+ 15+ 12 10 8 7 7 6 6 6 6 5 5 5 5

Соответственно, при превышении данных ограничений данные не поместятся в имеющийся массив и произойдет аварийное завершение программы. Чтобы этого не произошло, применяется следующий фрагмент кода:

int limits[16] = {0, 15, 15, 12, 10, 8, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5};

if (b > 15){

b = 15;

}

if (d > limits[b]){

d = limits[b];

}

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

После того, как все параметры приведены в соответствие с требованиями, можно приступать к генерации самих исходных наборов данных. Для этого применяется следующая механика: srand(time(NULL)); for (i = 1; i <= amount; i++){

gtree[start_bottom + i - 1] = rand() % 20;

}

Здесь запускается генератор псевдослучайных чисел и в цикле с заданными параметрами генерируются значения для оценок игрового дерева.

МЕЖДУНАРОДНЫЙ НАУЧНЫЙ ЖУРНАЛ «ИННОВАЦИОННАЯ НАУКА» №10-2/2016 ISSN 2410-6070

Аналогичным образом генерируются и остальные величины. После этого производится запуск функций, реализующих алгоритмы. int turnf;

clock_t start = clock(), diff; for (i = 1; i <= 3000000; i++)

turnf = prob(c, f, h, o, clusters, facts, hand, overall); printf("%d\n", turnf); diff = clock() - start;

int msec = diff * 1000 / CLOCKS_PER_SEC; printf("%d msec\n", msec);

Здесь используется стандартный таймер языка C. Формат вызова функций, реализующих алгоритмы, описывается далее. Так как без реально больших данных получить сколь бы то ни было значительные временные отрезки не удастся, алгоритм прогоняется несколько раз. После этого на экран выводится время, за которое отработал алгоритм.

Второй модуль (алгоритмический) содержит два алгоритма и подключается к основному модулю программы. Он содержит две доступные извне функции для вызова алгоритмов и две вспомогательные функции для выполнения алгоритма минимакса.

Первая функция содержит алгоритм на основе вероятностей происхождения событий. Сначала устанавливается начальное значение ценности каждой карты, это делается в следующем фрагменте кода: for (i = 1; i <= h; i++){

values[i] = (float)facts[hand[i]][0];} Далее рассчитывается вероятность происхождения события из того или иного кластера и исходя из этого корректируется оценка хода. for (i = 1; i <= c; i++){ chance[i] = (float)overall[i] / (float)o; for (j = 1; j <= h; j++){

for (k = 1; k <= f; k++){

values[j] += (chance[i] * (float)(clusters[i][k] + clusters[k][i]));

}

}

После этого выбирается и возвращается максимальное из полученных значений. for (i = 1; i <= h; i++){ if (values[i] > max){

max = values[i]; turn = i;

}

}

return turn;

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

Вторая функция содержит реализацию минимаксного алгоритма. Начиная с первого элемента дерева, если у элемента есть потомки, то для каждого из них вызывается функция min или max в зависимости от того, будет это уровень максимизатора или минимизатора, иначе выбирается максимальное или минимальное значение и передается на уровень выше.

Для того чтобы выяснить, насколько быстро отработают данные алгоритмы, была проведена проверка работоспособности полученной программы. Проводилось несколько запусков программы с различными входными данными. Проверка выполнялась на процессоре Intel Core i5 M 460 @2.53GHz c полным использованием одного ядра.

МЕЖДУНАРОДНЫЙ НАУЧНЫЙ ЖУРНАЛ «ИННОВАЦИОННАЯ НАУКА» №10-2/2016 ISSN 2410-6070

Данные о проведенном эксперименте представлены в таблице 2. Алгоритм на основе вероятностей происхождения событий в таблице обозначается как TB, минимаксный алгоритм - как ММ.

Иные обозначения в таблице 2: степень разветвленности игрового дерева - b, глубина поиска в минимаксном алгоритме - d, количество кластеров - с, число карт в руке - h, число кластеров, которым принадлежит каждая карта - f, общее число карт - о.

Таблица 2

Данные вычислительного эксперимента

№ b d с h f о ТВ, мс ММ, мс

1 3 6 5 7 3 30 2 480 69 940

2 2 12 5 6 3 45 2 150 435 000

3 5 5 15 5 3 30 5 300 336 370

4 2 3 20 2 3 30 2 940 680

5 3 3 15 3 3 30 3 180 2 650

6 2 5 15 2 3 30 2 210 3 130

7 2 6 15 10 2 50 7 220 6 770

8 4 6 15 10 3 50 10 050 402 970

9 15 5 20 15 3 100 19 870 143 298 400

Следует заметить, что разветвленность игрового дерева Ь не всегда соответствует числу карт в руке, так как в руке могут быть одинаковые карты, которые приведут к одинаковому результату, и иногда одна и та же карта может вызвать различные эффекты.

Также не стоит забывать, что в данной таблице приведена оценка работы неоптимизированного минимаксного алгоритма. При применении полноценного ав-отсечения можно повысить эффективность алгоритма с 0(Ьа) до 0(Ьа/2). Сложность же вероятностного алгоритма, рассчитанная при подробном его рассмотрении в других работах, составляет 0(п3), где п - число выделенных кластеров.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Минимаксный алгоритм сильно зависит и от одного, и от другого значимого параметра (Ь и ф. Количество выделенных кластеров для алгоритма на основе вероятностей происхождения событий оказывает значительное влияние на время его работы, но в целом влияние этого параметра сравнимо с влиянием других параметров (число оцениваемых карт в руке и число кластеров для каждой карты). Общее число карт о используется для расчета вероятностей и на время выполнения алгоритма не влияет.

Как упоминалось ранее, при неудачно выполненной задаче кластеризации и небольшом игровом дереве (запуски №4 и №5) минимаксный алгоритм показывает более высокие результаты эффективности по времени. Это связано с тем, что минимаксу не нужно «глубоко копать» - дерево является достаточно небольшим, но при этом выделено много кластеров, каждая из карт принадлежит значительному числу этих кластеров, и для полноценной оценки ситуации этим методом необходимо рассмотреть их все. В такой ситуации приоритетным является применение минимаксного алгоритма.

С другой стороны, при комбинациях Ь и d (3, 6), (5, 5) и более время работы минимаксного алгоритма значительно вырастает (с 680 мс при ветвлении 2 и глубине 3 до 69 940 мс при ветвлении 3 и глубине 6 и далее до 143 298 420 мс при ветвлении 15 и глубине 5). При необходимости анализа на большую глубину и при большом ветвлении минимаксный алгоритм становится значительно менее эффективным.

При этом для алгоритма на основе расчета вероятности происхождения событий при росте параметров значения времени выполнения растут с 2 150 мс при с = 5, Ь = 6 и f = 3 до 19 870 мс при с = 20, Ь = 15 и f = 3. Это значительно меньший рост, чем у минимаксного алгоритма.

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

ВЫВОДЫ

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

МЕЖДУНАРОДНЫЙ НАУЧНЫЙ ЖУРНАЛ «ИННОВАЦИОННАЯ НАУКА» №10-2/2016 ISSN 2410-6070

В качестве основной области применения были выбраны коллекционные карточные игры, так как в них присутствует элемент случайности, но при этом предметную область можно четко описать в формальном виде.

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

В качестве решения был предложен алгоритм, опирающийся на вероятности происхождения событий из заранее определенных групп (кластеров). Оценка для каждого игрового объекта рассчитывается по формуле, в которую закладывается взаимное влияние объектов из различных кластеров друг на друга и вероятность происхождения событий одного из кластеров в течение нескольких последующих ходов.

Данный алгоритм в общем случае обладает эффективностью 0(с3), где с - количество выделенных кластеров. С учетом того, что алгоритм ав-отсечения имеет сложность 0(Ьё/2), где Ь - степень разветвленности игрового дерева, а d - его глубина, можно сделать вывод, что при d > 6 алгоритм принятия решений на основе вероятностей происхождения событий превзойдет по эффективности алгоритм ав-отсечения.

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

Список использованной литературы

1. Коськин, И.А. Моделирование процесса оценки ситуации при принятии решений в коллекционных карточных играх [Текст] // Международный научный журнал «Инновационная наука» №2/2016 в 5 частях, часть 3. - Уфа: ООО АЭТЕРНА, 2016. - С. 101-105.

2. Коськин, И.А. Особенности построения вероятностного алгоритма принятия решений при компьютерном моделировании коллекционных карточных игр [Текст] // Международный научный журнал «Инновационная наука» №9/2016. - Уфа: ООО АЭТЕРНА, 2016. - С. 59-62.

© Коськин И.А., 2016

УДК 621.432.3

Н.Е. Кувшинов

инженер научно-исслед. лаборатории «ФХПЭ»

И.З. Багаутдинов

младший научный сотрудник научно-исслед. лаборатории госбюджетных НИР Казанский государственный энергетический университет

г. Казань, Российская Федерация

ЭКСПЕРИМЕНТАЛЬНЫЙ СТЕНД ДЛЯ ИССЛЕДОВАНИЕ ХАРАКТЕРИСТИК

ДВУХФАЗНЫХ ПОТОКОВ

Аннотация

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

Ключевые слова

Датчики давления , температуры, принципиальная схема, фото- и терморегистрация

i Надоели баннеры? Вы всегда можете отключить рекламу.