
- •Введение.
- •1 Подходы к реализации ai в логических играх.
- •1.1 Понятие поиска.
- •1.2 Позиционная игра.
- •1.3 Подходы к решению задач выбора хода в позиционных играх.
- •1.4 Особенности игры нарды.
- •1.5 Правила игры в нарды.
- •1. 6 Оценочная функция
- •1.7 Самообучение
- •1.8 Нетранзитивность игр
- •1.9 Обзор литературы и существующих программ.
- •1.10 Игровые деревья.
- •1.11 Дерево игры в нарды
- •2 Построение эвристических оценочных функций.
- •2.1 Выделение параметров.
- •2.2 Определение более сильного игрока из двух.
- •2.3 Настройка весовых коэффициентов.
- •2.4 Линейная модель из 3-х параметров. Вид поверхности.
- •2.5 Таблицы вероятностей.
- •2.6 Снижение размерности. Гипергаммон.
- •2.7 Разделение игрового процесса на фазы.
- •3 Построение оценочных функций на основе нейронных сетей.
- •3.1 Теория нейронных сетей.
- •3.2 Использование нейронных сетей в качестве оценочной функции.
- •3.3 Использование MatLab для обучения нейронных сетей.
- •3.4 Экспериментальные данные.
- •4 Реализация версии для мобильных устройств.
- •4.1 Особенности программирования портативных устройств.
- •4.1.1 Размер экрана.
- •4.1.2 Быстрый отклик.
- •4.1.3 Ввод данных.
- •4.1.4 Питание.
- •4.1.5 Память.
- •4.1.6 Файловая система.
- •4.2 Выбор средств разработки.
- •4.3 Реализация игры.
- •Использованные классы.
- •Заключение.
- •Список литературы.
1.3 Подходы к решению задач выбора хода в позиционных играх.
При создании программ, играющих в такие позиционные игры, как шахматы или нарды, в основном используется так называемая эвристическая схема Шеннона. Дерево игры исследуется на фиксированную глубину. Далее применяется метод максимина для выбора наилучшего хода. Существуют и другие подходы к созданию играющих программ, например метод горизонтов , но ни один из них не дал пока результатов, существенно лучше, чем у метода Шеннона.
Для выбора лучшего хода по методу максимина возникает потребность в априорной оценке незаключительных позиций. Другими словами, нужен метод оценки позиции, который не требует информации о возможных вариантах развития ситуации, а использует только информацию о нынешнем расположении фигур или шашек. Такой метод должен давать некоторую численную оценку, по которой можно было бы сравнить любые две позиции и одной из них отдать преимущество, причем желательна по возможности наибольшая адекватность реальному соотношению позиций в игре. Последнее требование корректно в силу того, что любые две позиции в игре, в принципе, действительно можно сравнить и выбрать из них более предпочтительную, либо сделать вывод об их эквивалентности в смысле предпочтения. Это можно сделать при помощи того же метода максимина, если построить полное дерево соответствующей игры. Такую оценку будем считать идеальной, и именно к ней устремлять нашу априорную оценку.
1.4 Особенности игры нарды.
Нарды по своей природе – случайная игра (для того, чтобы совершить ход, необходимо бросить игральные кости), что отличает ее от других логических игр типа шахмат, шашек, реверси и др.(ознакомиться с правилами можно в Приложении А) Эта особенность может быть использована для настройки весов линейной модели..
Существует две вариации правил игры в нарды: длинные нарды и короткие нарды. Короткие нарды — игра для двух игроков, на доске, состоящей из двадцати четырех узких треугольников, называемых пунктами. Треугольники чередуются по цвету и объединены в четыре группы по шесть треугольников в каждой. Пункты нумеруются для каждого игрока отдельно, начиная с дома данного игрока. Самый дальний пункт является 24-м пунктом, он также является первым пунктом для оппонента. Для белых (на диаграммах рисуется внизу) пункты нумеруются по часовой стрелке, для чёрных — против часовой стрелки.
Пункты объединены в группы. Эти группы называются — дом (1-6), двор (7-12), дом противника (19-24), двор противника (13-18). Дом и двор разделены между собой планкой, которая выступает над игровым полем и называется бар.
У каждого игрока имеется 15 шашек. Начальная расстановка шашек такова: у каждого из игроков по две шашки в двадцать четвертом пункте, пять в тринадцатом, три в восьмом и пять в шестом.
1.5 Правила игры в нарды.
Игроки ходят по очереди.
Направление перемещения шашек отличается в разных вариантах игры. Но в любом случае шашки движутся по кругу и для каждого игрока направление их движения фиксировано.
Право первого хода разыгрывается броском костей — каждый из игроков бросает одну кость, первым ходит тот, у кого выпало больше очков. В случае одинакового количества очков бросок повторяется.
Перед каждым ходом игрок бросает две кости (называемые: зары). Выпавшие очки определяют возможные ходы. Кости бросаются на доску, они должны упасть на свободное место доски, с одной стороны от бара. Если хотя бы одна из костей вылетела за доску, кости оказались в разных половинах доски, кость попала на шашку или встала неровно (прислонилась к шашке или краю доски), бросок считается недействительным и должен быть повторён.
За один ход делается от одного до четырёх передвижений шашки. В каждом из них игрок может передвинуть любую свою шашку на такое количество пунктов, которое выпало на одной из костей. Например, если выпало 2 и 4 очка, игрок может за этот ход передвинуть одну (любую) из шашек на 2 пункта, другую — на 4 пункта, либо передвинуть одну шашку сначала на 2, затем — на 4 пункта (или, наоборот, сначала на 4 потом на 2). Если на обеих костях выпадает одинаковое число очков (дубль, паш, куш, кошка), то выпавшие очки удваиваются, и игрок получает возможность сделать 4 перемещения. Каждое перемещение шашки должно делаться на полное количество очков, выпавшее на кости (если выпало 4 очка, то пойти шашкой на 1, 2 или 3 пункта нельзя — можно только на полные 4).
В варианте игры «гюльбар» если у игрока нет возможности сделать какой-либо из этих ходов, то недоигранные ходы должен сделать соперник. При выпадении дубля если игрок смог сделать все 4 хода, то он бросает кости снова.[4]
В варианте игры «бешеный гюльбар» при выпадении дубля игрок делает все ходы от выпавшего дубля до дубля шести (например, при выпадении дубля «четыре-четыре» игрок перемещает одну шашку на 4 пункта, затем другую на 4 пункта, затем ещё одну на 5, ещё одну на 5, одну на 6 пунктов и ещё одну на 6 пунктов). Если у игрока нет возможности сделать какой-либо из этих ходов, то недоигранные ходы должен сделать соперник[5].
В каждом варианте правил есть некоторые запрещённые перемещения шашек. Игрок не может выбирать ходы, которые требуют таких перемещений. Если разрешённых перемещений для выпавшей комбинации очков нет, игрок пропускает ход. Но если возможность сделать хотя бы один ход есть, игрок не может отказаться от неё, даже если данный ход ему невыгоден.
Если использовать очки одной из костей невозможно, они теряются. Если есть два варианта хода, один из которых использует очки только одной кости, а другой — обеих, то игрок обязан делать ход, использующий очки обеих костей. Если можно передвинуть только одну из двух шашек (то есть ход одной шашки исключает возможность хода другой), игрок обязан сделать ход на большее количество пунктов. В случае выпадения дубля игрок обязан использовать максимально возможное количество очков.
Когда все шашки игрока в процессе движения по доске попадают в свой дом, следующими ходами игрок может начать выставлять их за доску. Шашка может быть выставлена за доску, когда номер пункта, на котором она стоит, равен числу очков, выпавших на одной из костей (то есть шашку, стоящую на крайнем пункте, можно выставлять, если выпала единица, на втором от края — если выпала двойка). Если все шашки в доме находятся ближе к краю доски, чем выпавшее число очков, то может выставляться за доску шашка из пункта с наибольшим номером.
Начальное расположение шашек определяется правилами.
Ничьих в нардах не бывает. Выигрывает тот, кто первым выставил все свои шашки за борт.
Победитель получает за выигрыш от одного до трех очков. Правила начисления очков за выигрыш в разных вариантах нард могут отличаться.