Ключевое слово
22 | 06 | 2025
Новости Библиотеки
Шахматы Онлайн
Welcome, Guest
Username: Password: Remember me

TOPIC: Практикум по нейронным сетям для шахмат №2

Практикум по нейронным сетям для шахмат №2 24 Май 2025 14:26 #301

  • Vladimirovich
  • Vladimirovich's Avatar
  • NOW ONLINE
  • Инквизитор
  • Posts: 112339
  • Thank you received: 2353
  • Karma: 112
alexlaw wrote:
Vladimirovich wrote:
Возникает проблема с версионностью,
Просто оставлять последнюю версию. А предыдущие удалять.
За этим кто-то должен следить :)

Можно создать пост и ссылаться
Для этого есть Библиотека, я выдам права без проблем
quantoforum.ru/duma/1836-kolizej-i-biblioteka

Но там чуть сложнее в смысле красоты
Если будет нужна помощь, обращайтесь
Каждому - своё.

Практикум по нейронным сетям для шахмат №2 24 Май 2025 16:26 #302

  • Rom77
  • Rom77's Avatar
  • OFFLINE
  • Стрелец
  • Posts: 7
  • Thank you received: 2
  • Karma: 0
booot76 wrote:
Ром, а какой движок вы написали?
Я не программист и движков не писал. Постепенно разбирался по коду существующих программ. В свое время Игорь Коршунов выкладывал свою программу Murka на форуме Иммортала. Разные версии - от 1200 до 3000. Хороший учебный пример. Я смотрел код, немного менял, компилировал. Может это прозвучит несколько самоуверенно, но для своего уровня более менее разобрался. Если что-то не так, то можно обсудить.

Практикум по нейронным сетям для шахмат №2 24 Май 2025 16:41 #303

  • booot76
  • booot76's Avatar
  • OFFLINE
  • Дьяк
  • Posts: 198
  • Thank you received: 12
  • Karma: 5
Доводилось с Игорем общаться-пересекаться :-). В принципе все верно. Ну а некоторые нюансы конкретной реализации если что всегда поправить можно.

Практикум по нейронным сетям для шахмат №2 24 Май 2025 17:00 #304

  • Rom77
  • Rom77's Avatar
  • OFFLINE
  • Стрелец
  • Posts: 7
  • Thank you received: 2
  • Karma: 0
Давно хотел написать гайд по коду движков и выложить где-нибудь на хабре. Уж больно много фейспалма в интернете. Даже на профильных форумах.

Хотелось написать что-то в таком же духе, что выложил выше. Даже вот картинки заранее подготовил. Описать, как все методы работают в системе, в связке. Что важно, а что нет. Такого вроде бы нет в инете. В статьях обычно алгоритмы просто перечисляют, а если где и есть код, то он на уровне середины 70-х (альфа-бета и пара сортировок).

Хочу добраться даже до конкретных примеров из кода Стокфиша, но немного стрёмно, поскольку за всю жизнь написал, отладил и скомпилировал не более 50-100 строк кода. Да и лениво мне стартовать, но сегодня триггер сработал.

Практикум по нейронным сетям для шахмат №2 24 Май 2025 17:23 #305

  • booot76
  • booot76's Avatar
  • OFFLINE
  • Дьяк
  • Posts: 198
  • Thank you received: 12
  • Karma: 5
Я в Стокфише неплохо разбираюсь. На уровне понимания что, как и зачем там сделано. При том что в С++. я так себе.

Практикум по нейронным сетям для шахмат №2 24 Май 2025 17:24 #306

  • booot76
  • booot76's Avatar
  • OFFLINE
  • Дьяк
  • Posts: 198
  • Thank you received: 12
  • Karma: 5
В нашем макете я достаточно подробно все комментировал - так что нюансы реализации можно будет и у нас посмотреть.

Практикум по нейронным сетям для шахмат №2 25 Май 2025 04:16 #307

  • alexlaw
  • alexlaw's Avatar
  • OFFLINE
  • Сокольничий
  • Posts: 350
  • Thank you received: 15
  • Karma: 3
