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

C++

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

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

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

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

З.Ы. Код Желательно на Си
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.05.2010, 19:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Протокол UCI - нужен пример хорошего движка для шахмат (C++):

Нужен пример использования OpenCL для параллельных вычислений - Visual C++
Здравствуйте уважаемые господа программисты. Кто нибудь когда нибудь использовал для параллельных вычислений библиотеку opencl? мне нужен...

Нужен пример функции для работы со строками - C++
Какие функции для работы со строками есть. Если не сложно можете привести пример

Нужен пример рекурсивной функции для понимания ее назначения и практической пользы - C++
Не могу понять пользу рекурсии, может ли кто привести код в пример.

Нужен пример типового модуля распознавания команд для консольного приложения - C++
я собираюсь это делать, но чувствую, что сейчас буду изобретать велосипед. я собираюсь делать это так - у меня ожидание на ввод строки...

Интеллект для шахмат - C++
Хочу написать алгоритм для шахмат на C++, что бы и интересно было, и сложная математика была. Но я не знаю движков для которых это можно...

Нужен совет с выбором движка и языка для создания игры - Графика и игры
Добрый день! Прошу совета у опытных программистов: У меня есть идея для создания компьютерной игры, если точнее, то пошаговой 2D (в...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Fulcrum_013
721 / 746 / 73
Регистрация: 14.12.2014
Сообщений: 5,906
Завершенные тесты: 3
17.04.2015, 22:42 #16
Цитата Сообщение от da-nie Посмотреть сообщение
Так для компьютера он по сути такой же.
Одно не понятно - как компу определять направления стратегического давления.
Хотя это конечно не моя специализация. Максимум что делал в этом направлении - программу решения шахматных задач на мат.
0
da-nie
42 / 2 / 0
Регистрация: 11.04.2015
Сообщений: 20
17.04.2015, 23:09 #17
Одно не понятно - как компу определять направления стратегического давления.
Программа исходит из того, где выгоднее держать фигуру в разных стадиях игры. А дальше тактика потихоньку переходит в стратегию. Скажем, сейчас я учитываю в оценочной функции битые оппонентом поля рядом с королём. Таким образом, программа будет стремиться развивать атаку на короля и его окружение.

В приведённых выше файлах, к сожалению, ошибка в оценочной функции. Они играют, но, как оказалось, не так, как должны были. Надеюсь, доделаю движок и выложу версию более сильную. И менее тормозную - этот момент я пока так и не решил.
0
Убежденный
Системный программист
Эксперт С++
15553 / 7061 / 1114
Регистрация: 02.05.2013
Сообщений: 11,472
Завершенные тесты: 1
17.04.2015, 23:19 #18
Цитата Сообщение от da-nie Посмотреть сообщение
Оживлю тему. Вот моя шахматная программа.
da-nie, а как бы Вы оценили силу игры данной программы ?
На какой разряд/кмс/мс/гросс ?.. По моим меркам, играет она недурно,
но до известных шахматных движков далеко. Лично у меня получилось
из шести партий две выиграть и одну сыграть вничью, но это за
отсутствием практики, а лет пять назад я бы, наверное, сыграл
лучше (тогда и в турнирах играл, и тренировался постоянно)...
0
Fulcrum_013
721 / 746 / 73
Регистрация: 14.12.2014
Сообщений: 5,906
Завершенные тесты: 3
18.04.2015, 01:42 #19
Цитата Сообщение от da-nie Посмотреть сообщение
Скажем, сейчас я учитываю в оценочной функции битые оппонентом поля рядом с королём. Таким образом, программа будет стремиться развивать атаку на короля и его окружение
Не всегда верно при некоторых раскладах, довольно часто к победе ведет придавить не на короля, а на какое либо слабое место (например на то чтобы провести пешку, или ворваться в необеспеченное пространство)

Добавлено через 2 часа 9 минут
Цитата Сообщение от da-nie Посмотреть сообщение
Чёткий результат достигается только в эндшпиле, где человек ясно видит результат и за 30 ходов (он очевиден), а компьютер нет - он на столько не считает
Эндшпиль против гудини - ладья пешка и ферзь против его голого короля. Вот тут у него такие расчеты включаются... над ходом надолго задумывается, не то что во время всей игры...

Вообще человек считает в основном в миттельшпиле. дебют и эндшпиль обычно на "автомате". Во всяом случае по энцифолограммам снятым с гроссмейстеров.
0
Fulcrum_013
721 / 746 / 73
Регистрация: 14.12.2014
Сообщений: 5,906
Завершенные тесты: 3
18.04.2015, 01:59 #20
Цитата Сообщение от da-nie Посмотреть сообщение
А попробуйте с гудини сыграть.
Оригинальный однако у этого гудини сдаваться. Стратегия однако. Контр-гамбит Альбина. И в этом плане ничем не лучше остального того что видел. Только думает долго.
0
Миниатюры
Протокол UCI - нужен пример хорошего движка для шахмат  
Fulcrum_013
721 / 746 / 73
Регистрация: 14.12.2014
Сообщений: 5,906
Завершенные тесты: 3
18.04.2015, 02:17 #21
Поставил макс уровень. Интересно, о чем можно 3 минуты над первым ходом за белых... мышление компа продолжается...
0
da-nie
42 / 2 / 0
Регистрация: 11.04.2015
Сообщений: 20
18.04.2015, 08:09 #22
da-nie, а как бы Вы оценили силу игры данной программы ?
А я не знаю, я не шахматист. Но Корнилов в своей книжке про написание шахматных программ пишет, что программа с полным перебором на 6 (!) полуходов и продлением шахов на полуход и форсированным рассмотрением взятий до конца должна тянуть на первый разряд (он пишет:"слишком сильно программа играть не будет, но первый разряд ей обеспечен"). Правда, без всяких других эвристик.

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

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

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

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

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

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

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

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

Интересные кстати дебютные перлы - в начале игры пробивает F5 и выходит королем на F7 и дальше на G6
А хрен знает, как он рассчитывает.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.04.2015, 10:49
Привет! Вот еще темы с ответами:

Нужен совет с выбором движка для написания игры на ios - Программирование iOS
Добрый день! Хотелось бы обратиться к опытным программистам с таким вопросом: какой движок выбрать для игры, в которой, допустим...

Нужен совет по выбору движка для нестандартного интернет сервиса - CMS
Добрый день! Хочу попробовать реализовать интернет проект. Суть следующая: база данных, которая обновляется из различных источников,...

Пример движка. - PHP
В нашем друге интернете много всего хорошего и не очень. Я только начал изучать PhP. Искал инфу про написание движков. В итоге я...

Нужен совет хорошего программиста - Java
Ребят хочу освоить программирование, подскажите пожалуйста с чего начать!!!? Имею Высшее техническое образование, хорошо знаю матан, но в...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
19.04.2015, 10:49
Ответ Создать тему
Опции темы

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