Шахматный двигатель - Chess engine

В компьютерные шахматы, а шахматный двигатель это компьютерная программа это анализирует шахматы или же шахматный вариант позиции и генерирует ход или список ходов, которые он считает самыми сильными.[1] Шахматный движок обычно задняя часть с Интерфейс командной строки без графики или окна. Двигатели обычно используются с передней частью, оконной графический интерфейс пользователя Такие как Шахматная база или же WinBoard с которым пользователь может взаимодействовать с помощью клавиатуры, мыши или сенсорного экрана. Это позволяет пользователю играть против нескольких движков, не изучая новый пользовательский интерфейс для каждого, и позволяет разным движкам играть друг против друга. В последние годы появились шахматные движки для мобильных телефонов и планшетов, что упрощает их использование. В список входят шахматные движки, такие как Stockfish, Komodo, Texel, Bagatur и многие другие.

История

Значение словосочетания «шахматный двигатель» со временем изменилось. В 1986 году Линда и Тони Шерцеры представили свою программу Bebe на 4-м чемпионате мира по компьютерным шахматам, запустив ее на Chess Engine, своей торговой марке компьютерного оборудования для шахмат.[2] производятся и продаются их компанией Sys-10, Inc.[3] К 1990 году разработчики Темно-синий, Фэн-сюн Сюй и Мюррей Кэмпбелл, писали о предоставлении своей программе «поисковой машины», очевидно, имея в виду программное обеспечение, а не оборудование.[4] В декабре 1991 г. Computer-schach & Spiele упомянутый Шахматная база недавно выпущен Фриц как «Шах-мотор», что в переводе с немецкого означает «шахматный двигатель».[5] К началу 1993 года Марти Хирш проводил различие между коммерческими шахматными программами, такими как Шахматист 3000 или же Боевые шахматы с одной стороны, и «шахматные движки», такие как ChessGenius или его собственный MChess Pro с другой. По его характеристике, коммерческие шахматные программы были невысокими по цене, имели красивую графику, но не занимали высоких позиций в SSDF (Шведская ассоциация шахматных компьютеров ) рейтинговые списки, в то время как двигатели были более дорогими и имели высокие рейтинги.[6]

В 1994 году Шай Бушинский работал над ранней версией своего Младший программа. Он хотел сосредоточиться на игре в шахматы, а не на графике, и поэтому спросил Тима Манна, как он может Младший общаться с Winboard. Ответ Тима лег в основу того, что стало известно как протокол обмена данными шахматного движка или движки Winboard, первоначально являвшиеся подмножеством Шахматы GNU Интерфейс командной строки.[7]

Также в 1994 году Стивен Дж. Эдвардс выпустил Обозначение портативных игр (PGN) спецификация. В нем упоминаются программы чтения PGN, которым не нужен «полноценный шахматный движок». Также упоминаются три «графических пользовательских интерфейса» (GUI): XBoard, pgnRead и Slappy базу данных.[8]

Протокол интерфейса

Общие движки Winboard будут включать Хитрый, ProDeo (на основе Мятежник ), Ченар, Зарьков и Фаланга.

В 1995 г. Шахматная база выпустили версию своей программы базы данных, включающую Фриц 4 как отдельный двигатель. Это было первое появление протокола Chessbase. Вскоре они добавили двигатели Младший и Шредер к их линейке продуктов, включая движки в протоколе CB как отдельные программы, которые могут быть установлены в Шахматная база программа или один из других графических интерфейсов в стиле Fritz. Fritz 1-14 выпускались только как движки Chessbase, а Hiarcs, Нимзо, Шахматный тигр и Хитрый были перенесены в формат Chessbase, даже если они были движками UCI или Winboard. Недавно Chessbase начал включать Универсальный шахматный интерфейс (UCI) в своих игровых программах, таких как Комодо, Гудини, Фриц 15–16 и Рыбка вместо того, чтобы преобразовывать их в движки Chessbase.

В 2000 г. Стефан Мейер-Кален и Франц Хубер выпустил Универсальный шахматный интерфейс, более подробный протокол, который представил более широкий набор функций. Шахматная база вскоре после этого прекратили поддержку движков Winboard и добавили поддержку UCI в графические интерфейсы движка и Шахматная база программы. В наши дни большинство ведущих двигателей - это UCI: Stockfish, Комодо, Лила Чесс Зеро, Гудини, Фриц 15-16, Рыбка, Шредер, Фрукты, Critter, Айвенго и Хулиган.