Уважаемый booot76.
Прошу вас опубликовать тут последнюю версию учебного макета.
Я думаю будут вопросы по делу.
Предлагаю поэксперементировать и добавить дополнительную нейронную сеть, используемую для быстрой оценки позиций, как в Stockfish.
Еще интересны эндшпильные базы syzygy 3-4-5.
Если не ошибаюсь у вас есть dll для этих баз.
Ну и конечно как и у вас эшдшпиль типа KPvK. (в учебных целях).
Для меня сейчас особо интересна дополнительную нейронную сеть, куда ее можно впихнуть в традиционные алгоритмы и можно ли?
PS
Провел небольшой турнир


dwg59_2025-05-25.jpg
Last Edit: 25 Май 2025 04:33 by alexlaw.

Практикум по нейронным сетям для шахмат №2 25 Май 2025 08:56 #308

  • booot76
  • booot76's Avatar
  • OFFLINE
  • Дьяк
  • Posts: 198
  • Thank you received: 12
  • Karma: 5
Если подскажете как ее опубликовать тут - опубликую :-). С дополнительными нейросетками пока предлагаю не играться - куда более важные узлы есть. То же и касаемо эндшпилей. Мы тут будем просто из стороны в сторону шарахаться с полусобранным движком. Проблемы у нас не потому что нейросетей не хватает (1 пока достаточно), а в том что переборные алгоримы - "плоские".

Практикум по нейронным сетям для шахмат №2 25 Май 2025 09:30 #309

  • Vladimirovich
  • Vladimirovich's Avatar
  • NOW ONLINE
  • Инквизитор
  • Posts: 112339
  • Thank you received: 2353
  • Karma: 112
booot76 wrote:
Если подскажете как ее опубликовать тут - опубликую :)
Выдал Вам и alexlaw права автора
В Библиотеке должна появиться кнопка Create a Post

1. Обязателен Заголовок и Категория (лучше Blog)
Ну и текст какой

2. Файл добавлять через изображение :) ZIP можно грузить.
Создана папка engine, грузите туда.

3. Сохраните пост

ZIP в посте вы не увидите. Сорри, движок увы не гитхаб :)
1 и 2 я потом объединю.
Каждому - своё.

Практикум по нейронным сетям для шахмат №2 25 Май 2025 10:11 #310

  • alexlaw
  • alexlaw's Avatar
  • OFFLINE
  • Сокольничий
  • Posts: 350
  • Thank you received: 15
  • Karma: 3
Vladimirovich wrote:
В Библиотеке должна появиться кнопка Create a Post
Да, появилась.
booot76 пришлите мне на почту, а я размещу.
Или сами разместите.
Мне кажется, что это будет полезно для всех тех, кто хотел начать, но не знал как :)

Практикум по нейронным сетям для шахмат №2 25 Май 2025 10:15 #311

  • Vladimirovich
  • Vladimirovich's Avatar
  • NOW ONLINE
  • Инквизитор
  • Posts: 112339
  • Thank you received: 2353
  • Karma: 112
Версии можно закачивать без сохранения поста там.
Сообщите только тут, я просто обновлю ссылку
Каждому - своё.

Практикум по нейронным сетям для шахмат №2 25 Май 2025 14:42 #312

  • booot76
  • booot76's Avatar
  • OFFLINE
  • Дьяк
  • Posts: 198
  • Thank you received: 12
  • Karma: 5
Пришлю позже - пока неспокойно у нас.

Практикум по нейронным сетям для шахмат №2 26 Май 2025 06:57 #313

  • alexlaw
  • alexlaw's Avatar
  • OFFLINE
  • Сокольничий
  • Posts: 350
  • Thank you received: 15
  • Karma: 3
И так я вроде разобрался (на своем уровне) с кодом.
Попутно почитал разные статьи.
Интересный вопрос поднят давным давно -
Что важнее
Глупый и быстрый или умный и медленный? :)
Ответ нам может дать конечно же booot76.
Ждем его с последней версией учебного макета :)

Практикум по нейронным сетям для шахмат №2 26 Май 2025 08:43 #314

  • booot76
  • booot76's Avatar
  • OFFLINE
  • Дьяк
  • Posts: 198
  • Thank you received: 12
  • Karma: 5
Кинул макет вам на почту. Разбирайтесь :-). Добавил туда в принципе основной джентльменский набор современного движка. Макет , конечно, от этого макетом быть не перестал (строго не судите), но "на рыбалку" с ним, наверное, уже можно ходить :-). Так что выпускаю макет "в свет". Изучайте, пробуйте, задавайте вопросы. По возможности буду заглядывать сюда. Но , если что, лихом не поминайте - время сейчас сложное . Всяко бывает.

Практикум по нейронным сетям для шахмат №2 26 Май 2025 08:54 #315

  • booot76
  • booot76's Avatar
  • OFFLINE
  • Дьяк
  • Posts: 198
  • Thank you received: 12
  • Karma: 5
Что же касается ответа на ваш вопрос, то зря вы ссылку на чекерс дали :-). У шахмат и чекерса разные модели игры и даже разный подход к задаче. В шахматах, определенно, умный перебор лучше глупого. Даже если это стоит скорости. А вот в шашках (чекерсе) проблематика немного другая. Дело в том, что там эндшпильные таблицы встречаются по ходу игры ВСЕГДА. И играют несравнимо бОльшую роль. В отличии от шахмат. И досчитаться до них хоть глупым перебором хоть умным, хоть вообще любым - результат будет одинаковый. Там проблема "умного перебора" важна лишь в очень узкий (исчезающе узкий) промежуток игры между дебютной библиотекой и "рыба везде" :-). Доводилось мне и шашки писать. Вместе с эндшпильной базой.

Практикум по нейронным сетям для шахмат №2 26 Май 2025 09:13 #316

  • alexlaw
  • alexlaw's Avatar
  • OFFLINE
  • Сокольничий
  • Posts: 350
  • Thank you received: 15
  • Karma: 3
Спасибо booot76.
Добавил в библиотеку.
Правда не понял, как сюда ссылку добавить.
Last Edit: 26 Май 2025 09:24 by alexlaw.

Практикум по нейронным сетям для шахмат №2 26 Май 2025 10:13 #317

  • Vladimirovich
  • Vladimirovich's Avatar
  • NOW ONLINE
  • Инквизитор
  • Posts: 112339
  • Thank you received: 2353
  • Karma: 112
Добавил в опубликованные.
alexlaw wrote:
Правда не понял, как сюда ссылку добавить.

Тут есть два варианта после публикации
(Заранее прошу прощения, но народ этим функционалом не пользовался, кроме меня :), так что проблемки по ходу решим :))

1. Добавить тэг article quantoforum.ru/duma/3158-dopolnitelnye-tegi-foruma
Все должно быть в одной строчке

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

SmallChess

Процесс создания на форуме Практикум по нейронным сетям для шахмат №2

Read more...

2. Просто зайти в статью и скопировать ссылку
quantoforum.ru/blogs/89-uchebnyj-shakhmatnyj-dvizhok-s-nnue

P.S. Проверьте плиз права на редактирование своей статьи.
Каждому - своё.
Last Edit: 26 Май 2025 10:14 by Vladimirovich.

Практикум по нейронным сетям для шахмат №2 27 Май 2025 07:18 #318

  • booot76
  • booot76's Avatar
  • OFFLINE
  • Дьяк
  • Posts: 198
  • Thank you received: 12
  • Karma: 5
Провел матч последней версии с The Baron (2899) : +48-6=26. Примерно 200 эло преимущества вышло. Хороший макет

Практикум по нейронным сетям для шахмат №2 27 Май 2025 09:03 #319

  • alexlaw
  • alexlaw's Avatar
  • OFFLINE
  • Сокольничий
  • Posts: 350
  • Thank you received: 15
  • Karma: 3
Да очень хороший :)

А что такое

MTD(f)
• MTD(f)-Memory-enhanced Test Driver with node n and value f,
алгоритм использующий только поиск с нулевым окном для
определения лучшего хода. В среднем он превосходит Negascout
и Negamax.
• Чаще всего реализуется как поиск с итеративным углублением

MTD(f) 10
• Для того чтобы увеличить производительность еще больше,
можно рассматривать не все перспективные ходы, а только 10 самых перспективных из них.
• Коэффициент ветвления становится фиксированным (10)
существенно увеличивая производительность алгоритма.
• Данная оптимизация рискованна тем, что опасный ход соперника
может оказаться не рассмотренным, но на практике она существенно увеличивает скорость и процент побед.


dwg60.jpg

Практикум по нейронным сетям для шахмат №2 27 Май 2025 09:10 #320

  • booot76
  • booot76's Avatar
  • OFFLINE
  • Дьяк
  • Posts: 198
  • Thank you received: 12
  • Karma: 5
Есть такой. Точнее был. Я его никогда не пробовал. Это еще с 90-х годов такое известно. Но с них немного воды утекло и к классическому алгоритму немножко полезных довесков было добавлено. Будут ли все они работать на MTD(f) - не факт.

Практикум по нейронным сетям для шахмат №2 28 Май 2025 03:43 #321

  • alexlaw
  • alexlaw's Avatar
  • OFFLINE
  • Сокольничий
  • Posts: 350
  • Thank you received: 15
  • Karma: 3
Я тут картинки рисую :)
Зачем нам такая проверочная доска?
TBoardSquares = array[-10..109] of integer;

Warning: Spoiler! [ Click to expand ]


В неподвижном короле была немного другая.

Практикум по нейронным сетям для шахмат №2 28 Май 2025 08:16 #322

  • booot76
  • booot76's Avatar
  • OFFLINE
  • Дьяк
  • Posts: 198
  • Thank you received: 12
  • Karma: 5
В неподвижном короле с поля а1 (11) за пределы доски можно было уйти максимально только ходом короля-ферзя "по диагонали вниз-влево" на поле 11-11=0.
А на полной доске с поля а1 уже конь может поскакать вниз-влево на поле 11-21=-10. Те же соображения и с полем h8

Практикум по нейронным сетям для шахмат №2 28 Май 2025 08:18 #323

  • booot76
  • booot76's Avatar
  • OFFLINE
  • Дьяк
  • Posts: 198
  • Thank you received: 12
  • Karma: 5
Так что смело рисуйте доску 10х10 внутри которой наша шахматная доска 8х8. И уже внутри 10х10 циферки расставляйте номеров полей.

Практикум по нейронным сетям для шахмат №2 28 Май 2025 13:04 #324

  • alexlaw
  • alexlaw's Avatar
  • OFFLINE
  • Сокольничий
  • Posts: 350
  • Thank you received: 15
  • Karma: 3
Мне всегда хотелось что-то покрутить повертеть внутри движка :)
Что-то включить выключить.
Но пока поигрался с настройками, через UCI
Writeln('option name time type spin min 5 max 8 default 5');
Writeln('option name PolyglotPath type string default <empty>');
Writeln('uciok');
===========================
if pos('setoption',Input_str)>0 then
begin
if pos('time value ',Input_str)>0 then begin
timems:=StrToInt(copy(Input_str,27,1))*1000;
Writeln('timems=',IntToStr(timems));
end;
if pos('PolyglotPath value ',Input_str)>0 then begin
FBookName:=copy(Input_str,35,length(Input_str)-34);
Writeln('FBookName=',FBookName);
end;
continue;
end else
// parse UCI "uci" command
if pos('uci',Input_str)>0 then
begin
....

Практикум по нейронным сетям для шахмат №2 10 Июнь 2025 05:40 #325

  • alexlaw
  • alexlaw's Avatar
  • OFFLINE
  • Сокольничий
  • Posts: 350
  • Thank you received: 15
  • Karma: 3
Решил я скрестить бульдога с носорогом :)
Пробую постепенно внедрить bitboard.
Пока что удалось, часть функций перевести на bitboard
Warning: Spoiler! [ Click to expand ]


Warning: Spoiler! [ Click to expand ]


Ну и функцию
Warning: Spoiler! [ Click to expand ]


Я не умею делать мультиплатформенно, поэтому только для 64 битной виндовс.

Еще почитал статью Определяем веса шахматных фигур регрессионным анализом
Поигрался с весами

PieseValue : array[-King..King] of integer = (0,1077,480,345,288,100,0,100,288,345,480,1077,0);

Вернул оригинальные :)

Сейчас читаю диссертацию :) Jeroen W.T. Carolus
PS
не получилось ссылку вставить
Last Edit: 10 Июнь 2025 05:42 by alexlaw.

Практикум по нейронным сетям для шахмат №2 11 Июнь 2025 14:31 #326

  • alexlaw
  • alexlaw's Avatar
  • OFFLINE
  • Сокольничий
  • Posts: 350
  • Thank you received: 15
  • Karma: 3
Чуть подправил функцию isAttackedbySide.
Сравнение Perft 6 начальной позиции на моем ноутбуке - Intel(R) Celeron(R) CPU 1005M @ 1.90GHz
Оригинальный isAttackedbySide и MailBox
Perft 6 - 119060324 nodes. At 29639 msec.4017015 nodes per second
Новый isAttackedbySide и немного bitboard
Perft 6 - 119060324 nodes. At 23255 msec.5119773 nodes per second
Warning: Spoiler! [ Click to expand ]

Но, почему же оригинал чаще побеждает???

Практикум по нейронным сетям для шахмат №2 11 Июнь 2025 14:36 #327

  • alexlaw
  • alexlaw's Avatar
  • OFFLINE
  • Сокольничий
  • Posts: 350
  • Thank you received: 15
  • Karma: 3
Интересно знать, что еще добавил booot в макет?

Практикум по нейронным сетям для шахмат №2 12 Июнь 2025 09:14 #328

  • alexlaw
  • alexlaw's Avatar
  • OFFLINE
  • Сокольничий
  • Posts: 350
  • Thank you received: 15
  • Karma: 3
Еще одну функцию переписал, а ля битбоард.
Warning: Spoiler! [ Click to expand ]

Perft'ом не проверишь, но мне кажется поглубже заглядывет за 5 сек контроля.

Проведу как я матч, между оригиналом и смесью бульдога с носорогом :)

PS
Похоже тут надо так
Result:=sort_tp[count]*Board.SideToMove;
Last Edit: 12 Июнь 2025 09:22 by alexlaw.

Практикум по нейронным сетям для шахмат №2 13 Июнь 2025 04:51 #329

  • alexlaw
  • alexlaw's Avatar
  • OFFLINE
  • Сокольничий
  • Posts: 350
  • Thank you received: 15
  • Karma: 3
50 games played / Tournament finished
Level: 5 Seconds
Smallchess
Smallchess - Smallchess [001] : 24,0/50 8-10-32 (1==1===0=1=====01=0======0=00==01=0==0=1===11==0==) 48% -14
Smallchess [001]
Smallchess [001] - Smallchess : 26,0/50 10-8-32 (0==0===1=0=====10=1======1=11==10=1==1=0===00==1==) 52% +14

Smallchess - оригинал
Smallchess [001] - опытно конструкторский :)

Практикум по нейронным сетям для шахмат №2 14 Июнь 2025 05:14 #330

  • alexlaw
  • alexlaw's Avatar
  • OFFLINE
  • Сокольничий
  • Posts: 350
  • Thank you received: 15
  • Karma: 3
Вчера попробовал переписать функцию FindPins, но что-то пошло не так.
Для проверки попытался внедрить функцию EasyPass в Perft
Warning: Spoiler! [ Click to expand ]

Но Perft test не проходит.
booot76, подскажите, как правильно внедрить функцию EasyPass в Perft?
Last Edit: 14 Июнь 2025 06:21 by alexlaw.
Moderators: Grigoriy
Рейтинг@Mail.ru

Научно-шахматный клуб КвантоФорум