Рейтинг темы:
  • Голосов: 0 - Средняя оценка: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Пишу свою шахматную программу
#1
Пишу свою любительскую шахматную программку. Ваш сайт мне очень помог в освоении UCI, FEN и т.п. Большое спасибо вам.

Скачать программу можно здесь: http://silchenko-e.narod.ru/chess.htm

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

Уже научил программу правильно вычислять key по позиции. Но вот с чтением файла проблема. Возможно, я скачал неправильные файлы. Не подскажете, где найти для тестирования проверенный файл формата polyglot?
Ответить
#2
(01-07-2017, 09:13 PM)enko8086 Писал(а): Пишу свою любительскую шахматную программку. Ваш сайт мне очень помог в освоении UCI, FEN и т.п. Большое спасибо вам.

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

Пожалуйста  Smile
Насколько я помню, polyglot книги есть в программе SCID.
Ответить
#3
А в чем можно составлять и редактировать книги polyglot? Кветка не понимает его?

Еще вопрос по FEN. Обязательно ли для установки поля взятия присутствие рядом пешки, которая может взять? В полиглоте, как я понял, обязательно. Поэтому и возник вопрос.
Ответить
#4
(01-07-2017, 10:29 PM)enko8086 Писал(а): А в чем можно составлять и редактировать книги polyglot? Кветка не понимает его?

Еще вопрос по FEN. Обязательно ли для установки поля взятия присутствие рядом пешки, которая может взять? В полиглоте, как я понял, обязательно. Поэтому и возник вопрос.

Кветка умеет читать дебютные книги Polyglot (если установлен плагин "Анализ"). Однако она не умеет сохранять их в таком формате.

В FEN присутствие рядом пешки не обязательно. Однако даже если взятие на проходе и не будет указано, никаких проблем для позиции в таком случае это создать не должно.
Ответить
#5
Заработала книга. Максимум на сколько полуходов обычно составляют дебютные книги? Хочу поставить условие, чтоб программа не искала в книге, если уже сделано >N ходов.
Ответить
#6
(01-08-2017, 12:25 PM)enko8086 Писал(а): Заработала книга. Максимум на сколько полуходов обычно составляют дебютные книги? Хочу поставить условие, чтоб программа не искала в книге, если уже сделано >N ходов.

Мы не специализируемся на дебютных книгах, так что точного ответа я Вам не дам. Попробуйте спросить на этом форуме. Там должны присуствовать составители дебютных книг. Я могу только предположить, что всё сильно зависит от конкретной книги. Порой в ней могут прокачиваться какой-нибудь один или несколько дебютов. Тогда глубина там может достигать и 20 ходов. А по другим направлениям она не будет превосходить пары ходов.
Ответить
#7
Цитата:Я могу только предположить, что всё сильно зависит от конкретной книги. 

Сделал возможность устанавливать этот предел с помощью setoption.

Еще есть вопросы по UCI.

Цитата:ponderhit 
Означает, что противник походил именно так, как и предполагалось.
Эта команда должна посылаться только в том случае, если движок находился в режиме ожидания хода противника (включается командой "ponder"). После этого движок должен продолжить анализ позиции, только уже в обычном режиме.
Проблема такая возникла. Даже не понимаю, или это глюк Arena Chess, или я что-то не так понял. 

-->1:position startpos moves e2e4
-->1:go movetime 20000
...
<--1:bestmove d7d5 ponder b1c3
-->1:position startpos moves e2e4 d7d5 b1c3
-->1:go ponder movetime 20000
...
-->1:ponderhit
... // движок продлевает время раздумья на 20сек и продолжает думать. Но я не всегда хочу ждать еще 20 сек, может противник думал над ходом b1c3 долго, и движок за это время подготовил хороший ответ, я хочу сразу после ponderhit прервать расчеты и получить ответ. Но если после ponderhit нажать красный крестик, то Арена не посылает движку stop. Приходится ждать 20 сек.

Цитата:info nodes #x 
обработано #x позиций. Движок должен регулярно выдавать это сообщение.
Что понимается под числом обработанных позиций: все узлы игрового дерева или только те, на которых вызывается оценочная функция?

И еще. Где можно найти техническое описание формата эндшпильных баз для подключения к движку?
Ответить
#8
(01-15-2017, 12:14 PM)enko8086 Писал(а):
Цитата:Я могу только предположить, что всё сильно зависит от конкретной книги. 

Сделал возможность устанавливать этот предел с помощью setoption.

Еще есть вопросы по UCI.

Цитата:ponderhit 
Означает, что противник походил именно так, как и предполагалось.
Эта команда должна посылаться только в том случае, если движок находился в режиме ожидания хода противника (включается командой "ponder"). После этого движок должен продолжить анализ позиции, только уже в обычном режиме.
Проблема такая возникла. Даже не понимаю, или это глюк Arena Chess, или я что-то не так понял. 

-->1:position startpos moves e2e4
-->1:go movetime 20000
...
<--1:bestmove d7d5 ponder b1c3
-->1:position startpos moves e2e4 d7d5 b1c3
-->1:go ponder movetime 20000
...
-->1:ponderhit
... // движок продлевает время раздумья на 20сек и продолжает думать. Но я не всегда хочу ждать еще 20 сек, может противник думал над ходом b1c3 долго, и движок за это время подготовил хороший ответ, я хочу сразу после ponderhit прервать расчеты и получить ответ. Но если после ponderhit нажать красный крестик, то Арена не посылает движку stop. Приходится ждать 20 сек.

Цитата:info nodes #x 
обработано #x позиций. Движок должен регулярно выдавать это сообщение.
Что понимается под числом обработанных позиций: все узлы игрового дерева или только те, на которых вызывается оценочная функция?

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

По поводу первого вопроса, точно не скажу, однако по-моему, это проблема Арены, а не движка. Моете попробовать запустить движок без оболочки и повторить все действия вручную. Если команда stop будет нормально работать, то это точно проблема Арены.

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

Я не уверен, что где-то можно найти подробное описание формата эндшпильных баз. Наиболее популярный формат сейчас - syzygy. Для него есть исходные коды, которые можно использовать в своём движке. Есть ещё таблицы Налимова, их исходные коды тоже можно найти в интернете, хотя все ссылки, что я для них видел, теперь уже нерабочие. Для использования таблиц Налимова в своём движке необходимо согласие автора. Насколько я знаю, обычно он это согласие давал всем, кто его просил.
Ответить
#9
Цитата:По поводу первого вопроса, точно не скажу, однако по-моему, это проблема Арены, а не движка. Моете попробовать запустить движок без оболочки и повторить все действия вручную. Если команда stop будет нормально работать, то это точно проблема Арены.
Движок то мои все там работает правильно. Просто я подумал, вдруг я не так понял принцип работы режима ponder. 

Кстати, если вдруг кому-то интересно, выложил более менее работоспособную версию: http://silchenko-e.narod.ru/chess.htm
Ответить
#10
Доброго времени суток!

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

Быть может скинете какую то инструкцию, или мануал и т.д.?
Ответить


[-]
Быстрый ответ
Сообщение
Введите текст Вашего сообщения.

Проверка изображения
Пожалуйста, введите текст, содержащийся на изображении, в текстовое поле под ним. Процесс используется для предотвращения автоматических спам ботов.
Проверка изображения
(нечувствительно к регистру)



Пользователи просматривают эту тему: 1 Гость(ей)