Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 24, средняя оценка - 4.67
romex
44 / 44 / 4
Регистрация: 11.04.2010
Сообщений: 223
#1

Протокол UCI - нужен пример хорошего движка для шахмат - C++

19.05.2010, 19:15. Просмотров 3240. Ответов 37
Метки нет (Все метки)

Доброго времени суток!
Я на данный момент пишу шахматный движок по протоколу UCI, процесс идет не уверенно... На данный момент не реализованно и половины комманд, а обыграть его сможет даже трехлетний ребенок.
Было бы очень интересно ознакомится с движком чужой разработки...
Существует очень много движков, Но беда в том, что сами движки найти гораздо легче чем их код.
Если кто-нибудь занимался этим неблагодарным делом, очень прошу помочь...
Программа мне нужна только для ознакомления. Переделывать под себя, а уж тем более присваивать оную я не буду... Заранее спасибо!

З.Ы. Код Желательно на Си
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.05.2010, 19:15     Протокол UCI - нужен пример хорошего движка для шахмат
Посмотрите здесь:
C++ Нужен пример функции для работы со строками
Visual C++ Нужен пример использования OpenCL для параллельных вычислений
Нужен пример типового модуля распознавания команд для консольного приложения C++
C++ Нужен пример рекурсивной функции для понимания ее назначения и практической пользы
Интеллект для шахмат C++
Нужен пример интерфейса C++
Нужен пример классов C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Fulcrum_013
663 / 731 / 72
Регистрация: 14.12.2014
Сообщений: 5,699
Завершенные тесты: 3
18.04.2015, 02:17     Протокол UCI - нужен пример хорошего движка для шахмат #21
Поставил макс уровень. Интересно, о чем можно 3 минуты над первым ходом за белых... мышление компа продолжается...
da-nie
42 / 2 / 0
Регистрация: 11.04.2015
Сообщений: 20
18.04.2015, 08:09     Протокол UCI - нужен пример хорошего движка для шахмат #22
da-nie, а как бы Вы оценили силу игры данной программы ?
А я не знаю, я не шахматист. Но Корнилов в своей книжке про написание шахматных программ пишет, что программа с полным перебором на 6 (!) полуходов и продлением шахов на полуход и форсированным рассмотрением взятий до конца должна тянуть на первый разряд (он пишет:"слишком сильно программа играть не будет, но первый разряд ей обеспечен"). Правда, без всяких других эвристик.