С 1998 года немецкая компания Millenium 2000 на короткое время перешла от специализированных шахматных компьютеров к рынку программного обеспечения, разработав протокол Millennium Chess System (MCS) для серии компакт-дисков, содержащих ChessGenius или же Шредер, но после 2001 перестал выпускать новое ПО.[9] Более давний протокол движка используется голландской компанией Lokasoft,[10] который в конечном итоге взял на себя маркетинг Эда Шредера Мятежник.

Увеличение силы

Шахматные двигатели с каждым годом становятся все сильнее. Частично это связано с увеличением вычислительной мощности, которая позволяет производить вычисления на все большую глубину за заданное время. Кроме того, были усовершенствованы методы программирования, позволяющие движкам быть более избирательными в строках, которые они анализируют, и лучше понимать позицию. Шахматный движок часто использует обширную ранее вычисленную дебютную «книгу», чтобы увеличить свою игровую силу в течение первых нескольких ходов, возможно, до 20 или более ходов в глубоко проанализированных линиях.[нужна цитата ]

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

Некоторые шахматные движки используют финальные столы увеличить свою игровую силу во время эндшпиль. База эндшпиля включает все возможные эндшпильные позиции с небольшими группами материала. Каждая позиция окончательно определяется как победа, поражение или ничья для игрока, чья очередь делать ход, и количество ходов до конца с лучшей игрой обеих сторон. Tablebase определяет для каждой позиции ход, который быстрее всего выиграет против оптимальной защиты, или ход, который проиграет быстрее всего против оптимального нападения. Такие столовые базы доступны для всех шахматных эндшпилей с семью или менее фигурами (исключаются тривиальные позиции в эндшпиле, такие как шесть белых фигур против одиноких черных). король ).[11][12]

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

Распределенных вычислений также используется для улучшения программного кода шахматных движков. В 2013 году разработчики Stockfish программа для игры в шахматы начала использовать распределенные вычисления для улучшения программного кода.[13][14][15] По состоянию на июнь 2017 г., в общей сложности более 745 лет процессорного времени было использовано для игры в более чем 485 миллионов шахматных партий, при этом результаты используются для небольших и постепенных улучшений программного обеспечения для игры в шахматы.[16]

Ограничение мощности двигателя

К концу 1990-х топ-движки стали настолько сильными, что у немногих игроков был шанс выиграть игру с ними. Чтобы дать игрокам больше шансов, движки начали включать настройки, позволяющие регулировать или ограничивать их силу. В 2000 году, когда Стефан Мейер-Кален и Франц Хубер выпустил Универсальный шахматный интерфейс протокол они включали параметры uci_limitstrength и uci_elo, позволяющие авторам движков предлагать различные уровни, оцененные в соответствии с Рейтинг Эло, как указано в одном из рейтинговых списков. Большинство графических интерфейсов для движков UCI позволяют пользователям устанавливать этот рейтинг Elo в меню. Даже двигатели, которые не приняли этот параметр, иногда будут иметь регулируемый параметр прочности (например, Stockfish 11). Двигатели, у которых есть параметр uci_elo, включают Гудини, Фриц 15–16, Рыбка, Шредер, Hiarcs, Младший, Заппа и Sjeng. GUI, такие как Шредер, Шахматный помощник, Аквариум Конвекта,[17] Hiarcs Chess Explorer или Арена Мартина Блюма[18] есть выпадающие меню для установки параметра uci_elo движка. Графический интерфейс семейства Фриц, Шахматный помощник и Aquarium также имеют независимые средства ограничения мощности двигателя, по-видимому, основанные на способности двигателя создавать ранжированные списки ходов (называемые multipv для «принципиальной вариации»).

Сравнения

Турниры

Результаты компьютерных турниров дают представление об относительной силе шахматных движков. Однако в турнирах не проводится статистически значимое количество игр для точного определения силы. Фактически, количество игр, которые необходимо сыграть между довольно равномерно подобранными движками, чтобы достичь значимости, исчисляется тысячами и поэтому нецелесообразно в рамках турнира.[19] Большинство турниров также допускают любые типы оборудования, поэтому сравниваются только комбинации двигателя и оборудования.

Исторически сложилось так, что коммерческие программы были самыми сильными двигателями. Если любительский движок выигрывает турнир или иным образом показывает хорошие результаты (например, Заппа в 2005 году), затем он быстро коммерциализируется. Звания, полученные в этих турнирах, имеют большой престиж для выигрышных программ и, таким образом, используются в маркетинговых целях.

Текущие турниры включают:

Исторические турниры включают:

Рейтинги

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

Существует ряд факторов, которые меняются в зависимости от рейтинговых списков шахматных движков:

  • Контроль времени. Более длительный контроль времени, например, 40 ходов за 120 минут, лучше подходит для определения силы игры в турнире, но также делает тестирование более трудоемким.
  • Используемое оборудование. Более быстрое оборудование с большим объемом памяти приводит к более сильной игре.
  • 64-битное (по сравнению с 32-битным) оборудование и операционные системы предпочитают битовая доска -программы
  • Многопроцессорное и однопроцессорное оборудование.
  • Параметры обдумывания (спекулятивный анализ, пока оппонент думает), также известный как постоянный мозг.
  • Размеры таблиц транспозиции.
  • Открытие настроек книги.

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

Рейтинговые списки на 11 ноября 2020 г.
Список рейтинговКонтроль времени
(ходов / минут)
Год
началось
Последнее обновлениеДвигатель / платформа
записи
Игры
играл
Три лучших двигателяРейтинг
CCRL[20]40/40[а]
Размышлять ВЫКЛЮЧЕННЫЙ
20057 ноября 2020 г.2,7321,189,229
  • 3516
  • 3419
  • 3400
CEGT[21]40/20[b]
Размышлять ВЫКЛЮЧЕННЫЙ
20068 ноября 2020 г.18751,401,865
  • Stockfish 12.0 x64 4CPU
  • LCZero 0.26.3 CUDA
  • Гудини 6.0
  • 3587
  • 3539
  • 3426
IPON[22]5м + 3с
~ 16мин / игра
Размышлять НА
200615 июля 2018 г.208546,430
  • Stockfish 9
  • Гудини 6.02
  • Комодо 11.2.2
  • 3383
  • 3347
  • 3322
SSDF[23]Торнамент 40/120
(+20 ходов / час)
Размышлять НА?
198411 июля 2020391153,481
  • Stockfish 11 x64
  • Komodo 13.1 x64
  • Глубокий шредер 13 x64
  • 3354
  • 3471
  • 3357
  • Обратите внимание, что во всех списках в приведенной выше таблице учитываются только лучшие записи для данного семейства двигателей. Это сделано для обеспечения максимального разнообразия.

Эти рейтинги, хотя и рассчитываются с использованием Система Эло (или аналогичные методы оценки), не имеют прямого отношения к рейтингам Эло ФИДЕ или другим шахматным федерациям рейтингов игроков. За исключением некоторых игр «человек против машин», которые SSDF организовал много лет назад (которые были далеки от сегодняшнего уровня), есть без калибровки между любым из этих рейтинговых списков и пулами игроков. Следовательно, результаты, которые имеют значение, являются разряды и различия между рейтингами, а не абсолютными значениями. Кроме того, каждый список калибрует свой Эло другим методом. Следовательно, нельзя проводить сравнения Эло между списками.

Во многих рейтинговых списках отсутствуют IPPOLIT и его производные. Хотя очень сильно и Открытый исходный код, есть утверждения от интересов коммерческого программного обеспечения, что они были получены из дизассемблированного двоичного файла Рыбка.[24] Из-за полемика, все эти движки попали в черные списки многих турниров и рейтинговых списков. Рыбку, в свою очередь, обвинили в том, что Фрукты,[25] а в июне 2011 года ICGA официально заявила, что Рыбка произошла от Fruit and Crafty, и запретила Рыбке участвовать в чемпионате мира по компьютерным шахматам Международной ассоциации компьютерных игр и отменила ее предыдущие победы (2007, 2008, 2009 и 2010).[26] ICGA подверглась критике за это решение.[27] Рыбка до сих пор входит в несколько рейтинговых списков общества.[который? ]

Рейтинги лучших шахматных движков улучшаются примерно на 20 ELO в год с момента появления рейтингового списка CCRL в 2005 году, и ежегодный прирост, похоже, не уменьшается.[нужна цитата ] С дебютом в декабре 2017 г. AlphaZero Шахматный движок, основанный на его впечатляющем успехе против Stockfish 8, дав ему спекулятивный рейтинг примерно на 150 пунктов выше или на 3575, был поднят вопрос, какой будет рейтинг ELO для движка, который играет в идеальные шахматы. Статистик и шахматный мастер Кен Риган оценивает, что среди всех игроков международного сообщества (ФИДЕ) это число может составлять 3600 ELO, хотя это число напрямую не сопоставимо с рейтингом движков.[нужна цитата ] Однако несколько матчей человек-машина, сыгранных с 1997 года, привели теоретиков[который? ] признать, что некоторое снижение рейтингов двигателей, по-видимому, произошло по сравнению с человеческими шкалами ELO, составив около 100 баллов ELO. Это означает, например, что для достижения сопоставимой игры человек должен иметь рейтинг на 100 очков ELO сильнее, чем двигатель.[нужна цитата ]

Наборы тестов

Двигатели можно проверить, измерив их производительность на определенных позициях. Типичным является использование наборов тестов, где для каждой данной позиции нужно найти один лучший ход. Эти позиции могут быть ориентированы на позиционную, тактическую или эндшпильную игру. В Нолот Например, набор тестов ориентирован на большие жертвы.[28] Тестовые наборы BT2450 и BT2630 измеряют тактические возможности шахматного движка и использовались МЯТЕЖНИК.[29][30] Существует также общий набор тестов под названием Brilliancy, который был собран в основном из Как переоценить свою шахматную тетрадь.[31] Набор стратегических тестов (STS) проверяет стратегическую силу двигателя.[32] Еще один современный набор тестов - Nightmare II, который содержит 30 шахматных головоломок.[33][неуместное цитирование ]

Каспаров против мира (игра в шахматы с помощью компьютера)

В 1999 году, Гарри Каспаров играл в шахматы "Каспаров против мира " над Интернет, организованный Игровая зона MSN. Обе стороны использовали компьютерную (шахматную) помощь. «Мировая команда» включала в себя более 50 000 человек из более чем 75 стран, решая свои шаги по большинство голосов. Игра длилась четыре месяца и закончилась после 62-го хода Каспарова, объявившего форсированный ход. Шах и мат за 28 ходов найдено с помощью компьютерной программы Deep Junior. Избиратели мировой сборной подали в отставку 22 октября. После игры Каспаров сказал: «Это величайшая игра в истории шахмат. Огромное количество идей, сложность и вклад, который она внесла в шахматы, делают ее самой важной. игра когда-либо играли. "[34]

Двигатели для шахматных вариантов

Некоторые шахматные движки были разработаны для игры шахматные варианты, добавив необходимый код для моделирования нестандартные шахматные фигуры, или проанализировать игру на нестандартных досках. ШахматыV и Фея-Макс, например, оба могут играть в варианты на шахматной доске размером до 12 × 8, такие как Шахматы Капабланка (Доска 10х8).

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

Графические пользовательские интерфейсы

Xboard /Winboard был одним из первых графический пользовательский интерфейс (GUI). Тим Манн создал его, чтобы предоставить графический интерфейс для Шахматы GNU двигатель, но после этого другие двигатели, такие как Хитрый появился который использовал протокол Winboard. В итоге программа Шахматист включала возможность импортировать другие движки Winboard в дополнение к движку King, который был включен.

В 1995 г. Шахматная база начал предлагать Фриц Engine как отдельная программа в программе базы данных Chessbase и в графическом интерфейсе пользователя Fritz. Вскоре после этого они добавили Младший и Шредер Engine в свою линейку продуктов, упаковывая их в том же графическом интерфейсе, который использовался для Fritz. В конце 1990-х годов графический интерфейс Fritz мог запускать движки Winboard через адаптер, но после 2000 года Chessbase просто добавила поддержку движков UCI и больше не вкладывала много усилий в Winboard.

В 2000 г. Стефан Мейер-Кален начали продавать Шредер в отдельном UCI GUI собственной разработки, позволяющий импортировать в него движки UCI или Winboard.

Конвекта Шахматный помощник и ChessPartner от Lokasoft также добавили возможность импортировать движки Winboard и UCI в свои продукты. Шейн Хадсон разработал База данных шахмат Шейна, бесплатный графический интерфейс для Linux, Mac и Windows. Мартин Блюм разработал Arena,[35] еще один бесплатный графический интерфейс для Linux и Windows. Лукас Монж вышел на поле с бесплатным графическим интерфейсом Lucas Chess.[36] Все три могут работать как с двигателями UCI, так и с Winboard.

На Android Аарт Бик выпустил Chess для Android,[37] еще один бесплатный графический интерфейс и шахматный мастер PGN Герхарда Калаба[38] и рыба-дроид Питера Остерлунда[39] также может служить графическим интерфейсом для движков.

В Computer Chess Wiki перечислены многие шахматные графические интерфейсы.[40]

Смотрите также

Примечания

  1. ^ Также доступно: 40 ходов за 4 минуты
  2. ^ Также доступно: 40 ходов за 4 минуты, 40 ходов за 120 минут.

Рекомендации

  1. ^ blog.chess.com Создание шахматного движка с нуля (Часть 1: Основы), Дата ссылки 28 июня 2012 г.
  2. ^ https://www.game-ai-forum.org/icga-tournaments/tournament.php?id=65
  3. ^ http://www.sys-10.com/
  4. ^ Фэн-сюн Сюй, Томас Анантараман, Мюррей Кэмпбелл и Андреас Новацик. «Шахматная машина гроссмейстера». Scientific American. Октябрь 1990 г.
  5. ^ Computer-schach & Spiele позже начали использовать английское слово «двигатель», например. 1997 # 6 при описании Фрица или Hiarcs.
  6. ^ «Истинная ценность шахматного программного обеспечения». Компьютерные шахматные отчеты. 1992-3. т. 3 шт. 2 стр.22
  7. ^ http://tim-mann.org/history.html
  8. ^ http://www.thechessdrum.net/PGN_Reference.txt
  9. ^ Computer-schach & Spiele.
  10. ^ http://www.lokasoft.nl/
  11. ^ http://tb7.chessok.com Сайт Ломоносова, позволяющий зарегистрированному пользователю получить доступ к базе таблиц из 7 частей, и форум с найденными вакансиями.
  12. ^ «Кто от этого выиграет? (Шахматная головоломка)» Пример шахматной позиции, найденной из базы шахматных таблиц Ломоносова.
  13. ^ «Система тестирования Stockfish». tests.stockfishchess.org. Получено 7 марта 2014.
  14. ^ "Увлекаться". stockfishchess.org. Получено 8 марта 2014.
  15. ^ Костальба, Марко (1 мая 2013 г.). «Фреймворк распределенного тестирования Fishtest». talkchess.com. Получено 18 апреля 2014.
  16. ^ «Система тестирования Stockfish - Пользователи». test.stockfishchess.org. Получено 17 июн 2017.
  17. ^ https://shop.chessok.com/
  18. ^ «Архивная копия». Архивировано из оригинал на 2007-03-14. Получено 2018-11-29.CS1 maint: заархивированная копия как заголовок (связь)
  19. ^ "mizarchessengine.com". Получено 25 сентября 2016.
  20. ^ «CCRL 40/40 - Указатель». 5 ноября 2016 г.. Получено 11 ноября, 2020.
  21. ^ «CEGT 40/20». Большой турнир по шахматам. 7 февраля 2016 г.. Получено 11 ноября, 2020.
  22. ^ "IPON". Инго Бауэр. 16 ноября, 2016. Архивировано с оригинал 25 января 2019 г.. Получено 3 февраля, 2016.
  23. ^ «Рейтинговый список SSDF». ssdf.bosjo.net. Получено 11 ноября, 2020.
  24. ^ "Споры о шахматных машинах на сайте chessvibes.com, получено 28 мая 2010 г.". Архивировано из оригинал на 2010-05-28. Получено 2010-05-28.
  25. ^ "Оценка". Архивировано из оригинал на 2011-08-11. Получено 2010-12-18.
  26. ^ «Рыбка дисквалифицирована и исключена из чемпионата мира по компьютерным шахматам | ChessVibes». Архивировано из оригинал на 2012-03-03. Получено 2011-06-30.
  27. ^ Риис, доктор Сорен (2 января 2012 г.). «Грубая ошибка правосудия в компьютерных шахматах (часть первая)». Новости Chessbase. Получено 19 февраля 2012.
  28. ^ «Тестовый набор Нолот». Архивировано из оригинал на 2007-08-17. Получено 2007-08-04.
  29. ^ «Набор тестов BT2450». Архивировано из оригинал на 2007-09-07. Получено 2007-10-10.
  30. ^ Розенбум, Манфред. "Rebel Century FAQ: 3. Использование Rebel". Получено 25 сентября 2016.
  31. ^ Люкс Brilliancy TalkChess форум
  32. ^ [1] Стратегический набор тестов
  33. ^ [2] Кошмар II
  34. ^ Хардинг, Т. (2002). 64 великих шахматных партии, Дублин: Chess Mail. ISBN  0-9538536-4-0.
  35. ^ «Архивная копия». Архивировано из оригинал на 2007-03-14. Получено 2018-11-29.CS1 maint: заархивированная копия как заголовок (связь)
  36. ^ https://lucaschess.pythonanywhere.com/
  37. ^ http://www.aartbik.com/android.php
  38. ^ http://pgnmaster.kalab.com/
  39. ^ http://hem.bredband.net/petero2b/droidfish/index.html
  40. ^ http://computer-chess.org/doku.php?id=computer_chess:wiki:lists:gui_protocol_support_list

внешняя ссылка