движок XiangQi (китайские шахматы) для XQWizard с сильным искусственным интеллектом
Китайская шахматная программа ElephantEye (Слоновий глаз) версия: 3.15
Сеть энциклопедий Сянци*, март 2008 г.
(* Электронная почта: [email protected])
1. Введение
ElephantEye — бесплатная китайская шахматная программа. В соответствии с Меньшей стандартной общественной лицензией GNU любители шахмат и программисты могут свободно использовать ElephantEye и ее исходную программу.
Китайское название ElephantEye — «Слоновий глаз», которое вместе с «лошадиными ногами» и «пушечным корпусом» образует «третье измерение на шахматной доске» китайских шахмат. ElephantEye обычно используется вместе с ElephantBoard, программным обеспечением для редактирования шахматных записей, что означает наличие четкого плана (Board в переводе с английского означает «доска»). (Примечание: ElephantBoard теперь переименован в «Шахматный мастер».)
2. Соглашение о двигателе
ElephantEye поддерживает UCCI 3.0. Светло-красный пользователи Xiangqi могут вызывать механизм ElephantEye через адаптер механизма UCCI (UCCI2QH).
(1) Поддерживаемые команды UCCI:
Уччи
установить вариант...
позиция {fen <fen_str> | startpos} [перемещает <move_list>]
банмовс <список_перемещений>
пойти [обдумать | нарисовать] ...
пондерхит [нарисовать] | остановиться
зонд {fen <fen_str> | startpos} [перемещает <список_перемещений>]
покидать
(2) Информация UCCI, которая может быть возвращена:
id {имя <имя_движка> | версия <имя_версии> | авторские права <информация_об авторских правах> | автор <имя_автора> | пользователь <имя_пользователя>}
вариант...
Уччок
информация...
{nobestmove | bestmove <best_move> [обдумать <ponder_move>] [рисовать |
pophash [bestmove <best_move>] [нижняя граница <значение> глубина <глубина>] [верхняя граница <значение> глубина <глубина>]
пока
3. Настройки параметров
Как механизм UCCI, ElephantEye имеет несколько параметров, которые можно установить (можно установить непосредственно в <Chess Wizard>).
(1) Стартовая библиотека:
Библиотекой открытия по умолчанию является BOOK.DAT в текущем каталоге программы ElephantEye (ELEEYE.EXE), которая содержит 10 000 симметричных позиций.
(2) Время размышления:
Ограничение глубины размышлений обычно не является хорошим выбором. Рекомендуется установить ограничение по времени и позволить программе автоматически распределять время. При решении убийственной игры или анализе ситуации программа может думать без ограничений и может перестать думать в любой момент.
(3) Размер сменного стола:
Хотя размер таблицы замены мало влияет на скорость работы программы, а настройки по умолчанию в 16 МБ достаточно, ElephantEye все же предоставляет функцию установки размера таблицы замены. Если позволяет память, вы можете соответствующим образом увеличить размер таблицы замен при игре в медленные шахматы, но не рекомендуется превышать половину физической памяти.
(3) Степень пошива:
Для ускорения работы программы ElephantEye по умолчанию использует пустую обрезку, и возможность негативных последствий минимальна. Только самый низкий уровень отключает обрезку пустого изображения.
(4) Объем знаний:
Объем знаний связан с точностью оценки ситуации. Среди уровней знаний ElephantEye только самый низкий уровень не использует функцию оценки ситуации (учитывается только значение подсилы). на знание обзора для анализа позиции и т. д. В такой ситуации можно попробовать такую настройку.
(5) Случайность:
ElephantEye имеет 4 уровня случайности. Чем больше случайность, тем больше вероятность того, что программа придумает ход, который, по ее мнению, не является лучшим ходом, но «не лучший ход» не лишен каких-либо преимуществ, особенно когда дебютная библиотека не включена, соответственно увеличивая случайности можно избежать Программа делает тот же ход в той же ситуации.
4. Правила
Начиная с версии 2.0, ElephantEye не только поддерживает правило «одностороннего долгосрочного решения о проигрыше», но также поддерживает «долгосрочное решение о проигрыше». «Хит» включает в себя «проверку» и «поймать». Из-за ограничений сложности программы только следующие три ситуации признаются «загвоздкой»:
А. Лошади и колесницы или артиллеристы (пешки) с корнями;
Б. Повозки и конные артиллеристы (пешки) с корнями;
C. Пушка захватывает колесницы или кавалерию (пешки).
Хотя ElephantEye может быть не в состоянии правильно идентифицировать длинные ходы в сложных ситуациях, поскольку он поддерживает команду UCCI Banmoves..., как только пользователь считает, что движок запретил «длинные ходы», он может использовать функцию «установить запрет» <Шахматный мастер> Позвольте движку принудительно измениться.
5. Алгоритм игры
ElephantEye — это шахматная программа, использующая строгие и эффективные игровые алгоритмы:
(1) Переместите генератор, используя битовые строки и битовые столбцы:
Битовые строки (BitRanks) и битовые столбцы (BitFiles) способствуют созданию ходов скользящих шахматных фигур (машин и пушек) (особенно ходов захвата). Битовые строки и битовые столбцы могут использовать таблицы поиска вместо циклов по лучам. В ElephantEye технология битовых строк и битовых столбцов используется не только в генераторе ходов, но и при определении закрепления.
(2) Поиск статической ситуации:
При статическом поиске ElephantEye искал ходы для захвата или удаления генералов. При поиске ходов для захвата ElephantEye отфильтровывал неважные захваты, такие как пешки, которые не могут захватить реку, или солдаты, захватывающие слона, который не находится в защите. Методы ожидания не входят в область действия статического поиска.
(3) Циклические движения и обнаружение на большом расстоянии:
ElephantEye может распознавать зацикленные ходы. Когда происходят зацикленные ходы, он может определить, какая сторона является лидером, и воспользуется правилами, запрещающими капитанов. Однако в настоящее время ElephantEye не может распознавать длинные захваты.
(4) Таблица замены:
ElephantEye ссылается на идею дизайна китайской шахматной программы «Бегущие лошади», использует двухслойные таблицы замены с глубиной и всегда покрытием и применяет стратегию обновления таблицы замены с коррекцией границ с низким выходом (высоким выходом).
(5) Заготовка с проверкой:
ElephantEye использует пустое отсечение с R=2 и использует проверенное пустое отсечение на финальной стадии.
(6) Итеративные углубления/приемы поедания детей/убийственные приемы/вдохновение в виде таблицы истории:
Сортировка ходов в ElephantEye очень проста и понятна, за ней следуют итеративные ходы углубления, хорошие ходы захвата, убийственные ходы и порождающие ходы, отсортированные по таблице истории.
(7) Общее/единственное распространяется:
Для выборочных расширений ElephantEye использует общие и только общие расширения.
(8) Поиск основного варианта Альфа-Бета:
ElephantEye использует традиционный рекурсивный поиск основных вариантов Alpha-Beta.
(9) Стартовая библиотека:
Дебютная библиотека ElephantEye содержит в общей сложности 10 000 симметричных ходов, извлеченных из 8 000 лучших партий национальных шахматных индивидуальных соревнований, командных соревнований, Кубка Уяна, лиг и других игр с 1990 по 2005 год.
(10) Закулисное мышление и стратегии распределения времени:
ElephantEye поддерживает функцию фонового мышления и предоставляет две стратегии распределения времени: на основе периода и сверхурочную работу, которые автоматически распределяют время разумно.
6. Открытие библиотеки
Вступительную библиотеку ElephantEye можно создать с помощью «ElephantEye Opening Library Maker». После запуска производственного инструмента необходимо сначала выбрать папку, в которой находится запись игры PGN, а затем сохранить ее как открывающий файл библиотеки (обычно BOOK.DAT). Как правило, чем больше шахматных записей, используемых для создания дебютной библиотеки, тем больше будет созданный файл дебютной библиотеки.
Чтобы сделать дебютную библиотеку эффективной для ElephantEye, вам нужно всего лишь заменить BOOK.DAT в каталоге ElephantEye сгенерированным файлом дебютной библиотеки. Вы также можете указать файл дебютной библиотеки в диалоговом окне «Настройки двигателя» <Chess. Волшебник>.
7. Библиотека функций оценки ситуации
ElephantEye Начиная с версии 2.1, часть программы поиска и часть оценки ситуации разделены. Часть поиска связана с частью оценки ситуации путем вызова функций API.
Другие шахматные программисты могут более свободно играть на базе ElephantEye. Согласно соглашению LGPL, две части поиска и оценки ситуации рассматриваются как независимые программные библиотеки. Чтобы использовать любую ее часть, вам нужно только раскрыть исходную программу этой части. Другими словами, если часть оценки ситуации не использует какой-либо открытый код, то программист не обязан раскрывать исходную программу этой части, и то же самое справедливо и для части поиска.
Функциональный интерфейс API оценки ситуации ElephantEye определяется следующим образом:
A. Имя механизма оценки ситуации: const char *GetEngineName(void);
B. Интерфейс функции предварительной оценки позиции: void PreEvaluate(PositionStruct *lppos, PreEvalStruct *lpPreEval);
C. Интерфейс функции оценки позиции: int Evaluate(const PositionStruct *lppos, int vlAlpha, int vlBeta);
Среди них PositionStruct и PreEvalStruct должны соответствовать структурам, определенным в Position.h и pregen.h соответственно.
8. Исходная программа
Исходная программа ElephantEye включает в себя 9 модулей, содержимое примерно следующее:
(1) ucci.h/ucci.cpp
модуль интерпретации команд UCCI, включая программы приема линейного ввода под Windows и Unix;
(2) pregen.h/pregen.cpp
Модуль генерации массивов Зобриста и перемещения предустановленных таблиц. Таблица предустановок ElephantEye разделена на две части: одна представляет собой таблицу предустановок для перемещения шахматных фигур (без фигур, ладей, пушек и всех остальных фигур). Вторая представляет собой таблицу предустановок ходов. другие шахматные фигуры, что позволяет избежать громоздких граничных суждений при создании ходов.
(3) позиция.h/position.cpp
В основном описывает структуру данных и функции ходов и ситуаций. Обработка ситуации находится в центре внимания этого модуля. Содержимое обработки включает в себя инициализацию ситуации, импорт строк FEN, движение шахматных фигур, оценку рациональности хода убийцы, общее суждение, обнаружение лидера и цикла, корректировку стоимости фигур. и т. д. Он также включает в себя таблицу значений положения 5 вспомогательных сил.
(4)genmoves.cpp
Генератор ходов включает в себя два типа, которые генерируют ходы, захватывающие фигуры, и ходы, не захватывающие фигуры, но не могут генерировать только ходы, удаляющие генералов. При создании ходов поедания детей каждому ходу присваивается соответствующее значение MVV (LVA) (или квази-SEE). В этом модуле также есть функция, которая специально определяет, защищены ли шахматные фигуры, для расчета значения MVV (LVA). Для защищенных шахматных фигур вычисляется значение MVV-LVA (не считается, если оно меньше нуля). , рассчитывайте только значение MVV. Поэтому в этот модуль также включена программа определения наличия корня у шахматной фигуры.
(5) hash.h/hash.cpp
Модуль управления таблицей замен, таблицей истории и списком ходов включает в себя распределение и доступ к таблицам замен, получение основных вариантов и другие операции.
(6) book.h/book.cpp
Открытие модуля чтения библиотеки.
(7) movesort.h/movesort.cpp
Переместить модуль сортировки списка.
(8) search.h/search.cpp
В дополнение к трем основным процессам статического поиска, полного поиска и поиска корневых узлов, модуль поиска также включает в себя итеративное управление углублением, фоновое мышление, распределение времени, статистику параметров поиска и вывод информации о поиске. Этот модуль является основным модулем всей программы.
(9) eleeye.cpp
Основная программа (т.е. основная функция).
(10) preeval.h/preeval.cpp
Предварительный генератор массива позиций дополнительных сил, ElephantEye линейно настраивает массив позиций дополнительных сил на основе двух параметров: «наступление/защита» и «открытие/миттельшпиль/конец игры».
(11) оценить.cpp
Что касается функции оценки ситуации, ElephantEye использует четырехуровневый механизм ленивой оценки. Самый грубый уровень оценивает только специальные шахматные модели, следующий уровень оценивает сдерживание, следующий уровень оценивает гибкость ладьи, а самый высокий уровень также оценивает препятствие. рыцаря.
9. Производительность программы
Дизайн ElephantEye ориентирован на алгоритмы поиска, но знаний относительно недостаточно. На процессоре с частотой 2,8 ГГц можно искать примерно 1 000 000 узлов в секунду (включая обычный поиск и статический поиск), а в типичной ситуации в середине игры можно искать примерно 11 слоев в течение 1 минуты.
По шахматной мощи ElephantEye находится на одном уровне с такими программами, как «Qiyin» и SaoLa (Chess Challenger). Однако из-за недостатков в функции оценки позиции ElephantEye далек от лучших коммерческих шахматных программ (Xie Master, Семья Сянци, Сянци Цибин, Ци).
ElephantEye был протестирован на веб-сайтах шахматных игр, таких как Lianzhong и Yitian. Судя по оценкам, рекорд Lianzhong.com составляет около 2500 очков, рекорд Yitian в быстрых шахматах составляет около 2000 очков, а в медленных шахматах — около 1500 очков.
В сентябре 2005 года с помощью г-на Ши Цзиньшаня, тайваньского энтузиаста шахматного программного обеспечения, ElephantEye принял участие в групповых соревнованиях по китайским шахматам на 10-й Компьютерной олимпиаде ICGA, проходившей в Тайбэе, с рекордом в 7 побед, 5 поражений и 14 поражений среди 14 программ. 11 место в рейтинге ElephantEye в августе 2006 г.; Принял участие в первом национальном чемпионате по компьютерным играм, проходившем в Пекине, с рекордом 7 побед, 2 поражения и 11 поражений, заняв 7-е место среди 18 программ.
10. Сопутствующие ресурсы
Исходная программа ElephantEye выпущена в проекте XiangQi Wizard компании SourceForge, и ее страница:
http://sourceforge.net/projects/xqwizard/
Улучшенная версия ElephantEye выпускается синхронно в режиме реального времени на сайте SourceForge SVN. Адрес доступа:
https://xqwizard.svn.sourceforge.net/svnroot/xqwizard/
Вы можете использовать клиентские программы SVN, такие как TortoiseSVN, для получения последней версии кода (полностью синхронизировано с разработчиками). Адрес для ознакомления и загрузки TortoiseSVN:
http://sourceforge.net/projects/tortoisesvn/
ElephantEye необходимо запускать под управлением шахматной программы, поддерживающей UCCI (например, <Chess Wizard>). Программа установки <Chess Wizard> содержит последнюю версию ElephantEye.
<Шахматный мастер> можно загрузить со следующего веб-сайта:
http://www.skycn.com/soft/24665.html (Sky Software Station)
http://www.onlinedown.net/soft/38287.htm (Парк программного обеспечения Huajun)
Помимо самой исходной программы ElephantEye, пакет исходной программы ElephantEye также включает в себя следующие дополнительные модули:
(1) Базовый код (база): предоставляет инструкции по сборке, вызовы системных функций и другие функции;
(2) Модуль правил китайских шахмат (ccess): предоставляет интерфейс для использования кода ElephantEye другим программным обеспечением;
(3) Модуль создания открываемой библиотеки (BOOK): код для создания открывающей библиотеки BOOK.DAT;
(4) Симулятор лиги двигателей UCCI (LEAGUE): обеспечивает платформу автоматического пакетного сопоставления для тестирования двигателей UCCI и соревнований;
(5) Анализатор дерева поиска механизма UCCI (TREE): инструмент анализа маршрута поиска для механизма UCCI (с поддержкой UCCI 2.2+);
(6) Инструменты шахматных записей XQF (XQFTOOLS): предоставляют инструменты для преобразования XQF и других шахматных записей в PGN;
(7) Адаптер Light Red Chess (UCCI2QH): обеспечивает интерфейс Light Red Chess для вызова механизма UCCI;
(8) Светло-красный шахматный движок поддерживает адаптер UCCI (QH2UCCI): обеспечивает интерфейс для светло-красных шахмат «Яйцо мечты» для присоединения к тесту UCCI-движка;
(9) BBS Chess (BBSCHESS): инструмент настройки шахматных позиций, созданный с помощью Visual Basic, который может вставлять цветные шахматные позиции на BBS различных университетов;
(10) Генератор изображений шахматной доски (FEN2BMP): практичный инструмент, который может конвертировать шахматные файлы FEN и китайские шахматы в файлы BMP;
(11) Преобразование кодирования (кодек), включая упрощенное и традиционное транскодирование, транскодирование текста UNIX, транскодирование Base64 и т. д.;
(12) Другие инструменты (MISC): включая простую сетевую связь, тестирование конвейеров и другие инструменты;
(13) Документация (DOC): а именно серия «Исследование китайского шахматного программирования»;
(14) Рекорды участия в шахматах (CCGC): Все шахматные рекорды ElephantEye, участвовавшие в первом Национальном чемпионате по компьютерным играм (CCGC).
Если вы хотите получить более подробную информацию о ElephantEye, вы можете войти на сайт энциклопедии Xiangqi:
http://www.xqbase.com/