Оригинальный однако у этого гудини сдаваться.
Э... Вы включить дебютную библиотеку и таблицы Налимова. Это первое. Второе - есть Гудини 4 и есть Гудини 4 крякнутый не удачно. Разница в том, что крякнутый играет слабо. Чтобы их различить есть тест (подробнее тут: http://rutracker.org/forum/viewtopic...90444#62290444 )

Интересно, о чем можно 3 минуты над первым ходом за белых... мышление компа продолжается...
Дебютная библиотека это исправит.
Fulcrum_013
663 / 731 / 72
Регистрация: 14.12.2014
Сообщений: 5,699
Завершенные тесты: 3
18.04.2015, 19:04     Протокол UCI - нужен пример хорошего движка для шахмат #23
Цитата Сообщение от da-nie Посмотреть сообщение
что программа с полным перебором на 6 (!) полуходов и продлением шахов на полуход и форсированным рассмотрением взятий до конца должна тянуть на первый разряд (он пишет:"слишком сильно программа играть не будет, но первый разряд ей обеспечен"). Правда, без всяких других эвристик.
Сомнительно. потому как во первых обычно перворазрядники изучили как минимум несколько дебютов досконально (т.е. не пользуются к примеру вскрытой вертикалью, а стратегия направленна именно на вскрытие определенной вертикали в определенное время),т.е. точки и стратегия давления обычно определены еще до начала партии. плюс к этому - обычно делаются достаточно неожиданные дебютные заготовки к каждому турниру. Хотя конечно человек это человек а машина это машина. У человека нет в голове закачанной библиотеки всех дебютов. Поэтому на то чтобы найти противоядие против дебютных ловушек заготовки у команды противника обычно уходит весь турнир.
da-nie
42 / 2 / 0
Регистрация: 11.04.2015
Сообщений: 20
18.04.2015, 19:26     Протокол UCI - нужен пример хорошего движка для шахмат #24
Я могу вам предоставить такую версию и вы сможете сами оценить примерный уровень игры. Более того, оценочная функция будет простейшей - таблица поле-фигура и материал.
Fulcrum_013
663 / 731 / 72
Регистрация: 14.12.2014
Сообщений: 5,699
Завершенные тесты: 3
18.04.2015, 19:51     Протокол UCI - нужен пример хорошего движка для шахмат #25
Цитата Сообщение от da-nie Посмотреть сообщение
Я могу вам предоставить такую версию и вы сможете сами оценить примерный уровень игры. Более того, оценочная функция будет простейшей - таблица поле-фигура и материал.
Та можно попробовать. Хотя как писалось в инсрукции к шахматному компьютеру Интеллект-02 c такими параметрами (просчет на 6 полуходов) должен играть в силу второго разряда, что он естественно успешно не делал.
da-nie
42 / 2 / 0
Регистрация: 11.04.2015
Сообщений: 20
18.04.2015, 20:31     Протокол UCI - нужен пример хорошего движка для шахмат #26
Ну вот, например. Я сделал продление при шахах на один полуход только если уже конец глубины рассмотрения ветки (6-й полуход). Можно сделать чтобы при шахе на любом уровне глубина анализа увеличивалась - тогда играет лучше, но думать может больше минуты в критических ситуациях. Из программы выброшены всякие хэш-таблицы и аналогичное, но оставлен ход killer - он не изменяет исходную эвристику, но позволяет ускорить процесс отсечения. Ну и можно было таблицу поле-фигура сделать одинаковую на миттельшпиль и эндшпиль и вместо функции оценки просто динамически изменять текущую оценку - это ускорило бы ещё раза в 2 перебор.
Вложения
Тип файла: rar Chess-Primitive.rar (328.6 Кб, 8 просмотров)
Fulcrum_013
663 / 731 / 72
Регистрация: 14.12.2014
Сообщений: 5,699
Завершенные тесты: 3
19.04.2015, 02:35     Протокол UCI - нужен пример хорошего движка для шахмат #27
Цитата Сообщение от da-nie Посмотреть сообщение
Ну вот, например. Я сделал продление при шахах на один полуход только если уже конец глубины рассмотрения ветки (6-й полуход).
Да зевать отучит эта прога. ну и как бы стараться держать противника под шахом тоже полезно

Добавлено через 10 минут
Цитата Сообщение от da-nie Посмотреть сообщение
Из программы выброшены всякие хэш-таблицы и аналогичное,
А вечный шах она не видит?
da-nie
42 / 2 / 0
Регистрация: 11.04.2015
Сообщений: 20
19.04.2015, 08:10     Протокол UCI - нужен пример хорошего движка для шахмат #28
А вечный шах она не видит?
Не, это я не умею пока. Как и детектор повтора 3 раза. На чём основано выявление представляю, но пока не считаю нужным вводить - вот когда заиграет, тогда да.

Интеллект-02 c такими параметрами (просчет на 6 полуходов) должен играть в силу второго разряда,
У него процессор слабый, поэтому там мощное сокращение веток анализа должно быть встроено. Вот он и хреново играет. А нужен полный перебор на 6 полуходов по честной альфа-бете.
Fulcrum_013
663 / 731 / 72
Регистрация: 14.12.2014
Сообщений: 5,699
Завершенные тесты: 3
19.04.2015, 10:34     Протокол UCI - нужен пример хорошего движка для шахмат #29
Цитата Сообщение от da-nie Посмотреть сообщение
Не, это я не умею пока. Как и детектор повтора 3 раза.
Ну как бы хотя бы не в анализе а в самой игре. загнал его под вечны шах а он не понимает. Играет кстати оригинально. Имею в виду оригинальные дебюты. хотя кони на C и на F пройдет и за черных и за белых и с библиотекой мудрить не надо и с понтылыку сбить запросто.

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

Добавлено через 4 минуты
И доску желательно с более четкой графикой а то ничерта не видно

Добавлено через 7 минут
Интересные кстати дебютные перлы - в начале игры пробивает F5 и выходит королем на F7 и дальше на G6
da-nie
42 / 2 / 0
Регистрация: 11.04.2015
Сообщений: 20
19.04.2015, 10:49     Протокол UCI - нужен пример хорошего движка для шахмат #30
Да кстати повторение позиций учитывать необходимо и для сокращения перебора.
А этим хэш-таблица и занимается как раз. Она в этой простейшей программе убрана. Чтобы повтор позиции детектировать нужно найдя позицию проверить строку главного изменения (наиболее вероятный по мнению программы ход игры), и если ходы повторились вернуть в качестве оценки ветки 0 - ничья. Безотносительно 3 раза или один раз повтор возник.

И доску желательно с более четкой графикой а то ничерта не видно
Разве не видно? У меня на 1280x1024 видно вроде бы неплохо...

Интересные кстати дебютные перлы - в начале игры пробивает F5 и выходит королем на F7 и дальше на G6
А хрен знает, как он рассчитывает.
Fulcrum_013
663 / 731 / 72
Регистрация: 14.12.2014
Сообщений: 5,699
Завершенные тесты: 3
19.04.2015, 11:17     Протокол UCI - нужен пример хорошего движка для шахмат #31
1920x1080 не ахти. да и сама цветовая гамма и рисунки низкоконтрастные (во всяком случае по сравнению с гудини).

Добавлено через 2 минуты
Цитата Сообщение от da-nie Посмотреть сообщение
А хрен знает, как он рассчитывает.
по всей видимости в дебюте пошел по принципу эндшпиля - король в центре это хорошо
da-nie
42 / 2 / 0
Регистрация: 11.04.2015
Сообщений: 20
19.04.2015, 12:26     Протокол UCI - нужен пример хорошего движка для шахмат #32
Вот блин. Программа научилась у Ифрита отыгрывать до оценки в -5 в эндшпиле, но заставить её довести пешку и сделать ферзя не удаётся. Тупо сводится всё в ничью по тройному повторению (а я сейчас, как мне казалось, детектор повторов сделал, правда, без истории игры - так что контролировать повторы для игры не с движком человеку всё равно). Хотя какая там ничья!
da-nie
42 / 2 / 0
Регистрация: 11.04.2015
Сообщений: 20
19.04.2015, 13:22     Протокол UCI - нужен пример хорошего движка для шахмат #33
Вот, для желающих попробовать. Должна играть неплохо. Разве только в эндшпиле может тупить...
Вложения
Тип файла: rar Chess-18_04_2015.rar (474.8 Кб, 3 просмотров)
da-nie
42 / 2 / 0
Регистрация: 11.04.2015
Сообщений: 20
22.04.2015, 21:02     Протокол UCI - нужен пример хорошего движка для шахмат #34
Ну-с, вот и ещё одна новая версия. Исправлены ошибки и прочее.
Вложения
Тип файла: rar Chess-22_04_2015.rar (485.3 Кб, 12 просмотров)
da-nie
42 / 2 / 0
Регистрация: 11.04.2015
Сообщений: 20
01.05.2015, 20:27     Протокол UCI - нужен пример хорошего движка для шахмат #35
Очередное обновление:
Вложения
Тип файла: rar Chess_01_05_2015.rar (483.7 Кб, 3 просмотров)
da-nie
42 / 2 / 0
Регистрация: 11.04.2015
Сообщений: 20
04.12.2015, 20:33     Протокол UCI - нужен пример хорошего движка для шахмат #36
Пару месяцев назад я нашёл ошибку в сортировщике ходов.
Ну и заодно портировал эти шахматы под QNX 6.3.
Вложения
Тип файла: rar centurion.rar (492.8 Кб, 8 просмотров)
Тип файла: rar QNXChess.tar.rar (361.7 Кб, 9 просмотров)
demiurg1972
0 / 0 / 0
Регистрация: 25.08.2015
Сообщений: 1
04.04.2016, 00:42     Протокол UCI - нужен пример хорошего движка для шахмат #37
А возможно заставить что бы движок обслуживался еще и видеокартой?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.04.2016, 17:56     Протокол UCI - нужен пример хорошего движка для шахмат
Еще ссылки по теме:
C++ WinAPI Нужен пример сабклассинга
C++ Нужен пример класса
C++ Нужен пример с массивами
Нужен пример хэширования C++
C++ Нужен пример цикла while

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
da-nie
42 / 2 / 0
Регистрация: 11.04.2015
Сообщений: 20
04.04.2016, 17:56     Протокол UCI - нужен пример хорошего движка для шахмат #38
Не знаю. Я такого не умею.
Yandex
Объявления
04.04.2016, 17:56     Протокол UCI - нужен пример хорошего движка для шахмат
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru