Найти в Дзене
QCP

QCP - мощный шахматный движок

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

Разработка началась в Июле 2019 года, после неудачного матча Stockfish - Lc0. Почему неудачного, если Stockfish победил? Я заметил, что Lc0 играет очень агрессивно, и Stockfish выиграл 1 партию из 6 (остальные вничью) чисто из-за аппаратного преимущества. Он играл на Intel Xeon с 64 ядрами (в подробности не вдаюсь чтобы не вызывать эпичные бои Intel vs AMD, но мы то все знаем... что Эльбрус от МЦСТ - One Love!) А Lc0 играла на 32 ядерном Threadripper на Zen+ (Come on, не пишите что есть Threadripper на Zen 2, ибо в то время его еще не было). И люди в чате писали, что Lc0 продавливает. Это было понятно, Lc0 - самообучаемый движок и играет в более человеческом стиле, в то время как Stockfish играет чисто на математических вычислениях.

Мне, как шахматисту и ярому фанату (Нет, не Интел xD) движка Stockfish, было неприятно, что нейросети продавливают и обходят классические шахматные движки. И вот-тогда...

Я начал разработку QCP V1, первая версия, и основной идеей была улучшенная защита движка. Он был самообучаемый, но не требовал видеокарт как Lc0. Натренирован он был на защиту, использовал я эти партии: https://lichess.org/study/kIROlqBy Мы все знаем, что лучше Личесса в этом нет.

Расскажу как строилась эта база. за белых играл Stockfish 10, за черных тоже, но он играл против угроз белых, а мат ставить не собирался.

Этой базой и был натренирован мой движок, а потом для закрепления этих 10 партий было сыграно еще 2500 партий QCP - QCP. И вот, первая версия, достаточно сильная, появилась на свет.

Это еще не было такой "революцией", но я договорился о матче против Lc0. Движок был медленный, и были баги, как тут: https://lichess.org/X5gcCYYM
И ясно это было всем, что Lc0 матч будет проигран. Так и случилось, и про QCP все забыли месяца на 2. Что дальше?
И тут мне дико повезло, что знакомый навел меня на Марко Зербинати, он занимался в то время похожими вещами. И после нескольких дней переписки выяснилось, что для записи партий он использовал простой криптоалгоритм DES. В то время я быстро начал изучать криптографию, и уже мог реализовать на Python алгоритм DES. И вот вскоре, Марко Зербинати натренировал его движок SugarNN на мои партии (в то время он был приватной разработкой). Так как алгоритмы шифровки у нас были одинаковые, я взял эти файлы и поместил в пустой QCP V2. И если до этого QCP V2 играл рандомные ходы (0 рейтинга), то после внедрения защитных партий он начал играть на (200 ELO), что не могло меня не радовать, я понял, что защита - оптимальная шахматная стратегия. И вот, после месяца тренировок, появился движок, который не уступал Stockfish!

Также были исправлены все баги (Один баг эндшпиля остался, он в версии QCP-V2-b1 он устранен). Также была улучшена скорость игры.

https://lichess.org/yiKj0NX2 Матч против Lc0

https://lichess.org/pxXWkPjU (1 партия из матча в 16 партий, остальные по ссылке). Stockfish разгромили.

То же самое и с Komodo (Ссылки не привожу, ибо сейчас хвастаться победой над Комодо - ЧСВ.)

И теперь, 2020 год...

Что же нового в мире шахматных движков (К слову, было это числа 11 янв. Stockfish 11 еще не было.)?

Ответ - TheEnsemble, мульти-движок.

Матч https://lichess.org/IoKrJxlT

QCP разгромил и его со счетом 10-0, хотя на официальном сайте этого движка написано что он громит Stockfish 10 со счетом 6-4.

И вот, вышел Stockfish 11. Базы данных на Stockfish 10 устарели, пора создавать QCP V3. Но я этого делать не буду, т.к я достаточно сильно отстал от программистского мира, а Марко Зербинати с его "недогенератором партий" также остался глубоко глубоко... на дне, и он мне больше не партнер в разработке движков.

Боюсь, QCP Так и умрет на уровне Stockfish 10, ибо я перешел на разработку криптоалгоритмов и криптостойких ОС.

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

Сайт с моими блогами на другую тему: http://televistar.com/

Мое сообщество: http://televistar.com/communities/qcp/

В следующей части...

Конфликты Главного Разработчика QCP