Открытые исходные коды шахматных программ

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

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

Игра ведется на квадратной шахматной доске с 64 клетками, расположенными в сетке восемь на восемь. Каждый игрок контролирует 16 фигур, и цель игры — поставить мат королю соперника.

Хотя игра в шахматы против компьютерного движка популярна, многие люди предпочитают играть в шахматы против другого человека. Free Internet Chess Server (FICS) — популярный сервер, на котором шахматисты могут играть друг с другом через Интернет. Это один из старейших и один из крупнейших шахматных серверов в Интернете.

AlphaZero — Революция В Шахматах! Google Меняет Мир

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

Рейтинги определяются исключительно в связи с их работой в качестве клиента FICS.

Клиенты FICS
ШахматыX Шахматная база данных и клиент FICS
PyChess Продвинутый шахматный клиент, соответствующий рекомендациям по человеческому интерфейсу GNOME
XBoard Шахматная доска с графическим интерфейсом пользователя для шахматных движков и игры против людей через Интернет
доска Интерфейс шахматной доски на основе GTK + для ICS и шахматных движков
Джин Графический клиент на основе Java для шахматных серверов в Интернете
Raptor Шахматный интерфейс для freechess.org (FICS)
Прочтите нашу полную коллекцию рекомендованное бесплатное программное обеспечение с открытым исходным кодом . Сборник охватывает все категории программного обеспечения.
Коллекция программного обеспечения является частью нашего серия информативных статей для энтузиастов Linux. Есть масса подробных обзоров, альтернативы Google, интересные вещи, которые можно попробовать, оборудование, бесплатные книги и руководства по программированию и многое другое.
  • 08/08/2021
  • ИгрыИнтернетПрограммное обеспечение

Источник: wowgold-seller.com

Source Code

Lichess is free/libre open source software. You can download, read, use and modify every bit of source code.

БИТВА ДВИЖКОВ | Stockfish против Leela Chess Zero

Main server

  • lichess-org/lila Main backend and frontend (Scala)
  • lichess-org/lila modules Backend modules (Scala)
  • lichess-org/lila ui Frontend modules (TypeScript, Sass)
  • lichess-org/scalachess Rules of chess and its variants (Scala)
  • lichess-org/compression Compression algorithms for chess moves and clocks (Java)
  • lichess-org/chessground Frontend chess board (TypeScript)
  • hi-ogawa/Stockfish Stockfish compiled for cutting-edge browsers (C++, WebAssembly, JavaScript)
  • lichess-org/stockfish.wasm, lichess-org/stockfish.js Slower fallback versions of Stockfish for browsers (C++, WebAssembly, JavaScript)
  • lichess-org/pgn-viewer Embedded client-side PGN viewer

External services

  • lichess-org/lila-ws WebSocket traffic (Scala)
  • lichess-org/lila-http (Rust)
  • lichess-org/lila-fishnet Fishnet move requests (Scala)
  • lichess-org/lila-search Search engine (Scala)
  • lichess-org/lila-openingexplorer (Rust)
  • lichess-org/lila-tablebase Tablebase (Rust)
  • lichess-org/lila-push Web Push service (Rust)
  • lichess-org/fishnet Distributed computer analysis, using official-stockfish/Stockfish and ianfab/Fairy-Stockfish, a Stockfish fork with chess variant support (Rust, C++)
  • lichess-org/lila-gif GIF generator for games and positions (Rust)
  • lichess-org/lila-engine Broker for communication between external engine providers and clients (Rust)
  • lichess-org/external-engine External chess engine provider for the analysis board (Python)
  • lichess-org/kaladin Machine Learning tool aimed at automating cheat detection using Insights
  • clarkerubber/irwin AI that learns cheating patterns to help mods (Python)
  • lichess-org/lila-ip2proxy Query database of known proxy IPs (Rust)
  • lichess-org/lila-pwned Query database of known leaked passwords (Rust)
  • cyanfish/bbpPairings Swiss pairings (C++)
  • ornicar/lichess-puzzler Generate, review and classify chess puzzles (Python, TypeScript)
  • michael1241/discotron Discord integration for Patron status (Python)
Читайте также:
Какая программа передает файлы с айфона на Айфон

Mobile app

  • veloce/lichobile Main mobile app
  • veloce/scalachessjs Rules of chess and its variants
  • veloce/capacitor-stockfish Capacitor Stockfish plugin
  • veloce/cordova-plugin-stockfish Cordova interface Stockfish

Docs, utilities, others

  • lichess-org/api HTTP API documentation (read here)
  • lichess-org/api/ui Web frontend to some API endpoints (try here)
  • lichess-org/api-demo Demo of API oauth and gameplay (try here)
  • ornicar/scalalib Misc Scala utilities
  • lichess-org/playframework-lila Trimmed down Play Framework fork
  • ornicar/cash Trimmed down cash.js fork
  • ornicar/lichess-db Generator for database.lichess.org (download all rated games and puzzles)
  • ornicar/lila-db-seed Import dummy data into a local database for lila development
  • lichess-org/chess-openings Aggregated data set of chess opening names
  • ShailChoksi/lichess-bot Bridge between HTTP API and chess engines
  • clarkerubber/Staunton-Pieces Original 3D rendered pieces, boards and trophies
  • arex1337/lichess-daily-puzzle-slack-app Slack app that posts the daily puzzle to the Slack channel in which it is installed
  • arex1337/lichesspuzzle Zulip bot that posts the daily puzzle to a specific Zulip stream
  • lichess-org/swiss-maker Script to generate swiss tournaments for your team using the Lichess API
  • thoas/picfit HTTP image server (go)

Production architecture

lila version

9dfb63049a72

JavaScript modules

Here are all frontend modules from lichess-org/lila ui in Web Labels compatible format:

Script FileLicenseSource Code
analysisBoard.min.js AGPL-3.0+ ui/analyse/src
challenge.min.js AGPL-3.0+ ui/challenge/src
chat.min.js AGPL-3.0+ ui/chat/src
cli.min.js AGPL-3.0+ ui/cli/src
dasher.min.js AGPL-3.0+ ui/dasher/src
editor.min.js AGPL-3.0+ ui/editor/src
insight.min.js AGPL-3.0+ ui/insight/src
learn.min.js AGPL-3.0+ ui/learn/src
lobby.min.js AGPL-3.0+ ui/lobby/src
notify.min.js AGPL-3.0+ ui/notify/src
palantir.min.js AGPL-3.0+ ui/palantir/src
puzzle.min.js AGPL-3.0+ ui/puzzle/src
round.min.js AGPL-3.0+ ui/round/src
serviceWorker.min.js AGPL-3.0+ ui/serviceWorker/src
simul.min.js AGPL-3.0+ ui/simul/src
site.min.js AGPL-3.0+ ui/site/src
speech.min.js AGPL-3.0+ ui/speech/src
tournament.calendar.min.js AGPL-3.0+ ui/tournament.calendar/src
tournament.min.js AGPL-3.0+ ui/tournament/src
tournament.schedule.min.js AGPL-3.0+ ui/tournament.schedule/src
swiss.min.js AGPL-3.0+ ui/swiss/src

Источник: lichess.org

Русские Блоги

Открытый исходный код китайской шахматной альфа-нулевой программы

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

icyChessZero

  • Jiajia Zero: Это команда, которая поддерживает его. Она переводит Leela Zero (шахматный альфа-нулевой проект) в китайский шахматный проект. В настоящее время он является самым сильным с точки зрения очков Эло, и есть тенденция к коммерциализации.
  • cczero: Код поддерживает почти один человек.Это также китайский шахматный проект, спонтанно организованный и поддерживаемый людьми.Цель — самый сильный проект с открытым исходным кодом.

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

Я надеюсь использовать сеть только без добавления какого-либо алгоритма Монте-Карло для предсказания закона размещения человека. В конце концов, в Go это простой Стратегическая сеть может достичь уровня шахматного мастерства любительского дана. Я не ищу лучших в мире. Любительский дан мне очень подходит.

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

Читайте также:
Как пользоваться программой terminal emulator for Android

Это наивный сетевой код, который я реализовал в то время:

icyElephant

 1.

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

 2. Alpha zero ,

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

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

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

Фактически, до этого момента есть еще много проектов, которые можно реализовать. Например, есть серия статей, которые я знаю раньше:

ENG Бо: Создайте AlphaGo за 28 дней

Статья называлась 28 дней самодельного альфа-го (хотя эта серия статей позже стала евнухами, и автор продал лампу, вероятно, из-за недостаточной вычислительной мощности), но если вы продолжите это делать, на самом деле есть определенный порог, используя деревья Монте-Карло. Выполнение под-игр и улучшение обучения и тренировки нейронных сетей требует огромных вычислительных мощностей. Этот порог обычно решается другими проектами с открытым исходным кодом посредством обучения краудфандингу, такими как cczero и Jiajia zero, но некоторые из них преодолели этот порог. , Есть некоторые, кто не переступил этот порог, например, другой проект на Zhihu ранее:

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

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

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

  1. Используйте c / c ++ для ускорения кода
  2. Используйте несколько процессов для одновременной пересылки нескольких сетей
  3. Используйте сопрограммы для группировки нескольких переадресаций в пакеты для повышения эффективности использования графического процессора
  4. Используйте сопрограмму / многопроцессорный алгоритм дерева Монте-Карло для увеличения скорости поиска дерева Монте-Карло
  5. Используйте несколько компьютеров для запуска игры и используйте больше графических процессоров

За исключением метода ускорения C / C ++, я его еще не использовал. Я использовал другие методы. Подробнее см.

После реализации функции использования дерева Монте-Карло для поиска движущихся объектов, я позволил сети контролируемого обучения и двум алгоритмам контролируемого обучения + дерево Монте-Карло соревноваться, результаты следующие:

Читайте также:
Импортировать это значит в программе

В 29 играх дерево Монте-Карло не проиграло ни одной игры. В 5 играх ничья на тот момент превышала лимит шагов (100 шагов, для экономии времени). Жеребьевка была проведена mcts без исключения. Преимущество. Это ясно доказывает, что деревья Монте-Карло могут эффективно улучшить шахматную мощь политической сети.

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

Затем начался длительный процесс обучения. Поскольку мои вычислительные мощности очень ограничены, пока это только кластер из 4 или 5 серверов GPU, обучающих эту версию альфа-нуля. Мои первоначальные результаты оценки основаны на лабораторных ресурсах. Я могу пройти его как минимум через 10 лет.

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

ps: Если у вас есть разрешение на бездействующий сервер GPU в Beijing Post и вы готовы присоединиться к кластеру для обучения, надеюсь, свяжитесь со мной

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

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

Этот минимальный образец можно запустить напрямую с помощью google colab (бесплатно), если вы сохраните этот файл на свой диск Google и откроете его с помощью colab (обратите внимание, чтобы включить ускорение gpu):

Запустите весь код этого минимального образца в google colab, вы должны увидеть результат, подобный следующему, указывающий, что случайный вес был инициализирован и использовался во подигре дерева Монте-Карло:

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

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

Цель написания этого проекта также состоит в том, чтобы пройти еще один путь и еще одного человека на пути исследования.

Наконец, предложение для тех, кто интересуется алгоритмом альфа-нуля:

Если у вас недостаточно вычислительной мощности, не трогайте шахматы. Выбирайте сложную игру, такую ​​как Гомоку. Вы можете начать обучение с простой игры, такой как Гомоку, у которой гораздо более низкий порог вычислительной мощности.

Кроме того, если вы хотите обсудить некоторые технические вопросы, вы можете поговорить, прокомментировать или связаться со мной по [email protected]

Источник: russianblogs.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru